《数据库原理》课程实验
实验一 数据描述、定义实验
一、学时
4学时 二、实验类型
演示、设计 三、实验目的
熟悉和掌握数据库的创建和连接方法; 熟悉和掌握数据表的建立、修改和删除;
加深对表的实体完整性、参照完整性和用户自定义完整性的理解。 四、需用仪器、设备
486及以上微机;
Windows 98及以上版本的操作系统;
安装了SQL SERVER 2000(或选用其它环境) 五、实验准备
1. 熟悉SQL SERVER 2000工作环境(或选用其它环境); 2. 复习有关表的建立、修改和删除的SQL语言命令; 六、实验方法及步骤
1. 介绍有关SQL SERVER 2000的图形界面工作环境; 2. 创建数据库或连接已建立的数据库 3. 在当前数据库上建立新表 4. 定义表的结构
A:用SQL命令形式
B:用SQL SERVER 2000 的企业管理器,以交互方式进行。 5. 进一步定义表的主码,外码及在表上建立索引。
6. 将以上表的定义以 .SQL文件的形式保存在磁盘上。 7. 修改表的结构 8. 删除表的定义 七、实验内容
在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。 1. 创建学生-课程数据库 2. 创建学生关系表S : 学号 Sno 课程号 Cno 姓名 Sname 课程名 Cname 性别 Ssex 先行课 Cpno 年龄 Sage 学分 ccredit 所在系 sdept 3. 创建课程关系表C : 4. 创建课程关系表SC : 学号 Sno 课程号 Cno 成绩 grade 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学时 二、实验类型
设计 三、实验目的
熟悉和掌握数据表中数据的插入、修改、删除操作和命令的使用; 加深理解表的定义对数据更新的作用 四、需用仪器、设备
486及以上微机;
Windows95/97/98操作系统;
安装了SQL SERVER 2000(或选用其它环境)
五、实验准备
1.连接到学生-课程数据库
2.复习对表中数据的插入、修改和删除的SQL语言命令; 六、实验方法及步骤
1. 将数据插入当前数据库的表S、C、SC中;
2. 将以上插入的数据分别以.SQL文件和.txt文件的形式保存在磁盘上; 3. 修改表S、C、SC中的数据; 4. 删除表S、C、SC中的数据。 七、实验内容
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,AVG——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 \
WHERE \ ; DELETE FROM \
WHERE \ ;
DELETE FROM \
WHERE \ ;
DELETE FROM \
WHERE \ ;
实验三 数据查询实验
一、学时
6学时 二、实验类型
综合 三、实验目的
熟悉和掌握对数据表中数据的查询操作和SQL命令的使用,学会灵活熟练的使用SQL 语句的各种形式;
加深理解关系运算的各种操作(尤其的关系的选择,投影,连接和除运算) 四、需用仪器、设备
486及以上微机;
Windows95/97/98操作系统;
安装了SQL SERVER 2000(或选用其它环境)。 五、实验准备
1.连接到学生-课程数据库
2.复习对表中数据查询的SQL语言命令; 六、实验方法及步骤
1.在表S、C、SC上进行简单查询; 2.在表S、C、SC上进行连接查询; 3.在表S、C、SC上进行嵌套查询; 4.使用聚合函数的查询; 5.对数据的分组查询; 6.对数据的排序查询。 七、实验内容
在表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,完成教材P80--习题5中的查询
及教材P148--习题5中的查询。
实验四 视图的定义、使用实验
一、学时
2学时 二、实验类型
综合、设计 三、实验目的
熟悉和掌握对数据表中视图的定义操作和SQL命令的使用; 熟悉和掌握对数据表中视图的查询操作和SQL命令的使用;
熟悉和掌握对数据表中视图的更新操作和SQL命令的使用,并注意视图更新与基本表更新的区别与联系;
学习灵活熟练的进行视图的操作,认识视图的作用; 四、需用仪器、设备
486及以上微机;
Windows95/97/98操作系统;
安装了SQL SERVER 2000(或选用其它环境)。 五、实验准备
1.连接到学生-课程数据库
2.复习有关视图操作的SQL语言命令; 六、实验方法及步骤
1. 视图的定义 2. 视图的查询 3. 视图的修改 七、实验内容
以S , C , SC表为基础完成以下视图定义及使用 1. 定义“IS”系学生基本情况视图V_IS 并查询结果; 2. 将S,C,SC表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G
并查询结果;
3. 将各系学生人数,平均年龄定义为视图V_NUM_AVG并查询结果; 4. 定义一个反映学生出生年份的视图V_YEAR并查询结果; 5. 将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G并查询结果; 6. 将各门课程的选修人数及平均成绩定义为视图V_AVG_C_G并查询结果; 7. 查询平均成绩为90分以上的学生学号、姓名和成绩; 8. 查询各课成绩均大于平均成绩的学生学号、姓名、课程和成绩; 9. 按系统计各系平均成绩在80分以上的人数,结果按降序排列;
10. 通过视图V_IS,分别将学号为“S1”和“S4”的学生姓名更改为
“S1_MMM”,”S4_MMM” 并查询结果;
11. 通过视图V_IS,新增加一个学生记录 ('S12','YAN XI',19,'IS'),并查询结果; 12. 通过视图V_IS,新增加一个学生记录 ('S13','YAN XI',19,'MA'),并查询结果; 13. 通过视图V_IS,删除学号为“S12”和“S3”的学生信息,并查询结果; 14. 要通过视图V_S_C_G,将学号为“S12”的姓名改为“S12_MMM”,是否可
以实现?
15. 要通过视图V_AVG_S_G,将学号为“S1”的平均成绩改为90分,是否可以
实现?
八、实验思考
1.在定义视图的子查询中,是否可以使用SQL查询语句的任意子句及短语?需要注
意什么?
2.视图一经定义后,就可以象基本表一样用于查询,但DBMS执行对视图的查询过
程与执行基本表的查询过程有什么区别?
3.通过视图是否能更新数据?通常那些视图可以进行更新? 4.使用视图有什么好处?
5.SQL 语言提供了那些方式可以实现对数据的安全保护功能?
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库《数据库原理》在线全文阅读。
相关推荐: