oracle数据库初步之约束

概述

1.  约束的作用:(1)定义规则(2)确保完整性(精确性和可靠性)

2.五个重要的约束:非空约束、主键约束、外键约束、检查约束、唯一约束。

非空约束

1.在创建表时设置非空约束
CREATE TABLE table_name(
column_name datatype NOT NULL,…
);

2.在修改表时设置非空约束
ALTER TABLE table_name
MODIFY column_name datatype NOT NULL;

3.在修改表时去除非空约束
ALTER TABLE table_name
MODIFY column_name datatype NULL;

主键约束

1.作用:确保表当中每一行数据的唯一性(非空唯一)
一张表只能设计一个主键约束
主键约束可以有多个字段构成(联合主键或复合主键)

2.在创建表时设置主键约束
CREATE TABLE table_name(
column_name datatype PRIMARY KEY,…
);
CREATE TABLE table_name(
column_name1 datatype,…
CONSTRAINT constraint_name
PRIMARY KEY(column_name1,…);
);
查看约束名称的数据字典user_constraints
查看约束的语句select constraint_name from user_constraintswhere table_name=’表名’;

3.在修改表时添加主键约束
ALTER TABLE table_name
ADD CONSTRAINT constraint_name
PRIMARY KEY(column_name1,…);

4.更改约束的名称
ALTER TABLE table_name
RENAME CONSTRAINT old_name
TO new_name;

5.删除主键约束
禁用约束与启用约束:ALTER TABLE table_name
DISABLE|ENABLE CONSTRAINT constraint_name;
查看约束状态:select constraint_name,status fromuser_constraints where table_name=’表名’;
删除约束:ALTER TABLE table_name
DROP CONSTRAINT constraint_name;
删除约束(主键专用):ALTER TABLE table_name
DROP PRIMARY KEY[CASCADE]; cascade级联

外键约束

1.在创建表时设置外键约束
在列级:CREATE TABLE table_1(从表)
(column_name datatype REFERENCES
table2(主表)(column_name),…);
注意:主从表中相应的字段必须是同一个数据类型,从表中外键字段的值必须来自主表中的相应字段的值,或者为null值。
在表级:CONSTRAINT constraint_name FOREIGNKEY(column_name)REFERENCES
table_name(column_name)[ON DELETE CASCADE](级联删除);

2.在修改表时添加外键约束
ALTER TABLE table_name
ADD CONSTRAINT constraint_name FOREIGN
KEY(column_name)REFERENCES
table_name(column_name)[ON DELETE CASCADE];

3.删除外键约束
禁用|启用约束:ALTER TABLE table_name
DISABLE|ENABLE CONSTRAINT constraint_name;
查看约束名类型和状态:selectconstraint_name,constraint_type,status from user_constraints wheretable_name='USERINFO_F4';
删除约束:ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

唯一约束

1.基本概念
作用:保证字段值的唯一性
唯一约束和主键约束的区别:主键字段值必须是非空的,唯一约束允许有一个空值,主键在每张表中只能有一个,唯一约束在每张表中可以有多个。

2.在创建表时设置唯一约束
列级:CREATE TABLE table_name
(column_name datatype UNIQUE,…);
表级:CREATE TABLE table_name
(column_name datatype,…
CONSTRAINT constraint_name
UNIQUE(column_name) );

3.在修改表时添加唯一约束
ALTER TABLE table_name
ADD CONSTRAINT constraint_name
UNIQUE(column_name);

4.删除唯一约束
禁用|启用约束:ALTER TABLE table_name
DISABLE|ENABLE CONSTRAINT constraint_name;
删除唯一约束ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

检查约束

1.基本概念
作用:表中的值更具有实际意义

2.在创建表时设置检查约束
列级:CREATE TABLE table_name
(column_name datatype CHECK(expressions),…);
表级:CREATE TABLE table_name
(column_name datatype,…
CONSTRAINT constraint_name
CHECK(expressions));

3.在修改表时添加检查约束
ALTER TABLET table_name
ADD CONSTRAINT constraint_name
CHECK(expressions);

4.删除检查约束
禁用|启用约束:ALTER TABLE table_name
DISABLE|ENABLE CONSTRAINT constraint_name;
删除约束:ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

总结(非空约束,主键约束,外键约束,唯一约束,检查约束):

1.主键约束,每张表中只能有一个,可以由多个字段构成

2.外键约束,唯一一个涉及两张表之间关系的一个约束

3.在创建表时设置约束,只有非空约束只能在列级设置,不能在表级设置,其他约束既可以在列级设置也可以在表级设置,而且非空约束是没有名字的

4.在修改表时添加约束,唯一一个和其他约束不同的约束即非空约束,通过修改字段实现

5.更改约束的名称,由于非空约束没有名称,所以不涉及更改名称,其他都可以,数据字典(user_constraints) RENAME CONSTRIANT old_name TO new_name

6.删除约束,非空约束特殊(修改字段,经NOT NULL改成NULL即可,MODIFY关键字),其他都可以通过两种方式分别禁用和删除约束

注意:除非空约束没有约束名以外,其他约束都有约束名,并尽量自定义约束名便于记忆与辨识。不论是否在同一张表,约束都不允许重名,这一点跟MySQL,SQL Server不同。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章