数据库之十二:集合运算与连接运算

1、集合运算:


1.1、Union,对2个结果进行纵向连接,类似于数学中的并集运算

   要求2个运算结果必须有相同的列且对应列的类型必须一致,

    ORDER BY子句只能在最后使用一次,对运算结果进行排序

   这里会丢弃重复的记录,只保留一个,如果需要全部显示出来则需要使用union all

Select *  from student where ssex=''
union
Select * from student where ssex=''

1.2、Intersect:

  选取表中共同的部分,语法同union基本一致

1.3、Except:

  减法,计算两个集合的差集,语法与union也是一致的

2、连接:


集合是纵向连接,而连接是横向连接

2.1、内连接:

Select

select a.*,b.* from student a inner join sc b on a.sid=b.sid

 会根据连接项进行连接,没有匹配的记录会被丢弃

2.2、外连接:左外连接,右外连接,全外连接

a、左外连接以左表为主表,当右表没有匹配到左表的记录会用空值填充

select a.*,b.* from student a left join sc b on a.sid=b.sid

右外连接同左外连接一样,只是这里的主表是右表,左表为连接到的会用空值填充

select a.*,b.* from student a right join sc b on a.sid=b.sid

(这里全部连接上了)

c、全外连接两个表没有连接到的都会用空值填充

select a.*,b.* from student a full join sc b on a.sid=b.sid

3张以上表连接,可以理解为先两张表连接结果再与第三张表进行连接

select a.*,b.*,c.* 

from student a left join sc b on a.sid=b.sid

               left join course c on b.cid=c.cid

交叉连接,连接结果是两张表的笛卡尔积,即表1中的每条记录与表2中的每条记录分别连接,最终结果条数是表1和表2条数的乘积

select a.*,b.*

from student a cross join sc b

尽管很渺小,但终究会变得伟大
原文地址:https://www.cnblogs.com/chenbao1012/p/11840441.html