數據庫之十二:集合運算與連接運算


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM