连接查询
在程序猿的实际开发中,我们多数情况下是从多张表中进行联合查询,取出最终结果,这就得要求我们继续来学习SQL语句中的的连接查询。
分类
1. 内连接
- 等值连接 (存在等量关系)
特点:表之间存在等量关系。
select 字段1,字段2,...
from 表1
join 表2
on 连接条件;
- 非等值连接 (between…and…)
特点:连接条件中的关系是非等量关系。
select 字段1,字段2,...
from 表1
join 表2
on 条件(between...and...);
- 自连接 (将一张表看作两张表)
特点:将一张表看作两张表,自己连接自己。
涉及到一个小的技巧:给表起别名。
select 字段1,字段2,...
from 表1 x (给表1起的别名)
join 表1 y (给表1起的另一个别名)
on 条件;
2. 外连接
在表的内连接之中,表与表之间是平等关系,没有主副之分。而在外连接之中,表之间有主副之分。而我们主要查询的是主表中的数据,如果副表的数据没有与主表的数据匹配上,副表自动匹配null值。左(右)连接有右(左)连接的写法。
特点:将主表的数据全部查询出来。
- 左外连接:表示左边的表是主表。
写法一:
select 字段1,字段2,...
from 表1 x(主表)
left join 表2 y
on 条件;
写法二:
select 字段1字段2
from 表2 y
right join 表1 x(主表)
on 条件;
- 右外连接:表示右边的表是主表。
三张表以上的连接查询
select 字段1,字段2,字段3,...
from 表1 x
join 表2 y
on 条件1
join 表3 z
on 条件2;
博主突然想插一句,SQL其实就是在学习:insert,delete,update,select,不难加油!
union
可以将查询到的结果集相加。
select 字段1
from 表1
where 条件1
union
select 字段2
from 表2
where 条件2
注意:查询到第一个的结果集与第二个结果集列数必须相同,否则会报错。
limit分页查询
取结果集中的部分数据。
在分页中每页显示n条数据,则第p页起始位置为n(p-1).
select
from
limit 0,5
(从第1个开始,取前5名数据)