image.png
    image.png
    image.png

    1. -- -----------------------多表查询案例----------------
    2. use itheima;
    3. create table salary_grade(
    4. grade int,
    5. losal int, -- 最低薪资
    6. hisal int -- 最高薪资
    7. )comment '薪资等级表';
    8. insert into salary_grade values (1,0,3000),(2,3001,5000);
    9. insert into salary_grade values (3,5001,8000);
    10. insert into salary_grade values (4,8001,10000);
    11. insert into salary_grade values (5,10001,15000);
    12. insert into salary_grade values (6,15001,20000);
    13. insert into salary_grade values (7,20001,25000);
    14. insert into salary_grade values (8,25001,30000);
    15. -- 查询员工的姓名、年龄、职位、部门信息
    16. -- 表:empdept
    17. -- 连接条件:empdept_id
    18. -- 连接条件:emp.dept_id = dept.id -- 如果不写连接条件会重复
    19. select e.name,e.age,e.job,d.name from emp e ,dept d where e.dept_id = d.id -- 要查询对应的部门信息,要写连接条件where e.dept_id = d.id
    20. -- 2.查询年龄小于30岁的员工的姓名、年龄、职位、部门信息(显示内连接)
    21. -- empdept
    22. -- 连接条件:emp.dept_id = dept.id
    23. select e.name,e.age,e.job,d.name from emp e join dept d on e.dept_id = d.id where e.age < 30;
    24. -- 3.查询拥有员工的id,部门名称
    25. -- empdept -- distinct 是对查询结果去重复
    26. -- 连接条件:emp.dept_id = dept.id
    27. select distinct e.id,d.name from emp e ,dept d where e.dept_id = d.id;
    28. -- 4.查询所有年龄大于40岁的员工,及其归属的部门名称,如果员工没有分配部门,也需要展示出来
    29. -- empdept -- 这里用左外连接,将左表的信息全部查询出来
    30. -- 连接条件:emp.dept_id = dept.id -- 可以把两张表,对应的信息查询出来,这也是主键和外键关联的作用 -- 被外键关联的对象应该具有主键或者外键的约束
    31. select e.*,d.name from emp e left join dept d on e.dept_id = d.id where age>40;
    32. -- 5.查询所有员工的工资等级
    33. -- 表:empsalary_grade
    34. -- 连接条件:emp.salary >= salary_grade.losal and emp.salary <- salary_grade.hisal
    35. select e.*,s.grade,s.losal,s.hisal from emp e ,salary_grade s where e.salary >= s.losal and e.salary<=s.hisal;
    36. select e.*,s.grade from emp e ,salary_grade s where e.salary >= s.losal and e.salary<=s.hisal;