一、多表连接查询:
主要解决目标数据分布在不同的表中(如果目标数据不在 同一张表,可以通过多表连接查询来解决)
多表连接的语法:
select 表名1.列名1 ... ,表名2.列名2 ...... from 表名1,表名2......where子语句
多表查询分等值查询和非等值查询
等值查询(=号连接):
用户查询请求涉及到多个表的时候,连接两个表的条件为=时,就是等值连接查询
非等值查询(非=号连接):
多表连接需要注意的原则:
1.需要确定查询的列在哪些表中
2.确定表之间的引用关系(主外键之间的关系)/为了避免笛卡尔乘积
二、内、外、自然、交叉连接
外连接(outer join):外连接是指查询出符合连接条件的数据同时还包含孤儿数据
孤儿数据:被连接的列的值为空的数据
内连接取交集,外连接分左和右,
左连接(left join)左边的全取,
右连接(right join)右边的全取
全外连接(full join)关联表的所有数据都会出现
内连接:inner join
在限制条件里,可以使用ON来关联两个表
交叉连接:也叫笛卡尔积
自然连接::natural join 通过两张表中的相同名称的列进行关联查询(等值连接查询)
但是自然连接仅限于同名列数为1的情况