部门表数据
内连接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进行连接即可。
内连接是保证两个表中所有的行都要满足连接条件,而外连接则不然。在外连接中,某些不满条件的列也会显示出来,也就是说,只限制其中一个表的行,而不限制另一个表的行。这种连接形式在许多情况下是非常有用的。外连接只能用于两个表中。在 Ansi 语法形式中,包含下列三种外连接关键字:
◆Left Outer Join 包含了左表中的全部行(表达式中第一个表)
◆Right Outer Join 包括了右表中的全部行(表达式中第二个表)
◆Full Outer Join 包括了左表和右表中所有不满足条件的行
在 SQL Server 连接语法形式中,包括下列两种外连接运算符:
◆* = 包含了左表中的全部行(表达式中第一个表)
◆= * 包括了右表中的全部行(表达式中第二个表)
左外连接和右连接都可以产生同样的结果,关键是看表达式中出现的前后顺序。
举例如下:
b.外连接
b1.左连接
select courses.cno,max(coursename),count(sno)
from courses LEFT JOIN grades ON courses.cno=grades.cno
group by courses.cno
左连接特点:显示全部左边表中的所有项目,即使其中有些项中的数据未填写完全。
左外连接返回那些存在于左表而右表中却没有的行,再加上内连接的行。
b2.右连接
与左连接类似
b3.全连接
select sno,name,major
from students FULL JOIN majors ON students.mno=majors.mno
两边表中的内容全部显示
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)