MySQL - 图1

update语句的执行过程

https://cloud.tencent.com/developer/article/1828772

delete drop truncate的区别

使用场景:

当你不再需要该表时, 用 drop;
当你仍要保留该表,但要删除所有记录时, 用 truncate;
当你要删除部分记录时(always with a where clause), 用 delete.

清理速度:
drop>truncate>delete
相同点

  1. truncate和不带where子句的delete、以及drop都会删除表内的数据
  2. drop、truncate都是DDL语句

不同点

  1. drop会将表结构和数据、索引等全部删除
  2. delete语句属于DML,不能自动提交,需要commit提交,只会删除对应的数据
  3. truncate语句属于DDL,删除表内容,保留表结构。truncate命令不会被rollback命令撤销。表被清空后,表和表的索引将重新设置成初始值大小,而delete不能。

    datetime & timestamp & date的区别

  4. 存储大小的区别:

    1. datetime 8字节,可代表的时间跨度更大;(一般用datetime)
    2. timestamp 4字节,最多到2038年。
    3. year,date,time 1字节、3字节、3字节
  5. 时区:timestamp读取结果会考虑到时区,datetime存什么就是什么
  6. 默认值:存入null,timestamp自动存储当前时间,datetime储存null

关键字执行顺序

  1. where
  2. group by
  3. having
  4. order by

    explain语句

  5. possible_keys,key

  6. rows:要扫描的行数
  7. extra:

    1. using where
    2. using filesort,需要对结果排序,只用索引无法满足的时候
    3. using index,不用回表查询
    4. using index condition:使用索引进行回表查询

      疑问

  8. doublewrite buffer的作用

  9. InnoDB锁的对象,以及幻读的问题(InnoDB在只有快照读情况下没有幻读问题)。
  10. 数据库和缓存数据一致性问题