结合sql练习来看https://wwu.lanzouq.com/itJrv04wtveb
获取所有非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并不相等的字段值
部门员工和部门领导表
一个部门员工可有多个部门领导表
利用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的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉
努力拼搏吧,不要害怕,不要去规划,不要迷茫。但你一定要在路上一直的走下去,尽管可能停滞不前,但也要走。