mysql:数据库约束、聚合查询、分组查询学习

数据库约束
  • 非空约束(NOT NULL)
    非空约束就是指定某列不能存储NULL,例如我们创建一个学生表,指定id不能为NULL,如图:
    在这里插入图片描述
    desc student可以看到id字段不为NULL,如图:
    在这里插入图片描述
  • 唯一约束(UNIQUE)
    例如我们制定sn列是唯一的,不重复的,如图:
    在这里插入图片描述
    desc student可以看到sn的Key是唯一的,如图:
    在这里插入图片描述
  • 主键约束(PRIMARY KEY)
    主键表示的就是非空且唯一的意思,即NOT NULL和UNIQUE的结合,这里我们指定id为主键,如图:
    在这里插入图片描述
    desc student发现id的Key就是PRI即主键:
    在这里插入图片描述
    在这里其实主键的关键字 就是primary key,例如:
    在这里插入图片描述
    desc student就是:
    在这里插入图片描述
    发现也可以设置id为主键,当然也可以这样写,如图:
    在这里插入图片描述
    也可以达到相同的效果;
    组合主键
    如图:
    在这里插入图片描述
    desc student可得:
    在这里插入图片描述
    它表示的意思就是id可以重复,但是id和sn的组合不能重复
  • 默认约束(DEAFAULT)
    可以指定插入数据时,name字段为空,默认值为unkown,如图:
    在这里插入图片描述
    desc student可得name字段的默认信息是unkown:
    在这里插入图片描述
  • CHECK子句
    例如:
    在这里插入图片描述
    表示约束gender字段只有两种,即男和女;在表中我们是看不到check约束的,即使使用show create table student也无法看到;
  • 自增属性
    自增属性是对于整数类型的主键,搭配自增auto_increment来使用,插入数据对应字段没有给出值的话,使用最+1,例如:
    在这里插入图片描述
    id具有自增属性,当我们插入一条数据时,例如:
    在这里插入图片描述
    此时小王的id是1,然后我们再插入一条小康的数据,id我们给成NULL,此时:
    在这里插入图片描述
    发现此时小康的id自动增加为2,因为id字段有了自增属性;
  • 添加注释
    添加注释我们使用comment来添加,例如:
    在这里插入图片描述
    使用show create table student可以查看,例如:
    在这里插入图片描述
    注释就是给每一个字段注释;
  • 外键约束(FOREIGN KEY )
    外键就是通过一个字段关联另一张表,外键约束就是这个字段参照约束另一张表中的值。
    例如我们此时创建衣蛾学生表和一个班级表,例如:
    在这里插入图片描述
    在这里插入图片描述
    此时student表通过外键使得class_id关联了classes表的id,可以查看student表:
    在这里插入图片描述
    即class_id是外键;
聚合查询

我们mysql中常用的聚合函数有COUNT、SUM、AVG、MIN、MAX

  • COUNT
    它的主要作用就是得到查询的数据的数量,例如我们建立一个学生表,插入一些学生数据,得到下表,如图:
    在这里插入图片描述
    此时我们可以统计班级有多少学生,例如:
    在这里插入图片描述
  • SUM
    SUM的作用是得到查询到的数据的总和,还是那张学生表,我们可以统计学生总成绩,例如:
    在这里插入图片描述
    需要注意的一点是,SUM()括号中必须是数字,不然没有意义。
  • AVG
    它的作用是求查询到的数据的平均值,括号中必须是数字,例如:
    在这里插入图片描述
    求得这四个学生的成绩平均值是83.7.
  • MIN
    它的作用是得到查询的数据的最小值,括号中必须是数字,例如:
    在这里插入图片描述
    得到这四个学生成绩最低的是77.6分。
  • MAX
    它的作用是得到查询的数据的最大值,括号中必须是数字,例如:
    在这里插入图片描述
    得到这四个学生成绩最高的是90.4分。
分组查询

也就是以某一列进行分组查询,使用Group By子句对指定列进行分组查询需要注意的是分组查询时select指定的字段必须是“分组依据字段”,其他字段如果想出现在select中必须包含在聚合函数中;
例如:我们这里实现一个雇员表,例如:
在这里插入图片描述
此时我们要查询每个角色的工资,最高工资、最低工资和平均工资,但是我们可以看到游戏角色有三个,因此要查看工资要将这三个人的都显示出来,因此会使用到group_concat子句,如图:
在这里插入图片描述
分组查询时,如果要进行条件过滤,不能使用where而使用having替代,例如显示平均工资低于1500的角色和他(他们)的工资、平均工资、最低工资、最高工资(比如游戏角色职位),如图:
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章