一、外连接
1.左外连接(左侧的表完全显示就是左外连接)
select..from表1 left join 表2 on 条件(表1:为左表,表2:为右表)
-- 外连接
-- 创建stu
CREATE TABLE stu(
id INT,
`name` VARCHAR(32)
);
INSERT INTO stu VALUES(1,'jack'),(2,'tom'),(3,'kity'),(4,'nono')
SELECT*FROM stu
-- 创建exam
CREATE TABLE exam(
id INT,
grade INT
);
INSERT INTO exam VALUES(1,56),(2,76),(11,8)
SELECT*FROM exam
-- 左外连接
-- 查询所有人的成绩,没有成绩,也要显示姓名,id号,成绩显示为空
SELECT `name`,stu.id,grade
FROM stu LEFT JOIN exam
ON stu.id = exam.id
2.右外连接(右侧的表完全显示就是右外连接)
select..from表1 reght join 表2 on 条件(表1:为左表,表2:为右表)
-- 右外连接
-- 查询所显示有人成绩,没有名字的显示为空
SELECT `name`,stu.id,grade
FROM stu RIGHT JOIN exam
ON stu.id = exam.id
二、内连接
select employee_id,department_name from `employees` e,`departments` d where e.department_id = d.department_id;
练习:
-- 列出部门名称和这些部门的员工信息(名字和工作)同时列出那些没有员工的部门名
-- 左连接实现
SELECT dname,ename,job
FROM dept LEFT JOIN emp
ON dept.deptno = emp.deptno
-- 有连接实现
SELECT dname,ename,job
FROM emp RIGHT JOIN dept
ON dept.deptno = emp.deptno
在实际开发中,大多数使用内连接,很少使用外连接。