数据库基础

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

-- 多表查询规则: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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • mysql数据库中 :database : 文件夹table : 数据表(数据文件) 进入mysqlmysql -...
    赋闲阅读 3,707评论 0 0
  • 5.多表查询 多表查询 目的:从多张表获取数据 前提:进行连接的多张表中有共同的列 等连接 通过两个表具有相同意义...
    乔震阅读 5,310评论 0 0
  • 写在前面:本篇博客大部分内容参考数据库系统概念(本科教学版)第四章(第三章的多表部分会挪到这一部分讲)笔者接下来的...
    SunnyQjm阅读 3,607评论 0 2
  • 1. select * from emp; 2. select empno, ename, job from em...
    海纳百川_4d26阅读 5,932评论 0 4
  • 高晓松说:我不买房,全天下都是我的,想住哪就住哪,买了房子就只剩下一个角落是我的,我妹也没买房,但我们两都走遍了全世界!
    小样roloo阅读 2,532评论 0 1

友情链接更多精彩内容