mysql 之 删除数据表的方法
1、drop table table_name
使用 drop table 命令删除数据表和数据表中所有的内容。
语法:
drop table table_name
2、delete table table_name
使用 SQL 的 DELETE FROM 命令来删除 MySQL 数据表中的记录。
delete from table_name [where clause]
-
如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。 你可以在 WHERE 子句中指定任何条件 您可以在单个表中一次性删除记录。
当你想删除数据表中指定的记录时 WHERE 子句是非常有用的。
下面有一张表:
删除bt表中b等于0的记录:
删除bt表所有记录:
可以看到delete删除表的时候只是删除记录,不会删除到表的结构等。
3、truncate table table_name
Truncate 语句被认为是 DDL(数据定义语言)命令而不是 DML(数据操作命令)。这是因为每当我们使用这个命令时,表内容不会被操作,而是整个表被删除并重新创建。
-
每当在表上执行TRUNCATE 命令时,不会执行在删除事件上定义的触发器,因为行不会被删除,整个表也会被删除。 我们无法回滚TRUNCATE TABLE命令的操作,因为它是隐式提交的。但是,如果在截断整个操作时出现任何问题,MySQL会回滚,保持数据原封不动。 如果表上有任何激活锁,则不能在其上执行TRUNCATE TABLE 命令,直到并且除非该锁被解锁。 如果当前表的其他表中定义了任何外键,则不能截断当前表,因为其他表的外键正在引用该表的列。 执行TRUNCATE查询的输出总是0行受影响,它没有指定删除的记录数,而是代表没有信息。 表的所有索引和数据都被删除,但表上定义的分区即使在截断表后仍保持不变。 与分配了AUTO_INCREMENT属性的列关联的序列被重置为起始值。这也适用于不支持重复使用序列值的存储引擎,如InnoDB和MyISAM。 我们甚至可以使用TRUNCATE语句截断已损坏的InnoDB表。 考虑到TRUNCATE 命令的性能,它总是超过对所有行执行的DELETE 命令,因为它跳过了表操作中涉及的DML操作。
语法:
truncate table table_name
下面看个例子:删除名为b的表
4、三种方法的区别
下一篇:
sql 编写顺序及执行顺序