一、第一个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)是外键表和字段
继续阅读与本文标签相同的文章
-
吉利缤越,液晶仪表盘,运动座椅,L2级别自动驾驶,8秒破百
2026-05-18栏目: 教程
-
苏泊尔破壁机:技术革新 家族合力
2026-05-18栏目: 教程
-
OpenStack Train版本今日正式发布并开放下载
2026-05-18栏目: 教程
-
文在寅:八年后将韩国打造成全球第一个自动驾驶国家
2026-05-18栏目: 教程
-
Android Studio运行Hello World程序
2026-05-18栏目: 教程
