我的常用

要用到的时候却忘记的,项目开发和面试。

SQL语句

  1. #查询表格中性李的的数量
  2. select count(*) from user where name like '李%'
  1. #将两列合并为一列
  2. select concat(first,last) name from user;
  1. select * from table order by rand() limit 50;
  1. select * from t_user limit 5,10;//6-10行

面试知识

  1. 4类数据类型:数值、浮点、字符串、日期。

    5、存储引擎

  2. 存储引擎就是表的类型,保存数据文件后缀就会不一样,功能就是处理指令,对表的数据进行CURD;

  3. show engines 可查看支持的存储引擎:InnoDB、MEMORY、CSV、MyISAM。
  4. 区别

    1. InnoDB:支持事务:提交和回滚、行锁:提高效率、外键。
    2. MyISam:读取(select)和插入(insert)快、不支持事务:崩溃后无法恢复、Count(*)也快、

      6、索引的数据结构

  5. 索引是某一列的或者几列的值进行排序的数据结构,这种结构可以提高查询效率,就像书的目录。

  6. 索引的优缺点
    1. 加快查询速度、降低磁盘的IO、唯一索引可以保障数据唯一、加速表与表的连接。
    2. 索引的创建和维护也需要额外的时间和空间;更新表格也需要要花费更多时间。
  7. 索引的方法:
    1. B+树:表格中必须有字段是自增的,一般为主键,没有就创建一个,一个数据页默认保存16KB数据,超过时就新增一个数据页面,并且生成目录(保存一千页)这个目录保存每一页最小的值。目录层数不会高于4层,为了减少IO。类似于二叉搜索树,但是节点变成了一个链表。所有的数据都存在最底层的叶子节点中。
    2. B-树:MyISam使用的方法。
    3. hash:
  8. 聚簇索引,只有一个
    1. 用主键进行排序:页内单链表、页间双链表、
    2. 叶子节点记录所有的数据
    3. 优点:查找块
    4. 缺点:插入有序,一般主键自增。
  9. 二级索引:
    1. 除主键,再用一个字段建立索引。只记录主键的值与字段值的映射。
    2. 回表:用新的字段的B+树搜索,只能找到主键,再利用主键的聚簇索引找到完整的记录。
  10. 联合索引:两个字段排序,先排第一个,第一个相同就排第二个。
  11. InnoDB注意
    1. 根页面万年不动。
    2. 二级索引也有主键值
  12. MyISam
    1. 添加不排序,索引存储的是指针指向每一行。
    2. 索引和数据分离。
    3. 所有的索引都是二级索引,但是回表块。
  13. 为什么用B+树

    1. hash:适合等值判断,数据无顺序,不好范围找。
    2. B树(多路平衡查找树):数据信息在每个节点中,一个节点可以数据>2,而B+都在最后一层的叶子节点中。

    3. 7、InnoDB的数据存储结构


  14. 8、索引的创建与设计原则

  15. 索引的类型(不同的存储引擎有支持不同的索引类型)

    1. 唯一:索引的值是唯一的。
    2. 普通:字段没有任何约束条件。
    3. 主键:在唯一的基础上加入了不为空的条件。
    4. 全文fulltext:适合数据量大的字段。
    5. 空间:作用于空间类型的字段。
  16. 查看索引show index FROM table,建立索引的方法:
    1. create table时,在primary、unique、外键字段上隐式自动创建。
    2. 建表的时候[unique|key|fulltext]index 索引名字(字段),选择某个字段创建某种索引。
    3. 表创建好后:创建索引create [unique|fulltext] index note_index on 表名(字段);
    4. 修改表的时候:alter table 表名 add index 索引名字(字段)
  17. 使用索引场景:
    1. 字段有唯一的限制:主键、unique
    2. 频繁使用 where

  18. 索引失效:

    1. 条件中有or
    2. 多索引不是第一部分
    3. Like查询以%开头。

      10、索引优化与查询优化

  19. 数据库优化思路:

    1. SQL与索引
    2. 表的结构
    3. 系统配置
    4. 硬件

      11、数据库的设计规范

  20. 三大范式:每一列不能再分;每一列与主键相关;字段不能重复,用外键连接。

  21. 事务的特性ACID:
    1. 原子、
    2. 一致、
    3. 隔离、
    4. 一致。
  22. 脏读:A读取了B更新的数据,B又回滚了。
  23. 悲观锁和乐观锁:
    1. 悲观锁在操作数据前把数据锁住,在完成当前操作后才解开锁;
    2. 乐观锁在提交的时候判断是否有冲突。

      体系知识

      不要抄,记录官方文档或者视频的结构即可,和内容分布,方便下次查看

      官方文档

      教学视频

      MySQL数据库教程天花板,mysql安装到mysql高级,强!硬!
  • 索引[115—134]