紅顏莎娜
2019-04-08 08:04:10
我是個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 回答

慕的地8271018
TA貢獻1796條經(jīng)驗 獲得超4個贊
其實前面2位都已經(jīng)講的很清楚了,如果還不清楚,那我再舉例說明一下:
1.默認的情景:
create table s2 (sno char(10));--此時未顯示的指明null或not null,那么系統(tǒng)會默認為null.
2.加入not null約束:
create table s2 (sno char(10) not null) --此時顯示的指定為not null,但沒有指定該約束的名稱,系統(tǒng)會自動為該約束取一個名字,該名字很長,程序員也記不住.
3.為了解決系統(tǒng)自動命名的約束名難記的問題,用戶可自己給該約束取個名字為s_cons:
create table s2 (sno char(10) constraint s_cons not null)

千巷貓影
TA貢獻1829條經(jīng)驗 獲得超7個贊
1、因為這是書上的例子,所以他會以各個方面的情況來舉例,已覆蓋盡可能多的知識點,實際上是完全可以不要加約束的,可以直接加null或not null。
2、什么都不加的話默認 null。
- 3 回答
- 0 關注
- 1023 瀏覽
添加回答
舉報
0/150
提交
取消