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