//部门表
create table dept( id int primary key, deptName varchar(20) )
//员工表 create table employee( id int primary key, empName varchar(20), deptId int , --部门名称 CONSTRAINT employee_dept_fk FOREIGN KEY(deptId) references dept(id) 外键名称 外键 参考表(参考字段) )
============================================================================================================================
多表查询 = 关联查询
============================================================================================================================
×××××××××查询员工及其所在部门
1.1交叉查询(会产生重复记录)
SELECT empName , deptName FROM employee,dept;
1.2内连接查询(只有满足条件的结果显示)
---多表查询规则
1)查询哪些表
2)确定哪些字段
3)表与表之间的连接条件
SELECT empName,deptName 2)确定哪些字段 FROM employee,dept 1)查询哪些表 where empoyee.deptId=dept.id 3)表与表之间的连接条件
1.3内连接查询的另一种语法
SELECT empName,deptName FROM employee INNER JOIN dept ON employee.deptId=dept.id;
使用别名查询
SELECT e.empName,d.deptName FROM employee e INNER JOIN dept d ON e.deptId=d.id;
//如果左表数据匹配不到右表数据,则不显示
SELECT d.deptName,e.empName FROM dept d , employee e WHERE d.id = e.deptId
-----------------查询每个部门的员工,部门一定要显示
每个部门必须显示
----1.4左外链接查询
使用左边表的数据去匹配右边表数据,如果符合条件则显示,如果不符合显示null
从部门找人,找不到null
(左边数据一定会显示)
SELECT d.deptName , e.empName FROM dept d LEFT OUTER JOIN employee e //左外链接查询 ON d.id = e.deptId;
---1.5右外链接查询
(右表的数据一定显示)
SELECT FROM FROM employee e RIGHT OUTER JOIN dept d ON d.id = e.deptId;
---1.6自连接查询
查询一张表里字段的关系,比如查员工的上司
SELECT e.empName , b.empName FROM employee e LEFT OUTER JOIN employee b ON e.bossId = b.id; //员工的上司id匹配表中另一个字段