MySQL 多表查询基础

MySQL 多表查询

1- union 关联查询

用于关联两个表查询结果集

  • 两个表查询的结果集中的 字段个数必须一样,字段类型不要求

  • 两个表的查询 where 条件需要分别写上才生效

  • union 后默认省略了 distinct,默认不显示重复数据,显示重复数据需要写成

    union all

  • union 执行级别比 order by 级别要低,所以排序只需要写在union后面的字句后

  • 如果两个表需要实现不同的排序规则,需要将 union 前后两个子句用()包裹,且每个子句 使用 order by 排序后都需要使用 limit 关键字

-- t01,t02  为两张表表名
-- 语法 : select 字段1,..字段n from 表1 [where 条件]  union [distinct/all] 	select 字段1,..字段n from 表2 [where 条件];

-- 将表一结果 按照年龄倒序,表二结果按照年龄正序  limit 后面跟的数据比需要展示的数字大即可
(select `name`,`age` from `t01` order by limit 3306)
union all
(select `score`,`tel` from `t02` order by limit 3306);

2-连接查询

2.1-内连接
-- 语法 : select 字段名1,...字段名n  from 表1 [inner] join 表2 on 条件;
select `t01`.`name`,`t01`.`age`,`t02`.`score` from `t01` inner join `t02` on `t01`.`id` = `t02`.`stuid`;

  • 内连接是严格连接
  • 内连接的 inner 关键字可以不写
  • 内连接条件的 关键字 on 可以用where 替代(不推荐)
2.2-外连接
  • 左外连接

    -- 语法:select 字段名1,...字段名n  from 表1 left join 表2 on 条件;
    select `t01`.`name`,`t01`.`age`,`t02`.`score` from `t01` left join `t02` on `t01`.`id` = `t02`.`stuid`;
    

    左外连接以左边的表作为主表,主表的内容会展示,副表匹配不上的字段信息用null表示

  • 右外连接

-- 语法:select 字段名1,...字段名n  from 表1 right join 表2 on 条件;
select `t01`.`name`,`t01`.`age`,`t02`.`score` from `t01` right join `t02` on `t01`.`id` = `t02`.`stuid`;

右外连接以右边的表作为主表,主表的内容会展示,副表匹配不上的字段信息用null表示

2.3 - 自然连接
-- 语法:select 字段名1,...字段名n  from 表1 natural join 表2;

-- 自然连接,会自动选择字段名和值一样的 字段作为连接条件
-- 对数据表的结构要求极高,实际开发中几乎不使用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值