2020 6/19 分组查询+数据约束

一、分组查询

  1、分组查询(group by)

    -- 需求: 查询男女的人数

    -- 预期结果:

      --  男   3

      --- 女   2

      -- 1) 把学生按照性别分组(GROUP BY gender)

      -- 2) 统计每组的人数(COUNT(*))

     SELECT gender,COUNT(*) FROM student GROUP BY gender;

  2、分组查询后筛选

    -- 需求: 查询总人数大于2的性别

    -- 1) 查询男女的人数

    -- 2)筛选出人数大于2的记录(having)

    --- 注意: 分组之前条件使用where关键字,分组之后条件使用having关键字

    SELECT gender,COUNT(*) FROM student GROUP BY gender HAVING COUNT(*)>2;

二、数据约束

  1、默认值

    作用: 当用户对使用默认值的字段不插入值的时候,就使用默认值。

    注意:                     

                   1)对默认值字段插入null是可以的。

                   2)对默认值字段可以插入非null

    default

  2、非空

    作用: 限制字段必须赋值

    注意:

           1)非空字符必须赋值

              2)非空字符不能赋null

      CREATE TABLE student(

               id INT,

               NAME VARCHAR(20),

               gender VARCHAR(2) NOT NULL -- 非空

  3、唯一

    作用: 对字段的值不能重复

    注意:

           1)唯一字段可以插入null                               

           2)唯一字段可以插入多个null

      CREATE TABLE student(

                id INT UNIQUE, -- 唯一

                NAME VARCHAR(20)

     )

  4、主键

    作用: 非空+唯一

    注意:                      

           1)通常情况下,每张表都会设置一个主键字段。用于标记表中的每条记录的唯一性。

           2)建议不要选择表的包含业务含义的字段作为主键,建议给每张表独立设计一个非业务含义的id字段。

      CREATE TABLE student(

             id INT PRIMARY KEY, -- 主键

             NAME VARCHAR(20)

     )

  5、自增长

    作用: 自动递增

    CREATE TABLE student(

             id INT(4) ZEROFILL PRIMARY KEY AUTO_INCREMENT, -- 自增长,从0开始  ZEROFILL 零填充

             NAME VARCHAR(20)

    )

  6、外键

  作用:约束两种表的数据

                  出现两种表的情况:

        解决数据冗余高问题: 独立出一张表               

        例如: 员工表  和  部门表

        问题出现:在插入员工表数据的时候,员工表的部门ID字段可以随便插入!!!!!  

   使用外键约束:约束插入员工表的部门ID字段值

  -- 部门表(主表)

    CREATE TABLE dept(

             id INT PRIMARY KEY,

             deptName VARCHAR(20)

    )

   -- 修改员工表(副表/从表)

    CREATE TABLE employee(

            id INT PRIMARY KEY,

              empName VARCHAR(20),

              deptId INT,-- 把部门名称改为部门ID

         -- 声明一个外键约束

         CONSTRAINT emlyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id)

         --           外键名称                  外键               参考表(参考字段)

)

  注意:

                            1)被约束的表称为副表,约束别人的表称为主表,外键设置在副表上的!!!

                            2)主表的参考字段通用为主键!

                            3)添加数据: 先添加主表,再添加副表

                            4)修改数据: 先修改副表,再修改主表

                            5)删除数据: 先删除副表,再删除主表

原文地址:https://www.cnblogs.com/luzhijin/p/13163833.html