MySQL中的查询与约束

A.MySQL中的 DQL-排序查询DQL-聚合函数DQL-分组查询DQL-分页查询与约束

B.DQL-排序查询
  • 知识点总结
    • 排序查询的语法格式什么?

      • ORDER BY 列名 排序的方式;
        
    • 排序的默认方式是那种?

      • ASC -> 升序排列.
    • 升序排列和降序排列分别是哪个关键字?

      • 升序排列 -> ASC
      • 降序排列 -> DESC
    • 如果有多个排序条件如何书写?

      • 使用(,隔开) -> 当MATH列的成绩相同的时候,才会启动次要的排序条件.

      • #查询student表中的数据,按照数学成绩升序排列,如果数据成绩相同,则按照英语成绩升序排列.
        SELECT * FROM student ORDER BY math ASC , english DESC ;
        
C.DQL-聚合函数
  • 知识点总结
    • 聚合函数都包括哪几种?
      • 最大值 MAX(列名)
      • 最小值 MIN(列名)
      • 总和值 SUM(列名)
      • 平均值 AVG(列名)
      • 数据量 COUNT(列名)
    • 聚合函数的特点是什么?
      • 以一列数据用来计算.
    • 使用聚合函数的注意事项是什么?
      • 使用COUNT的时候是排除NULL值的 -> 对于可能出现的NULL的值列进行IFNULL判断.
        • 使用不可能出现NULL值的列进行计算.
      • SELECT COUNT(*) 计算表中的一共有多少条数据.
D.DQL-分组查询
  • 知识点总结
    • 分组查询的语法是什么?

      • GROUP BY 分组的字段(根据哪个字段进行分组)
        
    • 使用分组查询的注意事项是什么?

      • 如果想要在分组之前进行条件的限定 -> 需要使用WHERE
      • 如果想要在分组之后进行条件的限定 -> 需要使用HAVING
        • 当使用分组查询的时候,查询的字段只能是分组字段/聚合函数
    • HAVING和WHERE的区别是什么?面试题

      • WHERE用于分组之前条件的限定,HAVING分组之后条件的限定.
      • WHERE后面不可以加聚合函数,HAVING可以添加聚合函数.
      • HAVING用到了分组查询 -> 查询的字段分组字段/聚合函数,WHERE可以是任意字段.
E.DQL-分页查询
  • 知识点总结
    • 分页查询的语法格式是什么?

      • LIMIT 参数1,参数2; -> 参数1:开始查询的索引 参数2:每页显示的条数.
        
    • 分页查询的开始索引如何计算?

      • LIMIT (要查询的页码-1) * 每页显示条数,每页显示的条数;
F.约束-概述
  • 知识点总结
    • 什么是约束? -> 约定好的束缚 -> 列里面不允许出来为NULL的数据.
      • 对表中的数据进行限定,保证表中的数据的完整性正确性有效性.
    • MYSQL中都有哪些约束?
      • 非空
      • 唯一
      • 主键
      • 外键
G.约束-非空约束
  • 知识点总结
    • 什么是非空约束?

      • 被非空约束约束的列数据不能为NULL.
    • 非空约束的语法格式是什么?

      #创建PERSON表 INT类型的ID(非空) VARCHAR的NAME(非空)
      CREATE TABLE IF NOT EXISTS person(
         id INT NOT NULL ,
         name VARCHAR(20) NOT NULL
      );
      
    • 如何添加非空约束?

      • #添加非空约束到已存在的表的列 (添加NOTNULL到NAME,添加完之后NAME里面的数据不能为NULL了)
        ALTER TABLE person MODIFY id INT NOT NULL;
        
    • 如何删除非空约束?

      • #删除NAME列的非空约束.
        ALTER TABLE person MODIFY id INT;
        
H.约束-唯一约束
  • 知识点总结
    • 什么是唯一约束?

      • 被唯一约束约束的列中的数据不可以重复.
    • 唯一约束的语法格式是什么?

      • #创建MAN表,INT类型的ID(非空,唯一) VARCHAR的NAME(非空)
        CREATE TABLE IF NOT EXISTS man(
          id INT UNIQUE NOT NULL ,
          name varchar(20) NOT NULL
        );
        
    • 如何添加唯一约束?

      • #添加唯一约束到MAN表中的ID列,注意如果添加的列之前还有其他的约束(NOT NULL)也要把其他的约束写上,否则会进行覆盖.
        ALTER TABLE MAN MODIFY ID INT UNIQUE NOT NULL ;
        
    • 如何删除唯一约束?

      • #删除MAN表中的ID列的唯一约束.
        ALTER TABLE man DROP INDEX id;
        
    • 添加唯一约束的注意事项是什么?

      • 当某列要添加唯一约束的时候,要确保列中已有的数据不重复,如果重复了没有办法添加唯一约束.
I.约束-主键约束
  • 知识点总结
    • 什么是主键约束?

      • 非空且唯一.
    • 主键约束的语法格式是什么?

      • CREATE TABLE IF NOT EXISTS PEOPLE(
          ID INT PRIMARY KEY AUTO_INCREMENT,
          NAME VARCHAR(20)
        );
        
    • 如何添加主键约束?

      • #添加主键到表中的已有列.
        #添加主键到People表中的ID.
        ALTER TABLE PEOPLE MODIFY ID INT PRIMARY KEY AUTO_INCREMENT;
        
    • 如何删除主键约束?

      • #如何删除表中的主键(主键在一个表中只有一个,所以无需指定列.)
        #删除People表中的主键ID,因为主键只有一个.
        ALTER TABLE PEOPLE DROP PRIMARY KEY ;
        
    • 使用主键约束的注意事项是什么?

      • 一张表中只有一列为主键列 -> 主键列表示唯一性标识.
J.约束-主键约束-自动增长
  • 知识点总结
    • 什么是主键约束自动增长?

    • 如何添加自动增长?

      • #创建PEOPLE表,INT类型ID(主键,自动增长) VARCHAR类型的NAME(非空)
        CREATE TABLE IF NOT EXISTS PEOPLE(
          ID INT PRIMARY KEY AUTO_INCREMENT,
          NAME VARCHAR(20)
        );
        
    • 如何删除自动增长?

      • #删除ID列的自动增长(会删除自动增长,但是不会删除ID作为主键)
        #删除主键的自动增长,删除主键的自动增长,不会删除主键.
        ALTER TABLE PEOPLE MODIFY ID INT;
        
    • 如何添加自动增长到已有的列?

      • #添加自动增长到ID列.
        ALTER TABLE PEOPLE MODIFY ID INT AUTO_INCREMENT;
        
    • 使用自动增长的注意事项是什么?

K.约束-外键约束
  • 知识点总结
    • 如何使用添加外键约束?
    • 如何删除外键?
    • 如何添加外键约束到已有的列?
    • 使用外键约束的注意事项是什么?
    • 使用外键的好处是什么?
      • 保证数据的正确性.
    • 使用外键的坏处是什么?
      • 在创建的表的时候操作比较繁琐,如果外键过多,会导致性能极速下降.
      • 删除的时候比较麻烦,需要去做很多验证.
L.约束-外键约束-级联操作
  • 知识点总结
    • 如何在添加外键的时候设置级联删除/更新?

      • #添加EMP表的DEPT_ID列为外键.
        CREATE TABLE IF NOT EXISTS STUDENT(
          ID INT PRIMARY KEY AUTO_INCREMENT,
          NAME VARCHAR(20) NOT NULL ,
          AGE INT NOT NULL ,
          CLASS_ID INT,
          CONSTRAINT STU_CLASS_FK FOREIGN KEY (CLASS_ID) REFERENCES CLASS(ID) ON UPDATE CASCADE ON DELETE CASCADE
        );
        
M.多表关系介绍
  • 知识点总结
    • 表与表之间都有什么关系?
      • 一对一 -> 一个人对应一个身份证号,一个身份证号对应一个人.
      • 一对多 -> 一个学生对应一个班级,一个班级可以对应多个学生.
      • 多对对 -> 一个学生可以对应多个老师,一个老师可以对应多个学生.
N.多表关系-一对多关系实现
  • 知识点总结
    • 一对多关系如何实现?
      • 在多的一方建立外键,指向一的一方的主键.
O.多表关系-多对多关系实现
  • 知识点总结
    • 多对多关系如何实现?
      • 多对多的关系依靠本有的两张表没办法实现/实现起来非常麻烦,依赖于第三张表.
        • 第三张表中最少有两个字段,作为外键分别指向两张表的主键.
P.多表关系-一对一关系实现
  • 知识点总结
    • 一对一关系如何实现?推荐使用哪种方式?
      • 不需要拆分为两张表,直接在一张表中存储数据即可.
        • 使任意一方的唯一外键指向另一方的主键/两张的主键保持相同(一致) 范式.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值