连接查询
标签: 数据库
内连接
如果一张表内有另一张表的字段,这张表的记录在了另一张表可以匹配就保存
select * from 表1 inner join 表2 on 表1.字段=表2.字段;
-- 等价于
select * from 表1 inner join 表2 where 表1.字段=表2.字段;
-- 等价于
select * from 表1, 表2 where 表1.字段=表2.字段;
外连接
与内连接差不多,只是当这张表的记录在副表匹配不上该记录仍保留,字段置NULL
左外连接:左表为主表,关键字为left
右外连接:右表为主表,关键字为right
select * from 左表 left join 右表 on 左表.字段=右表.字段;
select * from 右表 right join 左表 on 右表.字段=左表.字段;
-- 内连接的条件可以使用where,外连接只能用on
-- 内连接可以没有条件,外连接必须有条件
交叉连接
笛卡儿积
select * from 表1 cross join 表2;
-- 与内连接一样
select * from 表1 cross join 表2 on 表1.字段=表2.字段;
自然连接
自然连接自动寻找连接条件,自动判断两张表中是否有同样的字段名称,如果有,则作为连接条件,否则就没有条件
-- 自然内连接
select * from 左表 natural join 右表
-- 自然外连接
select * from 表1 natural [left/right] join 表2
自然连接会合并相同的字段,主表放在左边,副表放在右边