约束(constraint)约束是表级的强制规定。
有以下五种约束:
NOT NULL :非空 (只能是列级约束)
UNIQUE :unique 唯一约束
PRIMARY KEY : primary key :主键约束
FOREIGN KEY :foreign key :外键约束
CHECK :check 检查约束
列级约束和表级约束:
Create table emp(
Name varchar2(6) not null <---列级约束
Empno number(2),
CONSTRAINT 约束名称 约束内容 <--表级约束(表最后设置的约束)
)
约束命名习惯:表名_字段名_约束类型
例:
1,constraint emp_email_uk unique (email);
2,constraint dept_id_pk primary key (department_id);
3,constraint emp_dept_fk foreign key (department_id) references departments(department_id);
4,constraint emp_salary_ck check (salary > 0);
作用范围: ①列级约束只能作用在一个列上 ②表级约束可以作用在多个列上(当然表级约束也 可以作用在一个列上)
• 定义方式:列约束必须跟在列的定义后面,表约 束不与列一起,而是单独定义。
• 非空(not null) 约束只能定义在列上
添加约束的语法
使用 ALTER TABLE 语句: alter table
添加或删除约束,但是不能修改约束
有效化或无效化约束
添加 NOT NULL 约束要使用 MODIFY 语句
通过alter命令为表添加约束,例:
1.为两个表添加主键
person表pid为主键
alter table person add constraint person_pid_pk primary key(pid);
book表bid为主键
alter table book add constraint book_bid_pk primary key(bid);
2.为person表中的tel添加唯一约束
alter table person add constraint person_tel_uk unique(tel);
3.为person表中的age添加检查约束
alter table person add constraint person_age_ck check(age between 0 and 150);
7.删除约束
alter table person drop constraint unique(tel);
alter table book drop constraint person_book_pid_fk;
8.启用约束
alter table book enable constraint person_book_pid_fk;
9.禁用约束
alter table book disable constraint person_book_pid_fk;