mysql撤销语句drop_MySQL删除表操作语句
(DROPTABLE)详解
MySQL 中删除表的 SQL 为 DROP TABLE,该语句不但删除数据内容,连带表结构、索引等⼀并删掉,如果只删除指定数据或所有数据,可以使⽤ DELETE 或 TRUNCATE 语句。
DROP TABLE
DROP TABLE 可以删除⼀个或多个表,但前提是要有对应表的 DROP 权限。
语法
DROP [TEMPORARY] TABLE [IF EXISTS]
tbl_name [, tbl_name] ...
[RESTRICT | CASCADE]
DROP 操作对于每个表的操作,会删除表的定义和所有数据;若表有分区,分区的所有内容也会删除,切记要慎⽤。
此外,DROP 也会删掉表关联的所有触发器。
修饰符
DROP TABLE ⾛隐式提交事务,可以通过增加 TEMPORARY 修复符防⽌意外删除⾮ TEMPORARY 的表。
TEMPORARY 修饰符有以下⼏个作⽤:
语句仅作⽤在 TEMPORARY 表,即仅删除 TEMPORARY 表;
mysql中delete语句
语句不会进⾏隐式事务提交(implicit commit);
⽆需校验访问权限。因为临时表只有创建它的会话可见。
IF EXISTS 修饰符提供了针对⽆指定表返回错误的优化操作,具体如下:
如果不使⽤ IF EXISTS,DROP 语句将删除所有存在的表,对于不存在的指定表,返回错误信息;
如果使⽤ IF EXISTS,该语句同样删除所有已存在的表,对于不存在的指定表则忽略且不返回错误信息。
RESTRICT 和 CASCADE 修饰符在 MySQL 没有任何作⽤,它是为了兼容从其它数据库系统移植过来的 SQL。
⽰例
mysql> DROP TABLE knowledgedict_tbl;
与 DELETE 和 TRUNCATE 的异同
DROP 删除表的定义结构、所有数据及关联的触发器(trigger);
DELETE 删除⾏数据,可以是某⼏⾏,也可以是所有⾏;
TRUNCATE 仅删除表内所有数据。
相同点
三个语句都有删除数据的作⽤;
DELETE 和 TRUNCATE 都只是删除数据,不删除表定义结构等;
TRUNCATE 等同于不带 WHERE 条件的 DELETE 语句,即删除表内所有数据。
不同点
TRUNCATE 只删除表数据,不删除表本⾝,不能使⽤事务(即和事务⽆关);该语句默认情况下,将空间释放到 minextents 个 extent,除⾮使⽤ reuse storage;truncate 会将 high watermark 进⾏复位(即回到最开始处);
DELETE 属于数据操作语⾔(DML),不能⾃动提交事务,需要⼿动 commit 提交;这个操作会放到 rollback segement 中,事务提交之后才⽣效;如果有相应的 trigger,执⾏的时候将被触发;该语句不影响表所占⽤的 extent,high watermark 保持原位置不动;
DROP 属于数据定义语⾔(DDL),可以⾃动提交事务;语句将删除表的定义结构、数据、被依赖的约束(constrain)、触发器(trigger)、索引(index);⽽依赖于该表的存储过程和函数将保留,但是置为 invalid 状态;此外,DROP 将表所占⽤的空间全部释放;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。