oracle数据库中提供的5种约束

 
约束作用:用来保持数据的完整性,防止无效数据进入到数据库中。
oracle数据库中提供的5种约束,都是限定某个列或者列的组合的。
1、主键约束PRIMARY
KEY):
在一个表中能唯一的标识一行。主键可以限定在多个列上。
3、唯一键约束UNIQUE
key):在一个表中能唯一的标识一行,唯一键也可以限定在多个列上。
主键和唯一键的区别:
a、一个表中最多只能有一个主键。可以多个唯一键。
b、主键所限定的列不能为null,唯一键所限定的列可以为null.
2、外键约束FOREIGN
key):
引用表:有外键约束的列所在的表。
被引用表:外键所引用的列。被引用的列只能是主键或者唯一键。
4、非空约束NOT
null):表示该列上的数据不能有null值。
5、检查性约束check):表示该列上的数据必须满足某一个条件表达式。

如何创建约束:
1、在创建表的同时创建约束
a.列级别约束:在每个列写完之后写约束。
CREATE TABLE t_08132id NUMBER10) PRIMARY
KEY
,
NAME CHAR10) NOT
NULL,
gender CHAR2) CHECK gender IN
‘男’,’女’)),
email CHAR20)
UNIQUE
)
INSERT INTO t_08132
VALUES1,’a’,’男’,’1@neusoft.com’)
INSERT INTO t_08132
VALUES2,’a’,’男’,’2@neusoft.com’)
INSERT INTO t_08132
VALUES3,’c’,’男’,’3@neusoft.com’)
INSERT INTO t_08132
VALUES4,’d’,”,’4@neusoft.com’)
INSERT INTO t_08132
VALUES5,’e’,’妖’,’5@neusoft.com’)
//外键约束
CREATE TABLE t_08133 id NUMBER10) PRIMARY
KEY
,
NAME CHAR10) NOT
NULL,
deptno NUMBER2) REFERENCES
deptdeptno)
)
INSERT INTO t_08133
VALUES1,’a’,20)
//给约束命名
CREATE TABLE t_08134id NUMBER10)
CONSTRAINT t4_id_pk PRIMARY KEY
,
NAME CHAR10) CONSTRAINT t4_name_nn NOT
NULL,
gender CHAR2) CONSTRAINT t4_gen_ck CHECK
gender IN
‘男’,’女’)),
email CHAR20) CONSTRAINT t4_em_uk
UNIQUE,
deptno NUMBER2) CONSTRAINT t4_deptno_fk
REFERENCES
deptdeptno)
)
INSERT INTO t_08134
VALUES5,’e’,’男’,’5@neusoft.com’,NULL)
INSERT INTO t_08134
VALUES6,’e’,’男’,’6@neusoft.com’,NULL)
b.表级别约束:在所有列写完之后写约束。注意,notnull约束不能写在表级别上。
CREATE TABLE t_08135id
NUMBER10) ,
NAME CHAR10) CONSTRAINT t5_name_nn NOT
NULL,
gender CHAR2)
,
email CHAR20)
,
deptno NUMBER2)
,
CONSTRAINT t5_id_pk PRIMARY KEY
ID),
CONSTRAINT t5_gen_ck CHECK gender IN
‘男’,’女’)),
CONSTRAINT t5_em_uk
UNIQUEemail),
CONSTRAINT t5_deptno_fk FOREIGN KEY deptno)
REFERENCES
deptdeptno)
)
约束的名字:一般规则
约束所在的表_约束所在的列_约束类型
emp_empno_pk,通常只给主键、外键、唯一键命名。

2、在创建表之后创建约束
语法:
Alter
TABLE 表名 ADD [CONSTRAINT 约束名] 约束类型 [列名列表)]
CREATE TABLE t08161 ID
NUMBER,NAME CHAR10),sex CHAR2) ,email CHAR10),deptno
NUMBER)
//在ID字段上添加主键约束
ALTER TABLE t08161 ADD CONSTRAINT t1_id_pk PRIMARY
KEYID)
//在sex字段上添加检查性约束
ALTER TABLE t08161 ADD CONSTRAINT t1_email_ck
CHECK sex IN ‘男’,’女’))
//在email上添加唯一性约束
ALTER TABLE t08161 ADD
CONSTRAINT t1_email_uk UNIQUE
email)
//在deptno上添加外键约束,引用于dept的deptno字段。
ALTER TABLE t08161 ADD
CONSTRAINT t1_deptno_fk FOREIGN KEY deptno) REFERENCES
deptdeptno)
//在name上添加非空约束
ALTER TABLE t08161 ADD CONSTRAINT t1_name_nn
NOT NULL NAME) //加不上

ALTER TABLE t08161 MODIFY NAME
NULL
ALTER TABLE 表名 MODIFY 字段名 NULL/NOT NULL //通过该语法设置某一个字段为null或者not
NULL.
//练习:
创建表学生表,里面包含学号(主键),姓名(非空),年龄,入班日期,
班级编号(外键,引用于dept表部门编号)
要求,在创建完表之后建立约束。
CREATE
TABLE t08162 sno NUMBER ,sname CHAR10) ,sage NUMBER ,indate DATE,classno
NUMBER)
ALTER TABLE t08162 ADD PRIMARY KEY sno)
ALTER TABLE t08162 MODIFY
sNAME NOT NULL
ALTER TABLE t08162 ADD FOREIGN KEYclassno) REFERENCES
deptdeptno)
4、如何删除约束
ALTER TABLE 表名 DROP PRIMARY KEY|UNIQUE
列)|CONSTRAINT 约束名
ALTER TABLE t08162 DROP PRIMARY
KEY
练习:删除t08162上的classno上的外键约束
ALTER TABLE t08162 DROP CONSTRAINT
sys_c005467
5、约束的启用和禁用。
语法:
Alter TABLE 表名 Disable|ENABLE CONSTRAINT
约束名

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注