找出分数高于90分的学生姓名和所在院系 找出选修数据库的学生的学号和分数 给出计算机系选修数据库的学生的学号和 分数
SELECT 学号,分数 SELECT 学号,分数 SELECT 姓名,所在院系 FROM 课程,成绩 FROM 学生,课程,成绩 FROM 学生,成绩 WHERE (课程名=‘数据库’) WHERE (课程名=‘数据库’) WHERE (分数>90) AND 学生.学号=成绩.学号 AND 课程.课程号=成绩.课程号 AND 课程.课程号=成绩.课程号 AND 学生.学号=成绩.学号 \\多表连接
注:函数SUM和AVG只能对数值型字段进行计算
GROUP BY 子句
分组查询 求各个课程号(Cno)及相应的选课人数。其命 令为: SELECT Cno , COUNT(Sno) CntSno FROM Reports GROUP BY Cno;
GROUP BY子句按Cno的值分组,所有具有相 同Cno的元组为一组,对每一组的学生数使用 函数COUNT进行计算,统计出各课程的人数, 存放在名称为CntSno 这个属性列中。
字符串的匹配
LIKE 是字符串匹配运算符 样式符号 *代表0个或多个任意字符 ?代表1个任意字母 # 代表1个任意数字 (!)a-z代表字符(或以外)范围 通配符 %表示0个或多个字符串 _表示一个字符
查询姓名中第二个汉字是“力”的学生号信息 SELECT * FROM Students WHERE Sname LIKE '_力 %';
自身连接
当一个表与其自已进行连接操作时,称为表的自身连接。要查询的
内容均在同一表中,可以将表分别取两个别名,一个是X,一个是Y。 将X, Y中满足查询条件的行连接起来。这实际上是同一表的自身连 接。 查`询每一门课的间接先修课(即先修课的先修课)。 在Courses表关系中,只有每门课的直接先修课信息,而没有先修课 的先修课。要得到这个信息,必须先对一门课找到其先修课,再按 此先修课的课程号,查找它的先修课程。这就需要要将Courses表 与其自身连接。为方便连接运算,这里为Courses表取两个别名分 别为A,B。则完成该查询的SQL语句为: