概念:设置输入值需要满足的要求
定义规则:设置字段的规则
确保完整性:数据的精确性和可靠性,防止错误或者无效的信息
创建表时设置非空约束
CREATE TABLE table_name(
column_name datatype NOT NULL,xxx
);
修改表时添加非空约束
ALTER TABLE table_name MODIFY column_name datatype NOT NULL;
这样修改时需要确保表中数据现处于非空;否则会报错。
修改表时去除非空约束
ALTER TABLE table_name MODIFY column_name datatype NULL;
作用:确保表当中每一行数据的唯一性
特点:非空、唯一
一张表只能设计一个主键约束
主键约束可以由多个字段构成(复合主键或联合主键)
约束可在user_constraint表中查询。
在创建表时设置主键约束
第一种方法:(列级)
CREATE TABLE table_name (
column_name datatype PRIMARY KEY,…
);
第二种方法:(表级)
CONSTRAINT constraint _name PRIMARY KEY(column1,column2,…);
例子:CREATE TABLE userinfo_p1(
id number(6,0),
username varchar2(60),
userpwd varchar2(20),
CONSTRAINT pk_id PRIMARY KEY(id,username)
);
在修改表时添加主键约束
ALTER TABLE table_name ADD CONTRAINT constraint_name PRIMARY KEY(column_name1,…);
操作主键约束
更改主键约束名称
ALTER TABLE table_name RENAME CONSTRAINT old_name TO new_name;
更改主键约束状态
ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT constraint_name;
可从user_constraint表中的status查看主键状态。
删除主键约束
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
ALTER TABLE table_name DROP PRIMARY KEY[CASCADE];
涉及两个表之间的约束
在创建表时设置外键约束
方法一:(列级)
CREATE TABLE table1(
column_name datatype PEFERENCES table2(column_name),
…
);
其中table1为从表,table2为主表
方法二:(表级)
CONSTRAINT constraint_name FOREIGN KEY(column_name1) REFERENCES table_name(column_name2)[ON DELETE CASCADE]
constraint_name:外键约束的名字
column_name1:从表字段名
column_name2:主表字段名
ON DELETE CASCADE:级联删除。当主表数据被删除时,相对应的从表数据也会被删除。
例子:
CREATE TABLE userinfo_f2(
id varchar2(10) primary key,
username varchar2(20),
typeid_new varchar2(20),
constraint fk_typeid_new foreign key(typeid_new) references typeinfo(typeid)
);
在修改表时添加外键约束
ALTER TABLE table_name1 ADD CONTRAINT constraint_name FOREIGN KEY(column_name1) REFERENCES table_name2(column_name2) [ON DELETE CASCADE];
例子:
ALTER TABLE userinfo_f4 ADD CONTRAINT fk_typeid_alter FOREIGN KEY(typeid_new) REFERENCES typeinfo(typeid);
操作外键约束
更改外键约束名称
ALTER TABLE table_name RENAME CONSTRAINT old_name TO new_name;
更改外键约束状态
ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT constraint_name;
可从user_constraint表中的status查看主键状态。
删除外键约束
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
作用:保证字段值的唯一性
唯一约束和主键约束的区别:
在创建表时设置唯一约束
方法一:(列级)
CREATE TABLE table_name(
column_name datatype UNIQUE,…
);
方法二:(表级)
CONSTRAINT constraint_name UNIQUE(column_name)
在修改表时添加唯一约束
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE(column_name);
操作唯一约束
更改唯一约束状态
ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT constraint_name;
可从user_constraint表中的status查看主键状态。
删除唯一约束
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
在插入数据时检查数据的规范;当数据不合法时会报错
在创建表时设置检查约束
方法一:(列级)
CREATE TABLE table_name(
column_name datatype CHECK(expressions),…
);
方法二:(表级)
CONSTRAINT constraint_name CHECK(expressions)
在修改表时添加检查约束
ALTER TABLE table_name ADD CONSTRAINT constraint_name CHECK(expressions);
操作检查约束
更改检查约束状态
ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT constraint_name;
可从user_constraint表中的status查看主键状态。
删除检查约束
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
主键约束:每张表只能有一个,可以由多个字段构成
外键约束:涉及两个表之间的关系
在创建表时设置约束,非空约束只能在列级设置,不能在表级设置;且无约束名称。
在删除约束时,
非空约束:ALTER TABLE table_name MODIFY column_name datatype NULL;
其他约束:ALTER TABLE table_name DROP CONSTRAINT constraint_name;