怎么在mysql数据库删除表

嗯...删除 MySQL 表...需要小心。

首先...您需要连接到数据库...例如使用命令行...或Workbench。

只要输入这个命令:mysql -u username -p
然后你会被要求输入你的密码...输入后...
接下来,选择你想要使用的库...例如:USE test_db;
然后...你应该使用DROPTABLE...这个命令...
例如,如果你想删除一个名为DPT_LE的表,就叫DPT_LE。

my_table;
输入...
MySQL会告诉你...问OK...表示已经删除了。

但是如果表不存在怎么办?它会报错...比如ERROR 1 05 1 (4 2 S02 )...你要注意这一点。

点!什么是删除表...它是不可逆的!
数据全部消失了...将其扔进回收站是没有意义的...永远消失了!
所以...您需要...您需要先备份!
使用mysqldump准备...或者直接导出SQL文件...
还有一点很重要!外键!
看看...是否有其他表...指向您要通过外键删除的表?
比如...一个parent_table...有一个外键指向my_table...
那么你不能直接删除my_table!
您必须先删除父表...或者...先删除外键...
或者...您可以先禁用外键检查...但这...不推荐...
只需键入:SET FOREIGN_KEY_CHECKS = 0;
删除表后...然后运行:SET FOREIGN_KEY;这个...
删除表...还可能影响其他东西...
比如...一些视图...或者存储过程...可能与这个表相关...
删除表...这些东西可能无法使用...你应该检查...
另外...如果这个表...被其他事务锁定...或者有人正在使用它...
那么你应该先等待解锁...检查它是否被锁定?点击:SHOW PROCESSLIST;
看看什么连接ID正在等待这个表...您可以强制它终止...
但这...非常危险...小心使用!
安全提示:
删除前...请确保表名正确...
点击:DISPLAY TABLE AS "您要删除的表的名称";
看看是否有...如果有,则继续...如果没有,不要删除。

另外...如果你使用的是InnoDB引擎...它支持事务...
你可以尝试在事务中删除...如果发现删除错误...你可以回滚...
但是DROPTABLE命令...会提交事务...
所以...这个回滚可能不起作用...
你必须有权限OP 你必须最终有权限...否则你不能...
你怎么知道你是否有权限 Type: SHOW GRANTS;
看好用户名...如果有GRANT...
如果没有GRANT就申请...或者使用授权帐户进行操作。

一个小例子:
我想删除一个名为old_table的表...
首先连接:mysql -u root -p 库:使用test_db; 检查表是否有:SHOW TABLE AS 'old table'; 如果有...删除:DROPTABLE old_table; 再看一遍:SHOW TABLE AS 'old_table'; 不再了...我刚刚删除了它。

就是这个过程...注意陷阱...数据没了也不用担心。

mysql删除表的语句

昨晚调试代码的时候,突然发现数据库里有一个废弃的表,叫temp_data,名字看上去是临时的。
我输入了 DROPTABLEIFEXISTS temp_data;,结果是“表‘test.temp_data’不存在”,这让我的心漏了一拍——幸运的是我添加了 IFEXISTS。
这让我想起上周我帮助同事处理的事情。
他删除了表,没有添加IFEXISTS,结果整个生产库卡了一个下午。

等等,那是另一回事。
他当时使用的是InnoDB引擎,花了两个小时才恢复数据。
最后只好请运维打日志。
那么虽然MyISAM更容易恢复,但是谁敢随便用呢?突然想到外键约束的问题。
例如,users 表与orders 表相关。
删除之前,必须先使用ALTER TABLE命令DROP FOREIGN KEY fk_user_id;,或者使用DROPTABLE table_name CASCADE; (虽然InnoDB不支持)。

我最担心的是权限问题。
记得有一次运维新同学忘记了root密码。
他只需授予 GRANTT 权限即可删除系统表。
现在我们所有的数据库操作都在堡垒机上完成,甚至FLUSHPRIVILEGES的执行也需要授权表。

说实话,我有一个习惯,就是每次删除表之前都会备份一下表,就是怕有一天MySQL出问题。
比如order_items表被误删,当时备份文件只有1 0MB,花了三个小时才恢复……