-- 多表联合查询
-- 当需要获取的数据分布在多张表中时, 考虑使用联合查询
-- SQL92方式
-- 笛卡尔积
-- 将多个表的数据进行一一对应, 所得到的结果为多表的笛卡尔积
-- 结果的记录条数为所有表的记录条数的乘积
-- select * from 表1, 表2
-- 等值连接筛选
-- 先做表的笛卡尔积, 然后筛选, 筛选条件为等值筛选
-- select * from 表1, 表2 where 表1.字段 = 表2.字段
-- 不等值连接
-- select * from 表1, 表2 where 表1.字段 > 表2.字段
-- 自连接 : 自己和自己做笛卡尔积
-- select b1.*, b2.* from 表1 b1, 表2 b2
-- 外连接
-- 左外连接 : 显示左边对应字段没有值的数据
-- select * from 表1, 表2 where 表1.字段 = 表2.字段(+)
-- 右外连接 : 显示右边对应字段没有值的数据
-- select * from 表1, 表2 where 表1.字段(+) = 表2.字段
-- SQL99方式
-- 笛卡尔积 : 使用 cross join 关键字
-- select * from 表1 cross join 表2
-- 自然连接 :
-- inner 和 outer 可以省略不写
-- 使用 natural join 关键字
-- 底层先笛卡尔积, 然后按照同名同值字段, 自动进行筛选
-- select * from 表1 natural join 表2
-- 使用 inner join using 关键字
-- 指明使用指定的字段对联合查询的结果进行等值筛选
-- 指明的字段必须是两个表的同名同值字段
-- select * from 表1 [inner] join 表2 using(字段1, 字段2, ...)
-- 使用 inner join on 关键字
-- 指明的字段可以不同名
-- select * from 表1 [inner] join 表2 on 表1.字段 = 表2.字段
-- 外连接 :
-- 左外连接 : left [outer] join on
-- 左表有并且连接不到右表的数据也会查出
-- 右外连接 : right [outer] join on
-- 右表有并且连接不到左表的数据也会查出
-- 全外连接 : full [outer] join on
-- 左右表互相连接不到的数据也会查出
-- 自连接 : 自己连接自己
-- select b1.*, b2.字段 from 表 b1 [inner] join 表 b2 on b1.字段 = b2.字段