连接查询
- 连接条件或连接谓词:用来连接两个表的条件
- 一般格式:
- [< 表名1>.]< 列名1> < 比较运算符> [< 表名2>.]< 列名2>
等值连接:连接运算符为 “= ”
查询每个学生及其选修课程的情况
SELECT Student.*, SC.* FROM Student, SC WHERE Student.Sno = SC.Sno;
非等值连接查询
查询选修2 号课程且成绩在90 分以上的所有学生的学号和姓名。
SELECT Student.Sno, Sname FROM Student, SC WHERE Student.Sno = SC.Sno AND SC.Cno = ' 2 ' AND SC.Grade > 90;
自身连接 : 一个表与其自己进行连接,是一种特殊的连接
- 需要给表起别名以示区别
- 由于所有属性名都是同名属性,因此必须使用别名前缀
SELECT first.访客数,second.下单买家数 FROM `飞鸟_访客分布_地域` FIRST, `飞鸟_访客分布_地域` SECOND WHERE FIRST.id = SECOND.id;
外连接
- 普通连接操作只输出满足连接条件的元组
- 外连接操作以指定表为连接主体,将主体表中不满足连
- 接条件的元组一并输出
- 左外连接
- 列出左边关系中所有的元组
- 右外连接
- 列出右边关系中所有的元组
SELECT Student.Sno, Sname, Ssex, Sage, Sdept, Cno, Grade FROM Student LEFT OUT JOIN SC ON ( Student.Sno = SC.Sno );
多表连接
查询每个学生的学号 、 姓名 、 选修的课程名及成绩
SELECT Student.Sno, Sname, Cname, Grade FROM Student, SC, Course /* 多表连接*/ WHERE Student.Sno = SC.Sno AND SC.Cno = Course.Cno;