ORACLE--外键约束练习

一、第一个oracle练习

建表,外键约束。

---学生表----

create table STUDENT(
sno NUMBER(4) PRIMARY KEY,
sname VARCHAR2(10),
age NUMBER(4)
);

---班级表---
create table CLASS(
ClassId NUMBER(4) PRIMARY KEY,
cname VARCHAR2(10),
sno NUMBER(4)
);

---成绩表-----
create table GRADE(
GRANO NUMBER(4) PRIMARY KEY,
grade NUMBER(10),
sno NUMBER(4) UNIQUE

);

--建立外键关系
alter table GRADE add constraint fk_GRADE_SNO foreign key(sno) references STUDENT(sno); 

--往学生表加数据
select * from STUDENT;
INSERT INTO STUDENT VALUES (1801,'mark',17);
INSERT INTO STUDENT VALUES (1802,'jack',15);
INSERT INTO STUDENT VALUES (1803,'lily',16);
INSERT INTO STUDENT VALUES (1804,'roy',15);
INSERT INTO STUDENT VALUES (1805,'karry',16);
INSERT INTO STUDENT VALUES (1806,'lay',17);

--往成绩表加数据
select * from GRADE;
INSERT INTO GRADE VALUES (11,77,1801);
INSERT INTO GRADE VALUES (12,87,1802);
INSERT INTO GRADE VALUES (13,90,1803);
INSERT INTO GRADE VALUES (14,85,1804);
INSERT INTO GRADE VALUES (15,58,1805);
INSERT INTO GRADE VALUES (16,72,1806);

 --查询
select * from GRADE for update;
 
 --删除表
drop table GRADE;

 --删除外键约束
ALTER TABLE GRADE drop constraint fk_GRADE_SNO;

二、约束语法

约束放置在表中,有以下五种约束:

       NOT NULL          非空约束C     指定的列不允许为空值
       UNIQUE             唯一约束U     指定的列中没有重复值,或该表中每一个值或者每一组值都将是唯一的
       PRIMARY KEY       主键约束P     唯一的标识出表的每一行,且不允许空值值,一个表只能有一个主键约束
       FOREIGN KEY       外键约束R     一个表中的列引用了其它表中的列,使得存在依赖关系,可以指向引用自身的列
       CHECK              条件约束C     指定该列是否满足某个条件

约束命名规则
       如果不指定约束名Oracle server 自动按照SYS_Cn 的格式指定约束名,也可手动指定,
       推荐的约束命名是:约束类型_表名_列名。
       NN:NOT NULL          非空约束,比如nn_emp_sal
       UK:UNIQUE KEY         唯一约束
       PK:PRIMARY KEY       主键约束
       FK:FOREIGN KEY       外键约束
       CK:CHECK             条件约束

三、外键约束

外键约束是用来维护从表和主表的引用完整性的,所以外键约束要涉及两个表。

           FOREIGN KEY: 在表级指定子表中的列
           REFERENCES: 标示在父表中的列
           ON DELETE CASCADE: 当父表中的列被删除时,子表中相对应的列也被删除
           ON DELETE SET NULL: 子表中相应的列置空

语法:

alter table 表1-表名 
add constraint 外键名称 foreign key (要设为外键的列名) 
references 表2-表名(与哪个表有关联) (表2中该列列名);

外键名:(一般外键名称为”fK_数据表_字段”)

例如:

alter table GRADE add constraint fk_GRADE_SNO foreign key(sno) references STUDENT(sno);

GRADE是主表   constraint 是约束   fk_GRADE_SNO是外键约束名 foreign key(sno) 中sno是GRADE的外键字段。

STUDENT(sno)是外键表和字段

猜你喜欢

转载自blog.csdn.net/tangweiee/article/details/85066164