【MySQL SQL语句】DROP TABLE简述

本文简述了MySQL中的DROP TABLE语句,用于删除一个或多个表。使用时需谨慎,因为这将删除表定义、所有数据以及与表相关的分区和触发器。DROP TABLE IF EXISTS用于避免表不存在时的错误,而TEMPORARY关键字则用于删除临时表,不会影响其他会话。RESTRICT和CASCADE关键字涉及到外键约束,CASCADE允许级联删除,RESTRICT则限制更新或删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标准语法:

DROP [TEMPORARY] TABLE [IF EXISTS]
    tbl_name [, tbl_name] ...
    [RESTRICT | CASCADE]

DROP TABLE:删除一个或多个表(你必须对每个表具有DROP权限)。

注意: 使用此语句时要小心操作!

  • 对于每张表,该语句删除这张表的定义(table definition)、该表所有数据(all table data);
  • 如果表已存在分区,该语句将删除这张表的定义(table definition)、该表所有分区、存储在分区上的所有数据、以及所有与该表有关联的分区;

删除表也会删除该表的所有触发器。DROP TABLE 将会导致隐式提交,除非和TEMPORARY关键字一起使用。

PS:删除表时,不会自动删除专门为该表赋予的权限,它们必须手动删除。


IF EXISTS:如果删除表不存在,就需要使用此关键字,否则将会报错。

  • 没有使用 IF EXISTS,如果表不存在,将返回异常;
  • 有使用 IF EXISTS,如果表不存在,将生成一个NOTE日志,这个日志可以使用 SHOW WARNINGS 查看;

IF EXISTS 也可用于在有 .frm 文件但没有存储引擎管理的表的异常情况下删除表(举例:如果在从存储引擎中删除表之后但在 .frm 文件删除之前发生服务器异常退出)。


TEMPORARY

  • 该语句仅删除TEMPORARY表;
  • 含有 TEMPORARY 关键字的语句,不会导致隐式提交;
  • 不会检查访问权限,TEMPORARY表仅对创建他的会话可见,因此无需检查;

包含 TEMPORARY 关键字的语句,有效的防止误删非TEMPORARY表


RESTRICT | CASCADE: 关键字什么也不做。

. cascade方式:在父表上update/delete记录时,同步update/delete掉子表的匹配记录。

. restrict方式:如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作,都是立即检查外键约束。




感谢阅读,下次再见。ヾ( ̄▽ ̄)ByeBye

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值