前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL(连接查询)

MySQL(连接查询)

作者头像
全栈开发日记
发布2022-05-12 21:10:10
7.5K0
发布2022-05-12 21:10:10
举报
文章被收录于专栏:全栈开发日记全栈开发日记

笛卡尔积

代码语言:javascript
复制
SELECT 查询字段列表 FROM 表1,表2 
-- 表1*表2的数据

表1中的每一条数据都会和表2的每一条数据相关联。

连接查询

MySQL连接查询分类

1、按推出年份划分

SQL92标准:仅支持内连接;

SQL99标准:支持除了全外连接的所有连接的类型;

2、按功能划分

内连接

SQL92 内连接

语法:

代码语言:javascript
复制
SELECT 查询字段列表 
FROM 表1,表2 
WHERE 表1和表2关联关系;

代码实例:

代码语言:javascript
复制
select o.*,u.name 
from b_order o,b_user u 
where o.user_id = u.user_id;

SQL99 内连接

语法:

代码语言:javascript
复制
SELECT查询字段列表 
FROM 表1 别名1 
INNER JOIN 表2 别名2 
ON 表1和表2的关联关系;

代码实例:

代码语言:javascript
复制
select o.*,u.name 
from b_order o 
inner join b_user u 
on o.user_id=u.user_id;

SQL99 非等值内连接

代码语言:javascript
复制
SELECT o.*,u.name 
FROM b_order o 
INNER JOIN b_user u 
ON 
o.user_id between u.user_id and u.age;

SQL99 自连接

自连接一般用于一张表中有上下级关系的表,一般会有一个指向上级的字段,用法和等值连接一致,我们将同一张表起不同的别名进行等值连接。

代码语言:javascript
复制
select * from china province 
inner join china city 
on province.id = city.pid;

外连接

左外连接

语法:

代码语言:javascript
复制
SELECT <SELECT_LIST> 
FROM TABLE A 
LEFT JOIN TABLE B 
ON A.KEY=B.KEY;

注意:

1. 确定主表 ;

2. 在左外连接中,LEFT 左边的就是主表 ;

3. 显示所有的主表记录,并关联显示从表中的数据,如果从表中没有和主表可以关联的数据,使用NULL 进行匹配;

代码实例:

代码语言:javascript
复制
查询订单信息,并关联信息用户姓名
SELECT o.*,u.name 
FROM b_order o 
LEFT JOIN b_user u 
ON o.user_id = u.user_id;

加个条件(is null)

代码语言:javascript
复制
SELECT o.*,u.name 
FROM b_order o 
LEFT JOIN b_user u 
ON o.user_id = u.user_id 
WHERE u.user_id is NULL;

右外连接

语法:

代码语言:javascript
复制
SELECT <SELECT_LIST> 
FROM TABLE A 
RIGHT JOIN B 
ON A.KEY=B.KEY;

注意:

1. 确定主表 ;

2. 在右外连接中,RIGHT 右边的就是主表 ;

3. 显示所有的主表记录,并关联显示从表中的数据,如果从表中没有和主表可以关联的数据,使用NULL 进行匹配;

代码实例:

代码语言:javascript
复制
SELECT o.*,u.name 
FROM b_user u 
RIGHT JOIN b_order o 
ON u.user_id = o.user_id;

加个条件(is null)

代码语言:javascript
复制
SELECT o.*,u.name 
FROM b_user u 
RIGHT JOIN b_order o 
ON u.user_id = o.user_id 
WHERE u.user_id is NULL;

交叉(CROSS)连接

代码语言:javascript
复制
SELECCT <SELECT_LIST> 
FROM TABLE A 
CROSS JOIN B

等价于笛卡尔积

SELECT <SELECT_LIST> 
FROM TABLEA 
CROSS JOIN B 
WHERE A.KEY=B.KEY
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈开发日记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档