约束(NOT NULL、UNIQUE、CHECK、PRIMARY KEY、FOREIGN KEY)

蓝色底色的字为个人喜欢的名字,根据喜好进行修改

约束:用于确保数据符合业务规则的一种手段

常见的约束类型包括非空约束、唯一约束、检查约束、主键约束和外键约束

非空约束(NOT NULL):非空约束要求某列的数据不能为空

唯一约束(UNIQUE):唯一约束要求某列的数据必须唯一,但允许为空。唯一约束可以作用于单列或多列(全部列相同视为不唯一)

检查约束(CHECK):检查约束用于限制某列的取值范围或格式

主键约束(PRIMARY KEY):主键约束要求主键列的数据必须唯一且不能为空。一个表中只能有一个主键,但一个主键可以包括多个列

外键约束(FOREIGN KEY):外键约束用于建立两个表之间的关系,确保子表中的某列值必须在父表的主键或唯一键中存在

列级约束有六种:默认约束(多个约束默认约束 DEFAULT 写最前面)、非空约束、唯一约束、检查约束、主键约束和外键约束

表级约束有四种:唯一约束、检查约束、主键约束和外键约束


在创建约束的时候可以给约束命名,如果不命名的话系统也会自动为约束命名

可以在创建表时直接添加列级约束

CREATE TABLE test(id int NOT NULL PRIMARY KEY,name VARCHAR2(10) UNIQUE,age DEFAULT 20 int CHECK(age > 18))

CREATE TABLE test(id int CONSTRAINT  constraint_name1 NOT NULL CONSTRAINT constraint_name2 PRIMARY KEY)

可以在创建表时直接添加表级约束

CREATE TABLE test(id int,CONSTRAINT test UNIQUE(id))

CREATE TABLE test(id int,CONSTRAINT test PRIMARY KEY(id))

可以在创建表之后追加列级约束

ALTER TABLE test MODIFY id NOT NULL

ALTER TABLE test MODIFY (id CONSTRAINT constraint_name NOT NULL);

可以在创建表之后追加表级约束

ALTER TABLE test ADD CONSTRAINT constraint_name PRIMARY KEY (id);

ALTER TABLE test ADD CONSTRAINT constraint_name UNIQUE (name);

ALTER TABEL test ADD CONSTRAINT constraint_name CHECK(age > 18);


重命名约束

查找约束名:SELECT * FROM SYS.ALL_CONSTRAINTS WHERE TABLE_NAME = UPPER('test')

ALTER TABLE test RENAME CONSTRAINT SYS_C0039231 to constraint_name 


禁用和启用约束

查找约束名:SELECT * FROM SYS.ALL_CONSTRAINTS WHERE TABLE_NAME = UPPER('test')

ALTLE TABLE test ENABLE CONSTRAINT constraint_name

ALTLE TABLE test DISABLE CONSTRAINT constraint_name


删除约束

查找约束名:SELECT * FROM SYS.ALL_CONSTRAINTS WHERE TABLE_NAME = UPPER('test')

ALTER TABLE test DROP CONSTRAINT constraint_name CASCADE

 

posted @ 2025-06-03 18:56  wwwwxxxx  阅读(52)  评论(0)    收藏  举报