在大多數實際開發情況了,我們需要同時和多個表打交道,多表查詢是資料庫中使用頻率最高和效率攸關的操作了!
多表查詢主要有兩種方案:
這裡主要介紹一下連線查詢!
連線查詢,主要使用join關鍵字,建立多個表之間的聯絡。
連線查詢可以分為,內連線和外連線,同時外連線又分為左連線和右連線。
下面列出了您可以使用的 join 型別,以及它們之間的差異。
例項表結構如下:
inner join 與 join 是相同的。
在表中存在至少乙個匹配時,inner join 關鍵字返回行。
select
persons.firstname,
persons.lastname,
orders.orderno
from
persons
inner
join orders on orders.id_p = persons.id_p
order
by persons.firstname
left join 關鍵字會從左表 (table_name1) 那裡返回所有的行,即使在右表 (table_name2) 中沒有匹配的行。
我們想知道所有人的資訊,以及他們的訂單號,如果有的話!
select
persons.firstname,
persons.lastname,
orders.orderno
from
persons
left
join orders on orders.id_p = persons.id_p
order
by persons.firstname
left join 關鍵字會從左表 (persons) 那裡返回所有的行,即使在右表 (orders) 中沒有匹配的行。
right join 關鍵字會右表 (table_name2) 那裡返回所有的行,即使在左表 (table_name1) 中沒有匹配的行。
我們希望列出所有的定單,以及定購它們的人 - 如果有的話。
select
persons.firstname,
persons.lastname,
orders.orderno
from
persons
right
join orders on orders.id_p = persons.id_p
order
by persons.firstname
只要其中某個表存在匹配,full join 關鍵字就會返回行。在某些資料庫中, full join 稱為 full outer join。
我們希望列出所有的人,以及他們的定單,以及所有的定單,以及定購它們的人。相當於左連線和右連線相加!
select
persons.firstname,
persons.lastname,
orders.orderno
from
persons
full
join orders on orders.id_p = persons.id_p
order
by persons.firstname
由於mysql不支援全連線,這裡就不寫執行結果,可以通過union關鍵字組合左右連線得到相同的效果!
自然連線,是對資料表進行笛卡爾積操作。
select
persons.firstname,
persons.lastname,
orders.orderno
from
persons,orders
where orders.id_p = persons.id_p
order by
persons.firstname
關於巢狀查詢和連線查詢的效率問題,下節課討論 SQL連線查詢 JOIN
主要列舉這個圖 或者,或者,同理,select column name s from table1 left join table2 on table1.column name table2.column name 或者,select column name s from table1 left o...
mysql各種join連線查詢
注意點 在join操作中的 on where 應該放哪些條件 目前理解 on 後放2表關聯部分 where後放最終資料篩選部分 1.下圖為各種join操作的圖表解釋及sql語句 2.自測 建表資料結果如下 可以根據圖表中的sql 語句進行相關join查詢測試 3.簡單測試2個結果 測試第乙個join...
mysql的join連線查詢
join 聯合查詢。查詢的結果左右連線。連成一張大表。場景 一張表裡面的資訊不能滿足我們的條件這時候可以把有關聯的表連線起來。方便查詢。別名 分為表別名和列別名。因為有些資料表的表名很長並且會用很多次所以我們可以給它起乙個簡單的別名,簡便而且 也少。列別名主要是有相同欄位時可以加以區分。例如需要從兩...