一、实验目的
学习灵活熟练的进行视图的操作,认识视图的作用;掌握完整性控制的方法。
1.熟悉和掌握对数据表中视图的定义操作和SQL命令的使用;
2.熟悉和掌握对数据表中视图的查询操作和SQL命令的使用;
3.熟悉和掌握对数据表中视图的更新操作和SQL命令的使用,并注意视图更新与基本表更新的区别与联系;
4.熟悉SQL语言对数据库进行完整性控制的方法。
二、实验内容
(一)以S , C , SC表为基础完成以下视图定义及使用
1.定义“SSCH”院学生基本情况视图V_SSCH;
2.将S,C,SC表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G;
3.将各院学生人数,平均年龄定义为视图V_NUM_AVG;
4.将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G并查询结果;
5.查询平均成绩为90分以上的学生学号、姓名和成绩;
6.通过视图V_SSCH,新增加一个学生记录 (‘S12’,‘YAN XI’,19, ‘SSCH’),并查询结果;
7.通过视图V_SSCH,删除学号为“S12”学生信息,并查询结果;
8.将视图V_SSCH中学号为“S12”的学生改名“中南人”。
(二)使用SQL进行数据完整性控制:包括三类完整性、check短语、constrain子句。
- 在创建下列关系表时完成如下约束:定义实体完整性;参照完整性(外码、在删除S中的元组时级联删除SC中相应元组、当更新S中的Sno时同时更新SC中的Sno);用户定义完整性:学生年龄<30。
- 修改S中的约束条件,学号在100-1000之间。
学生关系表S :
学号 | 姓名 | 性别 | 年龄 | 所在系 |
---|---|---|---|---|
Sno | Sname | Ssex | Sage | sdept |
创建课程关系表C :
课程号 | 先行课 | 课程名 | 学分 |
---|---|---|---|
Cno | Cname | Cpno | ccredit |
创建学生-课程表SC :
学号 | 课程号 | 成绩 |
---|---|---|
Sno | Cno | grade |
3.用实验验证当操作违反了完整性约束时,系统如何处理?
问题:外键与参照主键是否一定要相同?
三、实验方法与实验步骤
(1)实验方法:
本次实验利用SQL Server 2019和Microsoft SQL Server Management Studio 17实验工具、SQL语言进行对数据库表和视图的基本操作,实验方案为参考书本知识及网络资料完成实验内容要求。
(2)实验步骤:
- 连接到学生-课程数据库
- 复习有关视图操作的SQL语言命令;复习有关完整性约束操作的SQL语言命令
- 定义视图、对视图进行查询、修改;
- 进行完整性约束定义、修改;
- 进行约束违例验证。
四、实验结果
(一)以S , C , SC表为基础完成以下视图定义及使用
1.定义“SSCH”院学生基本情况视图V_SSCH;
create view V_SSCH as
(select * from S where sdept='SSCH');
select * from V_SSCH;
2.将S,C,SC表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G;
create view V_S_C_G as
(select S.Sno,S.Sname,SC.Cno,SC