文章目录
多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。
多表查询的前提条件:一起查询的表之间由对应关系(一对一、一对多),一定有一些字段是关联的。
可以给表起别名,如果给表起了别名,一旦在SELECT或WHERE中使用表名的话,则必须使用表的别名,而不能再使用表的原名。
使用别名可以简化查询。
列名前使用表名前缀可以提高查询效率。
如果有n个表实现多表的查询,则需要至少n-1个连接条件
笛卡尔积的错误
笛卡尔积也成为交叉连接。笛卡尔积可以把任意表进行连接,即使这两张表不相关,此时,便出现了笛卡尔积错误。
如下图所示,employees和departments是两张表,此时没有WHERE约束条件,产生2889条记录,此时,便产生了笛卡尔积错误。
笛卡尔积的错误产生的条件
1.省略多个表的连接条件(或关联条件)
2.连接条件(或关联条件)无效
3.所有表中的所有行互相连接
为了避免笛卡尔积, 可以在 WHERE 加入有效的连接条件。
此时加入WHERE条件约束,查询出106条记录。
在查询的字段中由相同的列时,列名之前需要加上表名前缀。
在进行多表查询的时候,为了优化查询速度,可以在每个字段前都加上表名。
多表查询的分类
等值连接
分类1 :等值连接vs非等值连接