关于sql数据库的约束

约束条件在数据库中的使用。

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);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值