MySQL DQL数据库表记录的查询,约束,多表关系,范式

MySQL

DQL数据库表记录的查询(排序、聚合、分组、分页)

排序查询

    1.ORDER BY 列名称 排序规则 -- 基础语法

    2.排序规则: 
        ASC     升序(从小到大) 默认的
        DESC    降序

    3.案例:
        SELECT * FROM 学生表 ORDER BY 数学成绩 ASC ;  -- 按照数学成绩升序排列
        SELECT * FROM 学生表 ORDER BY 数学成绩 ASC , 英语成绩 DESC;  -- 先按照数学成绩升序排,数学成绩相同就按英语成绩降序

聚合函数

    1.常用的聚合函数
        a. COUNT(列名)    -- 求个数
        b. MAX(列名)      -- 求最大值
        c. MIN(列名)      -- 求最小值
        d. SUM(列名)      -- 求和
        e. AVG(列名)      -- 求平均值

    2.注意事项
        聚合函数排除为NULL值的列.解决方案:
        a.不采用 为NULL的列
        b.函数 IFNULL(列名,0)

    3.例如: 统计学生表当中,数学成绩的平均分
        SELECT AVG(IFNULL(数学成绩,0)) FROM 学生表;

分组查询

    1.GROUP BY 分组的字段 -- 基础格式

    2.注意事项
        a.分组之后,查询的结果是 分组的字段 或者是 聚合函数
        b.两个区别 WHERE 和 HAVING 
            WHERE   分组之前的条件筛选,不满足条件,不参与分组. 后面不能跟聚合函数
            HAVING  分组之后的条件筛选,不满足条件,不会显示出来. 后面直接跟聚合函数
    3.案例
        SELECT 性别,COUNT(主键id) FROM 学生表 GROUP BY 性别;  --  根据性别进行分组,查询学生表当中的性别和对应的人数
        SELECT COUNT(主键id) FROM 学生表 WHERE 成绩>80 GROUP BY 性别 HAVING COUNT(主键ID)>2;  -- 从学生表当中查询成绩大于80,对性别分组要求人数大于2,显示最后的结果

分页查询(mysql数据库专属的LIMIT)

    1.基础格式
        LIMIT 起始位置,每页条数
    2.计算公式
        起始位置 = (当前页数-1)*每页条数
    3.案例: 每页条数显示4条,在第6页的写法
        SELECT * FROM 表名称 LIMIT 20,4; -- (6-1)*4 =20

约束(非空、唯一、主键、外键)

非空约束

    1.名称
        NOT NULL
    2.效果
        不能添加为空的数据.("姓名","商品编号")
    3.三种操作的方式
        a.创建表的时候,添加非空约束
            CREATE TABLE 表名称 (列名1 数据类型1,列名2 数据类型2 NOT NULL);
        b.表创建完毕之后,再添加非空约束
            ALTER TABLE 表名称 MODIFY 列名称 数据类型 NOT NULL;
        c.删除非空约束
            ALTER TABLE 表名称 MODIFY 列名称 数据类型;

唯一约束

    1.名称
        UNIQUE 
    2.效果
        不能添加重复的数据,NULL只能有一个.("手机号码","身份证","邮箱")
    3.三种操作的方式
        a.创建表的时候,添加唯一约束
            CREATE TABLE 表名称 (列名1 数据类型1,列名2 数据类型2 UNIQUE);
        b.表创建完毕之后,再添加唯一约束【条件:不能有重复的】
            ALTER TABLE 表名称 MODIFY 列名称 数据类型 UNIQUE;
        c.删除唯一约束
            ALTER TABLE 表名称 DROP INDEX 列名称;

主键约束

    1.名称
        PRIMARY KEY     主键的关键字
        AUTO_INCREMENT  自动增长的关键字(根据上一行的数据进行自动增长)
    2.效果
        主键效果: 非空并且唯一,而且在一张表当中只能有一个主键
        自动增长: 在上一行的基础上,自动加上1
    3.三种操作的方式
        a.创建表的时候,添加主键约束
            CREATE TABLE 表名称 (列名1 数据类型1 PRIMARY KEY AUTO_INCREMENT,列名2 数据类型2);
        b.表创建完毕之后,再添加主键约束【条件:不能有重复的】
            ALTER TABLE 表名称 MODIFY 列名称 数据类型  PRIMARY KEY AUTO_INCREMENT;
        c.删除主键约束
            ALTER TABLE 表名称 DROP PRIMARY KEY;  -- 删除主键约束
            ALTER TABLE 表名称 MODIFY 自动增长的列名称 自动增长的数据类型;  -- 删除自动增长的效果

外键约束

    1.名称
        FOREIGN KEY 
    2.效果
        让两个表之间产生关联,自己表的"外键"连上别人表的"主键"
    3.三种操作的方式   
        a.创建表的时候,添加外键约束
            CREATE TABLE 表名称(
                列名1 数据类型1,
                列名2 数据类型2,
                CONSTRAINT 外键别名 FOREIGN KEY (外键列名称) REFERENCES 其他表名称(其他表主键)
            );
        b.表创建完毕之后,再添加外键约束
            ALTER TABLE 表名称 ADD CONSTRAINT 外键别名 FOREIGN KEY (外键列名称) REFERENCES 其他表名称(其他表主键);
        c.删除外键约束
            ALTER TABLE 表名称 DROP FOREIGN KEY 外键别名;
    4.外键级联操作
        a.级联的含义: 
            多个表主外键关系删除和修改的时候,彼此之间会受到影响
        b.两个级联的关键字
            级联更新    ON UPDATE CASCADE
            级联删除    ON DELETE CASCADE 
        c.添加级联操作的语法
            ALTER TABLE 表名称 ADD CONSTRAINT 外键别名 FOREIGN KEY (外键列名称) REFERENCES 其他表名称(其他表主键) ON UPDATE CASCADE ON DELETE CASCADE;

多表关系(一对多、多对多、一对一)

一对多

    1.生活实例: 
        部门和员工之间的关系
    2.建表原则:
        一是主键,多是外键.多的外键指向一的主键

多对多

    1.生活实例:
        学生和课程之间的关系
    2.建表原则:
        设计一个"中间表",至少包含两个字段(两个表的主键)

一对一

    1.生活实例:
        人和身份证的关系
    2.建表原则:
        在任意一方添加外键(唯一约束 UNIQUE )指向另一方的主键

范式

范式的含义

    设计数据库的时候,遵循的规范

范式的分类

    1.第一范式(1NF) 每一项都是不可以分割的原子数据.不能存在合并项
    2.第二范式(2NF) 抽取了核心直接依赖关系,其他间接关系放在一边
    3.第三范式(3NF) 再次抽取间接表当中的依赖关系.
    4.巴斯-科德范式(BCNF)
    5.第四范式(4NF)
    6.第五范式(5NF)

猜你喜欢

转载自blog.csdn.net/qq_43108343/article/details/82355047