DQL:查询语句
- 排序查询
语法:order by子句
order by 排序字段1 排序方式1 ,排序字段2,排序方式2…
排序方式:
ASC:升序,默认的。
DESC:降序。
注意:若果有多个排序条件,则当前变的条件值一样时,才会判断第二条件
– 按照数据成绩方式排名,如果数学成绩一样,则按照英语成绩排名
SELECT * FROM student ORDER BY math ASC ,english ASC;
-
聚合函数:将一列数据作为一个整体,进行纵向计算
-
count:计算个数(count*)
-
max:计算最大值
-
min:计算最小值
-
sum:计算和
-
avg:计算平均值
SELECT COUNT(id) FROM student; SELECT MAX(math) FROM student ; SELECT MIN(math) FROM student; SELECT SUM(math) FROM student; SELECT SUM(english) FROM student; SELECT AVG(math) FROM student;
- 注意:聚合函数的计算,排除null值
解决方案:选择不包含非空的进行计算,ifnull函数
-
分组查询:
-
语法:froup by 分组字段;
-
注意
-
分组之后查询的字段:分组字段,聚合函数
-
where和having的区别
-
where在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来
-
where后不可以跟聚合函数,having可以进行聚合函数的判断。
-- a按照性别进行分组,分别查询男,女同学的平均分,人数
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分的了,不参与分组,分组之后,人数要大于两个人
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)*每页显示的条数
SELECT * FROM student LIMIT 0,3; -- 第一页
SELECT * FROM student LIMIT 3,3; -- 第二页
SELECT * FROM student LIMIT 6,3; -- 第三页
- limit 是一个mysql“方言”。
约束
约束概念:对表中的数据进行限定,保证数据的正确性,有效性和完整性
分类:
- 主键约束;primaty key
- 非空约束:not null
- 唯一约束:unique
- 外键约束:foreign key
- 非空约束:not null
- 创建表示添加约束
create table stu1(id int,name varchar(20) not null);
- 创建表完后后,添加非空约束
alter table stu1 modify name varchar(20) not null;
- 删除name的非空约束
alter table stu1 modify name varchar(20);
-
唯一约束:unique,某一列的值不能够重复
-
- 注意:唯一约束可以有null值,但是只能有一条记录为null;
-
在创建表时,条件唯一约束;
CREATE TABLE stu(id INT ,phone_number VARCHAR(20) UNIQUE);
- 删除唯一约束
-- 删除唯一约束
ALTER TABLE stu DROP INDEX phone_number;
-- 在表创建完后,添加唯一约束
ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;
- 主键约束:primary key
- 注意:
- 含义:非空且唯一
- 一张表只能有一个字段为主键
- 主键就是表中记录的唯一标识
- 在创建表时,添加主键约束
CREATE TABLE stu2 (id INT PRIMARY KEY,-- 给id添加主键约束
NAME VARCHAR(20));
-- 删除主键
ALTER TABLE stu2 DROP PRIMARY KEY;
-- 创建完表后,添加主键
ALTER TABLE stu2 MODIFY id INT PRIMARY KEY;