【数据库】查找所有员工的last_name和first_name以及对应部门编号dept_no

题目描述
查找所有员工的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));

思路:
两张表的查询问题,需要连接,但这里的关键点是包括没有分配具体部门的员工,那我的理解是employees表中的ast_name和first_name都需要展示,然后再把dept_emp表中有部门的值展示出来就好,它不是一个可以影响employees表的条件,所有不能用内连接,应该用左(右)连接

代码:

select employees.last_name,employees.first_name,dept_emp.dept_no
from employees left join dept_emp
on employees.emp_no = dept_emp.emp_no;

输出描述
在这里插入图片描述
知识点:
左右连接的使用其实非常简单,下面三句总结:

1、哪个表要全部展示,就看"没有"“全部”这样的字修饰哪个表.

2、如果想用左连接让该表全部展示,那么就将他放在join的左边,如果想用右连接让该表全部展示,那么就将他放在join的右边.

3、如果表在join的左边,我想然他全部展示,就用左连接,如果表在join的右边,我想让他全部展示,就用右连接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章