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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-03
拥有主键的表称为主表,拥有外键的表称为从表,从表可以直接删除,不受限制,但主表无法在从表还存在的情况下直接删除。
另外,根据楼主的意思,我猜想你可能想问的是有外码关联的数据删除的问题。以下简述:
通常情况下,从表中外键所在字段的数据取值只能取主键中存在的值或者取空值,从表中的数据可以随时删除,而主表中的数据如果被从表所参照,则不能直接删除,如果想直接删除主表中被参照的数据,需要在创建外键时指定ON DELETE CASCADE或者ON DELETE SET NULL,即
FOREIGN KEY(从表中的某个字段) REFERENCES 主表(主键) ON DELETE CASCADE
或者
FOREIGN KEY(从表中的某个字段) REFERENCES 主表(主键) ON DELETE SET NULL
其中第一种方法表示删除主表中的数据时,从表中对应数据一起被强制删除;
第二种方法表示删除主表中的数据时,从表中对应数据设置为NULL
最后要注意的一点,这两个短语并非所有数据库管理系统都支持,印象中DB2、Oracle和SQL Server都支持,MySQL没试过,不知道你用哪种数据库,最好在你的系统中亲自试一下。
以上仅供参考。本回答被网友采纳
第2个回答  推荐于2017-10-03

删除语句如下:

 
alter table 表名 drop constraint 外键约束名

 

使用如下SQL语句查询出表中外键约束名称:

 select name   

 from  sys.foreign_key_columns f join sys.objects o on f.constraint_object_id=o.object_id 

where f.parent_object_id=object_id('表名')

各个数据库有细微区别,以上提供的为sqlserver的

第3个回答  推荐于2018-03-24
删除外键语句:
现删除关联的外键名,才能再删除外键字段;
alter table 表名 drop foreign key 外键关联名;
alter table 表名 drop column ‘列名’本回答被网友采纳