接觸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...