gitee地址
https://gitee.com/xuthus5/Database-SQL-Actual-Combat/blob/master/README.md#https://gitee.com/link?target=https%3A%2F%2Flaunchpad.net%2Ftest-db%2Femployees-db-1%2F1.0.6
结合sql练习来看https://wwu.lanzouq.com/itJrv04wtveb
员工表与部门管理者表
员工表包含所有的员工(包括姓名字段),部门管理表是只有dept_no,emo_no,from_date(入职日期),to_data(在职日期)
获取所有非manager的员工emp_no
1.使用两表查询
select e.emp_no from employees e where e.emp_no not in (select emp_no from dept_manager) # 0.232秒
2.使用查询内连接查询
待续
3.使用外键关联查询
SELECT
dm.emp_no # 员工表;加个命名字段就变成了6秒
FROM
dept_manager de
LEFT JOIN employees dm ON de.emp_no != dm.emp_no # 返回两表中no并不相等的字段值
获取所有员工当前的manager
部门员工和部门领导表
一个部门员工可有多个部门领导表
利用dept_no 关联两表之间的数据,
SELECT
de.emp_no,
dm.emp_no manager_no
FROM
dept_emp de
LEFT JOIN dept_manager dm ON de.dept_no = dm.dept_no
WHERE
de.to_date = '9999-01-01'
AND dm.to_date = '9999-01-01'
AND de.emp_no != dm.emp_no
1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉
获取所有部门中当前员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary
报错
1054 - Unknown column 's.salary' in 'having clause'、