集合运算与连接运算

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

posted @   Carllll  阅读(171)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示