SQL实验一
- 格式:doc
- 大小:38.00 KB
- 文档页数:2
实验一数据定义操作●实验目的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语句创建数据库和表】⼀、实验⽬的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编程一.实验目的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数据库实验报告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 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所示)。
实验一数据库和表的建立●实验目的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实验报告实验四触发器实验(一)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一、建表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%。
实验一简单数据查询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.查看在“周二晚”上课的课程名称和教师。
数据库设计与管理实验报告班级:120506学号:XXXXXXXX姓名:XXX实验一数据库的创建与管理及表的管理一、实验目的1.了解SQL Server 2000中数据库的组成;2.熟练创建、管理数据库和事务日志。
3.熟练掌握创建、修改和删除表的方法;4.掌握向表中添加记录、修改记录及删除记录的方法;二、实验内容1.在D盘或E盘建立以学生名命名的文件夹,如图1所示。
在E盘建立文件夹2.分别使用企业管理器、CREATE DATABASE命令两种方法创建数据库和事务日志。
要求如下:数据库名字为S ale;数据文件初始大小为3MB,最大为10MB,文件增量为1MB;事务日志初始大小为2MB,最大为15MB,文件增量为1MB。
用企业管理器创建数据库创建数据文件创建事务日志CREATE DA TABASE创建数据库和事务日志3.向Sale中添加数据文件、日志文件(要求与上同);CREATE DATABASE Sale添加数据文件添加日志文件4.向Sale中添加新文件组,向新文件组中添加一个数据文件(要求与上同);向Sale中添加新文件组向文件组中添加数据文件5.删除后添加的数据文件、日志文件及文件组;删除添加的数据文件删除添加的日志文件删除文件组6.分别使用企业管理器及CREATE TABLE 在S ale数据库中创建如下表:客户表(Customer)产品表(P roduct)入库表(ProIn)销售表(ProOut)7.在企业管理器中给Customer、P roduct、ProOut表中输入记录,并练习记录的修改及删除在Customer中输入记录在P roduct表中输入记录在ProOut表中输入记录删除程序运行删除后效果图修改程序运行修改后效果8.向ProOut表中用insert语句插入表中所列最后一条记录;用update语句将销售日期为2002-1-2,客户编号为001,产品编号为00003的销售记录的销售数量改为18;用delete 语句删除客户表(Customer)中地址为新疆的客户。
精品文档试验一交互式 SQL一实验目的1.熟悉数据库的交互式SQL工具。
2.熟悉通过 SQL对数据库进行操作。
3.完成作业的上机练习。
二实验工具 SQL Server 2005利用 SQL Server 2005 及其交互式查询来熟悉SQL语句。
三实验内容和要求1.在 SQLServer 2005 中建立一个数据库,进行实验所要求的各种操作,所有的 SQL操作均在建立的新库里进行;2.根据以下要求认真填写实验报告,记录所有的实验用例的SQL语言;3.1 数据定义(1)熟悉基本表的创建、修改及删除。
(2)熟悉索引的创建和删除。
3.2 数据操作(1)完成各类查询操作(单表查询,连接查询,嵌套查询)等;(2)完成各类更新操作(插入数据,修改数据,删除数据);3.3 视图的操作视图的定义(创建和删除),查询,更新(注意更新的条件)。
3.4 具体操作内容在 MS SQL Server 中创建学生-课程数据库,要求有学生表(Student)、课程表 (Course)和选课表( SC),向三个表中分别插入相关数据,再用 SQL 语句完成一下要求的查询。
1.使用 SQL 语言创建下面的三个表。
表一:学生信息表( Student)列名说明数据类型约束Sno学号字符串,长度为 10非空Sname姓名字符串,长度为 20非空Ssex性别字符串,长度为 10非空Sage年龄字符串,长度为 10非空Sdept所在系字符串,长度为 10非空表二:课程信息表( Course)列名说明数据类型约束Cno课程号整形非空Cname课程名字符串,长度为 20非空Cpno先行课整型允许为空Ccredit学分整型非空表三:学生选课信息表(SC).精品文档列名说明数据类型约束Sno学号字符串,长度为 10主码,引用 Student 的外码Cno课程号整型主码,引用 Course 的外码Grade成绩字符串,长度为 10取值 0~1002.在以上的三个表中,分别插入下面的数据;表一:学生信息表( Student)Sno Sname Ssex Sage Sdept200215121李勇男20CS200215122刘晨女19CS200215123王敏女18MA200215125张立男19IS表二:课程信息表( Course)Cno Cname Cpno Ccredit1数据库542数学23信息系统144操作系统635数据结构746数据处理27PASCAl 语言64表三:学生选课信息表(SC)Sno Cno Grade2002151211922002151212852002151213882002151222902002151223803.根据上面的三种表,写出完成如下查询功能的SQL 语句:(1)查询全体学生的姓名、出生年份和所在的院系,要求用小写字母表示所有系名(2)查询选修了课程的学生学号(3)查询年龄在 20~23 岁(包括 20 岁和 23 岁)之间的学生的姓名、系别、年龄(4)查询计算机科学系( CS)、数学系( MA )和信息系( IS)学生的姓名和性别(5)查询以“ DB_ ”开头,且倒数第 3 个字符为 i 的课程的详细情况(6)查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列(7)查询选修 1号课程的学生最高分数、最低分数、平均分数(8)查询选修了 3 门课程的学生学号(9)查询每一门课的间接先修课(即先修课的先修课)(10) 查询选修 2 号课程且成绩大于等于90 分的所有学生(11)查询与‘刘晨’在同一个系学习的学生.(12)查询其他系中比计算机科学系所有学生年龄都小的学生姓名及年龄(13)将一个新学生元组(学号: 200215128;姓名:陈冬;性别:男;所在系:IS;年龄:18 岁)插入到Student 表中(14)将学生 200215121 的年龄改为 22 岁(15)删除学号为 200215128 的学生记录(16)建立信息系学生的视图(17)在信息系学生的视图中找出年龄小于20 岁的学生(18)将信息系学生视图 is_Student中学号为200215122的学生姓名改为“刘辰”四实验报告4.1 实验环境:Windows XPMicrosoft SQL server Management Studio 20054.2 实验内容与完成情况:(1)查询全体学生的姓名、出生年份和所在的院系,要求用小写字母表示所有系名SELECT Sname NAME, 'Year of Birth:'BIRTH , 2004 - Sage BIRTHDAY , LOWER( Sdept ) DEPARTMENT FROM Student;(2)查询选修了课程的学生学号SELECT DISTINCT Sno FROM SC ;(3)查询年龄在20~23 岁(包括20 岁和 23 岁)之间的学生的姓名、系别、年龄SELECT Sname , Sdept , Sage FROM Student WHERE Sage BETWEEN 20 AND 23 ;(4)查询计算机科学系(CS)、数学系( MA )和信息系(IS)学生的姓名和性别SELECT Sname , Ssex FROM Student WHERE Sdept IN( 'CS' , 'MA' , 'IS' );(5)查询以“ DB_ ”开头,且倒数第 3 个字符为i 的课程的详细情况.SELECT * FROM Course WHERE Cname LIKE 'DB\_%__'ESCAPE'\' ;(6)查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列SELECT * FROM Student ORDER BY Sdept , Sage DESC;(7)查询选修 1号课程的学生最高分数、最低分数、平均分数SELECT MAX( Grade ) MAX, MIN ( Grade ) MIN , AVG( Grade ) AVG FROM SC WHERECno = '1' ;(8)查询选修了 3 门课程的学生学号SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*)> 3;(8))查询每个学生及其选修课程的情况SELECT Student. Sno , Sname , Ssex , Sage , Sdept , Cno , Grade FROM Student, SC WHERE Student. Sno = SC. Sno ;(9)①查询每一门课的间接先修课(即先修课的先修课)SELECT first. Cno , second . Cpno FROM Course first, Course secondWHERE first. Cpno =second . Cno ;②查询每一门课的间接先修课(即先修课的先修课)(消除有空的行)SELECT first. Cno , second . Cpno FROM Course first, Course secondWHERE first. Cpno =second . Cno and second . Cpno is not null;(10) 查询选修 2 号课程且成绩大于等于90 分的所有学生① select Student . Sno , Sname , Ssex , Sage , Sdept from Student, SC whereStudent . Sno =SC. Sno and Cno = '2'and Grade>= 90 ;② select Sno , Sname , Ssex , Sage , Sdept from Student where Sno =( select Snofrom Sc where Cno ='2'and grade>= '90' );.(11)查询与‘刘晨’在同一个系学习的学生①select Sno , Sname , Sdept from Student where Sdept in ( select Sdept fromStudent where Sname =' 刘晨 ' );②select S1 . Sno , S1 . Sname , S1 . sdept from Student S1, student S2whereS1 . Sdept=s2 . Sdept and S2. Sname = ' 刘晨 ' ;③select Sno , Sname , Sdept from Student where Sdept=( select Sdept from student where Sname =' 刘晨 ' );④select Sno , Sname , Sdept from Student S1 where exists( select* from StudentS2 where S2 . Sdept= S1 . Sdept and S2. Sname = ' 刘晨 ' );(12)查询其他系中比计算机科学系所有学生年龄都小的学生姓名及年龄①s electSname , Sage from Studentwhere Sage <all( select Sage from Student where Sdept = 'CS' )and Sdept <> 'CS' ;②s electSname , Sage from Studentwhere Sage <( select min ( Sage ) from Student where Sdept ='CS' )and Sdept <> 'CS' ;(13)将一个新学生元组(学号:200215128;姓名:陈冬;性别:男;所在系:IS;年龄:18 岁)插入到 Student 表中insert into Student( Sno , Sname , Ssex , Sdept, Sage )values( '200215128',' 陈冬' ,'男' ,'IS' ,'18');select* from Student;(14)将学生 200215121 的年龄改为 22 岁update Student set Sage = '22'where Sno = '200215121';select* from Student;.(15)删除学号为 200215128 的学生记录delete from Student where Sno = '200215128';select* from Student;(16)建立信息系学生的视图create view is_Student as select Sno , Sname , Sage from Student whereSdept ='IS' ;(17)在信息系学生的视图中找出年龄小于20岁的学生select Sno , Sage from is_Student where Sage < 20 ;(18 )将信息系学生视图is_Student中学号为200215122的学生姓名改为“刘辰”update is_Student set Sname = ' 刘辰 ' where Sno ='200215122';select* from is_Student;(19 )删除信息系学生视图is_Student中学号为200215125的记录delete from is_Student where Sno = '200215125';select* from is_Student;4.3 出现的问题:在写第( 9)个查询功能的时候用select o,second.Cpno from Course first,Course second where first.Cpno=o;这句 SQL语句输出的结果中有的课程没有先修课。
数据库实验1:SQL查询操作题目:设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:S(SNO,SNAME,STATUS,CITY);P(PNO,PNAME,COLOR,WEIGHT);J(JNO,JNAME,CITY);SPJ(SNO,PNO,JNO,QTY)。
供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成。
零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成。
工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。
工程项目表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY。
今有若干数据如下:S表:SNO SNAME STATUS CITYS1 精益20 天津S2 盛锡10 北京S3 东方红30 北京S4 丰盛泰20 天津S5 为民30 上海P表:PNO PNAME COLOR WEIGHTP1 螺母红12P2 螺栓绿17P3 螺丝刀蓝14P4 螺丝刀红14P5 凸轮蓝40P6 齿轮红30J表:JNO JNAME CITY J1 三建北京J2 一汽长春J3 弹簧厂天津J4 造船厂天津J5 机车厂唐山J6 无线电厂常州J7 半导体厂南京SPJ表:SNO PNO JNO QTY S1 P1 J1 200S1 P1 J3 100S1 P1 J4 700S1 P2 J2 100S2 P3 J1 400S2 P3 J2 200S2 P3 J4 500S2 P3 J5 400S2 P5 J1 400S2 P5 J2 100S3 P1 J1 200S3 P3 J1 200S4 P5 J1 100S4 P6 J3 300S4 P6 J4 200S5 P2 J4 100S5 P3 J1 200S5 P6 J2 200S5 P6 J4 500首先进行创建数据库、表,插入数据等操作。
数据库原理实验指导书实验名称:试验一:SQL语言嵌套查询和数据更新操作所属课程:数据库原理实验类型:设计型实验实验类别:基础□专业基础√专业□实验学时:4学时一、实验目的1.熟悉和掌握对数据表中数据的查询操作和SQL命令的使用,学会灵活熟练的使用SQL 语句的各种形式;2.加深理解关系运算的各种操作(尤其的关系的选择,投影,连接和除运算);3.熟悉和掌握数据表中数据的插入、修改、删除操作和命令的使用;4.加深理解表的定义对数据更新的作用二、预习与参考1.熟悉SQL SERVER 工作环境;2.连接到学生-课程数据库3.复习对表中数据查询的SQL语言命令;4.复习对表中数据的插入、修改和删除的SQL语言命令。
三、实验要求(设计要求)针对教材例子,通过SQL SERVER企业管理器和查询分析器两种模式,熟悉数据嵌套查询、更新操作。
四、实验方法及步骤1.在表S、C、SC上进行简单查询;2.在表S、C、SC上进行连接查询;3.在表S、C、SC上进行嵌套查询;4.使用聚合函数的查询;5.对数据的分组查询;6.对数据的排序查询。
7.将数据插入当前数据库的表S、C、SC中;A:用SQL命令形式B:用SQL SERVER提供的企业管理器以交互方式进行8.将以上插入的数据分别以.SQL文件和.txt文件的形式保存在磁盘上;9.修改表S、C、SC中的数据;A:用SQL命令形式B:用SQL SERVER提供的企业管理器以交互方式进行10.删除表S、C、SC中的数据。
A:用SQL命令形式B:用SQL SERVER提供的企业管理器以交互方式进行五、实验内容在表S,C,SC上完成以下操作:1.查询学生的基本信息;2.查询“CS”系学生的基本信息;3.查询“CS”系学生年龄不在19到21之间的学生的学号、姓名;4.找出最大年龄;5.找出“CS”系年龄最大的学生,显示其学号、姓名;6.找出各系年龄最大的学生,显示其学号、姓名;7.统计“CS”系学生的人数;8.统计各系学生的人数,结果按升序排列;9.按系统计各系学生的平均年龄,结果按降序排列;10.查询每门课程的课程名;11.查询无先修课的课程的课程名和学时数;12.统计无先修课的课程的学时总数;13.统计每位学生选修课程的门数、学分及其平均成绩;14.统计选修每门课程的学生人数及各门课程的平均成绩;15.找出平均成绩在85分以上的学生,结果按系分组,并按平均成绩的升序排列;16.查询选修了“1”或“2”号课程的学生学号和姓名;17.查询选修了“1”和“2”号课程的学生学号和姓名;18.查询选修了课程名为“数据库系统”且成绩在60分以下的学生的学号、姓名和成绩;19.查询每位学生选修了课程的学生信息(显示:学号,姓名,课程号,课程名,成绩);20.查询没有选修课程的学生的基本信息;21.查询选修了3门以上课程的学生学号;22.查询选修课程成绩至少有一门在80分以上的学生学号;23.查询选修课程成绩均在80分以上的学生学号;24.查询选修课程平均成绩在80分以上的学生学号;25.选做:针对SPJ数据库中的四个表S,P,J,SPJ,完成教材P74-75--习题5中的查询及教材P127--习题5中的查询。
数据库SQL实验代码--实验一、数据库的定义实验--1.创建XSCJGL数据库USE MASTERIF DB_ID('XSCJGL')IS NOT NULL DROP DATABASE XSCJGLCREATE DATABASE XSCJGL--2、刷新数据库目录后,选择新出现的XSCJGL数据库,在SQL 操作窗口中,创建Student、SC、Course三表及表记录插入命令如下:use xscjglif object_id('sc','u')is not null drop table scif object_id('s','u')is not null drop table sif object_id('c','u')is not null drop table cif object_id('tsc','u')is not null drop table tscif object_id('ts','u')is not null drop table tsif object_id('tc','u')is not null drop table tcCreate Table S( Sno CHAR(2)NOT NULL PRIMARY KEY(Sno),Sname CHAR(6),sex CHAR(2)DEFAULT'男'CHECK(sex='男'OR sex='女'),age SMALLINT CHECK(age>=15 AND age<=45),sdept CHAR(6));Create Table C( Cno CHAR(2)NOT NULL PRIMARY KEY(Cno),Cname VARCHAR(20),cdept CHAR(6),Tname CHAR(6),ct SMALLINT CHECK((ct IS NULL)OR(ct BETWEEN 1 AND 5)), CPNO VARCHAR(20));Create Table SC( Sno CHAR(2)NOT NULL CONSTRAINT S_F FOREIGN KEY REFERENCES S(Sno),Cno CHAR(2)NOT NULL,GRADE SMALLINT CHECK((GRADE IS NULL)OR(GRADE BETWEEN 0 AND 100)),PRIMARY KEY(Sno,Cno),FOREIGN KEY(Cno)REFERENCES C(Cno));INSERT INTO S VALUES('S1','李涛','男',22,'统计');INSERT INTO S VALUES('S2','王林','女',18,'计算机');INSERT INTO S VALUES('S3','陈高','女',15,'自动化');INSERT INTO S VALUES('S4','张杰','男',17,'自动化');INSERT INTO S VALUES('S5','吴小丽','女',19,'统计');INSERT INTO S VALUES('S6','张敏敏','女',20,'计算机');INSERT INTO S VALUES('S7','郑冬','男',19,'数学');INSERT INTO S VALUES('S8','朱雨','男',20,'数学');INSERT INTO C VALUES('C1','C语言','计算机','汪小寒','4','计算机基础');INSERT INTO C VALUES('C2','R软件','自动化','周在莹','3','线性代数');INSERT INTO C VALUES('C3','精算学','统计','刘晓','3','金融数学');INSERT INTO C VALUES('C4','计算机算法','计算机','李杰','2','C 语言'); INSERT INTO C VALUES('C5','数据库应用','自动化','周有顺','4','R软件'); INSERT INTO C VALUES('C6','金融数学','统计','黄旭东','3','数学分析'); INSERT INTO C VALUES('C7','时间序列','统计','何道江','4','精算学'); INSERT INTO C VALUES('C8','数学分析','数学','周文','4','高等数学'); INSERT INTO C VALUES('C9','线性代数','数学','储茂权','2','高等数学'); INSERT INTO SC VALUES('S1','C1',90);INSERT INTO SC VALUES('S1','C2',85);INSERT INTO SC VALUES('S2','C1',84);INSERT INTO SC VALUES('S2','C2',94);INSERT INTO SC VALUES('S2','C3',83);INSERT INTO SC VALUES('S3','C1',73);INSERT INTO SC VALUES('S3','C7',59);INSERT INTO SC VALUES('S3','C4',88);INSERT INTO SC VALUES('S3','C5',85);INSERT INTO SC VALUES('S4','C2',65);INSERT INTO SC VALUES('S4','C5',90);INSERT INTO SC VALUES('S4','C6',79);INSERT INTO SC VALUES('S5','C2',89);INSERT INTO SC VALUES('S5','C1',84);INSERT INTO SC VALUES('S6','C5',55);INSERT INTO SC VALUES('S6','C1',null);--实验二、数据库的查询实验--使用XSCJGL库,保存好并每次实验做好备份,以后实验要继续使用。
实验报告
单独运行每个表格都可以,但是后来一起运行就出错了,原来是没有把之前运行的表格删掉的原因,删掉之后就能运行出来了。
总结以及心得体会
第一次用这个软件,再加上当时电脑是没有收到老师的控制,导致没有听到老师的讲解,后来在同学的帮助下,才学会了用这个软件,数据库的代码都是文对意的,理解学习起来很容易,以后在加强对知识点的掌握,以及探索软件的一些功能,应该可以学的会。
回去自己装软件时也遇到了很多问题,希望自己学习数据库的路途不会像装软件一样艰辛。
教师评阅意见
教师:年月日。
SQL数据库原理实验指导书及答案数据库原理SQLServer实验指导书1数据库系统原理实验一、基本操作实验实验1:数据库的定义实验本实验的实验目的是要求学生熟练掌握和使用SQL、T-SQL、SQL Server Enterpriser Manager Server 创建数据库、表、索引和修改表结构,并学会使用SQL Server Query Analyzer,接收T-SQL语句和进行结果分析。
本实验的内容包括:l)创建数据库和查看数据库属性。
2)创建表、确定表的主码和约束条件,为主码建索引。
3)查看和修改表结构。
4)熟悉SQL Server Enterpriser Manager和 Query Analyzer工具的使用方法具体实验任务如下。
1.基本提作实验1)使用Enterpriser Manager建立图书读者数据库2)在Enterpriser Manager中查看图书读者数据库的属性,并进行修改,使之符合要求。
3)通过Enterpriser Manager,在建好了图书借阅数据库中建立图书、读者和借阅3个表,其结构为:图书(书号,类别,出版社,作者,书名,定价,版次);读者(编号,姓名,单位,性别,电话):借阅(书号,读者编号,借阅日期人)要求为属性选择合适的数据类型,定义每个表的主键,Allow Null(是否允许空值)和 Default Value(缺省值)等列级数据约柬。
4)在Enterpriser Manager建立图书、读者和借阅3个表的表级约束:每个表的PrimaryKey2(主键)约束;借阅表与图书表间、借阅表与读者表之间的FOREIGNKEY(外码)约柬,要求按语义先确定外码约束表达式,再通过操作予以实现;实现借阅表的书号和读者编号的UNIQUE(惟一性)约束;实现读者性别只能是“男”或“女”的check (检查)约束。
2.提高操作实验建立学生_课程库操作,在查询分析器中用SQL命令实现。
补充作业及实验一
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)。