一、定义:
多表查询包括二张表以上的表的查询,其中有内连拉、左外、右外连接的查询
二、数据准备
CREATE TABLE emp( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20), salary DOUBLE(7,2), dep_id INT ); INSERT INTO emp (name,salary,dep_id) VALUES ("张三",8000,2), ("李四",12000,1), ("王五",5000,2), ("赵六",8000,3), ("猪七",9000,1), ("周八",7000,4), ("蔡九",7000,2); CREATE TABLE dep( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) ); INSERT INTO dep (name) VALUES ("教学部"), ("销售部"), ("人事部");
三、内连接
查询两张表中都有的关联数据,相当于利用条件从笛卡尔积结果中筛选出了正确的结果。
SELECT
*
FROM
emp,dep
WHERE
emp.dep_id=dep.id; 或
SELECT
*
FROM
emp
INNER
JOIN
dep
ON
emp.dep_id=dep.id;
四、左外连接
在内连接的基础上增加左边有右边没有的结果
SELECT
*
FROM
emp
LEFT
JOIN
dep
ON
dep.id=emp.dep_id;
五、右外连接
在内连接的基础上增加右边有左边没有的结果
SELECT
*
FROM
emp
RIGHT
JOIN
dep
ON
dep.id=emp.dep_id;