聚合函数
**注意事项:**聚合函数的计算,排除了null值
解决方案:
1.选择不包含非空的列进行计算
2.ifnull函数
select count(ifnull(english,0)) from stud;
select min(math) from stud;
select max(math) from stud;
分组查询
1.语法:group by 分组字段;
按照性别分组,分别查询男、女同学的平均分
2.分组之后:
①分组之后查询的字段:分组字段;聚合函数
②where和having的区别?
where在分组之前进行限定,如果不满足条件,则不参与分组;having在分组之后进行限定,如果不满足结果,则不会被查询出来
where后不可跟聚合函数,having可以进行聚合函数的判断
select from stud group by sex;
select sex,avg(math) from stud group by
sex;[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fleDzOzO-1612767374728)(leanote://file/getImage?fileId=6020d6d347c749713a000004)]
3.按照性别分组,分别查询男、女同学的平均分;人数
select sex,avg(math),count(id) from stud group by sex;
4.按照性别分组,分别查询男、女同学的平均分;人数 要求:分数低于70分的人,不参与分组
select sex,avg(math),count(id) from stud where math > 70 group by sex;
5.按照性别分组,分别查询男、女同学的平均分;人数 要求:分数低于70分的人,不参与分组
select sex,avg(math),count(id) from stud where math > 70 group by sex having count(id)>2;
select sex,avg(math),count(id) 人数from stud where math > 70 group by sex having 人数 >2;
分页查询
1.语法:limit开始的索引,每页查询的条数
– 每页显示3条记录
select *from stud limit 0,3; --第一页
select *from stud limit 3,3; --第二页
公式:开始的索引 = <当前的页码-1> * 每页显示的条数
分页操作是一个“方言”
约束
对表中的数据进行限制,保证数据的正确性,有效性和完整性
分类:
1.主键约束:primary key
2.非空约束:not null
3.唯一约束:unique
4.外键约束:foreign key
非空约束:not null
1.在创建表时添加约束
CREATE TABLE student1(
id INT,
NAME VARCHAR(20) NOT NULL -- name为非空
);
2.创建表之后,添加非空约束
ALTER TABLE student1 MODIFY NAME VARCHAR(20) NOT NULL;
3.删除name的非空约束
ALTER TABLE student1 MODIFY NAME VARCHAR(20);
唯一约束:unique(值不能重复)
-- 创建表时,添加唯一约束
CREATE TABLE student1(
id INT,
phone_number VARCHAR(20) UNIQUE -- 添加了唯一约束
);
– 注意mysql中,唯一约束限定的列的值可以有多个Null
-- 删除唯一约束
-- alter table student1 modify phone_number varchar(20);
ALTER TABLE student1 DROP INDEX phone_number;
-- 在创建表之后,添加唯一约束
ALTER TABLE student1 MODIFY phone_number VARCHAR(20) UNIQUE;