image.png
    image.png
    image.png

    1. -- 内连接演示
    2. -- 1.查询每一个员工的姓名,及关联的部门的名称(隐式内连接实现)隐式内连接的语法常用
    3. -- 表结构:empdept
    4. -- 连接条件:emp.dept_id = dept.id emp表的外键和dept表的主键
    5. select emp.name,dept.name from emp,dept where emp.dept_id = dept.id;
    6. -- 如果觉得表名太长,可以给表起一个别名,效果一样
    7. select e.name,d.name from emp e,dept d where e.dept_id = d.id; -- emp表起了一个e的别名,dept表起了一个d的别名 给表起了别名一定要用别名,不能再用表名了
    8. -- 2.查询每一个员工的姓名,及关联的部门的名称(显式内连接实现)
    9. # select emp.name,dept.name from emp,dept where emp.dept_id = dept.id;
    10. select e.name , d.name from emp e inner join dept d on e.dept_id = d.id; -- inner为内部的意思,可省略

    ———————————————————————-左外连接——————————————————————————————
    image.png

    1. -- 外连接演示 项目开发中,左外连接用的较多
    2. -- 1.查询emp表的所有数据,和对应的部门信息(左外连接) -- 左外连接会包含左表的所有数据 from后面是表1join后面接的是表2
    3. -- 表结构:empdept department
    4. -- 连接条件:emp.dept_id = dept.id
    5. select e.*,d.name from emp e left join dept d on e.dept_id = d.id; -- left 后面的out可省略
    6. -- 右外连接,把原来的left替换成right即可,右外连接会包含右表的所有数据
    7. -- 查询dept的所有数据,和对应的员工信息(右外连接) from后面是表1join后面接的是表2
    8. select d.*,e.* from emp e right join dept d on e.dept_id = d.id;

    ——————————————————————自连接—————————————————————————————-
    image.png

    1. -- 自连接 :自己关联自己 将一个表看成两个表,方法起两个别名,
    2. -- 1.查询员工 及其 所属领导的名字
    3. -- 表结构 emp emp表起 a b两个别名
    4. select a.name,b.name from emp a,emp b where a.managerid = b.id;
    5. -- 2.查询所有员工emp及其领导的名字 emp员工如果没有领导,也要查询出来(这里要使用左外连接)
    6. select a.name '员工',b.name '领导' from emp a left join emp b on a.managerid = b.id;