目录
知识点:多表查询
题型一:内连接
题目描述
查找所有已经分配部门的员工的last_name和first_name以及dept_no(请注意输出描述里各个列的前后顺序)
CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL,
`dept_no` char(4) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
输出描述
select e.last_name,e.first_name,d.dept_no
from employees as e inner join dept_emp as d
on e.emp_no=d.emp_no
select last_name,first_name,dept_no
from employees as e , dept_emp as d
on e.emp_no=d.emp_no
题型二:外连接
题目描述
查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括暂时没有分配具体部门的员工
分析:
说明员工名字必须有,部门编号可以为空,需要左连接
employees表里面的所有都显示,employees在左边所以 left join select
select e.last_name,e.first_name,d.dept_no
from employees as e left outer join dept_emp as d
on e.emp_no=d.emp_no