1. 笛卡尔乘积
-
简单格式
SELECT * 或字段列表
FROM 数据表列表
-
实例
--1. 笛卡尔乘积 (五条件的连接--很多条件无意义) Select * from Student, SC
2. 等值连接
-- 查询选课的学生全部信息
SELECT *
From Student, SC
where Student.Sno = SC.Sno
3. 不等值连接
select numb, cnumb, score, grade
from score, grade
where score.score between grade.gstart and grade.gend
4. 使用INNER JOIN (内连接, 匹配项)
Select * 或字段列表
From 表1
INNER JOIN 表2 ON 连接规则1
INNER JOIN 表3 ON 连接规则2
...
[WHERE 条件]
[ORGER BY]
--7. 使用INNER JOIN
-- (1)
select *
from score
INNER JOIN stu1 on score.numb = stu1.numb
-- (2)
select *
from score, stu1, course
where score.numb = stu1.numb
and score.cnumb = course.cnumb
and stu1.name = '王宁'
order by course.cname, score.score
-- 用 INNER 改写(2)
select *
from score
INNER JOIN stu1 on score.numb = stu1.numb
INNER JOIN course ON score.cnumb = course.cnumb
where stu1.name = '王宁' --将where里面条件放到了INNER里面
ORDER BY course.cname, score.score
5. 外连接OUTER JOIN (能够查到不匹配项)
-
按连接条件得到结果
-
内连接
左外连接 LEFT OUTER JOIN
-
查找左边表的不匹配项
SELECT * | 字段列表
FROM 表1
LEFT OUTER JOIN 表2 ON 条件
左表与表2没有对应项的话,左边表的记录显示出来
右外连接RIGHT OUTER JOIN
-
查找右边表的不匹配项
SELECT * | 字段列表
FROM 表1
RIGHT OUTER JOIN 表2 ON 条件
左表与表2没有对应项的话,表2 的记录显示出来
--8. 外连接OUTER JOIN
-- 查询所有同学的学生信息 和 选课信息(选课的列出课程编号和成绩,
-- 没有选课的这两项为NULL)
select *
from stu1
--左外连接,左边表里的,也就是stu1这个表里头的不匹配项也显示出来
LEFT OUTER JOIN score on stu1.numb = score.numb
--或者是
select *
from score
--右外连接,右边表里的,也就是这个score表里头的不匹配项也显示出来
LEFT OUTER JOIN score on stu1.numb = score.numb
多表连接查询
-
笛卡尔乘积
-
等值连接
-
不等值连接
-
内连接、外连接
SELECT *
FROM 表1
[INNER JOIN 表2 ON 条件 ] |
[LEFT | RIGHT OUTER JOIN 表2 ON 条件 ]
[WHERE 条件]
[GROUP BY 字段列表]
[HAVING 条件]
[ORDER BY 条件]