CC00052.bigdatajava——|Java&MySQL多表/外键/数据库设计.V10|——|MySQL.v10|外连接查询|

本文详细介绍了数据库查询中的外连接,包括左外连接和右外连接。左外连接以左表为主,显示所有左表数据及与右表匹配的数据,匹配不上则右表显示null。右外连接则以右表为主,展示所有右表数据及与左表匹配的部分,左表匹配不上显示null。此外,还提供了查询每个分类下商品个数的实例。
摘要由CSDN通过智能技术生成
一、外连接查询
### --- 左外连接
——>        左外连接 , 使用 LEFT OUTER JOIN , OUTER 可以省略

### --- 左外连接的特点
——>        以左表为基准, 匹配右边表中的数据,如果匹配的上,就展示匹配到的数据
——>        如果匹配不到, 左表中的数据正常展示, 右边的展示为null.
### --- 语法格式
SELECT 字段名 FROM 左表 LEFT [OUTER] JOIN 右表 ON 条件

-- 左外连接查询
SELECT * FROM category c LEFT JOIN products p ON c.`cid`= p.`category_id`;
### --- 左外连接, 查询每个分类下的商品个数
~~~     # 查询每个分类下的商品个数

/*
    1.连接条件: 主表.主键 = 从表.外键
    2.查询条件: 每个分类 需要分组
    3.要查询的字段: 分类名称, 分类下商品个数
*/
SELECT
    c.`cname` AS '分类名称',
    COUNT(p.`pid`) AS '商品个数'
FROM category c LEFT JOIN products p ON c.`cid` = p.`category_id`
GROUP BY c.`cname`;
二、右外连接
### --- 右外连接
——>        右外连接 , 使用 RIGHT OUTER JOIN , OUTER 可以省略

### --- 右外连接的特点
——>        以右表为基准,匹配左边表中的数据,如果能匹配到,展示匹配到的数据
——>        如果匹配不到,右表中的数据正常展示, 左边展示为null
### --- 语法格式

SELECT 字段名 FROM 左表 RIGHT [OUTER ]JOIN 右表 ON 条件

-- 右外连接查询
SELECT * FROM products p RIGHT JOIN category c ON p.`category_id` = c.`cid`;
三、各种连接方式的总结
### --- 各种连接方式的总结

——>        内连接: inner join , 只获取两张表中 交集部分的数据.
——>        左外连接: left join , 以左表为基准 ,查询左表的所有数据, 以及与右表有交集的部分
——>        右外连接: right join , 以右表为基准,查询右表的所有的数据,以及与左表有交集的部分
四、sql语句
### --- sql语句

/*
    外连接查询
        左外连接
            语法格式 关键字 left [outer] join 
                select 字段名 from 左表 left join 右表 on 连接条件
            左外连接的特点
                以左表为基准 匹配右表中的数据 如果能匹配上就显示
                如果匹配不上, 左表中的数据正常显示,右表数据显示为null
        
        右外连接
            语法格式 关键字 right [outer]  join
                select 字段名 from 左表 right join 右表 on 条件
            右外连接的特点
                以右表为基准 匹配左表中的数据 如果能够匹配上 就显示
                如果匹配不到 右表中的数据就正常显示 左表显示null
        
*/
-- 左外连接查询
SELECT 
* 
FROM category c 
LEFT JOIN products p ON c.`cid` = p.`category_id`;
--  查询每个分类下的商品个数
/*
    1.查询的表
    2.查询的条件 分组 统计
    3.查询的字段 分类 分类下商品个数信息
    4.表的连接条件
*/
SELECT 
    c.`cname`,
    COUNT(p.`pid`)
FROM
-- 表连接
category c  LEFT JOIN products p ON c.`cid` = p.`category_id`
-- 分组
GROUP BY c.`cname`;
-- 右外连接查询
SELECT * FROM products p RIGHT JOIN category c ON p.`category_id` = c.`cid`;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanqi_vip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值