使用表别名
别名除了用于列名和计算字段外,SQL还允许该表名起别名。这样做主要有两个理由:
1.缩短SQL语句
2.允许在单条SELECT语句中多次使用相同的表
表的别名不仅可以用于WHERE子句,它还可以用于SELECT的列表、ORDER BY子句以及语句的其他部分。
·
使用不用类型的联结
之前我们使用的只是称为内部联结或等值联结的简单联结。现在来看3种其他联结。分别是自联结、自然联结和外部联结。
自联结
例子:找到供应RTX4060的供应商在订单中供应的其他商品
此查询中需要的两个表实际上是相同的表,因此Products表在FROM子句中使用了两次。
因为有的时候处理联结远比子查询快得多,所以我们在写SQL时应该试一下两种方法,以确定哪一种的性能更好。
自然联结
略,平时基本上建立的内部联结都是自然联结,用不到非自然联结的内部联结。
外部联结
使用关键字OUTER JOIN来指定是外部联结类型(而不是WHERE子句中指定)。但是,与内部联结两个表中的行不用的是,外部联结还包括没有联结的行。*在使用OUTER JOIN 语法时,必须同时使用RIGHT或LEFT关键字指定包括其所有行(这里就会出现可能是没联结的行)的表(RIGHT指的是OUTER JOIN右边的表,同理LEFT JOIN指左边)。
外部联结存在两种形式:左外联和右外联,两种类型的外部联结可以互换使用,使用哪种根据方便决定。
·
使用带聚集函数的联结
聚集函数可以用来汇总数据,它不仅可以从单个表中汇集数据,也可以与联结一起使用。
左外联结
内联结
注意,内联结和外联结返回结果的区别。
·
联结及其使用的特点
1.注意使用联结的类型,一般我们都使用内部联结,但使用外联结也是有效的
2.保证使用正确的联结条件,否则将返回不正确的数据
3.应该总是提供联结条件,否则得出的是笛卡尔积
4.在一个联结中可以包含多个表,但不推荐使用,一是因为影响响应性能,二是出现故障不容易排查。