如何在SQL资源管理器中添加约束表达式
1、首先我们打开电脑里的SQL资源管理器,如图是一个Student表其中我们主要针对于这个表中的Phone这一列来进行演示。
2、首先我们需要新建立一个数据库的语句填写模块,点击数据库的左上角上的新建查询。
3、建立完毕之后呢,这里我们输入如下的SQL语句添加默认约束。
4、SQL语句输入完毕之后,我们需要选择所有语句,点击上面的执行按钮,执行SQL语句。
5、在消息框中提示命令执行成功之后呢,我们就可以进行数据的测试了。
6、在这个表中用鼠标右击选择里面的编辑前200行。
7、我们插入数据进行测试,看是否成功。这我们添加了如下图中所示的数据,进行测试,这里直接是没有添加Phone这一列的数据的。
8、 添加完毕之后,我们同样是需要进行数据集的执行的。
9、执行完毕之后,我们使用sql语句进行数据的查询,在下图中我们是可以看到我们没有填写的Phone这一列数据已将自动补充上了“没有手机号”这里就表明我们的默认约束添加成功。
cheeck语句例子
1.检查只能是男或者女
add const ck_sex check(sex in('男,女')),
add const ck_sex check(sex ='男' or sex ='女')
2.在一个范围中间
constraint ch_age check(sage>0 and sage<120),
add const ck_age check(age between 12 and 30)
3.长度大于某个值
add const ck_lenght check(len(lenght)>6)
4.数大于某个值
add const ck_number ckeck(number>1)
5.只能是8位字符,前两位是 0 ,3~4位为数字,第 5 位为下划线,6~8位为字母
alter table 表名
add constraint chkk check((字段 like '00[0-9][0-9]/_[a-z,A-Z][a-z,A-Z][a-z,A-Z]%' escape '/')and(len(字段)=8) )
或者是
alter table 表名
add constraint chkk check((字段 like '00[0-9][0-9][_][a-z,A-Z][a-z,A-Z][a-z,A-Z]%')and(len(字段)=8) )
6.电子邮箱要含有@符号
check(字段like '%@%')
7.SQL中用check约束一列的首字母为's'
check(col1 like 's%')
8.检查约束前3位和后8位均为数字字符:
check(col2 like '[0-9][0-9][0-9]%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
9.如何建立检查身份证的约束,身份证是18位,最后一位还有可能是X
select 身份证号 from 表名
where len(身份证号) = 18 and (right(身份证号,17) like '[0-9]'or right(身份证号,17) like 'x')
10.如何设置区号由0-9之间的数字组成
CONSTRAINT quhao CHECK (quhao LIKE '[0-9][0-9][0-9]'
or quhao LIKE '[0-9][0-9][0-9][0-9]'or quhao LIKE '[0-9][0-9][0-9][0-9][0-9]'));
解释: 其中quhao LIKE '[0-9]...[0-9]'的号码由表示n位从0到9中的数组成。
quhao LIKE '[0-9][0-9][0-9]' 表示3位的区号,如北京010;quhao LIKE '[0-9][0-9][0-9][0-9]'表示4位的区号,如三门峡0398; quhao LIKE
'[0-9][0-9][0-9][0-9][0-9]'表示5位的区号,如香港00852
11.最后回复时间 TLastClickT 发贴时间 TTime
最后回复时间 必须晚于 发贴时间 并且小于等于当前时间 使用GetDate()函数获取当前时间
设计表
在TLastClickT上右击
选择约束,新建,填入
([TLastClickT] > [TTime] and [TLastClickT] < GetDate())
或者
TiastReply(回帖时间)大于Ttime(发帖时间)在创表的同时
创建表的时候应该还没有回帖吧,为什么要用默认值?
可以添加一个约束 alter table topic alter column add check(TlastReply is null or TlastReply > Ttime)
12.定义前八位为数字或者 -
一共是15位,为CHAR型
alter table 表名
add constraint chk check(字段 like'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%'),
constraint chklen check(len(字段)=15)
13.如何限制varchar字段不允许出现单引号的检查约束 !!!
设表为TALBENAME,不能有引号的字段为FIELDNAME 则:
ALTER TABLE tablename ADD CONSTRAINT CK_fieldname CHECK (not fieldname like '%''%')
14.在表中的某列中通过检查约束,让其有某些固定的值
check(sid like 'bd[0-9][0-9][0-9][0-9][0-9][0-9]')
add const ck_num check(num like '[1][2] [4][_] [0-9][0-9] [0-9][a-z]')
15.如何限制varchar字段不允许出现字符串的检查约束 !!!
设表名为TABLENAME,VARCHAR类型的字段为VAR_FIELD.则有:
ALTER TABLE [dbo].[TABLENAME] ADD CONSTRAINT [CK_TABLENAME] CHECK (isnumeric([VAR_FIELD]) = 1)
这样,在VAR_FIELD只要出现字段一旦出现非数字内容就会报告错误。
16.电话号码的格式必须为xxxx-xxxxxxxx或手机号11位
alter 表名 add constraint ck_字段名 check (字段 like '[0-9][0-9][0-9][0-9]_[0-9]......' or len(字段)=11)
17.身份证号是18位且唯一的
alter 表名 add
constraint ck_字段名 check (len(字段名)=18 ),
constraint uk_字段名 unique(字段名)