数据库实验答案及解析.docx

上传人:b****3 文档编号:12877172 上传时间:2023-04-22 格式:DOCX 页数:16 大小:1.19MB
下载 相关 举报
数据库实验答案及解析.docx_第1页
第1页 / 共16页
数据库实验答案及解析.docx_第2页
第2页 / 共16页
数据库实验答案及解析.docx_第3页
第3页 / 共16页
数据库实验答案及解析.docx_第4页
第4页 / 共16页
数据库实验答案及解析.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

数据库实验答案及解析.docx

《数据库实验答案及解析.docx》由会员分享,可在线阅读,更多相关《数据库实验答案及解析.docx(16页珍藏版)》请在冰豆网上搜索。

数据库实验答案及解析.docx

数据库实验答案及解析

实验

(2)、交互式SQL

(1):

利用SQL语句创建数据库、表及表之间关系  

一、实验目的和注意事项

1、实验目的:

熟悉创建数据库和数据表的SQL 语句。

2、注意事项:

输入SQL 语句时应注意中文、英文的区别。

二、实验内容

在查询分析器中,完成以下操作。

1、用SQL 语句创建数据库,名称为“TSC”。

2、用SQL 语句在TSC数据库创建4张表:

T,S,C,SC(参考教材P78例3.1)

3、在上面的4张表中插入示例数据(参考教材P21例1.7)

三、实验步骤(这部分不需要写作实验报告上)

1、打开SQLServer2000的查询分析器

2、创建数据库TSC。

3、创建4 个表(参考教材P78例3.1)。

4、在4张表中插入数据(示例数据参考教材P21例1.7, Insert 语句参考P973.4.1 数据插入)

四、实验报告记录部分 (在实验报告中记录创建数据库、创建表及向表中插入数据的SQL语句)

1、用SQL 语句创建数据库,名称为“StudentCourse”。

2、用SQL 语句创建StudentCourse 中的3 张表(见下面),同时指定主码、外码、约束等。

3、在3张表中插入下面的示例数据

 

表1  学生表(Students)数据

学号Sno

姓名Sname

性别Ssex

出生日期Sbirthday

所在系Sdept

备注Memo

0602001

钟耀华

1987-05-01

计算机

优秀毕业生

0602002

吴佳硕

1987-03-24

计算机

爱好:

音乐

0602003

吴纯斌

1988-07-01

计算机

 

0701001

王腾飞

1988-05-04

机电

爱好:

音乐

0701002

林师微

1987-04-03

机电

爱好:

体育

0701003

李乐怡

1986-03-03

机电

 

0703001

李奇

1988-09-17

工商管理

 

 

表2  课程表(Courses)数据

 课程号Cno

课程名Cname

先行课PreCno

学分Credit

C1

数据结构

 

4

C2

数据库原理

C1

4

C3

大型数据库

C2

3

C4

高尔夫

 

1

表3  选课表(SC)数据

学号Sno

课程号Cno

成绩Grade

0602001

C1

61

0602001

C2

72

0602001

C3

88

0602002

C1

 

0602002

C2

61

0701001

C1

50

0701001

C2

 

0701002

C3

78

0701003

C1

52

0701003

C3

87

 

实验(3)、交互式SQL

(2)—简单查询  

2012-04-2622:

12:

00|  分类:

 默认分类|字号 订阅

一、实验目的和注意事项

实验目的:

掌握单表查询SELECT、FROM、WHERE 的用法,特别要掌握比较运算符、逻辑运算符的使用。

注意事项:

子句WHERE<条件>表示元组筛选条件;子句HAVING<条件>表示元组选择条件; 子句HAVING<条件>必须和GROUPBY 子句配合使用;

 二、教材例题练习(不需要记录在实验报告上)

在实验

(2)创建的表及插入的示例数据(数据库TSC)基础上,完成教材P83 例3.9

 三、实验内容及步骤(在实验报告中记录每个查询的SQL语句)

在实验

(2)创建的表及插入的示例数据(数据库StudentCourse)基础上,完成

① 查询计算机系全体学生的信息

② 查询姓“李”的学生的学号和姓名。

③ 查询课程表中先行课为空的课程名。

④ 查询考试成绩有不及格的学生的学号。

⑤ 求选修了C1 课程或C2 课程的学生的学号及成绩。

⑥ 查询全体计算机系学生的姓名及其年龄。

⑦ 查询计算机系在1986-1987 年之间出生的学生的姓名。

⑧ 查询姓“李”的前2个学生(按姓名升序排列)的学号和姓名。

⑨ 查询选修了两门以上课程的学生学号与课程数。

⑩ 查询选修课程数大于等于2 的学生的学号、平均成绩和选课门数,并按平均成绩降序排列。

附:

参考解答

实验(4)、交互式SQL(3)—复杂查询  

2012-04-2622:

16:

24|  分类:

 默认分类|字号 订阅

一、实验目的和注意事项

实验目的:

1.      理解多表查询的概念;掌握多表查询的SELECT、 FROM、WHERE、JOIN子句的用法,特别要对比内连接、外连接的结果差异。

2.      掌握查询中嵌套查询和组合查询的操作方法,进一步加深对SELECT 语句的理解。

注意事项:

1、 内连接、 左外连接和右外连接的含义及表达方法;

2、 子句的使用,注意语句的层次嵌套关系和括号的配对使用问题;

 

二、教材例题练习(不需要记录在实验报告上)

在实验

(2)创建的表及插入的示例数据(数据库TSC)基础上,完成

1、教材P93 例3.19,注意some, all的使用方法,并掌握其相应的IN 、NOTIN的等价表示

2、教材P94 例3.20,注意SQLServer2000不支持 Unique谓词,请给出解决这个问题的SQL语句,并记录在教材例3.20的旁边。

 

三、实验内容及步骤(在实验报告中记录每个查询的SQL语句)

在查询分析器中输入SELECT 查询语句,对在实验

(2)中已完成的StudentCourse数据库中的表,进行下列查询操作:

1、多表连接查询

(1) 查询选修了【数据库原理】的计算机系的学生学号和姓名。

(2) 查询每一门课的间接先行课(即先行课的先行课)。

(3) 查询学生的学号、姓名、选修课程的名称和成绩。

(4) 查询选修了课程的学生姓名。

(5) 查询所有学生的信息和所选修的课程,没有选课的同学对应的选课信息为空。

(6) 查询所有课程的课程编号、课程名称及选课人数,没有被选的课程选课人数显示为0。

(7) 列出学生所有可能的选修情况。

(8) 查找计算机系的学生选修课程数大于2 的学生的姓名、 平均成绩和选课门数,并按平均成绩降序排列。

 

2、嵌套查询和组合查询操作。

(1) 统计选修了【数据库原理】课程的学生人数。

(2) 查询没有选修【数据库原理】课程的学生信息。

(3) 查询其他系中比计算机系学生年龄都小的学生。

(4) 查询被0602001 学生或0602002 学生所选修的课程的课程号(用UNION 组合查询与IN 条件查询两种方法实现)。

(5) 查询0602001 学生和0602002 学生同时选修的课程的课程号(用IN 子查询与EXISTS 嵌套子查询两种方法实现)。

(6) 查询被学号0602001 学生所选修的课程的课程号。

附:

参考解答

实验(5)、交互式SQL(4)—数据更新  

2012-04-2622:

19:

24|  分类:

 2010级数据库教学|字号 订阅

一、实验目的和注意事项

实验目的:

熟悉插入、修改和删除SQL 语句的用法

注意事项:

对于INSERT 语句,要求理解默认值约束、非空约束在插入时所起的作用。

 

二、教材例题练习(不需要记录在实验报告上)

在实验

(2)创建的表及插入的示例数据(数据库TSC)基础上,完成

1、教材P98 例3.25,注意更正教材上第③,⑤小题的错误,并记录在该题的旁边

2、教材P99 例3.26

3、教材P99 例3.27,注意更正教材上第④小题的错误,并记录在该题的旁边

 

三、实验内容及步骤(在实验报告中记录每个查询的SQL语句)

在实验

(2)创建的表及插入的示例数据(数据库StudentCourse)基础上,完成

① 向表Students 中插入(0601001,赵林, 男,1985-09-08,计算机)的记录。

 

② 向SC 表中添加一个学生的选课记录,学号为0601001,所选的课程号为C2。

 SC表中有Sno、Cno、Grade 这3 个列。

这里只知道学号和课程号,不知道成绩值。

③ 向表Students 中插入(0601002,张修雨,default)记录,该记录的数据中default 表示默认值‘男’,其他数据为空值。

④ 用CREATE 语句建立表StudentBAK1,包含(与Students 的Sno、Sname、Sdept 相同)3 个字段, 然后用INSERTSELECT 语句实现向StudentBAK1 添加Students 表中的计算机系学生的学号、姓名、所在系的信息。

⑤ 用 SELECT…INTO 语句实现把Students 表中1986 年后(包含1986 年)出生的学生的学号、姓名存储到一个新表StudentBAK2。

⑥ 将Students表中姓名为【赵林】的同学所在系改为【机电】,爱好改为【足球】。

⑦ 将选修了课程名为【数据库原理】并且有成绩的学生成绩加5 分。

⑧ 将StudentCourse 数据库的StudentBAK1 表中所有姓赵的同学删除。

⑨ 删除机电系课程成绩不及格或者没有登记成绩的学生选课记录。

⑩ 将StudentCourse 数据库的StudentBAK2 表中的所有行删除。

 附:

参考解答

实验(六)、第四章数据库安全性  

2011-11-0113:

00:

58|  分类:

 默认分类|字号 订阅

一、实验目的

1.熟悉通过SQL语句对数据进行安全控制

2.完成《数据库系统概论》(第四版)一书中第四章例题的上机练习

二、实验平台

MSSQLServer2000

三、实验要求

1、使用SQL语句对数据进行安全控制,包括授权和权力回收。

2、授权操作完成后,检查用户是否真正具有所授予的数据操作权力;在权力回收操作之后,用户是否确实丧失了所回收的数据操作权力。

四、实验内容及完成情况(实验参考解答见教学博客)

在实验开始之前,需要把ftp(网盘上亦提供)上所提供的2个数据库文件(实验(6)student.mdf, 实验(6)student_log.ldf)下载到本机,并将其附加到SQLServer上。

附加完成以后,会出现数据库student,在这个数据库中已建立了三张基本表:

student、course、SC,下面的实验是在这3张表的基础上进行的。

 1.在数据库student中创建7个用户U1,U2,U3,U4,U5,U6,U7

<记录下创建用户的过程,需要自己完成>记录你的实际操作过程

 2.完成教材4.2.4小节[例1]~[例7](P138~139)的授权语句。

<记录下授权的过程,需要自己完成>

 3.在授权完成以后,验证用户是否拥有相应的权限

注意:

验证时需要分别以不同的用户(U1~U7)身份登录到数据库,进行相关的操作,检查他们是否具有教材表4.4(P139)中的相应权限。

<记录下验证过程,需要自己完成>

 4.完成教材4.2.4小节[例8]~[例10](P140)的权限回收语句,并验证在权限回收以后,该用户是否真正丧失了对数据的相应权限。

<记录下权限回收及验证过程,需要自己完成>

 5.数据库角色的使用

包括:

 创建角色,为角色授权,将用户添加到角色中,从角色移除用户等操作,角色概念介绍参考教材4.2.5小节数据库角色的内容(P142),而在SQLServer上机操作需要参考教学博客上提供的示例代码自行完成。

<记录下角色的使用过程,需要自己完成>

 五、出现的问题及解决方案

<记录下自己在实验过程中出现的问题及解决方法,需要自己完成>

附录一:

SQLServer2000数据库附加方法

 附录二:

本次实验参考解答

 

实验(七)、第五章数据库完整性  

2011-11-0714:

37:

12|  分类:

 默认分类|字号 订阅

一、实验目的

1.熟悉通过SQL语句对数据进行完整性控制

2.完成《数据库系统概论》一书中第五章例题的上机练习

二、实验平台

MSSQLServer2000

三、实验要求

使用SQL语句对数据进行完整性控制,包括3类完整性约束、CHECK短语、CONSTRAINT子句、触发器。

通过实验证实,当操作违法完整性约束条件时,系统是如何处理的。

四、实验内容及完成情况

在本次实验中,对数据完整性进行上机练习。

包括3类完整性、CHECK短语、CONSTRAINT子句、触发器。

因为完整性约束绝大部分是在定义表结构时进行的,因此可能需要多次重复定义同一张表。

如果表名发生重复,则需要先删除旧表后再重新建立。

    在开始实验之前,先创建一个名为Practice7的数据库,下面所有的SQL语句都是在Practice7这个数据库内执行的

1.在数据库Practice7中创建教材P82的student,course,sc三张表,先不设置主键,检查能否向表中插入重复值。

<记录下验证的过程,需要自己完成>

2.实体完整性:

删除上一步创建的3张表,重新创建,对每张表都设置主键,先不为SC 表设置外键。

再次检查能否向表中插入重复值,能否在SC表中插入不存在的学号(Sno)或者课程号(Cno)

3. 参照完整性:

删除上一步创建的SC表,重新创建SC表并为其设置主键和外键。

再次验证能否在SC表中插入不存在的学号(Sno)或者课程号(Cno)

4. 用户定义的完整性:

完成教材 P158[例10],并通过插入数据进行验证。

 

5.触发器的使用(选做)

创建一个名为Tab的表,它仅包含一整数列(列名为col)。

在表Tab上定义触发器Tri,在对Tab表插入或者更新前进行检查,如果插入或更新的值在60~100之间,将值设置为60;如果大于100,则给出新值不允许大于100的提示信息。

 五、出现的问题及解决方案

<记录下自己在实验过程中出现的问题及解决方法,需要自己完成>

 

附录:

本次实验参考解答

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1