天天看點

MYSQL學習筆記——多表查詢

  • 多表查詢

通過不同表中具有相同意義的關鍵字段,将多個表進行連接配接,查詢不同表中的字段資訊

  • 連接配接方式
    • 内連接配接和外連接配接(左連接配接和右連接配接)
  • 多表連接配接的結果通過三個屬性決定
    • 方向性:在外連接配接中寫在前邊的表為左表、寫在後邊的表為右表
    • 主附關系:主表要出所有的資料範圍,附表與主表無比對項時标記為null,内連接配接時無主附表之分
    • 對應關系:關鍵字段中有重複值的表為多表,沒有重複值的表為一表

連接配接用到的t1表和t2表, 結合圖便于了解連接配接關系

MYSQL學習筆記——多表查詢
MYSQL學習筆記——多表查詢
  • 内連接配接

按照連接配接條件合并兩個表,傳回滿足條件的行。

select 字段1[,…] from 表1[ inner] join 表2 on 表1.key=表2.key;

MYSQL學習筆記——多表查詢
-- 内連接配接
select * from t1 inner join t2 on t1.key1 = t2.key2;

select * from t1 join t2 on t1.key1 = t2.key2; # 内連接配接inner可省略
           
MYSQL學習筆記——多表查詢
  • 左連接配接

結果中除了包括滿足連接配接條件的行外,還包括左表的所有行。

select 字段1[,…] from 表1 left join 表2 on 表1.key=表2.key;

MYSQL學習筆記——多表查詢
-- 左連接配接
select * from t1 left join t2 on t1.key1 = t2.key2;  # t1主表,t2附表
           
MYSQL學習筆記——多表查詢
  • 右連接配接

結果中除了包括滿足連接配接條件的行外,還包括右表的所有行。

select 字段1[,…] from 表1 right join 表2 on 表1.key=表2.key;

MYSQL學習筆記——多表查詢
-- 右連接配接
select * from t1 right join t2 on t1.key1 = t2.key2;  # t1附表,t2主表
           
MYSQL學習筆記——多表查詢
  • 聯合查詢

把多條select語句的查詢結果合并為一個結果集。

被合并的結果集的列數、順序和資料類型必須完全一緻

union去重:select 字段1[,字段2,…] from 表名 union select 字段1[,字段2,…] from 表名;

union all不去重: select 字段1[,字段2,…] from 表名 union all select 字段1[,字段2,…] from 表名;

-- 合并查詢
-- union去重
select * from t1
union
select * from t2;

-- union all不去重
select * from t1
union all
select * from t2;
           
MYSQL學習筆記——多表查詢
MYSQL學習筆記——多表查詢