SQL CHECK 约束。
CHECK 约束用于限制列中的值的范围。
如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
如果对一个表定义CHECK约束,那么此约束会在特定的列中对值进行限制。
--删除表
drop table temp
--创建表
CREATE TABLE temp (flag NUMBER(1))
--增加约束
ALTER TABLE temp ADD CONSTRAINT ck_temp_flag CHECK
(flag=1 or flag=0)
--测试效果版
insert into temp values(1)
insert into temp values(0)
insert into temp values(1)
--测试效果(约束禁止插入数据),提示权:违反检查约束条件
insert into temp values(2)
insert into temp values(3)
SQL CHECK Constraint on CREATE TABLE。
下面的 SQL 在 "Persons" 表创建时为 "Id_P" 列创建 CHECK 约束。CHECK 约束规定 "Id_P" 列必须只包含大于 0 的整数。
My SQL:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (Id_P>0)
)
扩展资料:
不同数据库的约束写法:
SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
Id_P int NOT NULL CHECK (Id_P>0),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
如果需要命名 CHECK 约束,以及为多个列定义 CHECK 约束,请使用下面的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
)
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')
撤销 CHECK 约束。
如需撤销 CHECK 约束,请使用下面的 SQL:
SQL Server / Oracle / MS Access:
ALTER TABLE Persons
DROP CONSTRAINT chk_Person
语法:alter
table
表名
add
constraint
约束名
具体约束类型
字段名
例如给表A的字段StuNo添加一个主键约束(简写PK)
alter
table
A
add
constraint
PK_StuNo
primary
key(StuNo)
例如给表A的字段Sex添加一个检查约束(简写CK)
alter
table
A
add
constraint
CK_Sex
check(Sex>18
and
Sex<40)
例如给表B的字段StuNo添加一个外键约束(简写FK)
外键是来自于A表的主键
alter
table
B
add
constraint
FK_StuNo
foreign
key(StuNo)
references
A(StuNo)
基本五个约束的语法就这样、很简单的
注意一点:上面那个约束名首先是约束类型的简写,例如PM_、FK_、CK_等、后面可以自己定义
在这里我为了好区分是那个字段的约束我就写的哪个字段名了,希望你能看懂~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)