一、外连接

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

在实际开发中,大多数使用内连接,很少使用外连接。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐