约束条件在数据库中的使用。
CHECK 约束用于限制列中的值的范围。
如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。
创建约束 如以下例子:
创建如下两个表:
create table kkk
(
tel char(13) primary key not null unique,
address char(10)
)
create table mmm
(
id BIGINT not null PRIMARY KEY auto_increment UNIQUE,
name VARCHAR(10),
address VARCHAR(30) DEFAULT '青海',
tel VARCHAR(20) CHECK (tel like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),
sex char(3) check (sex in ('男','女')),
mail VARCHAR(20) CHECK(mail LIKE '%@%.%'),
salary BIGINT check (salary between 1000 and 8000),
reward BIGINT check (salary+reward<=10000),
FOREIGN key (tel) REFERENCES kkk(tel)
)
以上表建立了约束。
撤销 CHECK 约束
SQL Server / Oracle / MS Access:
ALTER TABLE Persons
DROP CONSTRAINT chk_Person
MySQL:
ALTER TABLE Persons
DROP CHECK chk_Person
修改约束
SQL CHECK Constraint on ALTER TABLE
如果在表已存在的情况下为 "Id_P" 列创建 CHECK 约束,请使用下面的 SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CHECK (Id_P>0)
如果需要命名 CHECK 约束,以及为多个列定义 CHECK 约束,请使用下面的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
CONSTRAINT的约束用法
unique:
alter table diy_os add constraint unq_1 unique (id);
check :
alter table t add constraint chk_1 check (id in(1,2,3)); ==》id后面跟的是表达式
not null:(这个约束是列级约束,和上面的不同,上面的是表级)
alter table diy_os add constraint not_null check(id is not null);