SQL如何把現有欄位設為not null

時間 2021-06-07 01:20:41

1樓:

1.如果在本欄位上有約束,先將約束刪除再用 alter table 表名 modify 列名 not null; 的辦法處理。

2. 第一步:刪除約束

3.alter table 表名 drop constraint 約束名

4.第二步:建立

5.alter table 表名 column 欄位名 欄位型別 not null

6.注,把第二句話中的欄位型別寫上

2樓:匿名使用者

isnull(欄位名,'') 或者isnull(欄位名,0)我用的sqlserver

欄位為字串時用第一個,數字是用第二個

只是提供一個思路,希望對你有幫助...

3樓:臺三詩

如果在本欄位上有約束,先將約束刪除再用「crazyherozk」說的辦法處理。

第一步:刪除約束

alter table 表名 drop constraint 約束名第二步:建立

alter table 表名 column 欄位名 欄位型別 not null

注,把第二句話中的欄位型別寫上試下看

4樓:飄雨

alter table 表名

alter column 欄位名 型別 not null例如:alter table a;

alter column name char(20) not null

5樓:匿名使用者

alter table aa drop 欄位

alter table aa add

欄位 char(1) not null default ''

6樓:心甘情願

是不是那個欄位已經有空值了 要把空值處理一下。。。

7樓:匿名使用者

alter table 表名 modify 列名 not null;

8樓:藍天下的智者

alter 表名 column 欄位名 not null

9樓:熱愛資料庫的同學

在預設的情況下,表的列接受 null 值。

not null 約束強制列不接受 null 值。

not null 約束強制欄位始終包含值。這意味著,如果不向欄位新增值,就無法插入新記錄或者更新記錄。

下面的 sql 強制 「id」 列、 「lastname」 列以及 「firstname」 列不接受 null 值:

-from shulanxt

sql語句中如何為新增列指定為not null?

10樓:匿名使用者

主鍵肯定不能為not null。

再一個就是看看是否有約束了。

alter table 只可以新增滿足下述條件的列: 列可以包含空值;或者列具有指定的 default 定義;或者要新增的列是標識列或時間戳列;當然,如果前幾個條件均未滿足,表必須為空以允許新增此列。不能將列"***"新增到非空表"xx"中,它不滿足上面條件。

alter table xx add 新增列表要是空的

指定列是否可接受空值。如果列不允許空值,則在指定了預設值或表為空的情況下,才能用 alter table 語句新增該列。同時指定了 persisted 時,才可以為計算列指定 not null。

如果新列允許空值,但沒有指定預設值,則新列在表中的每一行都包含一個空值。如果新列允許空值,並且指定了新列的預設值,就可以使用 with values 將預設值儲存到表中每個現有行的新列中。

如果新列不允許空值,並且表不為空,那麼 default 定義必須與新列一起新增;並且,載入新列時,每個現有行的新列中將自動包含預設值。

在 alter column 語句中指定 null,可以強制 not null 列允許空值,但 primary key 約束中的列除外。只有列中不包含空值的時候,才可以在 alter column 中指定 not null。須將空值更新為某個值後,才允許執行 alter column not null 語句,例如:

新建不能為空,故要先新建個可以為空的列。

然後強制為空。

下面**以測試。

alter table 表名 add 列名 nvarchar(20) null

goupdate 表名 set stuname = n'some_value' where 列名 is null

alter table 表名 alter column 列名 nvarchar(20) not nullgo

sql 命令求解 sql語句中如何為新增列指定為not null

11樓:匿名使用者

主鍵肯定不能為not null了- -

還有就是看看有沒約束

alter table 只允許新增滿足下述條件的列: 列可以包含空值;或者列具有指定的 default 定義;或者要新增的列是標識列或時間戳列;或者,如果前幾個條件均未滿足,則表必須為空以允許新增此列。不能將列"***"新增到非空表"xx"中,因為它不滿足上述條件。

alter table xx add 新增列表要是空的

指定列是否可接受空值。如果列不允許空值,則只有在指定了預設值或表為空的情況下,才能用 alter table 語句新增該列。只有同時指定了 persisted 時,才能為計算列指定 not null。

如果新列允許空值,但沒有指定預設值,則新列在表中的每一行都包含一個空值。如果新列允許空值,並且指定了新列的預設值,則可以使用 with values 將預設值儲存到表中每個現有行的新列中。

如果新列不允許空值,並且表不為空,那麼 default 定義必須與新列一起新增;並且,載入新列時,每個現有行的新列中將自動包含預設值。

在 alter column 語句中指定 null,可以強制 not null 列允許空值,但 primary key 約束中的列除外。只有列中不包含空值時,才可以在 alter column 中指定 not null。必須將空值更新為某個值後,才允許執行 alter column not null 語句,例如:

因為新建不能為空所以要先新建個可以為空的列

然後強制為空

下面**以測試

alter table 表名 add 列名 nvarchar(20) null

goupdate 表名 set stuname = n'some_value' where 列名 is null

alter table 表名 alter column 列名 nvarchar(20) not nullgo

12樓:

在建表的時候欄位後面直接加上not null的判斷,每個資料庫語法都不一樣。

sqlserver是

create table *** (id int not null,desc varchar(100) not null)

oracle好像也一樣,db2似乎也是

informix好像需要額外加非空判斷。

sql資料庫欄位設定成not null的話,欄位不設定預設值是不是就不能插入了?

13樓:墨汁諾

是的,必須有預設值。

因為在sql server中null跟''是完全不一樣的,null表示未知,沒有型別可言,而''是有型別的,表示一個空的字串。所以有not null約束的列是可以插入''的。

有時候做判斷的時候可能某個列既有null值又有''值,這時候就經常用 where isnull(列名,'')=''進行判斷。在oracle中,''是等同於null值進行處理的,這時候有not null約束的列就不能插入''了。

14樓:桓笑容

如果是not null的話,那你就必須插入一個值,你不插入值的話,就會呼叫預設值。

如果這兩個都沒有的話,就會報錯了

所以,改下你的insert

insert into zc_manager(user,pass,level) values('admin','123456',-1);

15樓:饅頭和小籠包

sql資料庫欄位設定成not null的話,欄位不設定預設值是不是就不能插入了?

是的,必須有預設值。貌似數字之類的它本身就有預設值0吧。

16樓:玩泥小可愛

你可以把資料庫的欄位not null去掉,然後再執行~這樣執行的時候,沒有插入資料的欄位就是null

17樓:豆芽爾

not null 你都設定成不能為空了。 你怎麼插入。 再有。

別人是不是設定了default 『』 了 你也沒看到。 如果他設定了not null 並沒有設定default的話 那麼他也不能插入

18樓:匿名使用者

level必須有值 ,如不給值,就得設定預設值

資料庫中為資料表增加新的欄位時,可以為新欄位設定not null約束嗎?

19樓:司馬刀劍

是的,必須有百預設值。

因為在sql server中null跟''是完全不一樣的,null表示未知,沒有型別可言,而''是有型別的,表示一個空的字串。所以有not null約束的列是可以插入''的。

有時候做判斷的時候可能某個度列既有null值又有''值,這時候就經常用 where isnull(列名,'')=''進行判斷。在oracle中,''是等同於null值進行處理的,這時候有not null約束的列就不知能插入''了。

sql如何查詢空值的欄位,sql資料庫查詢中,空值查詢條件怎麼寫?

小凝聊娛樂 sql查詢空值的欄位寫法 select a.欄位 from student a where a.欄位 like student為表名 查詢類似空值的寫法 1 查詢名稱有退格鍵 select from t bd item info where charindex char 8 item n...

如何查詢某個資料庫的某個表欄位,SQL資料庫,如何查詢資料庫內含有某一列(某欄位,如name)的所有表

流浪還不行嗎 2008沒用過,不懂!不過我覺得應該和2003或者2005是一樣的操作,因為他們都使用的sql語句,變化應該不是很大! select b.name 表名,a.name 欄位名 from syscolumns a join sysobjects b on a.id b.id where ...

sql查詢中如何判斷字串欄位的內容的長度

小丁創業 實現的方法和詳細的操作步驟如下 1 首先,開啟sql查詢器,並連線相應的資料庫表,例如store表,如下圖所示。2 其次,完成上述步驟後,單擊工具欄的 查詢 選項,然後輸入如下 如下圖所示。3 最後,完成上述步驟後,單擊 執行 選項來查詢所需結果,如下圖所示。這樣,以上的問題就解決了。 就...