数据库实验指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一数据描述、定义实验
一、学时
4学时
二、实验类型
演示、设计
三、实验目的
熟悉和掌握数据库的创建和连接方法;
熟悉和掌握数据表的建立、修改和删除;
加深对表的实体完整性、参照完整性和用户自定义完整性的理解。四、实验方法及步骤
1.创建数据库或连接已建立的数据库
2.在当前数据库上建立新表
3.定义表的结构
用SQL命令形式
4.进一步定义表的主码,外码及在表上建立索引。
5.将以上表的定义以.SQL文件的形式保存在磁盘上。
6.修改表的结构
7.删除表的定义
五、实验内容
背景材料:在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。
1.创建学生-课程数据库
5.将以上创建表S、C、SC的SQL命令以.SQL文件的形式保存在磁盘上。
6.在表S上增加“出生日期”属性列。
7.删除表S的“年龄”属性列。
8.在表S上,按“Sno”属性列的唯一值方式建立索引。
9.在表SC上,按“grade”属性列的多值方式建立索引。
10.删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。
11.选做:创建教材P80--习题5、SPJ数据库中的四个关系S,P,J,SPJ。
六、实验思考
1、定义表结构是对数据模型的那个要素进行描述,对主属性有什么要
求?
2、修改表结构时,能否修改已定义属性的参数?新增加的属性列能否
定义为非空?为什么?
3、分别在表S、SC上按“sno”列的唯一值方式建立索引,可能出现
问题吗?情况有什么区别?
4、能否在非主属性列上建立索引?其恰当的方式是什么?
七、问题
1、在表的定义中,如何确定属性是NOT NULL / NULL? ( 主码,关
键字,主属性/主属性)
2、能否将S,C,SC表单独以一个数据文件的形式保存在磁盘上?
3、在表S的“SNO”,“SNAME”属性上分别按唯一值方式建立索引和
在S的“SNO”,“SNAME”上唯一值方式建立联合索引有无区别?
4、要修改主属性的定义,正确的方式是什么?
实验二数据更新实验
一、学时
2学时
二、实验类型
综合、设计
三、实验目的
熟悉和掌握数据表中数据的插入、修改、删除操作和命令的使用;
加深理解表的定义对数据更新的作用
五、实验准备
2.连接到学生-课程数据库
3.复习对表中数据的插入、修改和删除的SQL语言命令;
六、实验方法及步骤
1.将数据插入当前数据库的表S、C、SC中;
A:用SQL命令形式
2.将以上插入的数据分别以.SQL文件和.txt文件的形式保存在磁盘
上;
3.修改表S、C、SC中的数据;
A:用SQL命令形式
4.删除表S、C、SC中的数据。
A:用SQL命令形式
七、实验内容
1.将数据分别插入表S、C、SC;
2.将表S、C、SC中的数据分别以.SQL文件和.txt文件的形式保存在磁盘上。
3.在表S、C、SC上练习数据的插入、修改、删除操作。(比较在表上定义/未定义主码(Primary Key)或外码(Foreign Key)时的情
况)
4.将表S、C、SC中的数据全部删除,再利用磁盘上备份的数据来恢复数据。
5.如果要在表SC中插入某个学生的选课信息(如:学号为“95001”,课程号为“c123”,成绩待定),应如何进行?
6.求各系学生的平均成绩,并把结果存入数据库;
7.将“CS”系全体学生的成绩置零;
8.删除“CS”系全体学生的选课记录;
9.删除学号为“S1”的相关信息;
10.将学号为“S1”的学生的学号修改为“S001”;
11.把平均成绩大于80分的男同学的学号和平均成绩存入另一个表S ——GRADE(SNO,A VG——GRADE);
12.把选修了课程名为“数据结构”的学生的成绩提高10%;
13.把选修了“C2”号课程,且成绩低于该门课程的平均成绩的学生的成绩提高5%;
14.把选修了“C2”号课程,且成绩低于该门课程的平均成绩的学生成绩删除掉;
15.选做:将数据插入SPJ数据库中的四个表S,P,J,SPJ中,并以.SQL 文件和.txt文件的形式保存在磁盘上。
八、实验思考
1.使用SQL的更新语句时,一次可以对几个表进行更新。
2.在进行数据更新时,可能产生破坏数据完整性的情况,因此,在数据更新(尤其是多表更新)时,应注意什么问题。
3.比较表中定义/未定义主码(Primary Key)时,对表S的更新操作有何异同。
4.比较在表之间定义/未定义外码(Foreign Key)时,对表S的更新操作有何异同。
5.若要修改已定义表的属性或删除已定义表的某一属性列,应如何进行?
九、问题
1.在表上未定义主码时,数据更新的情况?
2.如果在表S 和SC 表上建立了外码联系时,要删除学号为‘S2’的学生记录,应如何进行?如果在表S 和SC 表上未建立外码联系,情况会是怎样的?
DELETE FROM "s"
WHERE "s"."sno" = 's2' ;
DELETE FROM "sc"
WHERE "sc"."sno" = 's2' ;
DELETE FROM "sc"
WHERE "sc"."sno" = 's2' ;
DELETE FROM "s"
WHERE "s"."sno" = 's2' ;
实验三数据查询实验
一、学时
6学时
二、实验类型
综合
三、实验目的
熟悉和掌握对数据表中数据的查询操作和SQL命令的使用,学会灵活熟练的使用SQL 语句的各种形式;
加深理解关系运算的各种操作(尤其的关系的选择,投影,连接和除运算)
五、实验准备
2.连接到学生-课程数据库
3.复习对表中数据查询的SQL语言命令;
六、实验方法及步骤
1.在表S、C、SC上进行简单查询;
2.在表S、C、SC上进行连接查询;
3.在表S、C、SC上进行嵌套查询;
4.使用聚合函数的查询;