查询语法及顺序
select 查询列表 ⑦
from 表1 别名 ①
连接类型 join 表2 ②
on 连接条件 ③
where 筛选 ④
group by 分组列表 ⑤
having 筛选 ⑥
order by排序列表 ⑧
limit 起始条目索引,条目数; ⑨
关键字顺序:
select
-->显示列from
--> 查询的表\<left, right\> join .... on ....
--> 左外右外链接where
--> 查询条件group by
--> 分组查询having
--> 筛选order by
--> 排序(asc desc)limit
--> 分页查询select * from 表名;
select 列名1, 列名2... from 表名;
distinct
关键字, 下面查询是对列名1进行去重
select distinct 列名1,列名2 from 表明;
操作符 | 描述 |
---|---|
= | 等于 |
<> 和 != | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
between... and ... | 在某个范围之间 |
like | 模糊查询(% 代表任意数量字符, _ 代表一个字符) |
and | 与 |
or | 或 |
between x and y
在x和y之间 包括x和y
查询id在5~9之间的内容
select * from 表 where id between 5 and 9;
查询第二个字是 ‘雷‘ 的name;
select * fron 表 where name like ‘_雷%‘;
查询包含 ‘雷‘ 字的name;
select * from 表 where name like ‘%雷%‘;
ifnull(列, 替换值)
: 如果指定的列为null, 则使用替换值
select * from A,B
where A.x=B.x and A.age=18
select * from A join B
on A.x=B.x
where A.age=18;
left join 表 on 表关系
格式:
select * from 表1 left join 表2 on 表1和表2的关系
左外查询案例:
select * from dept left join emp
on emp.dept_id=dept.id; -- 左外连接查询
right join 表 on 表关系
格式和案例和左外连接基本类似
左外查询的时候, from后面的表是主表, 数据会完全展示, join后面的表只有和主表有关系的才会展示, 右外查询反之.
注意:
多行函数 | 说明 |
---|---|
count(列名 | *) | 统计结果集中指定列的记录的行数 |
max(列名) | 统计结果集中某一列值中的最大值 |
min(列名) | 统计结果集中某一列值中的最小值 |
sum(列名) | 统计结果集中某一列所有值的和 |
avg(列名) | 统计结果集中某一列值的平均值 |
select count(*) from 表;
select max(类名) from 表;
select avg(列名) from 表;
select 部门列, count(*) from 表 group by 部门列;
select 部门列, max(薪资列) from 表 group by 部门列;
having一定要和group by一起使用, 用于筛选
例如: 查询每个分类商品所对应的平均单价,要求平均单价低于100
select
category_id,
avg(price) as p
from t_item
group by category_id having p<100;
升序(asc), 降序(desc) 默认升序;
按薪资升序查询
select 名字, 薪资 from 表 order by 薪资 asc;
-- 或者可以省略asc, 因为默认为升序asc
select 名字, 薪资 from 表 order by 薪资;
格式: limit m, n
m是从第几条数据开始(最小为0), (页码-1)*每页记录数
n为这一页显示的数据总量, 每页记录数
每页显示3条记录,返回第 2 页。
select * from 表 limit 3, 3;
/*
每页3个数据, 所以limit第二个参数是3
第一页是 0, 1, 2
第二页是 3, 4, 5
因为要查询第二页, 所以应该从3开始, 所以第二个下标为3
*/
例如:
查询emp表中工资最高的员工信息
select max(sal) from emp; -- 得到5000
select * from emp where sal=5000; -- 根据5000找到对象的员工
将以上两条合并成一条sql语句
select * from emp where sal=(
select max(sal) from emp
);
原文:https://www.cnblogs.com/zpKang/p/12997432.html