部门表数据
内连接inner join表示A表和B表的共有部分数据。
左连接 left join 表示A表和B表的公共部分,再加上A表的独有部分。
右连接right join 表示A表和B表公共部分,在加上B表的独有部分。
查找A表独有部分,则需查找A表和B表的共有部分并加上A表的独有部分,在将A表和B表的共有部分剔除即可(也就是挑选B的主键为空的数据)。
查找B表独有部分,则需查找A表和B表的共有部分并加上B表的独有部分,在将A表和B表的共有部分剔除即可(也就是挑选A的主键为空的数据)。
全连接则表示将A表和B表的公共部分及A表、B表的独有部分,所有数据都查询出来
指导图的全连接 full outer join 在mysql 语法报错!但是可以通过union关键字进行查询。
UNION会把 重复的行去掉,返回的行都是唯一的。如果想保留重复行,可以使用 UNION ALL 关键字。
UNION其实就是将A表和B表的共有部分及A表的独有部分(即左连接left join)加上A、B表共有部分及B表的独有部分(即右连接right join)合并起来,并进行去重即可。
查询A表独有部分并加上B表独有部分
实际就是查询A表的独有部分和B表的独有部分,使用UNION进行连接即可。
1.INNER JOIN (内连接)
内连接是一种一一映射关系,就是两张表都有的才能显示出来
SELECT A.PK AS A_PK,A.Value AS A_Value,B.PK AS B_PK,B.Value AS B_Value
FROM table_a A
INNER JOIN table_b B
ON A.PK = B.PK
2.LEFT JOIN (左连接)
左连接是左边表的所有数据都有显示出来,右边的表数据只显示共同有的那部分,没有对应的部分只能补空显示,所谓的左边表其实就是指放在left join的左边的表
用韦恩图表示如下:
SELECT A.PK AS A_PK,A.Value AS A_Value,B.PK AS B_PK,B.Value AS B_Value
FROM table_a A
LEFT JOIN table_b B
ON A.PK = B.PK
3.RIGHT JOIN(右连接)
右连接正好是和左连接相反的,这里的右边也是相对right join来说的,在这个右边的表就是右表
用韦恩图表示如下:
SELECT A.PK AS A_PK,A.Value AS A_Value,B.PK AS B_PK,B.Value AS B_Value
FROM table_a A
RIGHT JOIN table_b B
ON A.PK = B.PK
4.OUTER JOIN(外连接、全连接){mysql不支持外连接}
查询出左表和右表所有数据,但是去除两表的重复数据
韦恩图表示如下:
SELECT A.PK AS A_PK,A.Value AS A_Value,B.PK AS B_PK,B.Value AS B_Value
FROM table_a A
FULL JOIN table_b B
ON A.PK = B.PK
悬浮元组:
在自然连接中,被舍弃的元组被称为悬浮元组
1、 左连接
是已左边表中的数据为基准,若左表有数据右表没有数据,则显示左表中的数据右表中的数据显示为空。左联接的结果集包括 LEFT 子句中指定的左表的所有行,而不仅仅是联接列所 匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
2、 右联接
是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值
3 全连接:
是返回两个表中的所有的值,没有对应的数据则输出为空。
内连接
等值连接
非等值连接
自链接
外连接
左外连接
右外连接
全外连接
交叉连接
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)