SQL实验一

合集下载

数据库SQL实验题目(14-15-1)

数据库SQL实验题目(14-15-1)

实验一数据定义操作●实验目的1.掌握数据库和表的基础知识2.掌握使用创建数据库和表的方法3.掌握数据库和表的修改、查看、删除等基本操作方法●实验内容和要求一、数据库的创建在开始菜单中,启动SQl Server 程序中的“SQL Server Management Studio”,在对象资源管理器窗口中,右键单击“数据库”,选择“新建数据库”,创建成绩管理数据库Grademanager,要求如下表所示:Grademanager数据库参数表二、表的创建、查看、修改和删除1.表的创建在Grademanager数据库中,右键单击“表”,选择“新建表”命令,创建如下表所示的表:(1)Student表的表结构特别注意:为属性Ssex设置约束,需选中属性Ssex行,然后单击菜单中的“表设计器”,选择“CHECK 约束”命令,然后按照图1进行设置。

图1 设置性别的约束(2)Course表(课程名称表)的表结构(3)SC表(成绩表)的表结构特别注意:①为属性Degree 约束,可参照属性Ssex进行设置,“CHECK约束对话框”中的表达式为Degree>=1 And Degree<=100②为SC表设置外键Sno和Cno的方法:右键单击表SC,选择“设计”命令,然后选择菜单“表设计器”中的“关系”命令,打开“外键关系”窗口,选择“添加”按钮,然后单击“表和列规范”后的按钮,按照图2进行设置,即可将SC表中的Cno属性设置为外键。

按照相同的方法,将属性Sno也设置为外键。

图2为SC表设置外键Cno2.向上述表中输入如下数据记录学生关系表Student (右键单击表Student ,选择“编辑前200行”)课程关系表Course 成绩表SC3.修改表结构(找到操作的方法即可,不需要真正地修改表中的属性) (1)向student 表中增加“入学时间”列,其数据类型为日期型 (2)将student表中的sdept 字段长度改为20 (3)将student 表中的Speciality 字段删除思考题1. SQL Server 的数据库文件有几种?扩展名分别是什么? 2. 如何实现数据库的备份和还原?2.在定义基本表语句时,NOT NULL 参数的作用是什么? 3.主码可以建立在“值可以为NULL ”的列上吗?实验二 简单查询● 实验目的1. 掌握SELECT 语句的基本用法2. 使用WHERE 子句进行有条件的查询3. 掌握使用IN 和NOT IN ,BETWEEN …AND 和NOT BETWEEN …AND 来缩小查询范围的方法4. 掌握聚集函数的使用方法5. 利用LIKE 子句实现字符串匹配查询6. 利用ORDER BY 子句对查询结果排序7. 利用GROUP BY 子句对查询结果分组● 实验内容和要求一、表结构修改1.在实验一的所建立的数据库中增加Teacher 表,结构如下:2.在实验一的所建立的数据库中增加Teaching 表,表结构如下: Teaching 表(授课表)的表结构3.向上述两表中输入如下数据记录教师表Teacher 授课表Teaching二、完成下面查询 1.查询所有男生信息2.查询年龄大于24岁的女生学号和姓名3.查询所有教师的Tname、Tdept4.查询“电子商务”专业的学生姓名、性别和出生日期5.查询成绩低于90分的学生学号及课号,并按成绩降序排列6.查询Student表中所有的系名7.查询“C01”课程的开课学期8.查询成绩在80分至90之间的学生学号及课号9.统计有学生选修的课程门数10.查询成绩为77,88或99的记录11.计算“C02”课程的平均成绩12.输出有成绩的学生学号13.查询所有姓“刘”的学生信息14.统计输出各系学生的人数15.查询选修了“C03”课程和学生的学号及其成绩,查询结果按分数的降序排列16.查询各个课程号及相应的选课人数,并为选课人数取别名为“人数”17.统计每门课程的选课人数和最高分,并为选课人数和最高分分别取别名为“人数”、“最高分”18.统计每个学生的选课门数和考试总成绩,并为选课门数和总成绩分别取别名为“门数”、“总成绩”,并按选课门数降序排列。

数据库原理及应用实验一【SQL语句创建数据库和表】

数据库原理及应用实验一【SQL语句创建数据库和表】

数据库原理及应⽤实验⼀【SQL语句创建数据库和表】⼀、实验⽬的1.熟悉SQL Server2012操作界⾯,了解数据库系统的逻辑组件;2.熟悉SQL Server的管理控制台操作环境;3.掌握使⽤SQL Server Management Studio 及SQL语句创建数据库和表的⽅法;4.掌握数据库及表结构的修改⽅法;5.掌握数据库管理的基本操作。

⼆、实验步骤1.启动SSMS(SQL Server Management Studio)2.通过向导创建数据库3.通过T-SQL语句创建数据库4.通过向导创建数据库表5.通过T-SQL语句创建数据库表三、实验内容1.启动SSMS(SQL Server Management Studio)(1)打开 SQL Server Management Studio,将弹出如下图所⽰的登录窗⼝。

这⾥有两种⾝份验证⽅式:第⼀种⽅式选择Windows⾝份验证登录,服务器名称为本机⽤户名(如:WIN-E1G5CJSSRP5)或(local)登录;第⼆种⽅式选择 SQL Server ⾝份验证登录,⽤户名为 sa,密码为安装数据库时设置的密码。

点击连接按钮,进⾏连接(注:若服务器连接不上,打开控制⾯板中管理⼯具下的服务,检查 SQL Server 的服务是否启动)。

(2)右击 SQL Server 服务器,弹出如下图所⽰菜单菜命令,点击【断开连接】,则将断开当前数据库管理⼯具这个应⽤和 SQL Server 服务器之间的连接通信。

(3)点击菜单命令中的【暂停】,可以暂停当前的 SQL Server 服务。

点击菜单命令中的【停⽌】,可以停⽌当前正在运⾏着的 SQL Server 服务。

点击菜单命令中的【重新启动】,可以重新启动当前已经停⽌的 SQL Server 服务。

(4)点击菜单命令中的【属性】,则将弹出如下图所⽰的对话框。

该对话框定义了许多SQL Server 实例级别的配置参数。

SQL数据管理实验指导书2013.6

SQL数据管理实验指导书2013.6

实验一 SQL编程一.实验目的1.熟练掌握SQL编程方法2.掌握Transact-SQL基本语法3.掌握SQL-查询分析器的基本用法4.掌握SQL中常用统计函数的用法5.掌握游标的基本用法二.实验要求1.回顾SQL语法2.熟悉SQL Server2000的基本操作3.预习Transact-SQL基本语法4.预习游标用法三.实验内容1.用统计函数sum、avg、min、max、count等进行查询2.统计函数结合group by进行查询3.实现Transact-SQL中的判断和循环结构编程4.用游标实现一个统计功能四.实验内容要求实验任务1、给学生表增加字段联系电话,为整型2、改变学生表中字段联系电话字段的属性为字符型3、删除联系电话字段4、删除表教师表5、查询学生表中年龄>20并且是北京来的学生6、查询各专业学生的人数7、查询英语成绩大于80分的所有女生8、查询每个专业的女生人数9、对各个地区来的学生的总人数按从小到大的顺序排列10、求各个专业女生数学的平均分11、求计算机专业的所有李姓的学生12、用case语句查出若水同学的各门课程的成绩,并按照90以上为优秀80-90为良好;60-80中等,60以下为不及格13、用插入语句向学生表插入一条记录要求只插入学号,姓名,地址三个字段的值,1008,德华,香港14、重新创建一个表结构与学生表相同命名为学生表1,用SQL语句将学生表中的所有女生,插入到学生表1中15、取出学生表中备份字段的前20个字符16、求出年龄大于平均年龄的女生姓名17、求出数学课程的成绩最高最低分18、求出各专业英语大于80分学生的人数19、用IN语句实现找出英语不及格的学生学号和姓名20 、查出所有学生及其课程成绩,不管该学生有没有选课实验二表连接及综合查询一、实验目的与要求1.掌握表连接查询的使用方法2.掌握子查询的使用方法3.能使用内连接、左外连接、右外连接以及交叉连接解决相关问题4.熟悉系统函数的使用5.能熟练应用SELECT语句及其相关字句6.能将SELECT与系统函数、IF ELSE、WHILE等语句进行综合应用并解决相关问题二、实验内容(一)连接查询(数据库及表见附件)1.查找每一个供应商供应的商品的名称,要求显示供应商名称和商品名称。

SQL数据库实验报告

SQL数据库实验报告

湖北国土资源职业学院SQL数据库实验报告2010-2011 学年第二学期实验名称数据库应用技术班级测量0902指导老师侯文平学生姓名杨然系(部)测绘工程系实训时间2011年5月实验一注册服务器与创建数据库一、实验目的1.熟悉SQL Server 2005管理平台的环境2.掌握注册服务器的过程3.了解Microsoft SQL Server中系统数据库中的数据4.掌握创建库5.掌握创建数据表二、实验内容1. 使用联机丛书2.注册服务器3.创建数据库4.创建数据表三、仪器、设备、材料微机四、实验准备1.理论知识预习及要求①服务器组的创建;②服务器的注册;③创建数据库;④创建数据表;2.实验指导书预习及要求上机前先预习第一、二章的内容及附录A中的实验一,理解注册服务器的作用。

3.其他准备无五、实验原理或操作要点简介注意服务器要先启动,才能与服务器建立连接。

六、注意事项要养成为文件取有意义名称的习惯。

要及时保存文件,避免死机或断电造成的文件丢失。

创建过程中,出现问题时,请保存,请老师解答。

创建过程中,若出现找不到相应的问题时,要看联机丛书,逐步学会自学。

七、实验过程与指导1. 使用联机丛书(操作步骤参考教材P273实验一中的操作步骤)2.注册服务器(操作步骤参考教材P8)3.创建数据库(操作步骤参考教材P12,要求将数据库存储在最后一个磁盘,以自己姓名命名的文件夹,如F:\hwp)4.创建数据表以界面方式建立一个学生基本情况表(tblStudent),建立的要求如下表。

以界面方式建立一个班级表(tblClass),建立的要求如下表。

5.往表中插入记录①往tblStudent表中插入记录。

观察:●蔡文姬的性别在输入的时,没有输入,输入完成后,变成了什么?为什么?●曹操的性别误输入为“国”,也成功的存储了。

我们可以在保存数据前做什么工作,防止用户输入错误的发生?继续,往tblStudent表中插入记录。

输入完成,提交更新行时,会出现下面错误提示:思考:该提示的含义是什么,由什么原因引起?②往tblClass表中插入记录。

SQL数据库实验报告 (1)

SQL数据库实验报告  (1)

资源与环境科学学院实验报告一、上机实习名称:SQL Server的安装及数据库的建立二、实验目的:1、通过对某个商用数据库管理系统的使用,了解DBMS的工作原理和系统构架。

2、熟悉对DBMS的操作3、熟悉如何使用SSMS和SQL建立数据库和表,并加深对于完整性的理解。

三、实验内容:1、根据安装文件的说明安装数据库管理系统。

2、学会启动和停止数据库服务,思考可以用哪些方式来完成启动和停止。

3、掌握管理工具的使用(1)SQL Server Management Studio的使用➢连接服务器的方法➢查询分析器的使用(2)配置管理器的使用4、了解数据库系统的逻辑组件:它们主要是数据库对象,包括基本表、视图、触发器、存储过程、约束等。

今后将学习如何操作这些数据库对象。

5.在SSMS中创建数据库和表四、实验步骤1. SQL Server 2008的体系结构和特点介绍SQL Server 是一个关系数据库管理系统。

由微软公司2008年第三季度正式发布, SQL Server 2008是一个重大的产品版本,在安全性、可用性、易管理性、可扩展性、商业智能等方面有了更多的改进和提高,对企业的数据存储和应用需求提供了更强大的支持和便利,使得它成为迄今为止最强大和最全面的SQL Server版本。

SQL Server 2008 版本体系:根据不同的用户类型和使用需求,微软公司推出了5种不同的SQL Server版本,包括企业版(Enterprise)、标准版(Standard)、工作组版(Workgroup)、学习版(Express)和移动版(Compact)Microsoft SQL Server 2008系统由4个主要部分组成。

这4个部分被称为4个服务,这些服务分别是数据库引擎、分析服务、报表服务和集成服务。

2. SQL Server管理工作室的启动打开windows控制面板—管理—服务,启动SQL Server 服务,如下图(1)开始→程序→Microsoft SQL Server 2008→SQL Server Management Studio(如图1.1所示)。

数据库SQL实验题目

数据库SQL实验题目

实验一数据库和表的建立●实验目的1.掌握数据库和表的基础知识2.掌握使用创建数据库和表的方法3.掌握数据库和表的修改、查看、删除等基本操作方法●实验内容和要求一、数据库的创建在开始菜单中,启动SQl Server 程序中的“SQL Server Management Studio”,在对象资源管理器窗口中,右键单击“数据库”,选择“新建数据库”,创建成绩管理数据库Grademanager,要求如下表所示:Grademanager数据库参数表二、表的创建、查看、修改和删除1.表的创建在Grademanager数据库中,右键单击“表”,选择“新建表”命令,创建如下表所示的表:(1)Student表的表结构特别注意:为属性Ssex设置约束,需选中属性Ssex行,然后单击菜单中的“表设计器”,选择“CHECK 约束”命令,然后按照图1进行设置。

图1 设置性别的约束(2)Course表(课程名称表)的表结构(3)SC表(成绩表)的表结构特别注意:①为属性Degree 约束,可参照属性Ssex进行设置,“CHECK约束对话框”中的表达式为Degree>=1 And Degree<=100②为SC表设置外键Sno和Cno的方法:右键单击表SC,选择“设计”命令,然后选择菜单“表设计器”中的“关系”命令,打开“外键关系”窗口,选择“添加”按钮,然后单击“表和列规范”后的按钮,按照图2进行设置,即可将SC表中的Cno属性设置为外键。

按照相同的方法,将属性Sno也设置为外键。

图2为SC表设置外键Cno2.向上述表中输入如下数据记录学生关系表Student (右键单击表Student ,选择“编辑前200行”)课程关系表Course 成绩表SC3.修改表结构(找到操作的方法即可,不需要真正地修改表中的属性) (1)向student 表中增加“入学时间”列,其数据类型为日期型 (2)将student表中的sdept 字段长度改为20 (3)将student 表中的Speciality 字段删除思考题1. SQL Server 的数据库文件有几种?扩展名分别是什么? 2. 如何实现数据库的备份和还原?2.在定义基本表语句时,NOT NULL 参数的作用是什么? 3.主码可以建立在“值可以为NULL ”的列上吗?实验二 单表查询● 实验目的1. 掌握SELECT 语句的基本用法2. 使用WHERE 子句进行有条件的查询3. 掌握使用IN 和NOT IN ,BETWEEN …AND 和NOT BETWEEN …AND 来缩小查询范围的方法4. 掌握聚集函数的使用方法5. 利用LIKE 子句实现字符串匹配查询6. 利用ORDER BY 子句对查询结果排序7. 利用GROUP BY 子句对查询结果分组● 实验内容和要求一、表结构修改1.在实验一的所建立的数据库中增加Teacher 表,结构如下:2.在实验一的所建立的数据库中增加Teaching 表,表结构如下: Teaching 表(授课表)的表结构3.向上述两表中输入如下数据记录教师表Student 授课表Teaching二、完成下面查询 1.查询所有男生信息2.查询年龄大于24岁的女生学号和姓名3.查询所有教师的Tname、Tdept4.查询“电子商务”专业的学生姓名、性别和出生日期5.查询成绩低于90分的学生学号及课号,并按成绩降序排列6.查询Student表中所有的系名7.查询“C01”课程的开课学期8.查询成绩在80分至90之间的学生学号及课号9.统计有学生选修的课程门数10.查询成绩为77,88或99的记录11.计算“C02”课程的平均成绩12.输出有成绩的学生学号13.查询所有姓“刘”的学生信息14.统计输出各系学生的人数15.查询选修了“C03”课程和学生的学号及其成绩,查询结果按分数的降序排列16.查询各个课程号及相应的选课人数,并为选课人数取别名为“人数”17.统计每门课程的选课人数和最高分,并为选课人数和最高分分别取别名为“人数”、“最高分”18.统计每个学生的选课门数和考试总成绩,并为选课门数和总成绩分别取别名为“门数”、“总成绩”,并按选课门数降序排列。

数据库实验报告

实验(一): 熟练掌握SQL语言实验目的:熟悉上机环境,创建数据库,在数据库上建立关系模式,插入数据,进行相应的查询操作。

实验内容:具体包括如下三部分。

一、熟悉上机环境。

客户/服务器结构,数据库服务器在一台NT服务器上,同学们通过客户机(操作系统为Windows 2000)上安装的SQL Server客户端程序, 使用SQL Server数据库服务器。

具体包括:1.了解SQL Server 环境。

鼠标点击开始,进入“Microsoft SQL Server→企业管理器”,点击SQL Server组下的数据库服务器(服务器名称为NEUC-201S(Windows NT)), 可以看到服务器上的圆形标志变为绿色,说明客户端程序已与服务器连接成功。

点击服务器(NEUC-201S(Windows NT))下的数据库,可以看到服务器上已建立的数据库,你可访问你有权访问的数据库,并进行相应的操作功能。

因为,数据库服务器上建有许多数据库, 每个数据库都有一些合法的用户。

2.鼠标点击开始,进入“Microsoft SQL Server→查询分析器”,输入用户名和口令,进入SQL查询分析器。

如:你登录的客户机为27号,那么请以用户名user27,口令为user27登录,登录后缺省连到数据库user27上,user27/user27是数据库user27的创建者,因此用户user27/ user27具有在数据库user27上创建表等一切权力。

3.在SQL查询分析器环境下,你就可进行SQL命令语句操作了。

二、在数据库useri上创建学生选课有关关系模式,并插入相应的数据,实现有关查询。

1.描述学生、课程情况的E-R图如下,请将其转化为用关系数据模型描述的关系模式CREA TE TABLE Student(Sno CHAR(9) PRIMARY KEY,Sname CHAR(20) UNIQUE,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20));CREA TE TABLE Course(Cno CHAR(4) PRIMARY KEY,Cname CHAR(40),Cpno CHAR(4),Ccredit SMALLINT,FOREIGN KEY (Cpno) REFERENCES Course(Cno) );CREA TE TABLE SC(Sno CHAR(9),Cno CHAR(4),Grade SMALLINT,PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno) REFERENCES Student(Sno), FOREIGN KEY(Cno) REFERENCES Course(Cno) );4在已建立的关系模式之上(已插入一些数据)建立主键约束,参照约束和用户定义的约束(要求学生年龄不小于14岁,不大于35岁),如果约束不能建立,请分析原因,修改后建立上述约束。

SQL实验报告(优秀范文5篇)

SQL实验报告(优秀范文5篇)第一篇:SQL实验报告实验四触发器实验(一)after触发器(1 1)在l l i neitem 表上定义一个 after 触发器, , 当修改列项目e e xtendedprice d i scountx tax 时, , 要把 s orders 表得to o tal pri ce e 一起修改, , 以保证数据一致性C RE ATE T RIGGERtrig _line ite m_ pr ice_ update on line it em fo rupda teaasbegin i f(UPDATE(ex tend edprice)o r UPDATE(tax)or UPD AT E(di scou nt))begin-—声明游标变量指向 inserted 表d eclarecursor_inserted c urs orrea d_onlyofor select order key,linenu mber,exte nd edpr ice, dis coun t, taxfromin ser ted—-息信找查取获量变明声ﻩ声明变量获取查找信息de clare order key in t, @linenumb erint,exte nd edpricereal,disscount real,tax real—-打开游标epoﻩen cursor_i ns ert ed—-标游取读ﻩ读取游标fe tchnextfrom cur sor _i ns erte dint o@o rderkey, @lin enumber,eext ende dprice, @di scount,t axwwhi le FETC H_S TATUS =0 nigebﻩnﻩ—-声明一个变量保存重新计算得新价格cedﻩﻩecl are @n ew_tota lpri cer ealﻩ select @n ew_t otal price= @ext en dedpr ice *(1 -@di scou nt)*(1 +@tax)—-用新得总价格变量更新 orders 表得 t ot alprice puﻩﻩupdate orde rsse t tot alpri ce= new_totalprice where or derkey=orde rkeyen hctefﻩext f ro m cur sor_i nser ted int o@order ke y, @li nenum ber, @ex tende dp rice,discoun t, @taxdneﻩllaedﻩlocate c ur sor_i nser te deend end ﻩ(2)在在 linei tem表上定义一个 aftr er 触发器, , 当增加一项订单明细时, ,自动修改 s orders 表得 total p rice, 以保证数据一致性CREATE TR IGGER tri g_ lineit em_price_ in sert on l ine item ffor inse rta sbegin ——向指量变标游明声ﻩ声明游标变量指向ins erted 表de clarec ursor_inse rtedcursorread_ onl yﻩ for s ele ct orderkey,linenumbe r,ex te ndedp ric e,di scou nt,t axfrom insserte d--声明变量获取查找信息edﻩeclare @orde rk eyint, @lin enumber int,e xten dedp ricereal, @discountreal, @ta xreal -—ﻩ-打开游标open cursor_i ns erte d--ﻩ-读取游标fe tc hnex tf romcu rsor_ins ertedinto@o rd erkey,li nen umbeerr, ex ten ded pric e,dis count,tax ihwﻩile @@FE TCH_ STATU S=0 ebﻩegin-—格价新得算计新重存保量变个一明声ﻩﻩ声明一个变量保存重新计算得新价格cedﻩclare @n ew_tot alprice realcelesﻩct new _to ta lprice= @extend edp rice *(1-d is count)*(1+tax)—-新更量变格价总得新用ﻩﻩ用新得总价格变量更新orders 表得totalpri ceﻩ u pda teor ders s ett ota lpric e=total pric e+ @new_ tota lpr ice wwhhe re o rderke y=orderkeytefﻩetch next from cursor_ ins erte dinto o rder key, @l inen umber,e xtendeddp ric e, @disc ou nt, @t axeend aedﻩdeall oca te cu rsor_in serted en d(3)在l in e ite m表上定义一个a ft er触发器, , 当删除一项订单明细记录时, ,自动修改 orders 表得 tot a lprice, 以保证数据一致性CREATE TRI GG ER trig _line item_price_de let eon line item fo r de let eAAS begin--声明游标变量指向delet ed 表de clar e curso r_d eleted cursorre ad _on lyesrofﻩﻩele ctord erk ey,line numbe r,extende dp rice,discoun t, taxfromdel eted-ﻩ--声明变量获取查找信息declare ord erkey int,linenum be rint,extendedp ri ce r eal,discou nt real,ta xreal -—ﻩ-打开游标epoﻩen c urso r_ deleted——标游取读ﻩ读取游标efﻩetch next fr om cur sor_delete d in toorder ke y,l inenumb er,ext enddedprice, @di scoun t,taxwh ile@FETCH_STATUS=0begi n-—声明一个变量保存重新计算得新价格ﻩ declare @ne w_ to talpric erealﻩsselec t@new_t otalpr ice= @exte nde dpri ce*(1-@disco unt)*(1+ tax)-ﻩ-—用新得总价格变量更新orders 表得tot alp rice uﻩﻩupd ateorders set t otalpri ce=to talpr ice-@new _totalp rice wh er e order key= @ord erkeyfetchn ext f rom cursor_inse rt ed in to orderkey, @line numbe r,extendeeddprice, @d iscou nt,t ax dneﻩndddeal lo cat e cur sor_inse rted eend((4 4))验证 up d at e触发器—-查瞧号订单得 to ta a l pr i ceselec t*fro o mo o r ders whereorde r key=1 8 30;—-查瞧明细表得相关信息se l ect *f ro mlin ei i te e mw here or de e r key=183 0and l ine num m be e r =1;——验证 e update 触发器updat elineitem set t ax=tax+0、05whe re orderkey=1830;(二)i i n steadof触发器((1))在在 lineit em 表上定义一个ins tead o fupda te触发器, 当修改明细表中得数量量quan ti ty 时, 应先检查供应表par tsupp 得av ai lqty 就是否足够, 不足够则拒绝执行, 否则执行并修改相应数值以保证数据一致性于由于 in steadof 触发器更新某个表会使得该表上其她不满足更新列不能更新,因因用此逆向思维使用 a fter 触发器实现相同效果即先更新 qu antity, 再比较av ailqqtty, 如果满足更新数量, 就修改partsupp 得表得 a vailqty, 如果不满足, 则把lineitem得quantity 更新之后得数据重新修改回来ccreate trigge r trig_lin eit em_quanti ty_ upda teonli neit em f or upda teas begin if UPDATE(qu ant ity)bbegin ——向指别分量变标游明声ﻩ声明游标变量分别指向 i nserted 表与 d el eted 表edﻩdeclare c urso r_inser tedcur sorr ead_on lyfortcelesﻩﻩtorde rkey, partk ey,s uppkey,lin enum ber, quantit yfr om i nserteddecl arecursor_de leted c urs orrea d_ onl yf or select quantityfr om deleted-—息信找查取获量变明声ﻩ声明变量获取查找信息decl are@qu an tity _dif f_lineitem i nt,q uanti ty_pa rtsup p i nt cedﻩclare suppkey int, @par tke y in t,o rd erkey i nt,unenilﻩﻩum ber int ,qty _inserted in t , @qty_deleted int--打开游标ruc nepoﻩrsor_in sert ed poﻩopen cur sor_d eleted-—量变给赋值数标游取读ﻩ读取游标数值赋给变量fﻩfet chnext fromcu rsor_ insert edﻩiinto or de rk ey,pa rtkey, @suppk ey, @line nu mber, @qty _ins erte df et chnext fromcursor _d eletedint o q ty _de lete dwhi le fe tch_st atus=0 gebﻩegin--计算订单明细修改时, 订购数量得变化值inserte d表项-d elet ed表项ssel ect quantity_d if f_ li neit em= @q ty _in se rte d—@@q ty_deleteedﻩ--从parts upp 表获取ava ilq ty值, 注意partsupp 表得主键为(partk ey,suppkeey)tcelesﻩﻩt@quanti ty_p ar tsupp =av ailq ty fro m pa rtsu ppwﻩﻩwh er e suppkey= suppke yand part key= @par tk ey-—断判始开ﻩﻩ开始判断gebﻩbegi nfiﻩf quant ity _d iff_ lin eite m=0ﻩﻩ p rin t“ 更新得数量与原表中得值相同, 不需要更新”e ls eif @quantit y_d iff_lin eitem 〈=q uantity_partsuppﻩbe ginﻩpuﻩﻩpd ate partsupps et avail qty= availqty-@qua ntit y_d iff_li ne item ﻩpus erehwﻩppkey=suppkeyandp artkey= @par tke yﻩﻩ p rint “ 两个表都更新成功’ ﻩﻩﻩneﻩndels eigebﻩﻩinﻩuﻩﻩupdate li nei temsetquantit y=quantity+ @quanti ty_diff_linei temwhe re o rd erke y=@orde rke y and li nenu mber= @liine numberﻩp ri nt '更新失败”ﻩﻩendﻩ e nd efﻩﻩetch ne xtfr om c urso r_i nsertedi nto @ord erke y, @partkey,s upp key, @linenumb er, @qt y_ ins ert edf etch ne xt from curso r_de leted into @qt y_d elet ed dneﻩndd eallocat e cur sor _i nserte ddealloc at e cursor_de le ted eend eend(2)在在 l ineite m表上定义一个 instea d of in sert 触发器, 当插入明细表中一条记录时时, 应先检查供应表par tsupp 得得 ava il qt y就是否足够qu anti ty 得数量c rea te t rig ger tri g_lineitem_q ua nti ty_ insertonline item iinstead of inser t as bbegin-—声明游标变量指向 inserte d表d eclar e cur sor_inserte dcur sorrea d_ only f orsﻩﻩselect or derk ey,pa rtkey,sup pk ey, lin en umber,q uantityf rom ins er ted-—声明变量获取查找信息dec lare quantity int, @av ailq ty i nt, @suppkeyin t, @partkeyinntt, @o rderkey int, @linenu mber int-—标游开打ﻩ打开游标c nepoﻩcurs or_ins erted -ﻩ-—读取游标f etc hnext fro mcursor_insert edint o@orde rkey,partkey,@@ssuppkey, @linenumber,qu antity wh ile @@FETCH_S TATUS= 0igebﻩin--为变量赋值a tcelesﻩavailqtyy==av ai lqt y fr ompartsuppwﻩwhe re suppkey =@su ppk ey and part ke y= partke yﻩ if @quant ity 〈= @avail qt y-—如果可以更新bﻩbegin /ﻩﻩﻩ/*将将 insert ed 表中得记录插入到明细表*/ ﻩsniﻩserti nto l ineite m select *from i nsertedro=yekredroerehwﻩﻩrderk ey andlinenumb er = @linenumber */ﻩﻩ新更时同ﻩ*同时更新 part supp 表得数量*/ﻩﻩuupd ate pa rtsup pset a vailqty=availqty-@quanti tyﻩerehwﻩe sup pke y= @sup pkey and partkey=part key ppr int ’paarts upp 表有足够得货物可以满足 lin eitem 得quan tityy, 插入成功’endelsebeginﻩﻩ p rintt''pa rt sup p表没有足够得货物可以满足 l ineitem 得得q uantity,插入失败’dneﻩfﻩﻩfetc h next from curso r_ins ert ed in to@ord erkey, partkey, suppkey, @liinenumbe r, qu antity eﻩen ddeall ocat ecursor_ inserted end(3)在在 line ite m表上定义一个 inste ad of del ete 触发器,当当删除明细表中记录时时, 同时改变表供应表 partsupp 得ava il qtyy数值 c re ate trigge r tri g_ lin eit em_quanti ty_ del ete o n line item inste ad of del ete as be gin—-声明游标变量指向deleted 表de cla re curs or_ del eted c ursorread _only forlesﻩﻩelect or derke y, par tkey,sup pkey, linenumbe r,quan tity fr om deleted -ﻩ--声明变量decl are s upp key i nt, par tke yint, @orde rkey int,linen umb erint, @quaant it y int—-标游开打ﻩ打开游标opencursor_deleted-—标游取读ﻩ读取游标ffetch next fr omcurs or _del et edin to @ord erkey , @partkey,s uppkeey, @lin en umber,q ua ntitywhi leFFET CH_ STATUS=0 igebﻩin*/*除删ﻩ*删除*/ﻩ de let e fromlineite m where linenu mber= line number and o rde rkey =ordder key*/新更时同ﻩ同时更新 pa rt supp 表得数量*/u pdateparts uppse tavailqt y=a vai lq ty+quant ityﻩ where s uppke y= @s uppkey a nd par tk ey= @p ar tkeyﻩ p rin t’ 删除成功, 并且已经把货物数量归还到 p ar tsup p里“ fﻩﻩfetc h ne xt fr omcurso r_del etedinto @ord er ke y,p ar tkey,@@suppkey, @lin enu mber,quanti ty neﻩnd edﻩea lloc ate cursor_ delete dend(4)验证 update 触发器--查瞧li neit em 得quan tit y select*fr omlin eit em whe re or derk ey =1830and li nenum ber=1;——查询partsupp 表得ava ilqt y se lect * from part supp w here suppk ey =(selectsupp key fr omlin eitem w here ord erkey=18 30)and partk ey=(s elec t part key from lin eite mwh er eorder key =18 30 a nd linenu mber=1)---更新数量过大——更新得值与原值相同---更新到+ + 2 00 数量, , 成功updateli neitem setquant ity=q uanti ty+ 200where order key=1830and lin en umber =1;--更新 +2 00成功后l ineite m得 quanti ty y 变化——更新+200 成功后par ts upp 表得a va ilqty 变化实验到此。

实验一(SQL语句练习)-2

SQL语句练习-2一、建表1. 科室表:Dept(Deptno,Dname,Loc),表中属性列依次是科室编号、科室名二、插入数据insert into dept values('10','口腔科','A101');insert into dept values('20','眼科','A102');insert into dept values('30','检验科','A103');insert into dept values('40','泌尿外科','B201'); insert into dept values('50','骨科','B202');insert into doctor values('1001','张三',42,4000,'10'); insert into doctor values('1002','李四',36,1800,'10'); insert into doctor values('1003','王五',24,1500,'10'); insert into doctor values('2001','赵六',51,3400,'20'); insert into doctor values('2002','孙七',42,2000,'20'); insert into doctor values('2003','吴八',35,1600,'20'); insert into doctor values('3001','许九',22,4500,'30'); insert into doctor values('3002','龙二',39,3000,'30'); insert into doctor values('3003','林强',34,1500,'30'); insert into doctor values('4001','张笑',48,6500,'40'); insert into doctor values('4003','王东',34,3000,'40'); insert into doctor values('4004','方宇',30,1300,'40'); insert into doctor values('5001','冯晓',44,2400,'50'); insert into doctor values('5002','马征',32,1700,'50');三、完成下列操作(1)将姓王的医生工资涨10%。

SQL数据库实验一 简单数据查询

实验一简单数据查询1.从student表中检索学生所在班级编码,并消除重复行selectdistinct ClassNo from Student2.检索课程表(course)中的教师名、课程号、课程名称,要求检索结果按照教师名降序排序select Teacher '教师名',CouNo'课程号',CouName'课程名称'from Courseorderby Teacher desc3.检索课程表(course)信息,显示课程号大于’005’的课程编号及课程名称,只显示结果中前15行selecttop 15 CouNo'课程号',CouName'课程名称'from Coursewhere CouNo>0054.检索每位教师所上课程的平均报名人数,只显示平均报名人数在25到35人之间的教师select Teacher '教师名'from Coursegroupby Teacherhaving cast(avg(WillNum)asdecimal(5,2))between 25 and 355.查看部门编号为“03”的部门名称。

select DepartNamefrom Departmentwhere DepartNo='03'6.查看部门名称中包含有“工程”两个字的系的全名。

select DepartNamefrom Departmentwhere DepartName like'%工程%'7.显示共有多少个部门。

select count(*)'部门总数'from Department8.显示“01”年级共有多少个班级。

select count(*)'01级共有班级数'from Classwhere ClassNo like'2001____'9.查看在“周二晚”上课的课程名称和教师。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

补充作业及实验一
1填空题
(1)假设表中某列的数据类型为varchar(100) ,而输入的字符串为“ahng3456”,则存储的字节是________。

(2)SQL Server 2000局部变量名字必须以_________开头,而全局变量名字必须以_________开头。

(3)在SQL Server 2000中,字符串常量由_________引起来,日期型常量由_________引起来。

(4)在SQL Server 2000中,货币型常量由_________前缀引导,双字节字符串型常量由_________前缀引导,二进制型常量由_________前缀引导。

(5)语句 select floor(17.4), floor(-214.2), round(13.4382,2), round(-18.4562,3)的执行结果是: _________、_________、_________和_________。

(6)语句select ascii('B'), char(67), len(' 你是tiger ') 的执行结果是: _________、_________和_________。

(7)语句select upper('beautiful') , lower('BEAUtiful') 的执行结果是: ____________和___________。

BEAUTIFUL, beautiful
(8)语句select reverse(6789), select reverse('你是狼') 的执行结果是: ____________和___________。

(9)语句 select ltrim (' 我心中的太阳'), rtrim ('我心中的白马王子 ') 的执行结果是: __________________和____________________。

(10)语句 select left('bye',2), right('人活百岁不是梦',5),substring('人活百岁不是梦',3,2) 的执行结果是: _________、_____________和_____________。

(11)语句select year ('1931-9-18'), month ('1937-7-7'), day ('1945-8-14') ,getdate() 的执行结果是: _________、_________、_________和_________。

(12)语句 select 15/2,15/2.,17%4, '1000' - 15,'2000' + 15 的执行结果是:_________、_________、_________、_________和_________。

(13)语句 SELECT (7+3)*4-17/(4-(8-6))+99%4 的执行结果是: _________。

(14)算术运算符有:加(+)、_________、_________、_________和_________。

(15)常用的比较运算符有:大于(>)、大于等于(>=)、_________、_________、_________
和_________,测试两个相同类型表达式的顺序、__________和_________。

(16)T-SQL 语言中,有:算术运算、_____________、___________和____________。

2简答题
(1)在SQL语言中,什么是全局变量?什么是局部变量?
(2)Transact-SQL 语言中运算符的优先顺序?
3设计题
(1)
declare @代码 int
declare @名称 nchar(2)
set @代码 = 3
set @名称 =
case @代码
when 1 then '博士'
when 2 then '硕士'
when 3 then '学士'
end
print @名称
(2)用while循环控制语句编写20!=1*2*3*…*20程序, 并由print语句输出。

declare @i int, @p bigint
set @p = 1
set @i = 1
while @i<21
begin
set @p = @p * @i
set @i = @i + 1
end
print '20!=' + str(@p,22)。

相关文档
最新文档