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使用子查询可以同样实现#查找“小白熊”牌温奶器的商品有多少个。

发布了51 篇原创文章 · 获赞 34 · 访问量 885

猜你喜欢

转载自blog.csdn.net/weixin_43412569/article/details/104860426