ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql笔记15:联结表

2022-02-15 01:00:10  阅读:163  来源: 互联网

标签:15 name 子句 联结 笔记 vend products mysql where


15.1.1 关系表

为什么要把表分开:
以产品表和供应商表为例,将产品和供应商弄成两个表的好处是:

  1. 同一个供应商的产品的供应商信息是相同的,如果每个产品都重复该信息浪费时间,浪费空间
  2. 如果供应商信息改变,只需要改变一次

外键:外键为某个表中的某一列,它包含另一个表示的主键值,定义了两个表之间的关系。

使用做的好处表示:

  • 供应商信息不重复,从而不浪费时间和空间
  • 如果供应商信息变动了,只更新vendors表的单个记录,相关表中的数据不用改动
  • 由于数据无重复,显示数据是一致的,这使得处理数据比较简单

可伸缩性:能够适应不断增加的工作量而不失败

15.1.2 为什么要使用联结
维护引用完整性:指示mysql只允许在products表的供应商ID列中出现合法值(通过在表的定义中指定主键和外键)

15.2 创建联结
select vend_name, prod_name, prod_price
from vendors, products
where vendors.vend_id = products.vend_id
order by vend_name, prod_name;

两个表用where子句正确联结,where子句指示mysql匹配vendors表中的vend_id和products表中的vend_id.

15.2.1 where子句的重要性
利用where子句建立联结关系似乎奇怪,实际上,这是充分的理由。因为,select联结表,相应的关系是在运行时构造的。在联结两个表时,实际上是把第一个表的每一行和第二个表的每一行作匹配。where子句作为过滤条件,只包含那些匹配给定条件

不要忘了where子句,如果联结的时候不使用where子句,否则mysql将会返回比你所需要的更多的数据。

15.2.2 内部联结
上面的连接是等值连接,基于相等测试,也叫内部联结。下面的语法也可以用于明确指定内部联结:
select vend_name, product_name, product_price
from vendors inner join products
on vendors.vend_id = products.vendor_id;
与where语句两处不同,一处是inner join明确指定,第二处是使用on而非是where。

ANSI SQL推荐使用inner join语法,因为比较明确。

15.2.3 联结多张表

我们可以联结多张表,和联结两张表类似。

有时候,子查询和联结表都能够完成工作,需要我们进行实验判断效率。

标签:15,name,子句,联结,笔记,vend,products,mysql,where
来源: https://www.cnblogs.com/ronnieos/p/15894826.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有