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

2021-06-07 01:20:52 字數 4763 閱讀 8258

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約束的列就不知能插入''了。

oracle資料庫怎樣用SQL語句把欄位中所有的位元組轉化在大寫

用函式upper就可以處理了 upper 返回將小寫字元資料轉換為大寫的字元表示式。更新 update 表名 set 欄位名 upper 欄位名 where 查詢條件 查詢 select upper 欄位名 from 表名 upper 把字串c1轉換為大寫 select upper ula from...

如何使用sql語句建立表,表中欄位有id department,其中id唯一,dpartment非空

建立表,中欄位有id department,其中id唯一,dpartment非空 create table aaaa id varchar 10 not null,department varchar 30 not null,primary key id 查詢,如何在該表中查詢部門人數大於3的部門名...

sql如何用語句更改欄位的資料型別

修改型別,使用sql語句 alter table 表名 alter column 欄位名稱 varchar not null 示例 新建表如下圖 所示 更改name列為varchar,長度為20,如下圖 改完後結果為 alter table 表名 alter column 列名 新的資料型別 長度 ...