SQL SERVER 系列(6)子查詢、多表操作、聯合

SQL SERVER 系列(6)子查詢、多表操作、聯合

當我們對數據庫進行操作的時候經常會遇到對多個表操作的情況,這時我們必須要用到一些特殊的操作,下面來看一看具體的內容。

 

子查詢:

首先來看一下子查詢,所謂的子查詢就是一個查詢語句在嵌套一個查詢語句。

關於子查詢這裏需要注意兩點:

1:內層查詢必須使用()括起來。

2:在執行的時候,先執行內層查詢,得到結果後將此結果返回給外層查詢,最後再執行外層查詢。

下面來看兩個實例以便我們更好的理解。

實例1:顯示a表和b表中都有的員工信息

select * from a where 姓名 in (select 姓名 from b)

實例2:顯示a表中有b表中沒有的員工信息

select * from a where 姓名 not in (select * from b)

 

多表操作:

 

來說一下多表連接的方法。有兩種方法笛卡爾乘積和join on連接。下面詳細的介紹這兩種連接方法。

1:笛卡爾乘積(交叉連接)

語法:

Select 字段名列表 from 表名1,表名2 …… [where條件]

(默認產生的記錄總數=兩個數記錄乘積)

實例:顯示員工表和公司表中員工的正確信息

select 員工表.姓名,性別,年齡,公司名稱,地址 from 員工表,公司表 where 員工表.姓名=公司表.姓名

2join in連接

Join on連接可以分爲一下幾種連接:

內連接:inner join 必須是滿足條件的記錄

左外連接:left join 顯示左表所有的記錄,如果右表沒有與之相對應記錄則相應字段爲空

右外連接:right join顯示右表所有的記錄,如果左表沒有與之相對應記錄則相應字段爲空

全外連接:顯示所有記錄,如果另一個表中沒有與之相應得記錄,則相應字段爲空

 

內連接語法:

Select 字段名列表 from 表名1 inner join 表名2 on 條件

實例:以內連接顯示員工表和公司表的正確信息

select 員工表.姓名,性別,年齡,公司名稱,地址 from 員工表 inner join 公司表 on 員工表.姓名=公司表.姓名

 

左外連接語法:

Select 字段名列表 from 表名1 left join 公司表 on 條件

實例:用左外連接顯示員工表和公司表的信息

右外連接和左外連接用法本質是一樣的在這就不多介紹,按着葫蘆畫瓢就OK了。

 

全外連接:

現在看全外連接我們通過個實例來了解它。

實例:用全外連接顯示三個表的數據

select 員工表.姓名,性別,年齡,公司名稱,地址,網址 from 員工表 full join 公司表 on 員工表.姓名=公司表.姓名 full join 網址表 on 公司表.公司名稱=網址表.公司名  

 

好了多表操作就說這些了。

 

聯合:

聯合的作用是顯示幾個表的內容在一個表上。

注意:

1:每個select語句字段必須要一致

2:如果字段名不同,則以第一個select語句爲準

3要合併的數據類型必須兼容,即類型可以不同,但必須可以轉換

實例:顯示軟件班和網絡班的信息在一個表上

select * from 軟件班 union select * from 網絡班

·重複的記錄只顯示一條,如果顯示所有要用:all,例如上面的實例要顯示全部則改爲:

select * from 軟件班 union all select * from 網絡班

 

 

本篇文章又要到了畫句號的時候,本片文章講的都是對多個表進行操作的的內容,靈活運用對多表的操作將大大提高工作效率。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章