MySQL实用语句

102 阅读1分钟

介绍

实用SQL语句总结

CRUD

查询

  • 强制使用索引
SELECT * FROM students FORCE INDEX (idx_class_id) WHERE class_id = 1 ORDER BY id DESC;

DML

新增字段

 ALTER TABLE table_name ADD field VARCHAR(100) CHARACTER SET utf8mb4 NULL DEFAULT

新增字段,具体操作步骤:

  1. 首先创建新的临时表,表结构通过命令ALTAR TABLE新定义的结构
  2. 然后把原表中数据导入到临时表
  3. 删除原表
  4. 最后把临时表重命名为原来的表名

注意事项:

  1. 选择业务不繁忙,低流量下执行,避免锁表影响业务
  2. 关注日志、监控、告警
  3. 预发环境模拟,评估风险

清空表数据

truncate table table_name;
delete * from table_name;
  1. truncate是整体删除,速度快;delete是按记录逐条删除,速度慢
  2. truncate不写服务器log;delete写服务器log,也就是delete比较慢的原因
  3. truncate不触发触发器,但会重置identity(自增列、标识列),自增列会被置为初始值;而delete自增列不会
  4. 删除部分数据,使用delete + where组合

参考

truncate和delete删除表数据区别