個人博客 :https://www.siyuan.run
CSDN:https://blog.csdn.net/siyuan
微信小程序:思遠Y
1、交叉連接查詢 :?(基本不適用---得到的是兩張表數據的乘積)
語法:SELECT * FROM 表1,表2;
PS:與表關系無關
示例:
圖1:products表數據信息
?
圖2:category表數據信息
?
SELECT * FROM products,category;#執行該語句后顯示的效果如圖3
圖3:查詢結果
?
2、內連接查詢
概念:內連接是等值連接,它使用比較運算符(=、>、<、<>...)根據每個表共有的列的值匹配兩個表中的行。
分類:
隱式內連接:SELECT * FROM 表A,表B... WHERE 條件;(條件:表A和表B的等值關系)
圖4:products表數據信息
?
圖5:category表數據信息
?
SELECT * FROM CATEGORY,PRODUCTS WHERE PRODUCTS.CATEGORY_ID=CATEGORY.CID;
使用別名:
SELECT * FROM CATEGORY C,PRODUCTS P WHERE P.CATEGORY=C.CID;
圖6:查詢結果
?
顯示內連接:SELECT * FROM 表A,表B... INNER JOIN;(INNER可以省略)
SELECT *?
FROM CATEGORY?
INNER JOIN PRODUCTS ON CATEGORY.CID=PRODUCTS.CATEGORY_ID;
使用別名:請參照上面例子
圖7:查詢結果 如圖6
?
三表內連接查詢:假設再添加一張訂單ORDER表.
圖8:ORDER表
?
SELECT *?
FROM CATEGORY C?
INNER JOIN PRODUCTS P ON C.CID=P.CATEGORY_ID?
INNER JOIN ORDERS O ON O.CID=P.CATEGORY_ID;
圖9:顯示結果
?
3、外連接查詢:外連接分為左連接查詢,右連接查詢,完整連接查詢
3.1左連接:左連接又稱左向外連接,查詢的結果集包括LEFT OUTER子句中指定的坐標的所有行,而不僅僅是連接列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關聯的結果集行中右表的所有選擇列表列均為空值。?
使用的關鍵字:LEFT OUTER JOIN(OUTER可省略)
SELECT *?
FROM PRODUCTS?
LEFT OUTER JOIN CATEGORY ON PRODUCTS.CATEGORY_ID=CATEGORY.CID;
圖10:結果顯示
?
3.2右連接:右向外聯接是左向外聯接的反向聯接。將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將為左表返回空值。
使用的關鍵字:RIGHT OUTER JOIN(OUTER可以省略)
SELECT *?
FROM PRODUCTS?
RIGHT OUTER JOIN CATEGORY ON PRODUCTS.CATEGORY_ID=CATEGORY.CID;
圖11:顯示結果
?
3.3完整連接:完整外部聯接返回左表和右表中的所有行。當某行在另一個表中沒有匹配行時,則另一個表的選擇列表列包含空值。如果表之間有匹配行,則整個結果集行包含基表的數據值。
使用的關鍵字:FULL OUTER JOIN(OUTER可以省略)
SELECT *?
FROM PRODUCTS?
FULL OUTER JOIN CATEGORY ON PRODUCTS.category_id=CATEGORY.cid;
圖12:略
?
互相學習,有錯請指教!