有主从表关系的两张表
--delete from 表名 where 条件; 满足条件的删除,如果没有条件,默认删除全部
--删除数据如果当前的表作为主表存在,需要考虑当前要删除的数据是否有被从表引用,如果有 3 中解决方式
-- 默认先删除从表中引用了数据,删除主表的这个数据
-- on delete set null
-- on delete cascade
--删除表 从表可以直接删除 删除的是主表
--先删除所有的从表,再删除主表
--删除主表的同时删除主从表之间的主外键约束 cascade constraint
--1.删除表时候
--1)默认先删除从表后删除主表 2)执意要删除主表删除主表并同时删除主外键约束 drop table sxt_class cascade constraints;
drop table sxt_class cascade constraints; --constraints 是約束條件的意思
--2.删除主表中的数据的时候, 删除从表数据可以直接删除
--这个主表数据如果没有被从表中的数据引用,可以直接删除
--这个主表数据如果已经被从表中的数据引用,需要处理
--1) 先删除从表中引用了的数据 再删除主表的这个数据
--2) 添加外键约束的时候 on delete set null,当主表数据被删除时,从表引用这条数据的外键字段值为null 删除时设置字段为空 --3) 添加外键约束的时候 on delete cascade删除主表数据的时候级联删除从表中引用了的这些数据 ,删除时设置整行数据空
create table sxt_student(
--主键约束 (非空+唯一)
sid number(5) primary key,
--非空约束 not null
--constraints sname_not_null這是設置如果報錯提示消息會告訴你那個字段錯了,起個別名
sname varchar2(4 char) constraints sname_not_null not null,
cid number(5),
constraints fk_sxt_class_cid foreign key(cid) references sxt_class(cid) on delete cascade--on delete set null
)