数据库基础

2017-07-18  本文已影响7人  yangliangliang

- 需求:查询员工及其所在部门(显示员工姓名,部门名称)

-- 多表查询规则:1)确定查询哪些表  2)确定哪些哪些字段  3)表与表之间连接条件 (规律:连接条件数量是表数量-1)

2.2 内连接查询:只有满足条件的结果才会显示(使用最频繁)

SELECT empName,deptName      -- 2)确定哪些哪些字段

FROM employee,dept    -- 1)确定查询哪些表

WHERE employee.deptId=dept.id  -- 3)表与表之间连接条件

-- 内连接的另一种语法

SELECT empName,deptName

FROM employee

INNER JOIN dept(innder join 内连接)

ON employee.deptId=dept.id;(on 连接条件)

-- 使用别名(别名as可以省略)

SELECT e.empName,d.deptName

FROM employee as e

INNER JOIN dept as d

ON e.deptId=d.id;

注意:内连接出来的结果是:只有满足条件才会显示。那不满足条件的怎么办呢?比如下面?

-- 需求: 查询每个部门的员工(以部门为主)

-- 预期结果:

--  软件开发部  张三

--  软件开发部  李四

--  应用维护部  王五

--  秘书部      陈六

--  总经办      null

-- 2.2 左[外]连接查询使用左边表的数据去匹配右边表的数据,如果符合连接条件的结果则显示,如果不符合连接条件则显示null

-- (注意: 左外连接:左表的数据一定会完成显示!)(left outer join outer可以省略)

SELECT d.deptName,e.empName

FROM dept d            先写左表,因为用部门去匹配,去连接哪个表,去连接员工表

LEFT OUTER JOIN employee e

ON d.id=e.deptId;         on 连接条件

2.3 右[外]连接查询: 使用右边表的数据去匹配左边表的数据,如果符合连接条件的结果则显示,如果不符合连接条件则显示null

-- (注意: 右外连接:右表的数据一定会完成显示!

SELECT d.deptName,e.empName

FROM employee e

RIGHT OUTER JOIN dept d

ON d.id=e.deptId;

2.4 自连接查询(一张表)

- 需求:查询员工及其上司

-- 预期结果:

-- 张三    null

-- 李四    张三

-- 王五    李四

-- 陈六    王五

SELECT e.empName,b.empName

from employee e

left outer join employee b

on e.bossid=b.id

上一篇下一篇

猜你喜欢

热点阅读