您的当前位置:首页sql中批量删除带有外键的所有表

sql中批量删除带有外键的所有表

2023-11-09 来源:哗拓教育

--删除所有外键约束

DECLARE c1 cursor forselect ‘alter table [‘+ object_name(parent_obj) + ‘] drop constraint [‘+name+‘]; ‘from sysobjectswhere xtype = ‘F‘open c1declare @c1 varchar(8000)fetch next from c1 into @c1while(@@fetch_status=0)beginexec(@c1)fetch next from c1 into @c1endclose c1deallocate c1

 

2删除所有的表

DECLARE c2 cursor forselect ‘drop table [‘+name +‘]; ‘from sysobjectswhere xtype = ‘u‘open c2declare @c2 varchar(8000)fetch next from c2 into @c2while(@@fetch_status=0)beginexec(@c2)fetch next from c2 into @c2endclose c2deallocate c2

以前在oracle中经常遇到没法删掉数据库的问题(因为一个用户对应一个数据库),所以必须要删除表(要先删除外检约束),在重新生成, 今天在sql试了试,

成功了。

sql中批量删除带有外键的所有表

标签:

小编还为您整理了以下内容,可能对您也有帮助:

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

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选项的效果是一样的。]

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

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选项的效果是一样的。]

如何删除sql中带外键的表数据?

为什么一定要一句话呢?一个sql语句不能同时删除两张表,除非通过外键级联删除或者触发器,最正常的做法当然是写成2个sql语句,然后用一个trans来保证数据一致性,如果非要用一个sql语句,可以有一个变通方法,写一侧存储过程,删除两张表,然后写的一句sql是执行这个存储过程

如何删除sql中带外键的表数据?

为什么一定要一句话呢?一个sql语句不能同时删除两张表,除非通过外键级联删除或者触发器,最正常的做法当然是写成2个sql语句,然后用一个trans来保证数据一致性,如果非要用一个sql语句,可以有一个变通方法,写一侧存储过程,删除两张表,然后写的一句sql是执行这个存储过程

sql 删除带外键约束的表的语句是什么

1、创建主键表,test_class,并建立class_id字段为主键;

create table test_class(class_id number, class_name varchar2(20));

-- Create/Recreate indexes 

alter table TEST_CLASS

  add constraint P_CLASS_ID primary key (CLASS_ID)

  using index 

  tablespace USERS

  pctfree 10

  initrans 2

  maxtrans 255;

2、创建外键表,test_stu,其中字段class_id为test_class表的class_id字段;

create table test_stu(id number, class_id number);

-- Create/Recreate primary, unique and foreign key constraints 

alter table TEST_STU

  add constraint f_class_id foreign key (CLASS_ID)

  references test_class (CLASS_ID) on delete cascade;

3、两张表分别插入记录;

insert into TEST_CLASS values(1001,'语文');

insert into TEST_CLASS values(1002,'数学');

insert into TEST_CLASS values(1003,'英语');

insert into TEST_STU values(1,1001);

insert into TEST_STU values(2,1001);

insert into TEST_STU values(3,1002);

insert into TEST_STU values(4,1003);

4、查询TEST_STU表中的记录;select t.*, rowid from test_stu;

5、删除主表TEST_CLASS中class_id=1001的记录,会发现从表TEST_STU中class_id中的记录也被删除;

delete test_class where class_id = 1001;

commit;

select t.*, t.rowid from TEST_STU t

SQL如何直接批量删除表

SQL直接批量删除表的方法步骤:

所需工具原料:phpmyadmin。

1.数据操作前进行数据备份。

2.看需要删除表的时间段,即什么时间开始到什么时间截至。记录下数据表名称和时间字段名称。

3.点击上部"SQL"按钮,进行sql语句执行。

4.打开文本框中输入命定执行:

delete from wp_posts where `post_date` >='2010-01-01 00:00:00' and `post_date` < '2014-12-14 22:00:00:00'。

【命令语句意思】:从wp_posts数据表的post_date字段中检索文章创建日期在2010年1月1日0时和2014年12月14日22时之间的数据进行删除操作。

5.成功后点击上部“浏览”按钮查看,表被删除,sql执行语句成功。

删除指令解析:

1.全部删除:delete from table 。

2.部分删除:delete from table a where nuid in(select nuid from table B)。

注意事项:

1.进行数据库操作前须要进行数据库备份。

2.数据库操作是删除数据文本,图片等上传文件不会受到影响。

显示全文