为了账号安全,请及时绑定邮箱和手机立即绑定

sql菜鸟关于设置not null约束的疑问

sql菜鸟关于设置not null约束的疑问

青春有我 2019-04-14 08:08:20
我是个sql server初学者,看书的时候看到这样一个例子/*例5-13 建立一个S2表,对SNO字段进行NOT NULL约束。*//*程序清单如下:*/Use dbCREATE TABLE S2(SNO CHAR(10) CONSTRAINT S_CONS NOT NULL,SN VARCHAR(20),AGE INT,SEX CHAR(2) DEFAULT '男' ,DEPT VARCHAR(20)) 我有点奇怪:1.为什么要在not null前面加个约束名呢?我看过的一些例子都是直接在字段名后面接not null或null的呀,2.例子中的age字段为什么没有加任何约束,null或not null也没加,这是为什么呢,是不是什么时候可以省略不写null或not null呢?
查看完整描述

3 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞


1、因为这是书上的例子,所以他会以各个方面的情况来举例,已覆盖尽可能多的知识点,实际上是完全可以不要加约束的,可以直接加null或not null。
2、什么都不加的话默认 null。


查看完整回答
反对 回复 2019-04-15
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

1.默认的情景:
create table s2 (sno char(10));--此时未显示的指明null或not null,那么系统会默认为null.

2.加入not null约束:
create table s2 (sno char(10) not null) --此时显示的指定为not null,但没有指定该约束的名称,系统会自动为该约束取一个名字,该名字很长,程序员也记不住.

3.为了解决系统自动命名的约束名难记的问题,用户可自己给该约束取个名字为s_cons:
create table s2 (sno char(10) constraint s_cons not null)

查看完整回答
反对 回复 2019-04-15
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

SQL 默认情况下
AGE INT = AGE INT null
DEPT VARCHAR(20)=DEPT VARCHAR(20) null

SNO CHAR(10) CONSTRAINT S_CONS NOT NULL
这种写法是多余
改为SNO CHAR(10) NOT NULL

查看完整回答
反对 回复 2019-04-15
  • 3 回答
  • 0 关注
  • 1018 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信