Oracle 11g系列:约束

前端之家收集整理的这篇文章主要介绍了Oracle 11g系列:约束前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Oracle 11g系列:约束

  约束是每个数据库必不可少的一部分,约束的目的在于保存数据的完整性。数据完整性是指数据的精确性和可靠性。数据库约束主要包括:主键约束、外键约束、唯一性约束、检查约束和默认值约束。

  1、主键约束

  主键约束可以保障数据完整性,防止数据表中的两条记录完全相同。通过主键输入查询条件,可以查询结果最多返回一条记录。

  主键被创建在一个或多个列上,通过这些列的值或者值的组合,唯一地标识一条记录。

  1>、创建主键约束

  主键约束作为表结构设计的一部分,一般在创建表的时候创建。创建主键约束使用关键字primary key。

  2>、查看主键约束

select table_name,constraint_name,constraint_type,status from user_constraints
where table_name='emp'
select constraint_name,table_name,column_name from user_cons_columns where constraint_nameSYS_C005121'

  3>、显示命名主键约束

CREATE TABLE EMP ( EMP_ID NUMBER CONSTRAINT PK_EMP PRIMARY KEY,EMP_NAME VARCHAR(20) )
NUMBER,0); line-height:1.5!important">20),KEY(EMP_ID) )

  4>、创建多列主键

KEY(EMP_ID,EMP_NAME) )

  5>、为表添加主键

ALTER TABLE EMP MODIFY (EMP_ID KEY)

  6>、为表添加多列主键

TABLE EMP ADD KEY(EMP_ID,EMP_NAME)

  7>、删除主键

DROP KEY

  DROP PRIMARY KEY用于删除表的主键,由于一个表的主键是唯一的,所以无须指定主键名。

CONSTRAINT PK_EMP

  DROP CONSTRAINT用于删除表的约束,一个表的约束可能有多个,所以必须指定约束的名称

  8>、启用/禁用主键

TABLE EMP DISABLE KEY
TABLE EMP ENABLE KEY

  9>、重命名主键约束名称

TABLE EMP RENAME CONSTRAINT SYS_C005245 TO PK_EMP

  2、外键约束

  外键与之间用于用于保证数据完整性,主键是针对单个表的约束,外键则描述了表之间的关系。

  1>、创建外键约束

TABLE CUSTOMERS
(
       CUSTOMER_ID CONSTRAINT PK_CUSTOMERS KEY(CUSTOMER_ID)
)
TABLE ORDERS
(
       ORDER_ID CONSTRAINT PK_ORDERS KEY(ORDER_ID)
)
TABLE ORDERS CONSTRAINT FK_ORDERS_CUSTOMERS FOREIGN KEY(CUSTOMER_ID) REFERENCES CUSTOMERS(CUSTOMER_ID)

  2>、查看外键

SELECT TALBE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE,R_CONSTRAINT_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME = ORDERS'

  3>、级联删除

  ON DELETE CASCADE选项指定创建的外键实现级联删除,即删除主表的记录时,字表中的子记录同时被自动删除删除子表记录的动作由Oracle数据自动实现的。

REFERENCES CUSTOMERS(CUSTOM) ON DELETE CASCADE

  4>、重命名外键约束

TABLE ORDERS RENAME FK_ORDERS_CUSTOMERS TO FK_ORDERS

  5>、启用/禁用外键

TABLE ORDERS MODIFY CONSTRAINT FK_ORDERS_CUSTOMERS DISABLE
CONSTRAINT FK_ORDERS_CUSTOMERS ENABLE

  在默认情况下,启用外键时,将会对已有的数据进行校验。可以使用NOVALIDATE选项,使Oracle不对已有数据进行校验,从而直接启用外键。

CONSTRAINT FK_ORDERS_CUSTOMERS ENABLE NOVALIDATE

  6>、删除外键

CONSTRAINT FK_ORDERS_CUSTOMERS

  3、惟一性约束

  1>、创建惟一性约束

TABLE USERS ( USER_ID USER_NAME VARCHAR2(100) UNIQUE )

  2>、添加惟一性约束

TABLE USERS CONSTRAINT UQ_EMAIL UNIQUE (EMAIL)

  3>、删除惟一性约束

CONSTRAINT UQ_EMAIL

  4>、重命名惟一性约束

TABLE USERS RENAME CONSTRAINT SYS_C005188 TO UQ_EMAIL

  5>、禁用/启用惟一性约束

TABLE USERS DISABLE CONSTRAINT UQ_EMAIL

  或:

TABLE USERS MODIFY CONSTRAINT UQ_EMAIL DISABLE

  4、检查约束

  检查约束对列值进行限制,将表中的一列或多列限制在某个范围内。

  1>、创建检查约束

TABLE STUDENTS ( STUDENT_ID score NUMBER,
    CONSTRAINT CK_score CHECK(score BETWEEN 0 AND 100) )

  2>、添加检查约束

TABLE STUDENTS CONSTRAINT CK_STUDENT_NAME CHECK (LENGTH(STUDENT_NAME) <= 4)
CONSTRAINT CK_SEX CHECK (SEX IN (','))

  5、默认值约束

  1>、添加默认值约束

TABLE ORDERS MODIFY QUANTITY DEFAULT 1

  2>、删除默认值

DEFAULT NULL
原文链接:/oracle/213298.html

猜你在找的Oracle相关文章