03数据库之多表数据查询
1、基于实验二数据库中的三个表Student,Course,SC,进行如下的查询:
(1) 查询每个学生及其选修课情况(使用自然连接)。
(2) 查询每个学生的学号、姓名、选修的课程及成绩。
(3) 查询选修了2号课程且成绩在80分以上的学生姓名,年龄。
(4) 查询选修了课程名为“操作系统”的学生学号和姓名。
(5) 查询与“刘晨”同龄的学生。(用IN嵌套实现)
(6) 查询其它系中比信息系某一学生年龄大的学生姓名和年龄。(写出2种形式的查询语句)
(7) 查询选修了课程1或者选修了课程2的学生。(写出2种形式的查询语句)
(8) 查询没有选修2号课程的学生姓名。
(9) 查询选修课程1的学生集合与选修课程2的学生集合的交集。
(10) 查询信息系的学生与年龄不大于19岁的学生的差集。
(11) 检索选修了三门课及以上的学生的姓名。
(12) 查询出学号为 “201215121”的学生和学号为“201215122”的学生选修的课程的课程号。
2、用SQL语句实现“Student_DB_姓名首字母缩写”数据库中数据表的更新(给出查询语句或截图):
(1)删除信息系(IS)所有学生的选课记录。
(2)修改Cno为“1”的记录的课程名为“数据库原理及应用”。
(3)将信息系全体学生的成绩改为80。
(4)删除姓名为张立的学生记录。
(5)将自己的信息添加到学生表中,院系写成IS(信息系)。(注:若学号太长超过9位,则保留后9位即可。)
(6)使用SQL增加一条记录到course表中,增加的记录内容如下:(’9’,’数据挖掘’,’1’,5)
(7)往学生表里添加一个学号为“s9”,姓名为“赵丹”的学生。
(8)删除添加的(7)中的学生。
3、用SQL语句建立视图并对视图做相应的操作:
(1)建立计算机系学生的视图CS_View,要求视图中包含学生表中的所有属性,并要求进行修改和插入操作时仍须保证该视图只有计算机系的学生。
(2)建立计算机系选修了’3’号课程且成绩在90分以下的学生视图CS_SC_View,并对此视图进行查询。
(3)将学生的学号和平均成绩定义为一个视图。
(4)利用所建立的视图,查询选修了2号课程的计算机系的学生。
(5)将视图CS_View中学号为201215122的学生姓名改为“刘留”,并查看Student表中此学生姓名是否有变化,如有变化请说明原因。
(6)向视图CS_View中插入一条新的学生记录,其中学号为201215126,姓名为李三,年龄为20岁,院系为IS,若未能执行成功,则分析下执行结果。
分析:当加有with check option字句时,修改与删除操作无影响,但插入操作时会自动检查插入的数据的Sdept是否为CS,如果为否,则拒绝插入。
(7)将视图CS_View中学号为201215121的学生院系改为IS,查看Student表中此学生院系是否发生变化。