怎么用sql命令语句写check约束

怎么用sql命令语句写check约束,第1张

用sql命令语句写CHECK约束的格式为CHECK (约束条件)。

如:

CREATE TABLE 成绩信息(

成绩编号 int NOT NULL PRIMARY KEY,

学生编号 nchar(50) NOT NULL,

考试编号 nchar(10) NOT NULL,

课程编号nchar(10) NOT NULL,

分数 nchar(10) NOT NULL CHECK (分数in(between '0' and '100'))

在数据库中,CHECK 约束是指约束表中某一个或者某些列中可接受的数据值或者数据格式。CHECK约束可以应用于一个或者多个列,也可以将多个CHECK 约束应用于一个列。当除去某个表时,对这个表的CHECK 约束也将同时被去除。

扩展资料:

CHECK 约束不接受计算结果为 FALSE 的值。因为空值的计算结果为 UNKNOWN,所以如果赋值表达式中存在这些值,则约束可能会被覆盖而不起作用。如果 CHECK 约束检查的条件对于表中的任何行都不是 FALSE,它将返回 TRUE。

如果刚创建的表没有任何行,则此表的任何 CHECK 约束都视为有效。执行 DELETE 语句时不验证 CHECK 约束。因此,使用特定类型的 CHECK 约束对表执行 DELETE 语句时可能会产生意外结果。

数据库中约束一个密码长度分两种情况,一种是表还未建,在建立过程中约束;另一种是表已存在,在此基础上约束。

工具:sqlserver 2008 R2

第一种情况(创建表过程中创建约束):

1、语句如下:

create table [user]

(id int,

pwd varchar(20) check (len(pwd) between 6 and 20),--代表密码长度最短为6,最长为20

name varchar(20))

2、创建后,可用长度短于6位的密码,长度在6-20位之间的密码,长度大于20位的密码分别验证。

密码短于6位(报错):

密码在6-20位之间(正常录入):

密码在20位以上(报错):

第二种情况(表已存在,但密码字段上没有约束):

1、用如下语句给表添加密码字段长度约束:

alter table [user] with nocheck add constraint CK_pwd check (len(pwd) between 6 and 20)

2、创建后,可用长度短于6位的密码,长度在6-20位之间的密码,长度大于20位的密码分别验证。

密码短于6位(报错):

密码在6-20位之间(正常录入):

密码在20位以上(报错):

你的语句有问题,首先用like不是这样用的,应该是:check(chk_id like ‘...’ or chk_id like '...'),其次你不能用like控制长度的吧,like是匹配字符的,不是匹配长度,长度用len,你把这列属性设置为 int,然后check(len(chk_id) in ('18','15'))

具体如下:

create table a_test

(

id int null ,

chk_id int null check(len(chk_id) in ('18','15'))

)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11848551.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存