— 练习1
    — 查询所有员工信息。显示员工编号, 员工姓名, 工资, 职务名称, 职务描述
    select e.id 员工编号, e.ename 员工姓名, e.salary 工资, j.jname 职务名称, j.description 职务描述 from emp e inner join job j on e.job_id = j.id;

    — 练习2
    — 查询所有员工信息。显示 员工编号, 员工姓名, 工资, 职务名称, 职务描述, 部门名称, 部门位置
    — 1.根据需求明确查询哪些表: emp, job, dept
    — 2.明确表连接条件去掉笛卡尔积
    — 3.后续的查询
    select e.id 员工编号, e.ename 员工姓名, e.salary 工资, j.jname 职务名称,j.description 职务描述,d.dname 部门名称, d.loc 部门位置
    # 先通过外键和主键将两张表连起来,后再通过第三表的外键连上第三张表即可;
    from emp e inner join job j on e.job_id=j.id
    inner join dept d on d.id = e.dept_id;

    — 练习3
    — 查询经理的信息。显示员工姓名, 工资, 职务名称, 职务描述, 部门名称, 部门位置, 工资等级
    — 1.根据需求明确查询哪些表: emp, job, dept, salarygrade
    — 2.明确表连接条件去掉笛卡尔积
    — 3.后续的查询
    select *
    from emp e
    # 再链接表的时候没有主外键的情况下可以利用条件链接:
    inner join job j on j.id = e.job_id
    inner join dept d on e.dept_id = d.id
    # 判断员工工资的范围在哪个等级
    inner join salarygrade s on e.salary between s.losalary and s.hisalary where j.jname=’经理’;

    — 练习4
    — 查询出部门编号、部门名称、部门位置、部门人数(员工表)
    — 保证右表(部门表)中所有的数据全部出现,使用右连接
    select d.id 部门编号, d.dname 部门名称, d.loc 部门位置,count(e.id)部门人数
    from emp e right join dept d on e.dept_id=d.id group by d.id;

    — 练习5
    — 列出所有员工的姓名及其直接上级领导的姓名, 没有上级领导的员工也需要显示,显示自己的名字和领导的名字
    — 1.根据需求明确查询哪些表: emp pt, emp ld
    — 2.明确表连接条件去掉笛卡尔积
    — 3.后续的查询
    select d.ename 员工姓名,m.ename 领导名字
    # 查询对应领导的id
    from emp d left join emp m on d.mgr=m.id ;