|NO.Z.00052|——————————|BigDataEnd|——|Java&MySQL多表/外键/数据库设计.V10|——|MySQL.v10|外连接查询|

一、外连接查询
### --- 左外连接
——>        左外连接 , 使用 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`;

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on 2022-04-05 13:41  yanqi_vip  阅读(52)  评论(0)    收藏  举报

导航