Mysql数据库学习

多表处理

一、表格的合并与联结

1、合并

对于存储在两个不同表格中的数据,想要查询后聚合统计很不方便,我们可以用 UNION语句 将两次查询的结果合并在一起。代码示例如下:

SELECT  id,name //第一次查询
FROM table1
UNION //将两次查询的结果合并在一起
SELECT  gender,age //第二次查询
FROM table2

对于含有相同数据的列,UNION语句会自动去重。如果想要保留重复的值,可以使用UNION ALL语句。

2、联结

将一个或多个表格通过某种关系横向合并为一个表格的过程,称为联结。当没有设定表的联结条件时,联结的结果就是两个表格相乘的笛卡尔积。(我的理解是相当于排列组合)在联结过程中,可以为不同的表格设置别名(自联结也要起别名,区分查询的表和联结的表),用来区分不用表格中相同名称的列。查询时使用 {别名.列名} 的格式进行访问。代码示例如下:(以自联结为例)

SELECT t1.name,t1.age //别名.列名
FROM table1 as t1 //为table1起别名t1
JOIN table2 as t2  //为table2起别名t2
WHERE t1.age>t2.age  

内联结的语句为INNER JOIN,在实际应用中INNER语句可以省略,利用外键,ON关键字用来限制联结键的条件,与WHERE语句不同,WHERE用于设定约束本次查询的所有条件。代码示例如下:获取表1和表2数据匹配的交集

SELECT t1.name,t2.age  
FROM table1 as t1  
INNER JOIN table2 as t2 
ON t1.id = t2.id //两个表格中id相同的数据信息

二 、外联结

内联结能帮助我们获取到数据的交集,当我们需要数据的补集时,可以利用外联结语句。外联结语句包括左联结LEFT JOIN,右联结RIGHT JOIN,返回左表(右表)的所有内容以及与另一个表的匹配内容。代码示例如下:获取表1的所有数据和表2与表1匹配的数据

SELECT t1.id,sku_name,t2.text
FROM  table1 as t1
LEFT JOIN table2 as t2
ON t1.id = t2.id
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值