1、查询列表可以是字段、常量、表达式、函数…
2、查询结果是一个虚拟表,该表存放在内存中。(不对真实数据进行改动)
1 .查询所有:
select * from 表名称 ;
2 . 查询指定的列:
select 列1 , ... ,列n from 表名称 ;
3 .条件查询:
a. = 、 != 、<> 、< 、<= 、> 、>=
b. between … and
c. in
d. is null 、 is not null
e. and
f. or
g. not
select * from 表名称 where 条件 ;
4 .模糊查询:
select * from student where name like 通配符 ;
通配符:
_ :任意1个字符
%:任意0-n个字符
注意:只能查询字符类型的varchar char 等等。
例如:
_s : 任意一个字符 加 最后一个为s
m%:以m开头的字符串
%:任意的多个字符
%sun%:包含sun的字符串
等等
5.字段控制查询:
a.去重
select distinct * from 表名称 ;
b.生成新字段
select * ,age+id from stu;
c. ifnull :如果age中有null 则变为0:
as total 给新字段起的名字哦。
select * ,ifnull(age, 0)+ifnull(id, 0) as total from stu;
d.排序 order by (default 升序):
升序:asc
降序:desc
select * from stu order by id desc;
e.聚合 count() 、 max() 、min() 、sum() 、avg()
e1.查询一共有几条数据
select count(*) from stu ;
e2.统计不为null的数据:
select count(age) from stu ;
e3.统计带where条件:
select count(*) from stu where age >18 ;
e4.求和
select sum(字段名) form 表名称 ;
6 . 分组查询:group by
select *from stu group by 字段名 ;
select 字段名 from stu group by 字段名 ;
group_concat
select gender , group_concat(name) from stu group by gender ;
select gender , group_concat(name) as fenqu from stu group by gender ;
a. 查询gender的类别,人数
select gender , group_concat(name) , count(*) from stu group by gender;
b. group by + 聚合函数
c.group by +having (条件筛选)+聚合函数
where +group by
注:having 分组后对数据进行筛选
select gender ,group_concat(name) ,max(age) group by gender ;
select gender , group_concat(name) from stu group by gender having max(age) ;
d . limit(开始下标,要取几个数)
例如:
d1.只想查询前3个:先排序再用limit取前三个0,3
d2.想查询第三个:先排序再用limit取第三个2,1
注:切记下标从0开始
select * from stu limit 0,3 ;
重点:做分页
int curpage=1;
int pagesize=3;
select *from 表名称 limit (curpage-1)*pagesize , pagesize ;