赞
踩
一、连接查询和联合查询基本知识
(一)连接查询
若一个查询同时涉及两个或两个以上的表,则称之为连接查询,连接查询可分为内连接、外连接和交叉连接。
1.内连接
内连接使用比较运算符对两个表中的数据进行比较,并列出与连接条件匹配的数据行,组合成新的纪录。结果只保留满足条件的记录。
关键字:inner join on
基本语法:select a.列1,a.列2,...,a.列n,b.列1,b.列2,...,b.列n from a inner join b on 条件;
2.外连接
外连接的返回结果中不仅包含符合连接条件的行,还会包括左表、右表或两个表中的所有数据行,这三种情况分别称为左连接,右连接,和全连接(mysql没有全连接,要实现全连接可用左连接+UNION+右连接实现)。
①左连接
左表保持不动,右表在右侧滑动,用右表匹配左表。结果保留左表的所有行,右表中不匹配的行默认填充为空值NULL。
关键字:left join on
基本语法:select a.列1,a.列2,...,a.列n,b.列1,b.列2,...,b.列n from a left join b on 条件;
②右连接
右表保持不动,左表在左侧滑动,用左表匹配右表。结果保留右表的所有行,左表中不匹配的行默认填充为空值NULL。
关键字:right join on
基本语法:select a.列1,a.列2,...,a.列n,b.列1,b.列2,...,b.列n from a right join b on 条件;
3.交叉连接
交叉连接的返回结果是被连接的两个表中的所有数据行的笛卡儿积,也就是返回第一个表中符合查询条件的数据行乘以第二个表中符合查询条件的数据行数。从结果看,就是两个表中所有数据的组合,在实际开发中,一般不会使用交叉连接,而是使用具体的条件,对数据进行有目的的查询,加了where条件的交叉连接返回结果与内连接一致。
关键字:cross join [where 条件]
基本语法:select a.列1,a.列2,...,a.列n,b.列1,b.列2,...,b.列n from a cross join b [where 条件],使用时cross join 可省略即select a.列1,a.列2,...,a.列n,b.列1,b.列2,...,b.列n from a b [where 条件];
(二)联合查询
关键字:union/union all
union与union all的区别:union会把多个查询语句的结果合并后去重,union all会保留所有的查询结果。
二、查询举例
下图为商品表和品牌表数据。
(一)连接查询
1.内连接:查询所有商品的商品名、品牌名、商品价格以及商品数量。
2.外链接
2.1左连接:查询所有品牌旗下的商品信息;
2.2右连接:查询所有品牌旗下的商品信息;
3.交叉连接:查询所有商品的商品名、品牌名、商品价格以及商品数量。
(二)联合查询
下图为会员表数据
查询会员表中的重庆、杭州的会员姓名并合并。
1.union
2.union all
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。