DML
添加数据:
insert into 表名(列名1,列名2,...列名n) values (值1,值2,...值n);
-- 列名和值要一一对应。
-- 如果知道表名后,不定义列名,则默认给所有的列添加值
insert into 表名 values(值1,值2...值n);
-- 除了数据类型,其他类型需要使用引号(单双引号都可以)引起来
删除数据:
delete from 表名 [where条件];
--删除表,在重新创建一个一模一样的
truncate table 表名;
-- 注意如果不加条件会修改所有列
修改数据:
update 表名 set 列名1 = 值1,列名2 = 值2,...[where 条件];
select * from 表名;
排序查询
/*语法:order by 子句
-- order by 排序字段1 排序方式1,排序字段2 排序方式2....
-- eg */
select * from student order by math;-- 默认升序排序
/*
-- ASC:升序,默认
-- DESC:降序
-- 注意:如果有多个排序条件,则当前面的条件值一样时,才会判断第二条件。
-- eg:按照数学成绩排名,如果数学一样,按照英语来排序
*/
select * from student order by math ASC,english DESC;
聚合函数:将一列数据作为整体,进行纵向的计算
- count:计算个数。一般选择非空列如:主键;count(*);
- max
- min
- sum
- avg
select count(english) from student;
-- 注意:聚合函数计算时排除null值
select count(IFNULL(english,0)) from student;
select count(*) from student;
select MAX(math) from student;
select Min(math) from student;
select sum(english) from student;
select avg(math) from student;
分组查询:
1、语法:group by 分组字段;
2、注意:
- 分组之后查询的字段:分组字段,聚合函数
- where 和having的区别?
1.where在分组之前进行限定,如果不满足条件的元组不参与分组。having在分组之后进行限定,如果不满足结果元组,则不会被查询出来。
2.where后不可以跟聚合函数,having可以进行聚合函数的判断
--按性别分组。分别查询男、女同学平均分
select sex,avg(math) from student group by sex;
--按性别分组。分别查询男、女同学平均分,人数
select sex,avg(math),count(id) from student group by sex;
--按性别分组。分别查询男、女同学平均分,人数 要求:分数低于70分的人,不参与分组
select sex,avg(math),count(id) from student where math > 70 group by sex;
--按性别分组。分别查询男、女同学平均分,人数 要求:分数低于70分的人,不参与分组,组内人数少于2的不显示
select sex,avg(math),count(id) from student where math > 70 group by sex having count(id) >2;
select sex,avg(math),count(id) 人数 from student where math > 70 group by sex having 人数 >2;
分页查询
语法:limit开始索引,每页查询的条数;
公式:开始的索引 = (当前的页码 - 1)* 每页显示的条数
limit 是mysql的方言
select * from student limit 0,3;
select * from student limit 3,3;
select * from student limit 6,3;