外键约束

--创建一个班级表
create table classes(
  class_no   number(4) primary key,
  class_name varchar2(8) unique not null 
);

insert into classes(class_no, class_name)
values(1, '1102B');


insert into classes(class_no, class_name)
values(2, '1102A');


insert into classes(class_no, class_name)
values(3, '1103A');


--在学员表中加入一个班级编号列
alter table students
add(class_no number(4));


insert into students(stu_no, stu_name, 
gender, age, id_card, class_no)
values(7, '张佳乐', '男', 23, 431234567431234567, 1);


insert into students(stu_no, stu_name, 
gender, age, id_card, class_no)
values(8, '刘建', '男', 23, 431234567431234567, null);


--定义外键约束有两种方式
--直接定义
create table STUDENTS
(
  stu_no   NUMBER(4)  primary key,
  stu_name VARCHAR2(20) not null,
  gender   CHAR(2) not null,
  age      NUMBER(3),
  id_card  NUMBER(18),
  class_no NUMBER(4) references classes(class_no)
);


--添加外键约束时,被引用的表必须已经存在


alter table students
add constraints ch_age
check(age > 0 and age <= 120);


alter table students
add constraints ch_id_card
check(length(id_card) = 18);


alter table students
add constraints ch_gender 
check(gender='男' or gender='女');


--先创建表,再添加外键约束
--语法
--alter table 表名
--add constraints 约束名 
--foreign key(当前表的外键列名)
--references 被引用表(主键列名);
alter table students
add constraints fk_class_no 
foreign key(class_no)
references classes(class_no);

一般来说,除了非空约束,其它的几种约束,都是通过
alter table  的方式添加
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值