SQL循序漸進 23 UNION 和 外部連線

2021-04-17 05:45:08 字數 1095 閱讀 4259

union 和 外部連線

有些時候,你可以想一起看多個查詢的結果、組合它們的輸出,你可以使用union關鍵字。為了合併以下兩個查詢的輸出:顯示所有買方的id和已經有定貨的顧客,你可以使用以下語句:

select buyerid

from antiqueowners

union

select ownerid

from orders;

這裡要注意sql要求select的列表必須匹配,即列於資料型別匹配。在本例子中,buyerid 和ownerid都是相同的資料型別,同為interger(整型)。同時還有一提的是,sql但使用union的使用會進行自動複製排除。而在單一的查詢中,你就必須使用distinct。

outer join(外部連線)通常是在join查詢被聯合,而行沒有包括到join中的時候使用,特別是在常量文字"flags"被包括的時候尤為有用。下面我們看看這個查詢先:

select ownerid, 'is in both orders & antiques'

from orders, antiques

where ownerid = buyerid

union

select buyerid, 'is in antiques only'

from antiques

where buyerid not in

(select ownerid

from orders);

第乙個查詢做了乙個連線以列出兩個表中的每個owener,並且在id後面放置乙個標記線來重複引用。這個union合併了這個列表以及以下第二個的列表。第二個列表是列出不是在orders 表的id,這樣就產生了在join查詢之外的id列表,它是利用引用標籤列出的。這可能是一種最容易的方法來產生這個列表。

這個概念對於主鍵跟外碼有關的狀況是很有用的,但是有些主鍵的外碼值是null。比如,在乙個表中,主鍵是salesperson,而在其它的表中主鍵是customers,並且它們的salesperson列在相同的行。然而,如果salesperson沒有customers的時候,這個人的名字就不會出現在customer表中。如果所有salespersons的列表要顯示出來,那麼就要外部連線了。

SQL循序漸進 24 嵌入SQL

嵌入 sql為了更好的理解嵌入 sql,本節利用乙個具體例子來說明。嵌入 sql允許程式連線資料庫並且包括 sql 到程式中,這樣在程式中就可以對資料庫進行使用 操作以及處理資料等等。以下是用c語言編寫的使用嵌入 sql的例程,它將列印乙個報告 這個程式必須在普通的編譯之前先預編譯 sql語句。嵌入...

SQL循序漸進 17 JOIN子句

join 子句不知你有沒有發現直到現在我們利用select語句來檢索的時候只能從乙個表中進行。如果你想從兩個表或者更多的表中進行檢索,該怎麼辦呢?好在我們可以使用sql和關係資料庫系統的乙個很有用的特性,即 join 為了簡單說明,實際上 join 就是使得關係資料庫系統相關的東東。join 允許你...

循序漸進學習棧和佇列

是限定僅在表尾進行插入或刪除操作的線性表。因此,對棧來說,表尾端有其特殊含義稱為棧頂,相應地,表頭端稱為棧底。棧的修改是按後進先出的原則進行的,因此又稱後進先出表。解釋 棧是乙個很簡單的資料結構,但是好多人不能理解它的重要的特性,即只能在棧頂的位置進行操作,可以理解棧是乙個水杯,只能在杯口倒水或者喝...