数据库实验指导.doc

上传人:小** 文档编号:16614250 上传时间:2020-10-19 格式:DOC 页数:41 大小:1.76MB
收藏 版权申诉 举报 下载
数据库实验指导.doc_第1页
第1页 / 共41页
数据库实验指导.doc_第2页
第2页 / 共41页
数据库实验指导.doc_第3页
第3页 / 共41页
资源描述:

《数据库实验指导.doc》由会员分享,可在线阅读,更多相关《数据库实验指导.doc(41页珍藏版)》请在装配图网上搜索。

1、实验D001: 数据库及表的建立和管理实验一、实验名称和性质所属课程数据库原理 实验名称数据库、数据表的建立与数据的插入实验学时2实验性质验证 综合 设计必做/选做必做 选做二、实验目的1了解和掌握SQL Server系统。2掌握数据库建立的几种方法。3掌握数据表的建立方法和数据表中数据的插入方法。 三、实验的软硬件环境要求硬件环境要求:PC机(单机)。使用的软件名称、版本号以及模块:Windows XP下的SQL Server 2005(或 SQL Server 2008)。四、知识准备前期要求掌握的知识:1SQL Server 2005平台构成:数据库引擎。分析服务(Analysis Se

2、rvices)。集成服务(Integration Services)。复制技术。通知服务(Notification Services)。报表服务(Reporting Services)。服务代理(Service Broker)。全文搜索。2SQL Server 2005安装成功后,系统会自动创建4个系统数据库:Master、Model、Msdb、Tempdb。3SQL Server 2005中最重要的管理工具:“SQL Server Management Studio”(简称“SSMS”)。五、实验内容1创建数据库和查看数据库属性。2在“SSMS”中和查询编辑器中创建数据表。3“SSMS”中和

3、查询编辑器中数据表中数据的插入。 六、验证性实验(一) 在“SSMS”中创建数据库、数据表和进行数据插入1创建数据库(1)使用“SSMS”建立数据库的步骤1)单击“开始”菜单下“所有程序”“Microsoft SQL Server2005(或Microsoft SQL Server2008)” “SQL Server Management Studio”,如图3-1所示。图3-1 SQL Server 2005启动2) 在连接到服务器窗口中选择服务器名(点击服务器名称右面的下拉列表选择“浏览更多”展开“数据库引擎”选择下面出现的本机号,单击“确定”),单击”连接”按钮, 如图3-2所示.。3)

4、 进入到“Microsoft SQL Server Management Studio(SSMS)”,如图3-3所示.。 图3-2 SQL Server 2005连接服务器界面 图3-3 “SSMS”界面4)选中“数据库”文件夹,单击鼠标右键,在弹出菜单上选择“新建数据库”。随后在数据库属性对话框的常规页面中,输入数据库名“学生选课”,如图3-4 所示。新建数据库属性对话框有3 个页面:常规、选项和文件组。常规选项分别用来义数据库名、数据文件属性和日志文件属性。选项是对数据库中游标状态等信息的设置。5)单击“确定”按钮,关闭对话框。在“SSMS”窗口中出现“学生选课”数据库标志,如图3-5 所

5、示,表明已经成功创建数据库。 图3-4 新建数据库界面 图3-5 数据库建立成功界面6)在“SSMS”中,右键单击“学生选课”数据库,在弹出菜单中选择“属性”,将弹出一个对话框,显示“学生选课”数据库的属性,如图3-6所示。 2创建数据库表(1) 打开刚才创建的“ 学生选课” 数据库, 并在“SSMS”窗口的右边窗口中用鼠标右键点击“表”对象,选择“新建表”命令,打开表编辑器窗口,如图3-7 所示。 图3-6 数据库属性窗口 图3-7 表编辑器界面(2)根据表3-1 所示的表结构,添加新列。表3-1 学生表列名数据类型长度是否允许为空学号Varchar10N姓名Varchar20 N性别Cha

6、r2Y 出生日期Smalldatetime4Y专业名Varchar20 Y所在系Varchar20 Y联系电话Varchar20 Y(3)点击工具栏上的“保存”按钮,在弹出的“选择名称”对话框中输入表名“学生-表”,然后单击“确定”按钮,完成新表的创建。(4)同理,根据表3-2 建课程表,根据表3-3 建选课表表3-2 课程表列名数据类型长度是否允许为空课程号Char6N 课程名Char20 N学时Tinyint 1N学分Tinyint1N表3-3 选课表列名数据类型长度是否允许为空学号Char6N 课程号Char3N 成绩Tinyint1Y3使用“SSMS”向数据库表输入数据、修改数据、删除

7、数据。(1)打开“SSMS”,选中服务器,展开数据库文件夹,进一步展开“学生选课”数据库。单击表文件夹,找到“学生表”。(2)用鼠标右键单击“学生表”,选择“打开表”“返回全部行,(SQL2008中选择“编辑前xx行”)就会出现表更新对话框,如图3-8 所示。 图3-8 记录输入界面(3)参考表3-4 的内容,为学生表输入数据。(二)在查询编辑器中创建数据库、数据表和进行数据插入1在“SSMS”中,点击工具栏中的第一个按钮“新建查询”,如图3-9所示。 图3-9 查询编辑器的打开打开查询编辑器的窗口,如图3-10 所示。图3-10 查询编辑器2在查询编辑器的右窗口中输入T-SQL语句:crea

8、te database student选中该语句并执行(单击工具栏的“执行”按钮),出现命令已成功表示数据库成功建立。3用T-SQL语句创建数据表STUD:USE STUDENT(表示student为当前数据库)CREATE TABLE STUD(SNO VARCHAR(10) NOT NULL, SNAME VARCHAR(20) NOT NULL, SEX CHAR(2), BIRTHDAY DATETIME)选中上述语句并执行,出现命令已成功完成表示数据表已经建立好。可以在“对象资源管理器”中的STUDENT数据库上右击鼠标,并单击“刷新”,然后展开“用户表”,可以看到STUD数据表。4

9、向STUD数据表中插入数据记录。INSERT INTO STUD VALUES(200512,Josephine,F,1980-12-20)选中上述语句并执行,出现所影响的行数为1行表示数据已经插入到数据表中。七、设计性实验(注意:设计性实验的题目用T-SQL命令完成)1实验要求(1)创建一个XSDA数据库,该数据库的主文件逻辑名称为 xsda_data,物理文件名为D:SQLxsda.mdf,初始大小为20MB,无上限,增长速度为20%;数据库的日志文件逻辑名称为xsda_log,物理文件名为D:SQLxsda.ldf,初始大小为3MB,最大尺寸为10MB,增长速度为1MB。(2)在XSDA

10、数据库中创建三个数据表:S(SNO VARCHAR (10) NOT NULL ,SNAME VARCHAR(20),DEPA VARCHAR(20), AGE INT, SEX CHAR(4) )C(CNO VARCHAR(10) NOT NULL, CNAME VARCHAR(20),cpno varchar(10),credit int)SC(SNO VARCHAR(10) NOT NULL, CNAME VARCHAR(10) NOT NULL, GRADE DECIMAL(4,1))(3)在3个表中输入如下数据。(参考以下表中内容,每个表至少输入4-6个记录)表3-4 学生表学号姓名

11、系部年龄性别200512李勇计算机系20男200518刘晨计算机系19女200018王敏数学系18女200511杨扬物理系20男200510张立信息系19男200513张立物理系19男200514王点点信息系19女200012欧阳雨数学系20男200515刘依依数学系23女表3-5课程表课程号课程名前修课程学分c01数据库原理c034c02信息系统C014c03数据结构null6c04DB_设计co13表3-6 成绩表学号课程号成绩200512c0270200512c0355200512c04null200515c0180200518c0395200018c0180200518c0245200

12、511c0278200511c0145(4)修改S表结构,增加一个入校时间,列名为RXTIME,日期型。(5)删除SC表中成绩不及格的记录。(6)把S表中学号为“200512”的学生的年龄改为19。2思考题(1)SQL Server 2005/2008 提供了哪些基本数据类型?(2)数据库创建后怎样修改数据库操纵文件和数据库日志文件分配的空间大小?(3)用数据的导入、导出实现SQL数据库之间;SQL与EXCEL之间的数据传递。实验D002: 单表查询实验一、实验名称和性质所属课程数据库原理 实验名称单表查询实验学时2实验性质验证 综合 设计必做/选做必做 选做二、实验目的1掌握数据的基本检索方

13、法。2掌握数据查询的Group by和Order by子句的使用。3 掌握聚集函数的使用方法。三、实验的软硬件环境要求硬件环境要求:PC机(单机)。使用的软件名称、版本号以及模块:Windows XP下的SQL Server 2005(或 SQL Server 2008)。四、知识准备前期要求掌握的知识:数据检索的语句格式:SELECT ALL|DISTINCT FROM WHERE GROUP BY HAVING ORDER BY ASC|DESC 其中,SELECT后的目标列表达式可以是列名、表达式或函数。GROUP BY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常

14、会在每组中作用集函数。HAVING短语:筛选出只有满足指定条件的组ORDER BY子句:对查询结果表按指定列值的升序或降序排序 注意:T-SQL语句中关键字不区分大小写五、实验内容1对数据表进行简单检索。2对数据表进行排序检索。3在检索中使用聚集函数。六、验证性实验(首先把精品课程网站-上机实验数据库脚本中的代码复制到新建查询窗口执行(注意,只执行一次。为避免重复,执行后把这段代码删除。)先选择要操作的数据库,用T-SQL命令:USE STUDENT或在工具栏的当前数据库中选择STUDENT, 如图3-11所示。工作数据库图3-11 查询编辑器界面以下查询要求在逐个语句执行,执行后将执行结果记

15、录下来。1条件查询全部数据USE STUDENTSELECT * FROM S2在SELECT关键字后指明要检索的列名(1) 查询S表的学生学号和姓名SELECT SNO,SNAME FROM S(2) 查询S表中的系部名SELECT DEPA FROM S (3)查询S表中不重复的系部名SELECT DISTINCT DEPA FROM S3改变列标题的检索(1)使用 空格 形式: 列名 新标题SELECT SNO 学号 , SNAME 姓名 FROM S(2)使用“AS”形式,列名 AS 新标题SELECT SNO AS 学号, SNAME AS 姓名 FROM S3有条件选择的查询(1)

16、在S表检索“信息系”的学生信息SELECT * FROM S WHERE DEPA=信息系(2)在S表中检索姓“王”的学生信息SELECT * FROM SWHERE sname like 王%(3)在SC表检索C01选修课成绩为空的选课记录SELECT SNO, CNO FROM SCWHERE cno=C01 and grade is null(4)检索年龄为21,18,22的学生学号、姓名SELECT SNO,SNAME FROM SWHERE age in (21,18,22)Age IN 21,18,22表示某条记录的AGE字段值是否是集合21,18,22中的元素,如是,则选择。它等

17、价于下面语句:SELECT SNO,SNAME FROM SWHERE age=18 or age=21 or age=224使用聚集函数(1)查询选课表中最高分、平均分、最低分SELECT MAX(GRADE), AVG(GRADE),MIN(GRADE)FROM SC(2)查询“C01”课程的最高分、平均分和最小成绩。SELECT MAX(GRADE), AVG(GRADE),MIN(GRADE)FROM SCWHERE CNO=C015对检索结果进行排序SELECT * FROM SCWHERE GRADE IS NULLORDER BY SNO,CNO DESC6进行分组统计:(1)查

18、询各学生的选课数SELECT SNO,COUNT(*)FROM SCGROUP BY SNO(2)使用HAVING 字句:“选课表”中查询选修了3 门以上课程的学生学号。SELECT SNO ,COUNT(*)FROM SCGROUP BY SNOHAVING COUNT(*)=3(3)“选课表”中按学号分组汇总学生的平均分,并按平均分的降序排列。SELECT SNO 学号, AVG(GRADE)平均分 FROM SCGROUP BY SNOORDER BY 平均分 DESC(4)分析下面两个SELECT语句执行结果,说明有什么不同?SELECT SNO FROM SCORDER BY SNO

19、GOSELECT SNO FROM SCGROUP BY SNO七、设计性实验1实验要求(1)查询计算机系学生的学号和姓名。(2)查询选修了课程的学生学号。(3)查询选修“C01” 课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列。(4)查询每门课程的平均分。(5)查询学校开设的课程总数。 (6)查询选修两门及两门以上课程的学生学号。(此题除了代码,执行结果,还请写出代码的执行过程。)(7)查询年龄在20-22之间的男生的学号、姓名、系部。(8)查询选修“C01”课程的学生人数。2实验报告要求(见精品课程网站上机指导中实验报告参考)3思考题(1)使用ORD

20、ER BY子句后SELECT后的数据列有什么限制吗?使用GROUP BY 呢?(2)执行select max(grade) from sc, 写出执行结果;执行 select sno, max(grade) from sc group by sno,写出执行结果。思考:使用GROUP BY子句后,语句中的统计函数的运行结果有什么不同?实验D003: 多表查询实验一、实验名称和性质所属课程数据库原理 实验名称多表查询实验学时2实验性质验证 综合 设计必做/选做必做 选做二、实验目的1掌握多表连接查询方法。2掌握IN 子查询的嵌套查询。3了解EXISTS嵌套查询方法。三、实验的软硬件环境要求硬件环

21、境要求:PC机(单机)。使用的软件名称、版本号以及模块:Windows XP下的SQL Server 2005(或 SQL Server 2008)。四、知识准备1多表的连接查询(相当于做笛卡儿乘积)SELECT FROM 表名,表名2多表的等值连接查询SELECT ALL|DISTINCT FROM 表1,表2 WHERE 表1.列名=表2.列名注意:多表连接时要注意当某列名在两张表中同时存在时,在列名前要加表名以示区分。3表自身的连接SELECT 别名.列名,FROM 表1 AS 别名1, 表1 AS 别名2WHERE 别名1.列名=别名2.列名注意:自身连接时因为是对同一张表操作,为区分

22、开来对该表操作的顺序,需要对表取两个别名,以示区别。4IN嵌套子查询SELECT FROM 表名WHERE 列名 IN (SELECT 字句)5 EXISTS嵌套子查询带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。若内层查询结果非空,则返回真值若内层查询结果为空,则返回假值。由EXISTS引出的子查询,其目标列表达式通常都用* ,因为带EXISTS的子查询只返回真值或假值,给出列名无实际意义所以,EXISTS子查询中一般是相关自查询,即子查询脱离父查询后不能单独执行。思考:如果EXISTS子查询中是不相关子查询,会有什么结果?五、实验内容1多表

23、等值连接查询;2外连接查询;3IN子查询嵌套; 4EXISTS嵌套查询。六、验证性实验1多表的连接查询(相当于做笛卡儿乘积)SELECT * FROM C,SC2表的等值连接查询(1) 查询各学生的选课信息(包括学号、课程名、成绩)因为学号和成绩在SC表中,而课程名在C表中,因此需要多表查询。SELECT SNO,CNAME,GRADEFROM C,SCWHERE C.CNO=SC.CNO(2) 查询学生的选课记录,显示学生的学号、姓名、课程号、成绩。SELECT S.SNO,SNAME,CNO,GRADEFROM S,SCWHERE S.SNO=SC.SNO(3) 查询学生的选课记录,显示学

24、生的学号、姓名、课程号、课程名、成绩SELECT S.SNO,SNAME,SC.CNO,CNAME,GRADEFROM S,SC,CWHERE S.SNO=SC.SNO AND SC.CNO=C.CNO3左外连接查询:当希望左表(第一张表)中所有记录全部显示出来时,需要用左外连接操作。INSERT INTO S (SNO,SNAME) VALUES(20000,ZXX)SELECT S.SNO,SNAME,CNO,GRADEFROM S LEFT OUTER JOIN SC ON S.SNO=SC.SNO说明与下面等值连接的执行结果有何不同?SELECT S.SNO,SNAME,CNO,GRA

25、DEFROM S, SC WHERE S.SNO=SC.SNO4表自身的连接(1) 查询与李勇同系的学生学号将学生表S与S本身进行等值连接(系部相等),因为S与S做连接操作时不能区分,所以,对表取一个别名。然后将第二张表S中名字为李勇的记录选择出就可。SELECT S1.SNOFROM S AS S1, S AS S2WHERE S1.DEPA=S2.DEPA AND S2.SNAME=李勇(2)显示每个学生的非最高分成绩(学生自己的选课成绩中,不是最高分的选课记录显示出来)SELECT SNO, CNO, GRADE FROM SC AS SC1 WHERE GRADE (SELECT GR

26、ADE FROM SC AS SC 2 WHERE SC2.SNO=SC1.SNO AND SC2.CNO=C02)6 EXISTS嵌套子查询(1) 执行以下语句,观察显示的两个查询结果SELECT SNO,SNAME FROM SWHERE EXISTS(SELECT * FROM SC WHERE CNO=C03)-请写出这段代码的执行过程。GO SELECT SNO,SNAME FROM S(从结果看,第一段代码有没有实际的意义?)(2)执行以下语句,观察显示的两个查询结果INSERT INTO C VALUES(C06,数据库安全,NULL,3)SELECT SNO,SNAME FRO

27、M SWHERE EXISTS(SELECT * FROM SC WHERE CNO=C06)(3)查询数据库原理课程的选课人数SELECT COUNT(*)FROM SCWHERE EXISTS( SELECT * FROM C WHERE C.CNO=SC.CNO AND CNAME= 数据库原理)七、设计性实验1实验要求(1)查询“计算机系”学生所学课程的成绩表。(2)查询成绩比该课程平均成绩低的同学的成绩表。(提示:用相关子查询。)(3)查询选修“C01” 课程的学生学号、课程名、成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列。(4)查询选修两门及两门以上课程的

28、学生学号及姓名。(5)查询年龄在20-22之间的男生的选修的课程号。(6)查询选修数据结构课程的学生人数。(7)查询每门选课成绩在80分以上的学生学号、姓名。(提示:每个学生选修的所有课程中如果其最低成绩为=80即满足条件)2思考题(1)多表的连接查询是否都可以转换成嵌套查询?什么情况下连接查询不能用嵌套查询表示?(2)多表连接查询和IN嵌套子查询从查询效率上来说,哪种查询的效果更好?为什么?实验D004: 数据完整性约束实验一、实验名称和性质所属课程数据库原理 实验名称数据完整性约束实验学时2实验性质验证 综合 设计必做/选做必做 选做二、实验目的1掌握数据完整性约束的类型。2掌握SQL S

29、ERVER中的相关完整性约束。三、实验的软硬件环境要求硬件环境要求:PC机(单机)。使用的软件名称、版本号以及模块:Windows XP下的SQL Server 2005(或 SQL Server 2008)。四、知识准备1SQL SERVER中的完整性约束(1)Primary key约束:利用表中的一列或多列来唯一标识一行数据.能确保primary key 对应的数据列不为空,且数据不重复.(2)default约束:处理用户不包含全部数据列的数据插入.(3)check约束通过检查输入数据的值来维护数据的完整性. (4)unique约束确保主键外的列数据的唯一性(5)Foreign key主要

30、用来维护两个表之间的数据一致性. 2使用规则规则的创建:Create rule 规则名As 布尔表达式规则的绑定:Sp_bindrule rulename, table.columnSp_unbindrule talbe.column3创建数据表时指明完整性约束CREATE TABLE ( , , );:涉及相应属性列的完整性约束条件:涉及一个或多个属性列的完整性约束条件 4修改表结构时可以添加或删除完整性约束ALTER TABLE 表名ADD CONSTRAINT 完整性约束名 约束 如,在S表上添加主键约束ALTER TABLE S ADD CONSTRAINT priK PRIMARY

31、KEY(SNO)五、实验内容1建立新表时增加完整性约束。2为已有表添加完整性约束。3为两表建立关联,实现参照完整性。六、验证性实验每小题语句输入好后执行,观察执行后有什么结果?想想为什么?1PRIMARY KEY主键约束的建立(1)建立表时加主键约束CREATE TABLE ST(SNO VARCHAR (10) PRIMARY KEY ,SNAME VARCHAR(20) NOT NULL, DEPA VARCHAR(20), AGE INT, SEX CHAR(4))GOINSERT INTO ST (SNO,SNAME,DEPA) VALUES(1001,ZXX,NULL)GOINSER

32、T INTO ST (SNO,SNAME) VALUES(1001,MID)GO INSERT INTO ST (SNO,SNAME) VALUES(NULL,ZXX)(2)在已有的表上添加约束CREATE TABLE ST2(SNO VARCHAR (10) NOT NULL ,SNAME VARCHAR(20) NOT NULL, DEPA VARCHAR(20), AGE INT, SEX CHAR(4))GOINSERT INTO ST2 SELECT * FROM SGOALTER TABLE ST2 ADD CONSTRAINT priKEY PRIMARY KEY(SNO)INS

33、ERT INTO ST2 (SNO,SNAME,DEPA) VALUES(200512,Beibei,NULL)运行后出现什么结果?分析原因。2DEFAULT约束CREATE TABLE CUST(NO VARCHAR(5) PRIMARY KEY, WEIGHT INT DEFAULT(10)GOINSERT INTO CUST(NO) VALUES(ZY01)INSERT INTO CUST(NO) VALUES(ZY03)INSERT INTO CUST VALUES(ZY02,20) GO SELECT * FROM CUST运行后出现什么结果?分析原因。3CHECK 约束CREATE

34、 TABLE CUSTOMER(CUSTNO CHAR(4) NOT NULL CHECK (CUSTNO LIKE A-Z0-9A-Z0-9A-Z0-9A-Z0-9),CUSTNAME VARCHAR(20)GOINSERT INTO CUSTOMER VALUES(BJ01,Beijing Grid Corp.)GOINSERT INTO CUSTOMER VALUES(BJ1,Beijing Grid Corp.)GOINSERT INTO CUSTOMER VALUES(BJ*1,Beijing Grid Corp.)运行后出现什么结果?分析原因。4UNIQUE 唯一性约束的建立CRE

35、ATE TABLE CUST1(CUSTNO CHAR(4)PRIMARY KEY,CUSTNAME VARCHAR(20) UNIQUE, COUNTRY VARCHAR(10)GO INSERT INTO CUST1(CUSTNO) VALUES(BJ01)GOINSERT INTO CUST1(CUSTNO) VALUES(BJ02)GOINSERT INTO CUST1(CUSTNO, CUSTNAME )VALUES(BJ03,Beijing Grid Corp.)GOINSERT INTO CUST1 (CUSTNO, CUSTNAME )VALUES(BJ04,Beijing G

36、rid Corp.)运行后出现什么结果?分析原因。5FOREIGN KEY外键约束的建立ALTER TABLE C ADD CONSTRAINT CpriKEY PRIMARY KEY(CNO)GOALTER TABLE SC ADD CONSTRAINT scpriKEY PRIMARY KEY(SNO,CNO)ALTER TABLE SC ADD CONSTRAINT scforKEY1 FOREIGN KEY (SNO) REFERENCES ST2(SNO)ALTER TABLE SC ADD CONSTRAINT scforKEY2 FOREIGN KEY (CNO) REFEREN

37、CES C(CNO)GOINSERT INTO SC (SNO,CNO) VALUES(890,C10)INSERT INTO SC (SNO,CNO) VALUES(200518,C01)INSERT INTO SC (SNO,CNO) VALUES(890,NULL)INSERT INTO SC (SNO,CNO) VALUES(NULL,C10)运行后出现什么结果?分析原因。七、设计性实验1实验要求(1) 在S表中添加完整性约束:SNO设置为主键,SEX 的默认值为女,AGE 的有效值为16-25。(2)创建1张与S相同的表S1,在创建的同时将SNO设置为主键,SEX 的默认值为女,AG

38、E 的有效值为16-25 ,并将S表中的数据插入到S1中,插入不同的记录(用INSERT命令)来验证设置的完整性。(3)创建1张与SC相同的表SC1,将(SNO,CNO)设置为主键,SNO和CNO设置为外键,并将SC表中的数据复制到SC1中,插入不同的记录来验证设置的完整性。(4)创建1张与C表相同的表C1,将C中数据插入到C1后,在C1上添加完整性约束:将(CNO)设置为主键,CPNO 引用 CNO,CREDIT值为3-6。2思考题SQL Server 中有哪些完整性功能?保证数据完整性还需要注意哪些方面的问题?实验D005: 数据操作与索引实验一、实验名称和性质所属课程数据库原理 实验名称

39、数据操作与索引实验学时2实验性质验证 综合 设计必做/选做必做 选做二、实验目的1掌握数据操作-插入、删除、修改。2掌握数据表的索引方法。3掌握视图的创建机制及其上的操作。三、实验的软硬件环境要求硬件环境要求:PC机(单机)。使用的软件名称、版本号以及模块:Windows XP下的SQL Server 2005(或 SQL Server 2008)。四、知识准备1数据插入的两种方式单记录插入将数值列表所表示的记录插入数据表INSERT INTO 表名 VALUES(数值列表)多记录插入将SELECT语句的查询结果插入到数据表INSERT INTO表名 SELECT 语句2数据删除的语句格式:D

40、ELETE FROM 表名WHERE 字句3数据修改格式:UPDATE 表名SET 字段名=表达式WHERE 字句4索引提高数据效率的有效方法,建立索引的方法有两种:非聚族索引:根据某些字段按次序建立索引表,但是不修改原来的数据表;1张数据表上可以建立多个非聚族索引。聚族索引:根据某些字段进行排序建立索引,同时将原表根据该字段排序过。一张表上只能建立一个聚族索引。5根据索引看数据表SELECT * FROM 表名 (INDEX=该表上的索引名)五、实验内容1数据的插入操作。2数据的修改操作。3数据的查询造作。 4聚族索引、非聚族索引的建立。5视图的建立及其上的操作。六、验证性实验1数据的插入(

41、1)单记录的插入USE STUDENTGOSELECT * FROM SINSERT INTO S(SNO,SNAME) VALUES(200300,Paulwen)SELECT * FROM S(2)多记录的插入CREATE TABLE SBAK(SNO VARCHAR (10) NOT NULL ,SNAME VARCHAR(20),DEPA VARCHAR(20), AGE INT, SEX CHAR(4)GOSELECT * FROM SBAKINSERT INTO SBAK SELECT * FROM SSELECT * FROM SBAK2数据的删除CREATE TABLE CBA

42、K( CNO VARCHAR(10) NOT NULL, CNAME VARCHAR(20), CPNO VARCHAR(10),CREDIT INT)GOINSERT INTO CBAK SELECT * FROM CDELETE FROM CBAK WHERE CREDIT4SELECT * FROM CBAK3数据的修改SELECT * FROM SUPDATE S SET DEPA=CS WHERE DEPA=计算机系GOSELECT * FROM S4索引的建立(1) 建立非聚族索引SELECT * FROM CGOCREATE INDEX ICNAME ON C(CNAME)GOS

43、ELECT * FROM C /*看数据表 */SELECT * FROM C WITH(INDEX=ICNAME) /*按索引次序看数据表 */(2)建立聚族索引SELECT * FROM CGOCREATE CLUSTERED INDEX CICNO ON C(CNO)GOSELECT * FROM CSELECT * FROM C WITH(INDEX=CICNO)(3) 建立唯一索引CREATE UNIQUE INDEX UISNO ON SC (SNO)执行后有什么结果?为什么会出现这个结果?CREATE UNIQUE INDEX UISNO ON SC (SNO, CNO DESC

44、)执行后有什么结果?为什么?(4)建立复合索引SELECT * FROM SGOCREATE INDEX IAGESNO ON S(AGE DESC,SNO)GO SELECT * FROM SSELECT * FROM S WITH(INDEX =IAGESNO)(5)查看表中的索引SP_HELPINDEX S(6)删除表中的索引DROP INDEX S.IAGESNOGOSP_HELPINDEX S5视图及其操作(1)视图的建立CREATE VIEW SHOWSNOASSELECT S.SNO,SNAME,AVG(GRADE ) AS 平均成绩 FROM S,SCWHERE S.SNO=S

45、C.SNOGROUP BY S.SNO,SNAMEGO SELECT * FROM SHOWSNO创建信息系学生的视图CREATE VIEW VISDEPAASSELECT * FROM S WHERE DEPA= 信息系(2)在视图上修改数据UPDATE VISDEPASET DEPA=ISGO SELECT * FROM VISDEPA视图中还有数据吗?为什么会这样?CREATE VIEW S_SUMASSELECT SNO, SUM(GRADE) AS TOTALSCORE FROM SCGROUP BY SNOGOUPDATE S_SUMSET TOTALSCORE=60执行语句,出现

46、什么结果?分析为什么?(3)在视图上删除数据SELECT * FROM VISDEPADELETE FROM VISDEPA WHERE SEX=女SELECT * FROM VISDEPASELECT * FROM S七、设计性实验1实验要求(1)将S表系部为“CS”学生对应的系部改为计算机系。(2)创建一个与SC表相同新数据表SCNEW,查询SC表中成绩为空的记录并将其复制到SCNEW表中。(3)删除SC表中成绩为空的选课记录。(4)根据S表中姓名字段建立一个降序非簇索引。(5)建立S表上SNO的聚族索引。(6)建立SC表上根据SNO升序,CNO降序的复合索引。(7)建立每门课程的课程号、

47、课程名、选课人数、平均分的视图。2思考题(1)是否可以对任意的视图进行修改?什么样的视图上不能进行修改操作?(2)如果表中某个字段重复值比较多,要不要在该字段上建立索引?为什么?实验D006: SQL编程及存储过程实验一、实验名称和性质所属课程数据库原理 实验名称SQL编程及存储过程实验学时2实验性质验证 综合 设计必做/选做必做 选做二、实验目的1了解T-SQL的基本数据类型、函数;2掌握局部变量的定义和赋值;3掌握存储过程的定义及调用三、实验的软硬件环境要求硬件环境要求:PC机(单机)使用的软件名称、版本号以及模块:Windows XP下的SQL Server 2005(或 SQL Ser

48、ver 2008)四、知识准备1SQL中的基本数据类型:varchar:字符数据。datetime:(常量使用特定格式的字符日期值来表示,并使用单引号括起来。例如:1976-05-28,May 28, 1976,28 May, 1976,760528,05/28/76。Integer:用一串数字来表示,不含小数点,不使用引号。例如,123,1896。Decimal:用一串数字来表示,可以包含小数点,不使用引号。例如,1893.1209,2.0。float和real:使用科学记数法表示。例如,101.5E5,0.5E-2。money:用一串数字,可以包含或不包含小数点,以一个货币符号($)作为前

49、缀,不使用等等2SQL中的变量:SQL中变量用来存放临时数据,变量使用前一定要先进行定义,变量名必须以开头。另外,SQL Server中还提供一些系统变量,系统变量是以开头的。变量的定义: declare 变量名 数据类型如goDeclare name varchar(20)set name=王雨Print nameGo3SQL中的基本函数(1) 字符串函数:LEN()、UPPER()、LOWER()、RIGHT()、LEFT()、SUBSTRING()、CHARINDEX()、STR()、REPLACE()等(2) 数学函数:常用的数学函数通常对作为参数提供的输入值执行计算,并返回一个数字值

50、。如ABS()、POWER()、SQUARE()、SQRT()、ROUND()、RAND()等。(3)日期和时间函数:日期和时间函数对日期和时间输入值执行操作,并返回一个字符串、数字值或日期和时间值。GETDATE()、DATEADD()、DATEIFF()、DATEPART()、ISDATE()、DAY()、MONTH()、YEAR()等(4)数据类型转换函数CAST函数CAST( expression AS data_type )CONVERT函数CONVERT( data_type ( length ) , expression , style )4存储过程的创建及调用CREATE pr

51、oc 过程名变两名 数据类型, nAS Sql语句调用 : EXEC过程名 参数列表5局部变量的定义DECLARE 变量名 数据类型注意:SAL中的局部变量名必须以开头。五、实验内容1基本结构编程。2存储过程的建立。3存储过程的调用。六、验证性实验1编程实现查询与李勇同系的学生学号USE STUDENTGO DECLARE DEPA VARCHAR(20)SELECT DEPA=DEPA FROM S WHERE SNAME=李勇SELECT SNO FROM SWHERE DEPA=DEPA2运行下面的程序,观察运行结果DECLARE X INT, Y INTSET X=0SELECT Y=

52、1WHILE Y14 BREAK ENDPRINT OUT OF THE LOOP3 CASE函数的使用(1) CASE后带表达式Select 性别=case sex when 男 then M when 女 then F else 输入出错 endFrom s(2) CASE后不带参数SELECT 性别=CASE WHEN SEX= 男 THEN MWHEN SEX=女 THEN FELSE ERRORENDFROM S(3) 用CASE语句进行多条件修改update s set depa=case depawhen 计算机系 then CSwhen 信息系 then ISwhen 数学系

53、then MAwhen 物理系 then PHend4存储过程(1) 不带参数的存储过程CREATE PROC SCLISTASSELECT SNO,CNO, GRADE FROM SC WHERE SNO IN (SELECT SNO FROM S WHERE DEPA=CS)执行存储过程:EXEC SCLIST观察结果(2) 带参数的存储过程如:传入一个学生的学号与姓名,显示出这个学生选修的课程号,成绩 CREATE PROC SC_PROC xh varchar(10) AS SELECT cno , grade From sc Where sc.sno=xh 执行存储过程:EXEC SC_PROC 2005125 存储过程的相关操作(1) 查看存储过程:Sp_help SCLIST(2) 重命名存储过程Sp_rename SCLIST, STUDENTSCORE七、设计性实验1实验要求(1) 调用帮助系统来查找系统存储过程或函数来显示SQL SERVER的版本号及当前系统时间。(提示:函数 Getdate()为系统当前时间;系统

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!