关联查询
两张表,一张学生表,一张成绩表
SELECT student.`name`,exam.`chinese`,exam.`english`,exam.`math`
FROM student,exam
WHERE student.`id`=exam.`id`
若名字太复杂,可给表取一个别名
SELECT a.`name`,b.`chinese`,b.`english`,b.`math`
FROM student a,exam b
WHERE a.`id`=b.`id`
多表关联查询
多表关联查询:
1.内连接 INNER JOIN
2.外连接
左外连接:LEFT OUTER JOIN
右外连接:LEFT OUTER JOIN
全连接、交叉连接…
内连接 INNER JOIN
SELECT *
FROM student a INNER JOIN exam b
ON a.`id`=b.`id`
ON表示连接条件
SELECT *
FROM student a INNER JOIN exam b
ON a.`id`=b.`id`
WHERE a.`sex`=1
等价于
SELECT *
FROM student a INNER JOIN exam b
WHERE a.`id`=b.`id` AND a.`sex`=1
其中where表示连接条件
外连接多表查询
LEFT OUTER JOIN 也可简写为LEFT JOIN
左外连接(LEFT JOIN或LEFT OUTER JOIN) :包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行;
右外连接(RIGHT JOIN或RIGHT OUTER JOIN) :包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行;
全外连接(FULL OUTER JOIN) :包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行;
右外连接
SELECT *
FROM student a LEFT OUTER JOIN exam b
ON a.`id`=b.`id`
全外连接(FULL OUTER JOIN)
全外连接(FULL OUTER JOIN) :包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行;