多表查询
为了节省存储空间,避免数据冗余,有时候需要把表拆分开,那么面对拆分开的表时,就需要用多表查询的方式查找数据
通过不同表中具有相同意义的关键字段,将多个表进行横向连接,查询不同表中的字段信息
-----------------------------------------------------------------------------------------------------------------
连接方式
内连接
外连接(左连接和右连接)
-----------------------------------------------------------------------------------------------------------------
多表连接的结果通过三个属性决定
方向性:在外连接中写在前边的表为左表、写在后边的表为右表
主附关系:主表要出所有的数据范围,附表与主表无匹配项时标记为null,内连接时无主附表之分
对应关系:关键字段中有重复值的表为多表,没有重复值的表为一表
-----------------------------------------------------------------------------------------------------------------
内连接
按照连接条件连接两个表,返回满足条件的行。
select 字段1[,…] from 表1[inner] join 表2 on 连接条件;
左连接
结果中除了包括满足连接条件的行外,还包括左表的所有行。
select 字段1[,…] from 表1 left join 表2 on 连接条件;
右连接
结果中除了包括满足连接条件的行外,还包括右表的所有行。
select 字段1[,…] from 表1 right join 表2 on 连接条件;
==================================================================
联合查询
把多条select语句的查询结果合并为一个结果集
被合并的结果集中字段的个数,顺序和数据类型必须完全一致
union去重:select 字段1[,字段2,…] from 表名 union select 字段1[,字段2,…] from 表名;
union all不去重:select 字段1[,字段2,…] from 表名 union all select 字段1 [,字段2,…] from 表名;