这里的删除分为:删除表中的部分数据
删除表的所有数据:下次添加数据前不需要新建表
同时删除表的数据和表的定义:下次添加数据之前必须新建表
主要关键词有:TRUNCATE DROP DELETE
下面按删除类型介绍操作语句:
1.DELETE FROM 表 WHERE 字段 = 值:选择性地删除一行
有趣的是,MySQL对DELETE语句添加了标准SQL语句没有的一些功能:
2.DELETE FROM 表 WHERE 字段 = 值 LIMIT 数量:当WHERE过滤结果有多个时删除前面的几个,即删除过滤结果中的部分数据
如果上述语句2对删除部分结果的排序标准不明确可以使用ORDER BY指定排序字段,再使用LIMIT限制删除部分数据:
3.DELETE FROM 表 WHERE 字段 = 值 ORDER BY 排序字段 LIMIT 数量:由小到大
4.DELETE FROM 表 WHERE 字段 = 值 ORDER BY 排序字段 DESC LIMIT 数量:由大到小
删除一列
UPDATE
删除所有行但保留表的定义
1.DELETE FROM 表:返回被删除的记录数,自增字段起始值恢复为1
2.TRUNCATE TABLE 表:不返回被删除的记录数,自增字段起始值恢复为1
3.DELETE FROM 表 WHERE true:返回被删除的记录数,自增字段起始值不变
注意:语句3由于加了WHERE将进行逐行扫描(尽管不进行WHERE判断),而语句1直接删除所有数据就好了,所以语句3的执行成本高于语句1
语句2相对于语句1虽然不能返回被删除的记录数,但是非常快
删除指定表(包括内容和定义)
DROP TABLE 表
删除指定数据库的所有表数据(保留结构)
首先要能遍历到所有表:SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA=’数据库名’
然后我们使用内置连接语句CONCAT生成多个命令:
SELECT CONCAT(‘TRUNCATE TABLE ‘, TABLE_NAME, ‘;’) FROM information_schema.TABLES WHERE TABLE_SCHEMA=’数据库名’:注意TRUNCATE TABLE后面留一个空格
其他