SQL連線查詢語句(內 外 交叉和合併查詢)

2021-09-08 06:54:30 字數 2272 閱讀 3540

接觸sql語句時間挺長時間了,聽他人說過sql語句的連線查詢,但一直沒有認真研究和使用過!!最近在公司實習,需要用到一些連線的語句,我也從中體會到連線查詢帶來的方便。

下面總結一下sql連線查詢語句。

1、內連線 (inner join)

內連線也稱自然連線,它是根據兩個或多個表中的列之間的關係,從這些表中查詢資料。

注意: 內連線是從結果表中刪除與其他被連線表中沒有匹配行的所有行,所以內連線可能會丟失資訊。

重點:內連線,只查匹配行。

語法:(inner可省略)

select dishname,dishcode,nums,catename from sn_dish_info inner join sn_dish_category   

on sn_dish_info.cateuuid=sn_dish_category.cateuuid

菜品類別表:

菜品表結果表

這樣我們就把兩張表中我們想要的資料查出來了。但同時招牌菜這個的資料就丟失了!!不過這對於我們好像不影響我們。我們只要菜品類別下有菜品的資料。

2、外連線(左,右,全連線)

外連線分為三種:左外連線,右外連線,全外連線。對應sql:left/right/full outer join。通常我們省略outer 這個關鍵字。寫成:left/right/full join。

在左外連線和右外連線時都會以一張表為基表,該錶的內容會全部顯示,然後加上兩張表匹配的內容。如果基表的資料在另一張表沒有記錄。那麼在相關聯的結果集行中列顯示為空值(null)。

(1)左連線

以左表為基準,結果集保留左表的所有行,對於右表只包含左表匹配的行。如果右表不存在與左表相對應的資料,就將查詢結果集合對應的資料字段放入null值。

select  dishname,dishcode,nums,sn_dish_category.catename as carename   

from sn_dish_info  left join sn_dish_info.cateuuid sn_dish_category.cateuuid

結果:(2)右連線

與左連線正好相反。

select  dishname,dishcode,nums,sn_dish_category.catename as carename   

from sn_dish_info right join sn_dish_category on sn_dish_info.cateuuid=sn_dish_category.cateuui

結果:(3)全連線

將左右兩個表中的資料都查詢出來,如果兩個表中沒有相對應的資料,就將該字段放入null值。

select  dishname,dishcode,nums,sn_dish_category.catename as carename   

from sn_dish_info full join sn_dish_category on sn_dish_info.cateuuid=sn_dish_category.cateuuid  

3、交叉連線(cross join)

交叉連線也稱笛卡爾積,是將兩個表中的每一條資料都進行組合。

例:a(a,1),b(2,3,4)     交叉連線後c

select  dishname,dishcode,nums,sn_dish_category.catename as   

carename from sn_dish_info cross join sn_dish_category  

他和用內連線進行查詢的結果一樣,就是太慢了,因為它得先進行組合,在進行篩選,導致查詢的效率很低。

4、union

union 操作符用於合併兩個或多個 select 語句的結果集。

union 運算子通過組合其他兩個結果表(例如 table1 和 table2)並消去表中任何重複行而派生出乙個結果表。

當 all 隨 union 一起使用時(即 union all),不消除重複行。兩種情況下,派生表的每一行不是來自 table1 就是來自 table2。

sql union 語法  

select column_name(s) from table_name1  

union  

select column_name(s) from table_name2  

注釋:預設地,union 操作符選取不同的值。如果允許重複的值,請使用 union all。  

sql union all 語法  

select column_name(s) from table_name1  

union all  

SQL連線查詢語句(內 外 交叉和合併查詢)

接觸sql語句時間挺長時間了,聽他人說過sql語句的連線查詢,但一直沒有認真研究和使用過!最近在公司實習,需要用到一些連線的語句,我也從中體會到連線查詢帶來的方便。下面總結一下sql連線查詢語句。內連線也稱自然連線,它是根據兩個或多個表中的列之間的關係,從這些表中查詢資料。注意 內連線是從結果表中刪...

SQL內外左右交叉連線

概念 根據兩個表或多個表的列之間的關係,從這些表中查詢資料。目的 實現多個表查詢操作。一般是用作關聯兩張或兩張以上的資料表時用的。看起來有點抽象,我們舉個例子,做兩張表 學生表 t student 和班級表 t class sql 92標準所定義的from子句的連線語法格式為 from join t...

sql內外鏈結,交叉連線

實際的專案,存在多張表的關聯關係。不可能在一張表裡面就能檢索出所有資料。如果沒有表連線的話,那麼我們就需要非常多的操作。比如需要從a表找出限制性的條件來從b表中檢索資料。不但需要分多表來操作,而且效率也不高。比如書中的例子 複製 如下 select fid from t customer where...