SQL高级查询语句 下载本文

内容发布更新时间 : 2024/6/26 23:42:02星期一 下面是文章的全部内容请认真阅读。

SQL高级查询语句 --交互式SQL语句

1.1 创建数据库(unis_db_日期)及其基本表(学生、课程、

选课)

1) 建立一个“学生”表Student,它由学号sno、姓名sname、性别ssex、

年龄sage、所在系sdept五个属性组成,其中学号为主属性,ssex默认为‘男’,年龄大于0。

2) 建立“课程”表Course,包括课程号cno,课程名称cname,选修课程

cpno, 学分credit,要求cno建立主键,cpno是外键。

3) 建立“选课”表StudentCourse,包括学号sno,课程号cno,成绩grade,

要求建立主键及与student及course表联接的外键。

1.2 数据查询

1) 查询Student表的所有信息。

2) 查询学生的姓名和出生年(2010-年龄,并命名为birth)。 3) 查询年龄在20-22之间的学生信息。 4) 查询数学系(Math)学生的学号和姓名。 5) 查询选修了课程的学生学号(distinct)。

6) 查询选修课程号为C1的学生号和成绩,并要求对查询结果按成绩的降

序排列,如果成绩相同按学号的升序排列。

7) 查询选修课程号为C1且成绩在80~90之间的学生学号和成绩,并成绩

乘以0.8输出。

8) 查询数学系(Math)或计算机系(CS)姓张的学生的信息。

9) 查询数学系(Math)或计算机系(CS)姓张年龄为21-22的学生信息。

10) 查询学生表中年龄不为空的学生信息。 11) 查询各个课程号、相应的选课人数及平均分。

12) 查询各个课程号、相应的选课人数及平均分,且平均分大于80的课程号。 13) 查询各个课程号、相应的选课人数,且该课程平均分大于80的,并按课

程号的降序排列。

1.3 连接查询

1) 把学生表和选课表广义连接。

2) 查询学生的选课信息(学生表与选课表的自然连接)。 3) 求每门课的先行课的先行课。

4) 学生表与选课表的左外连接、右外连接及全外连接。 5) 查询选修‘操作系统’的学生姓名。

1.4 嵌套查询

1) 使用带有IN谓词的子查询,查询选修了课程号为C1的学生姓名。 2) 查询学生选修课程成绩大于该课程平均分的选课信息。 3) 查询其他系中年龄大于CS系某个学生的学生信息。 4) 查询其他系中年龄大于CS系所有学生的学生信息。 5) 查询没有选修‘操作系统’的学生姓名。

1.5 集合查询(本题中要求使用集合操作)

1) 查询选修了课程C1或C3的学生信息。 2) 查询选修了数据结构和高等数学的学生信息。 3) 查询选修了数据结构没有选修高等数学的学生信息。

1.6 数据更新

1) 往学生表中插入学号为8009,姓名为刘刘,性别为男的学生信息。 2) 往课程表中插入课程号为C4,课程名为数据库,先行课是C2,学分为4

的课程信息。

3) 把学生的学号及该学生所选课的平均成绩,按降序排列,存放到数据库

中。

4) 按院系统计,各院选C1课程的平均分,按降序排列,存放到数据库中。

1.7 附加:建表及数据查询

1) 建立学生宿舍表(学生姓名、宿舍号、所在系)其中学生姓名和宿舍号

为主键,所在系默认为‘IS’。

2) 查询信息系(‘IS’)的学生姓名和所在宿舍。

3) 查询所有姓‘陈’的且姓名为三个字的学生姓名和宿舍号。 4) 查询名字中有‘陈’的学生姓名和宿舍号。

5) 查询名字中第二个字为‘陈’的学生姓名和宿舍号。 6) 查询名字为‘陈%’的宿舍号。

7) 查询除了姓陈的其余学生姓名和宿舍号。 8) 查询宿舍号为‘14_37’的学生姓名。 9) 查询宿舍号为以1开头的宿舍。 10) 查询宿舍号中有1的宿舍。