1:多表的查询如何实现:
笛卡尔积(交叉连接)的理解:假如有俩个集合x集合,y集合,那么x和y的笛卡尔积就是x和y 的所有可能组合
2:多表查询也成为关联查询,值俩个或则更多个表一起完成查询
前提条件,这些一起查询的表之间是有关系的,他们之间一定是由关联字段,这个关联字段可能建立了外键,也可能没有建立外键,比如:员工表和部门表,这里拉个表依靠部门编号进行关联
3:笛卡尔积错误会在下面条件下产生:
省略多个表的连接条件
连接条件无效
所有表的互相连接
为了避免笛卡尔积,可以在where中加入有效连接条件
4:如果查询表中都存在的字段,则必须指明此字段所在的表
建议:送sql优化的角度,建议多表查询是,每个字段前都知名其所在的表
5:多表查询分类:
等值连接和非等值连接
这两者同时包含在内连接和外连接中,因为内连接和外连接都是需要连接条件的,条件为=则为等值连接,反之为非等值连接。
自链接和非自链接
内连接和外连接
#内连接:
#内连接:合并具有同一列的俩个以上的表的行,结果集合中不包括一个表与另外一个表不匹配行
#外连接:合并具有同一列的俩个以上的表的行,结果集合中不包括一个表与另外一个表不匹配行,还查询到了左表或右表中不匹配的行
#外连接的分类:
#左外连接和右外连接,满外连接(左中右都要)
#左外连接,俩表在连接的过程中除了要返回满足连接条件意外还要返回左表中不满足条件的行,这种连接叫左外连接
#右外连接,俩表在连接的过程中除了要返回满足连接条件意外还要返回右表中不满足条件的行,这种连接叫左外连接
#查询所有的员工的 last_name,department_name信息(所有一定是外连接)