1、内连接
(1).from a,b
语法:select a.x,b.y from a,b where a.id=b.id;
备注:返回所有满足where条件的行
(2).inner join
语法:select a.x from a inner join b on a.id=b.id
备注:inner 可以省略,一般都省略【和 from a,b where a.x=b.y同样的效果。在某种意义上,两者等同】
2、外连接
(1).左外连接 left outer join
说明:查询结果除了返回包含连接条件的行,还包含左表(a)中不满足连接条件的行,其中不满足连接条件的行中b表的字段值将被置为空
语法:select a.x from a left outer join b on a.id=b.id;
备注:outer 可以省略,一般都省略
理解:【A left join B】left join即把左边表A当作基准。查询结果是A中所有的数据和B中满足条件的数据
特殊情况:当查询中出现过滤条件时
1)当连接条件后面有where条件时:
例句:select a.name, a.id, b.name from A a left outer join B b on a.id = b.id where b.name like 'S'
说明:先根据连接条件a.id = b.id查询,再对查询结果按过滤条件查询
2)当连接条件后面有and条件时:
例句:select a.name, a.id, b.name from A a left outer join B b on( a.id = b.id and b.name like 'S')
说明:先对b表按过滤条件查询,再对结果执行左连接查询。
(2).右外连接 right outer join
说明:和左外连接同理
理解:【A right join B】right join即把右边表B当作基准。 查询结果是B中所有的数据和A中满足条件的数据
(3).全外连接 full outer join
语法:SELECT * FROM TESTA FULL OUTER JOIN TESTB ON TESTA.A=TESTB.A
备注:outer可以省略,一般都省略
理解:包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。
3、union 和 union all
语法:select userid,username,REALNAME from user_t
UNION ALL
select userid,username,REALNAME from user_t;
结果图:
意义:UNION 用于合并两个或多个 SELECT 语句的结果集
使用的条件:
①:UNION 结果集中的列名总是等于第一个 SELECT 语句中的列名
②:UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同
区别:当有all时会显示所有的数据,不会去除重复的行;当没有all时会自动去除重复的行。