DQL

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;

你可能感兴趣的:(DQL)