约束
定义:约束是ORACLE提供的自动保持数据库完整性的一种方法,它通过限制字段中数据、记录中数据和表之间的数据来保证数据的完整性。
分类:
a.列级约束:列级约束必须在列的定义后面
b.表级约束:表级约束不与列一起,而是单独定义的
完整性约束的基本语法格式:
[CONSTRAINT constraint_name(约束名)]<约束类型>、
说明:约束不指定名称时,系统会给定一个名称。
主键约束(primary key constraint)
用于定义基本表的主键,它是唯一确定表中每一条记录的标识符,其值不能为null也不能重复,以此来保证实体的完整性。表中主键只能有一个,但可以由多个列构成。
a.创建表时添加主键约束
Create table stuent(
Sid number(8,0),
Name varchar2(20),
Sex char(2),
Birthday date,
Addess varchar2(50),
Constraint sid_pk primary key(sid)
);
b.修改表时添加主键约束
alter table studet
add constraint sid_pk primary key(sid);
c.删除主键约束的方式
DROP PRIMARY KEY;
唯一性约束(unique constraint)
用于指定一个或者多个列的组合值具有唯一性,以防止在列中输入重复的值
注意事项:
a.使用唯一性约束的列允许为空值
b.一个表中可以允许有多个唯一性约束
c.可以把唯一性约束定义在多个列上
a.创建表时设置唯一性约束
Create table stuent(
Sid number(8,0),
Name varchar2(20),
Sex char(2),
Birthday date,
Addess varchar2(50),
Email varchar2(50) unique, //直接设置唯一性约束 会有一个默认名
Cardid varcha2(18),
Constraint uk_cardid unique(cardid) //设置唯一性约束并命名
);
b.修改表时添加唯一性约束
Alter table studnt
Add constraint uk_cardid unique(cardid);
默认约束(default constraint)
Create table stuent(
Sid number(8,0),
Name varchar2(20),
Cname varchar2(20) default "吴亦凡" //这里就是默认约束
Sex char(2),
Birthday date,
);
非空约束(not null consraint)
用于确保列不能为null,如果列定义了NOT NULL约束,那么当插入数据时,必须为该列提供数据;当更新列数据时,不能将其值设置为NULL。
非空(not null)属于列级约束
a.创建表时添加非空约束
Create table stuent(
Sid number(8,0),
Name varchar2(20) not null, //直接非空约束,会给一个默认名
Sex char(2) cnstraint nn_sex not null, //添加非空约束并命名为nn_sex
Birthday date,
Addess varchar2(50)
);
b.修改表时添加非空约束:(与其他约束有所不同)
修改其他约束语法格式:
ALTER TABLE table_name
ADD[CONSTRAINT constraint_name] constraint_type(column);
添加非空约束时语法格式:使用MODIFY语句
ALTER TABLE table_name
MODIFY (column_name datatype NOT ULL)
删除非空约束的方式
ALTER TABLE table_name
MODIFY column_name datatype NULL;
删除约束:
将约束无效化或激活(暂时性删除)
DISABLE | ENABLE CONSTRAINT constraint_name
将约束彻底删除
DROP CONSTRAINT constraint_name
删除主键约束的方式
DROP PRIMARY KEY;
删除非空约束的方式
ALTER TABLE table_name
MODIFY column_name datatype NULL;
检查约束(check constraint)
用于对输入列或者整个表中的值设置检查条件。以限制输入值,保证数据库的完整性。(如对性别的要求)
a.创建表时设置检查约束
Create table stuent(
Sid number(8,0),
Name varchar2(20),
Sex char(2) check(sex=’男’ or sex=’女’),
Birthday date,
Addess varchar2(50),
);
或者
Create table stuent(
Sid number(8,0),
Name varchar2(20),
Sex char(2),
Birthday date,
Addess varchar2(50),
Constraint ck_sex check(sex=’男’ or sex=’女’)
);
b.修改表时添加检查约束
Alter table stdentt
Add constraint ck_sex check(sex=’男’ or sex=’女’);
c.删除检查约束
禁用:alter table student disable constraint ck_sex;
彻底删除:alter table student drop constraint ck_sex;
外部键约束(foreign key constraint)
用于建立和加强两个表数据之间的链接的一列或多列。外间约束是唯一涉及两个表关系的约束
先创建的表叫主表 后创建的表叫从表 有一列的内容是相同的作为外键
设置外键约束的语法格式
a.列级约束
CREATE TABLE 从表
(column_name datatype REFERENCES
主表(column_name datatype)[ON DELETE CASCADE],...);
//这里的 ON DELETE CASCADE代表着是否级联删除
什么是级联删除?
删除包含主键值的行的操作,该值由其它表的现有行中的外键列引用。在级联删除中,还删除其外键值引用删除的主键值的所有行。
例如员工表中一项数据是部门ID,部门ID是部门表的主键,如果是级联删除,当删除了部门A的时候,会把所有属于部门A的员工都给删除。
b.表级约束(创建的是从表)
在表加入
CONSTRAINT constraint_name FOREIGN KEY(column_name)
REFERENCES 主表(column_name)[ON DELETE CASCADE]
创建表时设置外面约束(方法1)
主表:
Create table department(
Depid varchar2(10) primary key,
Depname varchar2(30)
);
从表:
Create table stuent(
Sid number(8,0),
Name varchar2(20),
Sex char(2),
Birthday date,
Addess varchar2(50),
Depid varchar2(10) references department(depid)
);
//Depid varchar2(10) references department(depid)
//Constraint fk_depid foreign key(depid)
//References department(depid)
//On delete cascade
创建表时设置外面键约束(方法2)
主表:
Create table department(
Depid varchar2(10) primary key,
Depname varchar2(30)
);
从表:
Create table stuent(
Sid number(8,0),
Name varchar2(20),
Sex char(2),
Birthday date,
Addess varchar2(50),
constraint fk_depid foreign key(depid)
references department(depid)
on delete cascade
);
外键约束注意事项:
a.设置外键约束时,主表的字段必须时主键列(或唯一列)
b.主从表中相应字段必须是同一数据类型
c.从表中外键字段的值必须来自主表中的相应字段的值,或者为null
修改表时添加外键约束
Alter table student
Add constraint fk_depid foreign key(depid)
References department(depid)
On delete cascad
1356

被折叠的 条评论
为什么被折叠?



