MySQL相关知识

  1. 主外键标识
    • 如果键是PRI,则列是主键或多列主键中的列之一。
    • 如果键是UNI,则该列是唯一索引的第一列。
    • 如果键为MUL,则该列是非唯一索引的第一列,其中允许在列中多次出现给定值。
  2. MySQL的三大范式
    • 要求具有原子性、字段不可在被分割。
    • 必须满足第一范式的前提下,除了主键外,其它的字段都必须完全依赖主键。
    • 必须满足第二范式的前提下,除了主键外,其它字段之间不能有传递依赖;根据项目的场景适当的降低对范式的要求,提高运行的效率。
  3. 数据库的端口
    • MySQL:3306
    • Oracle:1521
    • SQL Server:1433
  4. 事务的特征
    • 原子性、一致性、隔离性、持久性
    • 事务是一种机制、使用setcommit = 0; 关闭自动提交、1:为自动提交
  5. MySQL的机制
    • InnoID: 支持事务和外键,占用空间比MyISAM大,适用于需要事务处理、更新比较频繁的场景。
    • MyIsAM: 不支持事务和外键,占用空间比InnoDB小,适用于不需要事务处理、查询频繁的场景。
  6. 操作
    • 添加一列:alter table table_name add age varchar(10) not null;
    • 修改一列:alter table table_name change name age varchar(10);
    • 删除一列:alter table salgrade_copy1 drop age;
    • 修改表名称:alter table salgrade_copy2 rename salgrade_copy1;
    • 修改一列的数据类型:alter table salgrade_copy1 modify age char (10);
      • 总结:【添加:add】、【删除、drop】、【修改:change】、【修改类型:modify】、【修改表名:rename】
  7. 索引
    • 唯一约束(Unique Key):如员工姓名:添加上唯一索引,表示该列值不允许重复。
    • 普通索引:查询更快:create index index_name on LouisVan(codemap)
    • 联合索引:体现在多张表中: student_course通过studentId与courseId确定主键id
      • 改表中有字段:id、studentId、courseId
    • 复合索引:name + phone
  8. union
    • select p1.product_name from product1 p1 where p1.product_type = '衣服' union all select p2.product_name from product2 p2 where p2.product_type = '衣服'
  9. exists
    • select * from a where exists (select * from b where a.id = b.aid)
  10. MySQL正则表达式
    • 以1开头
      • select * from salgrade_copy1 where losal regexp '^1';
    • 以1结尾
      • select * from salgrade_copy1 where losal regexp '1$';
    • 包含12
      • select * from salgrade_copy1 where losal regexp '12';
  11. MySQL触发器
    • 当表发生了增、删、改的时候触发。
    • 比如获取推送充电桩状态数据,0位成功,1为失败,触发器可以记录失败的数据并插入到日志表中。
    • 关键字:trigger
  12. 储存过程
    • 好处:大大提升效率,减少与数据库的交互,提高了安全性。
    • 坏处:需要大量的计算、判断数据是否合法,影响数据库的性能。
    • 关键字:procedure
    • 调用方式:call 存储工程名称();
  13. 函数
    • MySQL有五大聚合函数:avg()、count()、mix()、max()、sum();
    • 函数存储这一系列的SQL语句,封装到function中,减少了SQL的重复性、调用函数名称一次性执行这些函数。
    • 关键字:function
    • 调用方式:select 函数名称();
  14. 视图
    • 可视化的表,不建议修改里面的数据
    • 关键字 view
    • 调用方式:select * from 视图名称();
原文地址:https://www.cnblogs.com/Twittery/p/14517725.html