MySQL學習筆記:聯結(重要)

本文爲本人學習書籍《MySQL必知必會》筆記系列,歡迎持續關注,有問題隨時留言評論,一起探討學習~

第15章 聯結(join)表

關係表的設計就是要保證把信息分解成多個表,一類數據一個表。例如品牌表brand、商品表product、品類表product_category。各表通過某些常用的值(即關係設計中的關係relation)互相關聯。品牌表brand的主鍵爲ID,品牌表brand的主鍵又叫商品表product的外鍵,它將brand表和product表想關聯。

15.1 外鍵(foreign key):

  1. 外鍵爲某個表中的一列,它包含另一個表的主鍵值,定義了兩個表的關係。
  2. 可伸縮性(Scale):能夠適應增加的工作量而不失敗,稱爲可伸縮性好。
  3. 聯結使用特殊的語法,可以聯結多個表返回一組輸出,聯結在運行時關聯表中正確的行。

15.2 創建聯結

SELECT product.Name AS product_name,
       product_category.Name AS category_name,
       Price1,
			 Model
FROM product,product_category
WHERE product.CategoryId=product_category.Id
ORDER BY product.Name
Limit 0,5;

所有聯結都有WHERE子句。沒有WHERE子句得出沒有聯結條件的結果,即笛卡兒積。

笛卡兒積(cartesian product):由沒有聯結條件的表關係返回的結果爲笛卡兒積。

15.2.2 內部聯結INNER JOIN…ON/等值聯結:它基於兩個表之間的相等測試。目前用的聯結爲等值聯結。

INNER JOIN…ON:可實現上面例子同樣的功能。

SELECT product.Name AS product_name,
       product_category.Name AS category_name,
       Price1,
			 Model
FROM product INNER JOIN product_category
ON product.CategoryId=product_category.Id
ORDER BY product.Name
Limit 0,5;

15.2.3 聯結多個表

SELECT product.Name AS product_name,
       product_category.Name AS category_name,
			 brand.Name AS brand_name,
       Price1,
			 Model
FROM product,product_category,brand
WHERE product.CategoryId=product_category.Id
  AND product.BrandId=brand.Id
	AND product_category.Id=615432733113008653
	AND brand.Id=-9014347894162505346
ORDER BY product.Name;

上例使用聯結查詢與14使用子查詢可以同樣實現#查找“小白熊”牌溫奶器的商品有多少個。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章