目录
- 基础知识
- 数据定义
- 数据查询
- 单表查询
- 连接查询
- 嵌套查询
- 集合运算
- 实验例子
- 数据定义
- 数据查询
- 单表查询
- 查询的目标表达式为所有列、指定的列或指定的列的运算三种不同。
- 使用DISTINCT保留字消除重复行。
- 对查询结果排序和分组。
- 集合分组使用集函数进行各项统计。
- 连接查询
- 笛卡儿连接和等值连接。
- 自连接。
- 外连接
- 复合条件连接。
- 多表连接。
- 嵌套查询
- 通过实验验证对子查询的两个限制条件。
- 体会相关子查询和不相关子查询的不同。
- 考察四类谓词的用法,包括:
- 集合运算
- 使用保留字UNION进行集合并运算。
- 采用逻辑运算符AND或OR来实现集合交和减运算。
基础知识
数据定义
数据查询
单表查询
查询的目标表达式为所有列、指定的列或指定的列的运算三种不同。
使用DISTINCT保留字消除重复行。
对查询结果排序和分组。
集合分组使用集函数进行各项统计。
连接查询
笛卡儿连接和等值连接。
自连接。
外连接
复合条件连接。
多表连接。
嵌套查询
通过实验验证对子查询的两个限制条件。
体会相关子查询和不相关子查询的不同。
考察四类谓词的用法,包括:
第一类,IN、NOT IN;
第二类,带有比较运算符的子查询;
第三类,SOME、ANY或ALL谓词的子查询,查询最大值和最小值;
第四类,带有EXISTS谓词的子查询,实现“所有”等情况(如王宏的“所有”课程,“所有”女生选修的课程)
集合运算
使用保留字UNION进行集合并运算。
采用逻辑运算符AND或OR来实现集合交和减运算。
实验例子
数据定义
学校实验要求命名加上自己的名字,给库、表、视图、属性命名
之后的例子中名字首字母会时有时没有,大家自行理解一下。
表名 | 表名 | 属性 |
---|---|---|
学生表 | Pansx_Students | Sno学号,Sname, Semail,Scredit学分,Ssex性别 |
教师表 | Pansx_Teachers | Tno工号,Tname,Temail,Tsalary薪水 |
课程表 | Pansx_Courses | Cno,Cname,Ccredit课程学分 |
成绩表 | Pansx_Reports | Sno,Tno,Cno,Score |
其中:
psx_Sno、psx_Tno、psx_Cno分别是表Pansx_Students、表Pansx_Teachers、表Pansx_Courses的主键,具有唯一性约束;
psx_Scredit具有约束“大于等于0”;
Pansx_Reports中的psx_Sno,psx_Tno,psx_Cno是外键,它们共同组成Pansx_Reports的主键。
数据查询
先插入一些数据,方便进行查询
【Students】
【Teachers】
【Courses】
【Reports】
单表查询
查询的目标表达式为所有列、指定的列或指定的列的运算三种不同。
(2) 查询学生的选课成绩合格的课程成绩,并把成绩换算为积分。积分的计算公式为:[1+(考试成绩-60)*0.1]*Ccredit。考试成绩>=60 否则=0
(3) 查询学分是3或4的课程的名称。
(4) 查询所有课程名称中含有“算法”的课程编号。
使用DISTINCT保留字消除重复行。
(5) 查询所有选课记录的课程号(不重复显示)。
对查询结果排序和分组。
查询性别为“男”的所有学生的名称并按学号升序排列。
集合分组使用集函数进行各项统计。
(6) 统计所有老师的平均工资。
(7) 查询所有教师的编号及选修其课程的学生的平均成绩,按平均成绩降序排列。
(8) 统计各个课程的选课人数和平均成绩。
(9) 查询至少选修了三门课程的学生编号和姓名。
(10) 查询编号S26的学生所选的全部课程的课程名和成绩。
(11) 查询所有选修了“数据库原理及应用”课程的学生编号和姓名。
(12) 求出选修了同一个课程的学生对
(13) 求出至少被两名学生选修的课程编号。
(14) 查询选修了编号S26的学生所选的某个课程的学生编号。
(15) 查询学生的基本信息及选修课程编号和成绩。
(16) 查询学号S52的学生的姓名和选修的课程名称及成绩。
(17) 查询和学号S52的学生同性别的所有学生资料。
(18) 查询所有选课的学生的详细信息。
(19) 查询没有学生选的课程的编号和名称。
(20) 查询选修了课程名为C++的学生学号和姓名。
(21) 找出选修课程UML或者课程C++的学生学号和姓名。
(22) 找出和课程UML或课程C++的学分一样课程名称。
(23) 查询所有选修编号C01的课程的学生的姓名。
(24) 查询选修了所有课程的学生姓名。
(25) 利用集合并运算,查询选修课程C++或选择课程JAVA的学生的编号、姓名和积分。
(26) 实现集合交运算,查询既选修课程C++又选修课程JAVA的学生的编号、姓名和积分。
(27) 实现集合减运算,查询选修课程C++而没有选修课程JAVA的学生的编号。
连接查询
笛卡儿连接和等值连接。
代码
自连接。
代码
外连接
代码
复合条件连接。
代码
多表连接。
代码
嵌套查询
通过实验验证对子查询的两个限制条件。
代码
体会相关子查询和不相关子查询的不同。
代码
考察四类谓词的用法,包括:
代码
第一类,IN、NOT IN;
第二类,带有比较运算符的子查询;
第三类,SOME、ANY或ALL谓词的子查询,查询最大值和最小值;
第四类,带有EXISTS谓词的子查询,实现“所有”等情况(如王宏的“所有”课程,“所有”女生选修的课程)
集合运算
使用保留字UNION进行集合并运算。
代码
采用逻辑运算符AND或OR来实现集合交和减运算。
代码