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