创建高级联结

使用表别名

别名除了用于列名和计算字段外,SQL还允许给表名起别名。这主要有两个方面:

  • 缩短SQL语句
  • 允许在单条SELECT语句中多次使用相同的表

表另名只在查询执行中使用。与列别名不一样,表别名不返回到客户机。

使用不同类型的联结

我们将内部联结或等值联结的简单联结。其他的三种其外联结,它们是自联结、自然联结和外部联结。

自联结

在单条SELECT语句中不止一次引用相同的表。

用自联结而不用子联结:自联结通常作为外部语句用来代替从相同表中检索数据时使用的子查询语句。虽然最终的结果是相同的,但有时候处理联结远比处理子查询快的多。

自然联结

标准的联结返回所有数据,甚至相同的列多次出现。自然联结排除多次出现,每个列只返回一次。

自然联结是这样一种联结,其中你只能悬着那些唯一的列。这一般是通过对表使用通配符(SELECT*),对所有其他表的列使用明确的子集完成的。

通配符只能对第一个表使用

外部联结

外部联结:联结包含了那些在相关表中没有关联行的行

语法结构

1
2
3
SELECT 全称列名1,全称列名2
FROM 第一个表格 LEFT OUTER JOIN 第二个表格
ON 条件(联结条件);

其中,OUT JOIN是来指定联结的类型的

在使用OUTER JOIN语法时,必须使用RIGHT或LEFT关键字指定包括所有行的表(RIGHT指出的是OUTER JOIN右边的表,而LEFT JOIN指出的是OUTER JOIN左边的表)

使用带聚集函数的联结

聚集函数可以与联结一起使用。

在SELECT语句中,可以使用COUNT()函数等等函数。

使用联结和联结条件

  • 注意所使用对的联结类型。一般我们使用内部联结,但使用外部联结也是有效的
  • 保证正确的联结条件,否则将返回不正确的数据
  • 应该总是提供联结条件,否则会得出笛卡尔而积(将返回所有列的结合)
  • 在一个联结中可以包含多个表,甚至对于每个联结可以采用不用的联结类型。虽然这样做是合法的,一般也是很有用的,但应该在测试他们前分别测试每个联结。
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:

请我喝杯咖啡吧~

支付宝
微信