SQL 怎样删除有外键约束的表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 怎样删除有外键约束的表相关的知识,希望对你有一定的参考价值。

参考技术A

1、自动生成所有的DROP语句,将其中的MyDatabaseName替换成你的数据库名称:

SELECT concat('DROP TABLE IF EXISTS ', table_name, ';')

FROM information_schema.tables

WHERE table_schema = 'MyDatabaseName'; 

2、然后,在生成的代码前后添加下面设置FOREIGN_KEY_CHECKS变量的语句:

SET FOREIGN_KEY_CHECKS = 0

-- DROP语句

SET FOREIGN_KEY_CHECKS = 1;

扩展资料:

外键约束可双击关系线添加外键约束,外键约束有四种不同的选项:CASCADE, SET NULL, NO ACTION, RESTRICT。

1、CASCADE : 从父表中删除或更新对应的行,同时自动的删除或更新自表中匹配的行。[ON DELETE CANSCADE和ON UPDATE CANSCADE都被InnoDB所支持。]

2、SET NULL: 从父表中删除或更新对应的行,同时将子表中的外键列设为空。[注意,这些在外键列没有被设为NOT NULL时才有效。ON DELETE SET NULL和ON UPDATE SET SET NULL都被InnoDB所支持。]

3、NO ACTION: InnoDB拒绝删除或者更新父表。

4、RESTRICT: 拒绝删除或者更新父表。[指定RESTRICT(或者NO ACTION)和忽略ON DELETE或者ON UPDATE选项的效果是一样的。]

mysql清空有外键关联的表

第一种:(不要外键约束)

手动删除外键约束;

删除表数据

 

第二种:(保留外键约束)

SET FOREIGN_KEY_CHECKS = 0;   
TRUNCATE TABLE 表名;  
SET FOREIGN_KEY_CHECKS = 1; 

----------------------------------------------------------------------------------------

TRUNCATE     清空数据  (还原主键,自增的ID会重新从1开始)

DELETE   删除数据   (删除数据,自增的ID会继续递增)
---------------------
作者:steve涛
来源:CSDN
原文:https://blog.csdn.net/qq_38872310/article/details/79424383
版权声明:本文为博主原创文章,转载请附上博文链接!

以上是关于SQL 怎样删除有外键约束的表的主要内容,如果未能解决你的问题,请参考以下文章

MySQL插入数据因外键约束失败?

如何修改数据库中主外键约束的数据?

有外键约束的时候我们应该怎么样写入数据呢

SQL表与表之间建立外键约束之后,怎么建立连级更新和删除?

有外键约束的表,删除父表的数据,会出现哪几种情况?

MySQL 如何删除有外键约束的表数据