use*_*823 8 mysql truncate drop-table
什么是TRUNCATE
做不同的下降?
我相信它会删除表中的所有数据,但将表名保留在数据库中,而 asDROP
会删除所有数据和表。这样对吗 ?
Mik*_*Fal 22
删除 - 数据操作语言(DML)
DELETE
任何 RDBMS 中的语句都被视为DML语句。也称为 CRUD(创建、读取、更新、删除),这种语句旨在在不影响对象底层结构的情况下操作数据库中的数据。这实际上意味着:
DELETE
语句可以通过或者使用谓词微调WHERE
或JOIN
删除表中的部分或全部行。DELETE
语句将由数据库记录,如果语句失败,可以在事务中回滚。DELETE
将对其删除的数据进行行级锁定,尽管这可能会根据需要升级。DELETE
可能会“慢”(这是相对的),但更安全,因为它是细粒度的。截断 - 数据定义语言(DDL)
TRUCNATE
被视为DDL语句,这意味着它旨在改变对象在数据库中的定义方式。通常,DDL 语句是CREATE
、ALTER
、 或DROP
,但TRUNCATE
服务于特定目的,即通过删除所有行来“重置”表。这种方法在 RDBMS 引擎之间有所不同,我建议查看MySQL的细节。a 的实际含义TRUNCATE
是:
TRUNCATE
不能细粒度。如果成功,它将从您的表中删除所有行。TRUNCATE
通常不记录。这因 RDBMS 而异,我建议您更具体地查看 MySQL 如何处理它。(提示,它因版本而异。)TRUNCATE
需要表元数据锁才能执行。这实际上是如何实现的,可能特定于 RDBMS,但本质上,该TRUNCATE
进程必须防止其他进程破坏该表以执行其 DDL。TRUNCATE
会比 a 快DELETE
,但安全性较差。删除表 - 数据定义语言(DDL)
DROP TABLE
比 a 更进一步TRUNCATE
,它实际上从数据库中完全删除了表。这包括删除所有关联的对象,例如索引和约束。如果删除表,不仅会删除所有数据,还会删除结构。这通常会在不再需要表时完成。主要的问题是,由于 aDROP
是 DDL,您通常无法撤消它。某些 RDBMS 引擎允许您将 DDL 包装在事务中,以便您可以回滚它,但这不是最佳实践,应该避免。
虽然我不能代表 MySQL,但这里有一个快速表格,比较了 Oracle 中截断与删除的某些方面。
truncate | delete
--------------------------------- | ---------------------------
DDL (implicitly commits, | DML
including any pending DML) |
Does not generate undo info | Generates undo info
(rollback statements) | (rollback statements)
Resets high water mark in table | Does not affect full-scan
and all indexes, improving | performance
full-scan performance |
Does not fire any delete triggers | Fires delete triggers
Priv to truncate cannot be granted | --
to truncate another user's |
table; DROP ANY TABLE system |
priv required |
Storage for table and indexes can | Never shrinks the size of a
be set to initial size | table or indexes
Cannot truncate parent table from | --
an established referential |
integrity constraint; must |
first disable foreign key |
that references the parent |
table |
Run Code Online (Sandbox Code Playgroud)
本书资料整理:http : //amzn.com/0470395125
希望这可以帮助像我一样偶然发现此页面的任何 Oracle 用户。请随时指出这些要点中的哪一点(如果有的话)在 MySQL 中是正确的,
小智 2
DROP TABLE TableName
-> 从数据库中删除该表。
TRUNCATE TABLE TableName
-> 无条件删除表的数据...并重置IDENTITY
种子值(如果表有IDENTITY
字段)。
归档时间: |
|
查看次数: |
27823 次 |
最近记录: |