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

如题,有两张互相外键约束的表,想直接删除其中一个以及与其关联的外键,求sql语句,谢谢。以前用过这种方法,现在忘记怎么写了。顺便说下,创建外键的时候没有标注名字,所以先找... 如题,有两张互相外键约束的表,想直接删除其中一个以及与其关联的外键,求sql语句,谢谢。以前用过这种方法,现在忘记怎么写了。
顺便说下,创建外键的时候没有标注名字,所以先找外键删除然后删表的方法就不必了。
展开
 我来答
freechan10
2019-12-02 · TA获得超过2.9万个赞
知道小有建树答主
回答量:263
采纳率:68%
帮助的人:12.7万
展开全部

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

阿冬76
2014-10-03 · TA获得超过5028个赞
知道大有可为答主
回答量:2710
采纳率:88%
帮助的人:1093万
展开全部
拥有主键的表称为主表,拥有外键的表称为从表,从表可以直接删除,不受限制,但主表无法在从表还存在的情况下直接删除。
另外,根据楼主的意思,我猜想你可能想问的是有外码关联的数据删除的问题。以下简述:
通常情况下,从表中外键所在字段的数据取值只能取主键中存在的值或者取空值,从表中的数据可以随时删除,而主表中的数据如果被从表所参照,则不能直接删除,如果想直接删除主表中被参照的数据,需要在创建外键时指定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没试过,不知道你用哪种数据库,最好在你的系统中亲自试一下。
以上仅供参考。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
twvampire
推荐于2017-10-03 · TA获得超过3620个赞
知道大有可为答主
回答量:3029
采纳率:76%
帮助的人:2984万
展开全部

删除语句如下:

 
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的

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ccdewangpan
推荐于2018-03-24
知道答主
回答量:2
采纳率:100%
帮助的人:1737
引用twvampire的回答:
删除语句如下:
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的
展开全部
删除外键语句:
现删除关联的外键名,才能再删除外键字段;
alter table 表名 drop foreign key 外键关联名;
alter table 表名 drop column ‘列名’
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式