ORACLE_约束(主键 唯一键 )

一.主键约束 //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

猜你喜欢

转载自blog.csdn.net/qq_39663113/article/details/82889604