目录
连接查询
等值与非等值连接查询
①当连接运算符为"="称为等值连接,其他运算符称为非等值连接。
【例】查询每个学生及其选修课程的情况。 SELECT Student.*SC. FROM Student,SC WHERE Student.Sno=SC.Sno;
自然连接
自然连接:若在等值连接中把目标列中重复的属性列去掉则为自然连接。
自身连接
一个表与其自己进行连接
外连接
外连接分为:
左外连接:列出左边关系中所有的元组。 LEFT OUT JOIN SC ON
右外连接:列出右边关系中所有的元组。 RIGHT OUT JOIN SC ON
多表连接
连接操作是两个以上的表进行连接。
嵌套查询
【说明】①子查询中不能使用ORDER BY子句。
②层层嵌套方式反映了SQL语言的结构化。
③有些嵌套查询可以用连接运算替代。
④外层查询(父查询)、内层查询(子查询)
【例】 SELECT Sname FROM Student 外层查询/父查询
WHERE Sno IN(SELECT Sno FROM SC内层查询/子查询 WHERE Cno='2);
带有in谓词的子查询
在嵌套查询中,子查询的结果往往是个集合,用IN谓词表示父查询的条件在子查询结果的集合中。
例子
查询选修课程名为"信息系统"的学生学号和姓名
SELECT Sno ,Sname FROM Student WHERE Sno IN(SELECT Sno FROM SC WHERE Cno IN(SELECT Cno FROM Course WHERE Cname=·信息系统));
SELECT Sno,Sname FROM Student.SC.Course WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno AND Course.Cname=:'信息系统':
带有比较运算符的子查询
当能确切知道内层查询返回单值时,可用比较运算符(>,<,=,>=,<=,!=或<>)
带有ANY或ALL谓词的子查询
ANY任意一个值
ALL所有值
用聚集函数实现子查询要比直接用ANY、ALL效率更高