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、三种方法的区别

drop tabletruncate tabledelete table
删除表中所有数据并销毁表本身的 SQL 语句从表中删除数据行的 SQL 语句从表中删除数据行的 SQL 语句
它是一个数据定义语言 (DDL) 语句它是一个数据定义语言 (DDL) 语句它是一个数据操作语言 (DML) 语句
不能使用 WHERE 条件不能使用 WHERE 条件可以使用 WHERE 条件
无法执行回滚操作来撤消 DROP 表语句无法执行回滚操作来撤消 TRUNCATE 表语句可以执行回滚操作来撤消 DELETE 表语句
表及其所有关系、索引、权限等将被永久删除表行被永久删除表行不会被永久删除
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值