Mysql学习笔记08——多表查询(下)-阿里云开发者社区

开发者社区> 是安可啊> 正文

Mysql学习笔记08——多表查询(下)

简介: Mysql学习篇
+关注继续查看

细枝末节

1. 内连接的INNER和外连接的OUTER可以省略

2. 筛选条件放在WHERE后,连接条件放在ON后,提高分离性,便于阅读

3. 外连接查询的结果集为主表中所有记录

4. LEFT和RIGHT作用是指定主表

5. 全连接是将两表都作为主表

6. 交叉连接结果集是笛卡尔乘积

格式

SELECT 查询列表

FROM1 别名 [连接类型]

JOIN2 别名

ON 连接条件

[WHERE 筛选条件]

[GROUP BY 分组]

[HAVING 筛选条件]

[ORDER BY 排序列表]

连接类型:

1. 内连接: IINER

2. 外连接:

        左外连接: LEFT [OUTER]

        右外连接: RIGHT [OUTER]

        全外连接: FULL [OUTER]

3. 交叉连接: CROSS

内连接

格式

SELECT 查询列表

FROM1 别名

INNER JOIN2 别名

ON 连接条件

分类

1. 等值连接

2. 非等值连接

3. 内连接

等值连接

示例

/* 查询员工名,部门名 */

SELECT e.name, d.name

FROM emp e

INNER JOIN dept d

ON e.dept_id = d.id

/* 查询名字中包含e的员工名和工种名 */

SELECT e.name, j.name

FROM emp e

INNER JOIN job j

ON e.job_id = j.id

WHERE e.name LIKE '%e%';

/* 查询部门个数>3的城市名和部门个数 */

SELECT city, COUNT(*)

FROM location l

INNER JOIN dept d

ON d.loc_id = l.id

GROUP BY city

HAVING COUNT(*)>3

/* 查询员工名,部门名,工种名,并按部门降序 */

SELECT e.name, d.name, j.name

FROM emp e

INNER JOIN dept d ON e.dept_id = d.id

INNER JOIN job j ON e.job_id = j.id

ORDER BY d.name DESC;

非等值连接

示例

/* 查询员工的工资级别 */

SELECT salry, grade

FROM emp e

INNER JOIN salary_grade g

ON e.salary BETWEEN g.lowwest_sal AND g.highest_sal;

自连接

示例

/* 查询姓名中包含k的员工姓名及其上司姓名 */

SELECT e.name, m.name

FROM emp e

INNER JOIN emp m

ON e.mng_id = m.id

WHERE e.name LIKE '%k%';

外连接

示例

/* 查询男朋友不在男生表的女生名 */


/* 第一种方式:左外连接 */

SELECT w.name, m.*

FROM womwn w

LEFT OUTER JOIN man m

ON w.cp_id = m.id

WHERE m.name IS NULL;


/* 第二种方式:右外连接 */

SELECT w.name m.*

FROM man m

RIGHT OUTER JOIN woman w

ON w.cp_id = m.id

WHERE m.nae IS NULL;

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Impala 如何高效查询 OSS 数据 | 学习笔记
快速学习 Impala 如何高效查询 OSS 数据。
24 0
mongoose学习笔记3--简单查询1
简述 查询就是返回一个集合中的文档的子集 Mongoose 模型提供了   find、     findOne、   findById 三种方法用于文档查询。 为了方便后面课程的有效学习,我们先添加一些测试数据。
688 0
MySQL 关联多表查询更新例子 & from LOW B
update change_request cr inner join application app on cr.app_name = app.app_name inner join aone_product p on p.
674 0
SQL 单表多条记录分组查询分页代码
SQL表结构如下图: SQL 分页语句: SELECT TOP 5 *,(select count(*) inum from (select distinct AreaID...
575 0
Presto 如何高效查询 OSS 数据 | 学习笔记
快速学习 Presto 如何高效查询 OSS 数据。
18 0
+关注
是安可啊
陷阵之志,有死无生。
61
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载