一.主键约束 //ALTER TABLE * ADD CONSTRAINT * PRIMARY KEY (*)
1.外部定义:
ALTER TABLE STUDENT ADD CONSTRAINT PK_ID PRIMARY KEY(ST_ID);
2.行级定义
CREATE TABLE STUDENT(
ST_ID NUMBER(4) PRIMARY KEY ,
..........
);
3.表级定义:
CREATE TABLE STUDENT(
ST_ID NUMBER(4) ,
..........,
CONSTRAINT PK_ID PARIMARY KEY (ST_ID)
);
二.UNIQUE 唯一约束 //约束此字段内容不可以相同,但允许为空。 ALTER TABLE * ADD CONSTRAINT * UNIQUE(*)
1.外部定义
ALTER TABLE STUDENT ADD CONSTRAINT UN_NAME UNIQUE(ST_NAME);
2.表级定义
CREATE TABLE STUDENT(
ST_ID NUMBER(4) ,
ST_NAME VARCHAR2(20) CONSTRAINT UN_ST_NAME UNIQUE,
.....
)
3.行级定义
CREATE TABLE STUDENT(
ST_ID NUMBER(4) ,
ST_NAME VARCHAR2(20),
.....,
CONSTRAINT UN_ST_NAME UNIQUE (ST_NAME)
)
三.删除约束 ALTER TABLE * DROP CONSTRAINT *
ALTER TABLE STUDENT DROP CONSTRAINT PK_ST_ID;
四.非空约束 NOT NULL //ALTER TABLE * MODIFY * *
ALTER TABLE STUDENT MODIFY ST_NAME NOT NULL
表级定义:
CREATE TABLE STUDENT(
ST_NAME VARCHAR2(20) NOT NULL,
......,
)
五.检查约束 CHECK //检查的内容允许为空
外部定义:ALTER TABLE * ADD CONSTRAINT * CHECK(*=*)
ALTER TABLE STUDENT ADD CONSTRAINT CHECK_ST_NAME CHECK(ST_NAME='TOM' AND ST_NAME IS NOT NULL)
表级定义:
CREATE TABLE STUDENT(
ST_NAME VARCHAR2(20) CHECK(ST_NAME='TOM'),
......
)
六.外键约束 FOREIGN KEY //用来强制两个表的关系
外键:将要引用父表列中的列
引用键:被外键引用的子表中的主键或唯一键
CREATE TABLE C_CLASS(
C_ID NUMBER(4) PRIMARY KEY,
C_NO NUMBER(4) UNIQUE,
C_TEACHER VARCHAR2(20)
)
CREATE TABLE T_STUDENT(
S_ID NUMBER(4),
S_NO NUMBER(4),
C_NO NUMBER(4),
S_NAME VARCHAR2(20)
)
外部定义:ALTER TABLE * ADD CONSTRAINT * FOREIGN KEY() REFERENCES *(*)
ALTER TABLE T_STUDENT ADD CONSTRAINT FK_ST_NO FOREIGN KEY(C_NO) REFERENCES C_CLASS(C_NO)
定义外键:级联删除
ON DELETE CASCADE //删除主表数据时顺带删除所对应的从表数据
ALTER TABLE T_STUDENT ADD CONSTARINT FK_ST_NO FOREIGN KEY(C_NO) REFERENCES C_CLASS(C_NO) ON DELETE CASCADE
ON DELETE SET NULL //删除主表数据时将从表对应的外键的值设置为空
ALTER TABLE T_STUDENT ADD CONSTRAINT FK_ST_NO FOREIGN KEY(C_NO) REFERENCES C_CLASS(C_NO) ON DELETE SET NULL