联结表

联结

SQL最强大的功能之一是联结。

使用联结可以将不同表中的列联结在一起

这里的联结只是一种表达形式,没有真正的形成物理意义上的联结后的数据库

为什么要使用联结库

因为一般情况下,数据库中会出现相同的数据。

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

使用外键进行小数据库关联,而不是使用一个统一的大的数据库的好处

  • 数据不重复,不会浪费空间和时间
  • 更新数据时,只需要更改需要涉及的数据库中的数据
  • 数据没有重复的,处理数据更加简单
  • 关系数据库的可伸缩性远比非关系数据库要好

可伸缩性:能够适应不断增加的工作量而不失败。涉及良好的数据库或应用程序称之为可伸缩性好

为什么要使用联结

联结是一种机制,用来在一条SELECT语句中关联表,因此称之为联结。可以联结多个表返回一组输出,联结在运行时关联表中正确的行。

重要的是:联结不是物理实体,联结有MySQL根据需要创建,它存在于子查询的执行当中。

创建联结

创建联结十分容易(相对于使用嵌套子查询来说)

语法结构

1
2
3
4
SELECT 表格1中的列名,表格2中的列名,表格1中的列名,.....
FROM 表格1,表格2
SELECT 限制条件
ORDER BY 列名(可以属于表格1,也可以属于表格2)

我们需要注意在限制条件需要用到列名时应该使用完全限定列名,因为可能不同表中有列名相同的,此时系统不知道到底是哪个。

完全限定列名:在引用的列可能出现二义性是,必须使用完全限定列名(用一个点分隔表名和列名)

WHERE子句的重要性

在对两个表格进行联结时,必须要注意WHERE子句的使用。如果不适用WHERE子句对数据进行过滤,第一个表中的每一行将与第二个表中的每一行进行配对,不管他们逻辑上是否可以配在一起。

笛卡尔积:由没有联结条件的表关系返回的结果为笛卡尔积。检索出的行的数目将是第一个表中的行数乘以第二个表中的行数

内部联结

语法结构

1
2
3
SELECT 表格1中的列名,表格2中的列名,表格1中的列名,....
FROM 表格名1 INNER JOIN 表格名2
ON 限制条件;

在使用这种语法时,联结条件用特定的ON子句而不是WHERE子句给出。传递给ON的实际条件与传递给WHERE的相同。

联结多个表

SQL对于一条SELECT语句中可以联结的表的数目没有限制。

有一点要注意,在SELECT中出现的列所属的表格名一定要在FROM子句中出现

性能考虑:联结的表越多,性能下降月厉害,因此在使用联结时要考虑性能。

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2015-2023 dwx
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信