1.查询语法:(这个语法不包含关键字,函数)
select
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组之后的条件
order by
排序
limit
分页限定
2.简单查询举例
查询表中所有的数据
select * form 表名;
查询多列字段
select
列1, -- 注释1
列2... -- 注释2
from
表名;
查询结果去重复:
select distinct 列名称 from 表名称;
结算 多 列的和展示结果(这里有 2 列,且假设把列2 为 Null 替换为 0)
select 列1,列2, 列1+IFNULL(列2,0) from 表名;
给查询结果列起别名( as 可以省略)
select 原列名 as 展示列名 from 表名称;
查询指定条件的一条数据 (假如查询某个列包含某个值)
select * from 表名 where 列 = 值;
查询满足多条件数据:(这里是包含多个字段)
select * from 表名 where 列1=值1 and 列2=值2;
查询满足某一条件数据:(这里是包含其中一个字段)
select * from 表名 where 列1=值1 or 列2=值2;
查询结果升序排列:
select * from 表名 order by 列1,列2...;(默认asc)
查询结果降序:
select * from 表名 order by 列1 desc, 列2desc...;
分组查询(加如分组字段 sex,展示字段1 AVG(math),展示字段2 COUNT(id) )
(分组之后不要写无关字段,展示字段一般为聚合函数)
select 分组字段,展示字段1,展示字段2... from 表名 group by 分组字段;
分组限定(如果分组后,having 条件如果不符合,就不显示此字段)
(这里,假设分组后,其中一组的包含 id 不为Null 的记录数不少于 2,才显示)
( group by 和 having ,均可以使用前面起的自定义的 列别名)
select 分组字段,展示字段 from group by 分组字段 having count(id)>2;
3.条件查询
where 子句后跟条件
常用运算
> | 大于 |
< | 小于 |
<= | 小于等于 |
>= | 大于等于 |
= | 等于 |
<> 或 != | 不等于 |
between … and | 在 … 之间 |
in(集合) | 在 … 之中 |
is null | 是 null |
is not null | 不是 null |
and 或 && | 且 |
or 或 || | 或 |
not 或 ! | 非 |
like | 模糊运算 |
_ | 单个字符 |
% | 多个任意字符 |
查询姓马的人,
select * from 表名 where name like '马';
查询第二个字是 ’化‘ 的人
select * from 表名 where name like '_化%';
查询姓名是三个字的人(三个短杠 _ )
select * from 表名 where name like '___';
查询姓名中包含 ‘马’ 字的人
select * from 表名 where name like '%马%';
4.聚合函数
聚合函数是将某一列作为一个整体,然后进行计算
(聚合函数默认会排除 null ,可计算主键,或配合 ifnull 函数)
计算某个列记录条数(如果是 * ,会使用数据最多的列,计算出所有记录的条数)
select count(列名) from 表名;
计算某个列最大的记录
select MAX(列名) from 表名;
计算某个列最小的记录
select MIN(列名) from 表名;
计算列的和
select SUM(列名) from 表名;
计算列的平均值
select AVG(列名) from 表名;
5.分页查询(不同的数据库,实现的方式不一样,这里仅限于 mysql)
语法:limit 开始索引,每页显示条数
(公式:开始的索引 = (当前页码 -1) * 每页显示的条数
查询学生数据表,一次显示3条,第一页
select * from student limit 0,3;
查询学生数据表,一次显示3条,第2页
select * from student limit 3,3;
查询学生数据表,一次显示3条,第3页
select * from student limit 6,3;