連線方式分為內連線(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 ...