DQL:查询语句
1.排序查询
2.聚合函数
3.分组查询
4.分页查询
2、约束
3、多表之间的关系
4、范式
5、数据库的备份和还原
1.排序查询
*排序语法:order by 子句
*排序语法:order by 排序字段1 排序方式1,排序字段2 排序方式2....
*排序方式:
*ASC:升序,默认的,可以不写
SELECT *FROM student2 ORDER BY math ASC;
--按照数学成绩排序,如果数学成绩一样,就按照英语成绩排名
SELECT *FROM student2 ORDER BY math ASC,english ASC;
*DESC:降序,
SELECT *FROM student2 ORDER BY math DESC;
*注意:如果有多个排序条件,则当前面的条件值一样时才会判断第二条件
2.聚合函数
将一列数据作为一个整体,进行纵向的计算。
*count:计算个数
1.一般选择非空列:主键
2.count(*)
image.png
在英语成绩里面有null值,所以在查询的时候八个数据会自动排除null值,
image.png
为了能够保证所有的成绩查询到,
image.png
*max:计算最大值
image.png
*min: 计算最小值
image.png
*sum:计算和
image.png
*avg: 计算平均值
image.png
*注意:聚合函数的计算,排除null值
解决方案有两种:
1.我们选择不包含null的列
2.使用ifnull
3.分组查询
*语法 :group by 分组字段;
*注意:
*分组之后,查询的字段:分组字段、聚合函数;
*在where和having 的区别
*where在分组之前进行限定,如果不满足条件,不参与分组
*having 在分组之后进行限定,如果不满足结果,则不会被查询出来
*where后不可以跟聚合函数,having可以进行聚合函数的判断
按照性别分组,查询男女数学的平均分
image.png
image.png
image.png
4.分页查询
*语法 :limit 开始的索引,每页查询的条数;
image.png
image.png
-- 公式:开始的索引 = (当前的页码 -1) *每页的条数
*limit 分页操作是一个“方言”,mysql的方言
约束
*概念:对表中的数据进行限定,保证数据的正确性、有效性和完整性。
*分类:
#1、主键约束:primary key
#2、非空约束:not null
#3、唯一约束:unique
#4、外键约束:foreign key
非空约束:not null,值不能为空
*1.在创建表时,添加约束
image.png
*2.创建完表以后,添加和删除约束
image.png
唯一约束:unique,值不能重复
image.png
注意:mysql中唯一约束限定的值可以有多个null
在创建表之后添加和删除唯一约束
image.png
主键约束:primary key
*注意:
1、含义:非空且唯一
2、一张表只能有一个字段为主键
3、主键就是表中记录的唯一标识
在创建表的时候添加主键
create table stu(
id int primary key , -- 给id添加主键约束
name varchar(20)
);
删除主键
-- 删除主键
-- 错误的写法alter table stu modify id int;
ALTER TABLE stu DROP PRIMARY KEY;
创建完表之后添加主键
-- 删除主键
-- 错误的写法alter table stu modify id int;
ALTER TABLE stu DROP PRIMARY KEY;
-- 创建完表之后添加主键
ALTER TABLE stu MODIFY id INT PRIMARY KEY;
自动增长:
如果某一列是数值类型的,使用auto_increment 可以来完成自动增长
在创建表的时候添加主键,并且完成主键的自增长
CREATE TABLE stu(
id INT PRIMARY KEY AUTO_INCREMENT, -- 给id添加主键约束
NAME VARCHAR(20)
);
自动增长是相对于上一次数据的自增
-- 删除自动增长
ALTER TABLE stu MODIFY id INT;
-- 添加自动增长
ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;
一般情况下,都会和主键连到一块用。
外键约束:foreign key
1、在创建表时,可以添加外键
* 语法:
create table 表名(
...
外键列
constraint 外键名称 foreign key (外键列的名称) references 主表的名称(主表列名称)
);
2、删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
3、创建表完之后添加外键
ALTER TABLE 表名 ADD constraint 外键名称 foreign key (外键列的名称) references 主表的名称(主表列名称);
级联操作
使用需谨慎!!!!尤其是级联删除
级联更新
-- 在创建表之后
ALTER TABLE 表名 ADD constraint 外键名称 foreign key (外键列的名称) references 主表的名称(主表列名称) ON UPDATE CASCADE;
在设置级联更新的时候设置级联删除,可以都设置,也可以设置其中任一,根据需求。
ALTER TABLE 表名 ADD constraint 外键名称 foreign key (外键列的名称) references 主表的名称(主表列名称) ON UPDATE CASCADE ON DELETE CASCADE;