資料庫表的連線方式

2021-10-09 16:09:09 字數 2844 閱讀 2194

連線方式分為內連線(inner join)、外連線(outer join)、交叉連線(cross join)。

外連線又分為左連線(left join)、右連線(right join)、全連線(full join)、聯合(union/union all)。

舉例:產品表和訂單表

產品表( tbl_product_info)

產品編號 (productno)

產品名稱(productname)

產品型別 (productname)

a產品a球類b

產品b健身器材類

c產品c

戶外運動類

訂單表( tbl_order_info)

訂單編號(orderno)

產品編號 (productno)

訂單金額(orderamount)

or001

a100000

or002

b650000

or003

d10000

連線關鍵字 inner join,inner 可以省略

進行關聯 on 後跟關聯條件。

內連線篩選出兩個表關聯上的資料記錄。

-- 隱示內連線寫法

select t.productno,t.productname

from tbl_product_info p ,tbl_order_info o where p.productno = o.productno

-- 顯示內連線寫法

select t.productno,t.productname

from tbl_product_info p (inner) join tbl_order_info o on p.productno = o.productno

結果:過濾出左右兩表關聯上的資料出來。

productno

productname

a產品a

b產品b

連線關鍵字:left join ,left 不可以省略

關聯條件用on 連線,以左表為基準

篩選出關聯上的資料記錄和左表未關聯上的資料

select t.productno,t.productname 

from tbl_product_info p left join tbl_order_info o on p.productno = o.productno

結果:左表(left join 關鍵字左邊的表)的資料都會出現。

productno

productname

a產品a

b產品b

c產品c

連線關鍵字:right join ,right 不可省略

關聯條件用on 連線,以右表為基準

篩選出關聯上的資料記錄和右表未關聯上的資料

select o.productno,t.productname 

from tbl_product_info p right join tbl_order_info o on p.productno = o.productno

結果:右表(right join 關鍵字右邊的表)的資料都會出現。

productno

productname

a產品a

b產品b

d連線關鍵字:full join

關聯條件用on 連線,以左右表為基準

篩選出關聯上的資料記錄和左表未關聯上的資料、右表未關聯上的資料

oracle有full join ,mysql 沒有full join.

select t.productno leftno,o.productno rightno ,t.productname 

from tbl_product_info p full join tbl_order_info o on p.productno = o.productno

結果:左右兩表的資料都會出現。

leftno

rightno

productnameaa

產品ab

b產品b

c產品c

d產品d

mysql 可以通過left join 、union、right join 來實現全連線的效果。

select t.productno leftno,o.productno rightno ,t.productname 

from tbl_product_info p left join tbl_order_info o on p.productno = o.productno

union

select t.productno leftno,o.productno rightno ,t.productname

from tbl_product_info p right join tbl_order_info o on p.productno = o.productno

連線關鍵字:cross join ,cross 不可省略

關聯條件 只能用where,不能用on

select o.productno,t.productname 

from tbl_product_info p cross join tbl_order_info o

where p.productno = o.productno

結果:左表過濾出來的每一條資料都與右表每一條資料關聯。

資料記錄= 左表篩選的資料條數*右表篩選的資料條數

union all: 把兩個查詢的結果集合並到一起,不去重

union :把兩個查詢的結果集合並到一起,會去重,效率低

資料庫表與表的連線方式

第一部分 查詢理論 連線查詢方式有 內連線 外連線 左連線 右連線 全連線 交叉連線 左連線和右連線的區別 左連線以左表為基準進行查詢,左表資料會全部顯示出來,右表如果和左表匹配的資料則顯示相應欄位的資料,如果不匹配,則顯示為null 右連線剛好相反。全連線就是先以左表進行左外連線,然後以右表進行右...

資料庫連線方式

1 內連線 inner join 從左表中取出每一條記錄,去右表中與所有的記錄進行匹配 匹配必須是某條件在左表中與右表中相同最終才會保留結果,否則不保留。2 外連線out join 以某張表為主,取出裡面的所有記錄,然後每條與另外一張表進行連線 不管能不能匹配上條件,最終都會保留 能匹配,正確保留 ...

資料庫表的連線

資料庫表的連線 left join 是left outer join的簡寫,left join預設是outer屬性的。inner join inner join 邏輯運算子返回滿足第乙個 頂端 輸入與第二個 底端 輸入聯接的每一行。這個和用select查詢多表是一樣的效果,所以很少用到 outer ...