多表查询
select
字段列表
from 表名列表
where 条件列表
group by 分组字段
having 分组条件
order by 排序字段
limit 起始位置,显示记录数
- 笛卡尔积
select * from A,B,C ...
-》结果会将每一个表的每一条记录去和另外的每张表的记录进行结合
- 消除笛卡尔积
- 内连接 -> 将关联条件相同的筛选出来
- 隐式内连接
select * from A a,B b,C c ... where a.b_id = b.id and c.b_id = b.id
- 显示内连接
select * from
A a join B b on a.b_id = b.id
join C c on c.b_id = b.id
- 外连接 -> 当需要显示某个表所有数据时,而另外一个表没有相关的数据则显示为null
- 左外连接:显示左表所有数据,右表不满足关联条件的字段显示为null
select * from
A a left join B b on a.b_id = b.id
left join C c on c.b_id = b.id
- 右外连接::显示右表所有数据,左表不满足关联条件的字段显示为null
select * from
A a right join B b on a.b_id = b.id
right join C c on c.b_id = b.id
-- 确定查询的表 -> 确定关联字段 -> 得到连接条件
-- 确定查询的字段 -> 单一的字段或者聚合函数
-- 确定where的条件
简单条件: > = <>
bewteen and
in
like
is null
not
思考是否存在子查询:
确定子查询时返回
单行单列
多行单列
多行多列
-- 确定是否采用分组:统计,按什么,每个,所有 -> 思考 select 后只能跟 聚合函数,分组字段
-- 确定是否有分组条件: |
|