数据库系统原理及应用(实验指导书)
- 格式:doc
- 大小:91.50 KB
- 文档页数:13
数据库系统原理及应用 实 验 指 导 书
(本科)
软件工程教研室 2015年1月 目 录 实验一 数据定义语言 ...................................................................... 1 实验二 SQL Sever中的单表查询 ................................................... 3 实验三 SQL Serve中的连接查询 ................................................... 4 实验四 SQL Serve的数据更新、视图 ........................................... 5 实验五 数据控制(完整性与安全性) .......................................... 6 实验六 语法元素与流程控制 .......................................................... 8 实验七 存储过程与用户自定义函数 ............................................ 10 实验八 触发器 ................................................................................ 11 实验一 数据定义语言 一、实验目的 1. 熟悉SQL Server查询分析器。 2. 掌握SQL语言的DDL语言,在SQL Server环境下采用Transact-SQL实现表的定义、删除与修改,掌握索引的建立与删除方法。 3. 掌握SQL Server实现完整性的六种约束。 二、实验内容 1. 启动SQL Server查询分析器,并连接服务器。 2. 创建数据库: (请先在D盘下创建DB文件夹) 1)在SQL Server中建立一个StuDB数据库:
有一个数据文件:逻辑名为StuData,文件名为“d:\db\StuDat.mdf”,文件初始大小为5MB,文件的最大大小不受限制,文件的增长率为2MB; 有一个日志文件,逻辑名为StuLog,文件名为“d:\db\StuLog.ldf”,文件初始大小为5MB,文件的最大大小为10MB,文件的增长率为10% 2)刷新管理器查看是否创建成功,右击StuDB查看它的属性。
3. 设置StuDB为当前数据库。 4. 将STUDB数据库进行分离和附加。 5. 在StuDB数据库中作如下操作: 设有如下关系表S: S(CLASS,SNO, NAME, SEX, AGE), 其中:CLASS为班号,char(5) ;SNO为座号,char(2);NAME为姓名,char(10),设姓名的取值唯一;SEX为性别,char(2) ;AGE为年龄,int,表中主码为班号+座号。写出实现下列功能的SQL语句。 (1) 创建表S; (2) 刷新管理器查看表是否创建成功; (3) 插入3个记录: insert into s(CLASS,SNO, NAME, SEX, AGE) Values('95031','25','李明','男',21), ('95101','10','王丽','女',20), ('95131','30','郑和',null,null);
(4) 将年龄的数据类型改为smallint; (5) 向S表添加“入学时间(comedate)”列,其数据类型为日期型(datetime); (6) 对表S,按年龄降序建索引(索引名为inxage); (7) 删除S表的inxage索引; (8) 删除S表; 6. 在StuDB数据库中, (1)按照《数据库系统概论》(第四版)P82页的学生-课程数据库创建STUDENT、COURSE和SC三张表,每一张表都必须有主码约束,合理使用列级完整性约束和表级完整性。并输入相关数据。要作好脚本备份以便后面的实验使用该数据库数据。 (2)将StuDB数据库分离,在D盘下创建DB文件夹下找到StuDB数据库的两个文件,进行备份,后面的实验要用到这个数据库。 7. 按照《数据库系统概论》(第四版)P74页习题5的SPJ数据库。创建SPJ数据库,并在其中创建S、P、J和SPJ四张表。每一张表都必须有主码约束,合理使用列级完整性约束和表级完整性。要作好脚本备份以便后面的实验使用该数据库数据。 三、实验要求: 1. 学会使用SQL Server的查询分析器,企业管理器和联机丛书。 2. 根据实验内容认真写好实验报告(格式见模板),记录每个步骤的脚本。 3. 写好实验总结 实验二 SQL Sever中的单表查询 一、实验目的: 1. 掌握SQL语言的DML子语言,在SQL Server环境下采用Transact-SQL的SELECT语句熟练掌握各种单表查询方法。 二、实验内容: (一) 附加上次实验备份的StuDB数据库和SPJ数据库,或者将保存好的脚本重新运行。 (二) 按照StuDB学生课程数据库及数据实现以下查询: 1.查询所有课程的课号,课程名。 2.查询计算机系年龄不到21岁的所有男生的姓名和出生年份。 3.查询已被学生所选课程的课程号。 4.查询所有有成绩的学生学号和课程号,并为各列分别取相应的中文别名。 (三) 按照SPJ数据库及数据实现以下查询: 1.查询地点在‘北京’、‘上海’的供应商代码和供应商名字。 2.查询供应商名中包含‘方’这个汉字的供应商信息。 3.查询零件名以‘刀’字结尾,包含三个汉字的零件信息。 4.查询使用了供应商S1所供应零件的工程项目数。 5.查询各个供应商所供应的零件的总数,要求对查询结果降序显示。 6.查询供应了3个以上项目的供应商代码和供应的项目总数。 三、实验要求: 1. 根据实验内容认真写好实验报告,记录每个步骤正确的Transact-SQL命令。 2. 无须截屏记录正确的查询结果。但要求记录实验过程中发生的有学习意义的错误及错误信息。 3. 写好实验总结 实验三 SQL Serve中的连接查询 一、 实验目的: 1. 掌握采用Transact-SQL实现连接查询。 2. 掌握等值连接(自然连接)、自身连接、外连接和复合条件连接的查询方法。 二、 实验内容: 按照学生课程数据库studb和SPJ数据库完成以下查询 (1) 查询使用红色零件的工程名称。 (2) 查询每个工程的信息及相应的供应信息(包括列出尚未被供应零件的那些工程)。 (3) 查询供应工程J1红色零件的供应商号SNO,请用两种方法实现。 (4) 求供应工程J1零件的供应商的完整信息。 (5) 查询使用北京供应商供应零件的工程信息。 (6) 查询选修3号课程且成绩在85分以上的所有学生。 (7) 查询先行课的学分为4的课程信息。 (8) 查询课程与其间接先行课的名称。 (9) 查询其他系中比计算机科学系所有学生年龄都小的学生完整信息,用两种方法实现。 (10) 查询其他系中比计算机科学系某一学生年龄大的学生姓名与年龄,用两种方法实现。 (11) 查询至少用了供应商S1所供应的所有零件的工程号JNO,用带EXISTS谓词的子查询实现。 (12) 查询使用了全部零件的工程号JNO,用带EXISTS谓词的子查询实现。 (13) 查询所有使用了P3零件的工程号JNO,用带EXISTS谓词的子查询实现。 三、实验要求: 1. 写出正确的Transact-SQL命令。 2. 无须截屏记录正确的查询结果。要求记录实验过程中发生的有学习意义的错误及错误信
息。 3. 写好实验小结 实验四 SQL Serve的数据更新、视图 一、实验目的: 1. 掌握采用Transact-SQL实现嵌套查询。 2. 掌握采用Transact-SQL实现数据更新。 3. 掌握采用Transact-SQL实现视图的定义、删除、查询与更新。 二、实验内容 按照学生课程数据库studb和SPJ数据库完成以下操作: (一)数据更新 1) 插入一个学生:张红,女,200215135,信息系,20岁 2) 插入一个选课录:200215135,1,成绩未定 3) 将计算机系所有学生的年龄加1岁 4) 删除所有200215130学生的选课记录 5) 删除所有姓张的同学的信息 6) 请自行设计案例对学生-课程数据库的数据更新,并观察是否有违反数据的完整性约束。 (二)视图 1)创建一个学生成绩统计视图,包括学号,姓名,选课门数,平均分,最高分,最低分 2)利用上题所建视图实现: ①查询成绩高于自己平均成绩的选课记录 ②查询每个同学获得最高分的选课记录 3)请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。针对该视图完成下列查询: ①找出三建工程项目使用的各种零件代码及其数量; ②找出供应商S1的供应情况; 三、实验要求 1. 写出正确的Transact-SQL命令。 2.无须记录正确的查询结果。但要求记录实验过程中发生的有学习意义的错误及错误信
息。 3.写好实验小结