sql設置非空
㈠ sql語句怎麼把不允許為空的屬性修改為允許為空
altertable表名altercolumn列名類型長度null
中文處替換一下就行
比如原來類型是varchar(10)
altertable表名altercolumn列名varchar(10)null
㈡ sql語句 怎麼設置條件為空和不為空時2種查詢方法
這種需求應該是前台傳入後台的條件吧。
如果不用存儲過程的話,可以試試這個:
SELECT*FROMTable
WHERE1=NVL(判斷月份,1)
OR(month=判斷月份ANDyear=判斷年份)
month與year是你表中的欄位。
㈢ SQL語句創建非空欄位
可能是資料庫中原來有數據,可以刪除數據後在試
㈣ sql語句 如何將一個列設為非空和唯一
create table tableName( id [欄位類型] IDENTITY PRIMARY KEY NOT; --創建表,中欄位有id、department,其中id唯一,dpartment非空 CREATE TABLE
㈤ sql中如何在圖形用戶界面設置非空約束
表欄位非空?是指Management Studio里么?
右鍵「設計」,把「允許Null值」勾去掉。。。
㈥ 如何用sql語句添加非空列
改變已有表的列欄位,使用alter命令;
格式:
alter table 表名 add 新增欄位名 欄位類型 [列級約束]
例如:alter table student add grade int not null (not null 屬於列級約束)
但可能出現以下的情況:
ALTER TABLE 只允許添加滿足下述條件的列: 列可以包含空值;或者列具有指定的 DEFAULT 定義;或者要添加的列是標識列或時間戳列;或者,如果前幾個條件均未滿足,則表必須為空以允許添加此列。
原因:表中原本有數據(存在很多行),在你新增加非空欄位後,原來存在的行中的數據本來為空,但你又要求它非空,這樣就矛盾了,所以該命名就不會執行,就會報錯。
解決方法:
1、alter table student add grade int 不加非空約束;
2、update table student set grade=60 where grade is NULL 將存在的數據行中的grade欄位同一設置成60分;
3、alter table student alter column grade int not null 增加非空約束;
㈦ sql 語言中,非空語句是什麼
非空語句 是不是 指
檢索條件
資料庫的表裡面, 某個欄位的值 非空?
那就是
SELECT * FROM 表 WHERE 欄位 IS NOT NULL;
如果你是 創建表的時候, 要求某個欄位,不能為空
那就是
CREATE TABLE 表 (
欄位 數據類型 NOT NULL
);
㈧ 怎樣用SQL語句對指定欄位建立非空約束
五大約束
1.—-主鍵約束(Primay Key Coustraint) 唯一性,非空性
2.—-唯一約束 (Unique Counstraint)唯一性,可以空,但只能有一個
3.—-檢查約束 (Check Counstraint) 對該列數據的范圍、格式的限制(如:年齡、性別等)
4.—-默認約束 (Default Counstraint) 該數據的默認值
5.—-外鍵約束 (Foreign Key Counstraint) 需要建立兩表間的關系並引用主表的列五大約束的語法示例
1.—-添加主鍵約束(將stuNo作為主鍵)
alter table stuInfo
add constraint PK_stuNo primary key (stuNo)
2.—-添加唯一約束(身份證號唯一,因為每個人的都不一樣)
alter table stuInfo
add constraint UQ_stuID unique(stuID)
3.—-添加默認約束(如果地址不填 默認為「地址不詳」)
alter table stuInfo
add constraint DF_stuAddress default (『地址不詳』) for stuAddress
4.—-添加檢查約束 (對年齡加以限定 15-40歲之間)
alter table stuInfo
add constraint CK_stuAge check (stuAge between 15 and 40)
alter table stuInfo
add constraint CK_stuSex check (stuSex=』男』 or stuSex=』女′)
5.—-添加外鍵約束 (主表stuInfo和從表stuMarks建立關系,關聯欄位stuNo)
alter table stuInfo
add constraint FK_stuNo foreign key(stuNo)references stuinfo(stuNo)
約束(Constraint)是Microsoft SQL Server 提供的自動保持資料庫完整性的一種方法,定義了可輸入表或表的單個列中的數據的限制條件(有關數據完整性的介紹請參見第9 章)。在SQL Server 中有5 種約束:主關鍵字約束(Primary Key Constraint)、外關鍵字約束(Foreign Key Constraint)、惟一性約束(Unique Constraint)、檢查約束(Check Constraint)和預設約束(Default Constraint)。
1 主關鍵字約束
主關鍵字約束指定表的一列或幾列的組合的值在表中具有惟一性,即能惟一地指定一行記錄。每個表中只能有一列被指定為主關鍵字,且IMAGE 和TEXT 類型的列不能被指定為主關鍵字,也不允許指定主關鍵字列有NULL 屬性。
定義主關鍵字約束的語法如下:
CONSTRAINT constraint_name
PRIMARY KEY [CLUSTERED | NONCLUSTERED]
(column_name1[, column_name2,…,column_name16])
各參數說明如下:
constraint_name
指定約束的名稱約束的名稱。在資料庫中應是惟一的。如果不指定,則系統會自動生成一個約束名。
CLUSTERED | NONCLUSTERED
指定索引類別,CLUSTERED 為預設值。其具體信息請參見下一章。
column_name
指定組成主關鍵字的列名。主關鍵字最多由16 個列組成。
例7-3: 創建一個產品信息表,以產品編號和名稱為主關鍵字
create table procts (
p_id char(8) not null,
p_name char(10) not null ,
price money default 0.01 ,
quantity smallint null ,
constraint pk_p_id primary key (p_id, p_name)
) on [primary]
2 外關鍵字約束
外關鍵字約束定義了表之間的關系。當一個表中的一個列或多個列的組合和其它表中的主關鍵字定義相同時,就可以將這些列或列的組合定義為外關鍵字,並設定它適合哪個表中哪些列相關聯。這樣,當在定義主關鍵字約束的表中更新列值,時其它表中有與之相關聯的外關鍵字約束的表中的外關鍵字列也將被相應地做相同的更新。外關鍵字約束的作用還體現在,當向含有外關鍵字的表插入數據時,如果與之相關聯的表的列中無與插入的外關鍵字列值相同的值時,系統會拒絕插入數據。與主關鍵字相同,不能使用一個定義為 TEXT 或IMAGE 數據類型的列創建外關鍵字。外關鍵字最多由16 個列組成。
定義外關鍵字約束的語法如下:
CONSTRAINT constraint_name
FOREIGN KEY (column_name1[, column_name2,…,column_name16])
REFERENCES ref_table [ (ref_column1[,ref_column2,…, ref_column16] )]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ] ]
[ NOT FOR REPLICATION ]
各參數說明如下:
REFERENCES
指定要建立關聯的表的信息。
ref_table
指定要建立關聯的表的名稱。
ref_column
指定要建立關聯的表中的相關列的名稱。
ON DELETE {CASCADE | NO ACTION}
指定在刪除表中數據時,對關聯表所做的相關操作。在子表中有數據行與父表中的對應數據行相關聯的情況下,如果指定了值CASCADE,則在刪除父表數據行時會將子表中對應的數據行刪除;如果指定的是NO ACTION,則SQL Server 會產生一個錯誤,並將父表中的刪除操作回滾。NO ACTION 是預設值。
ON UPDATE {CASCADE | NO ACTION}
指定在更新表中數據時,對關聯表所做的相關操作。在子表中有數據行與父表中的對應數據行相關聯的情況下,如果指定了值CASCADE,則在更新父表數據行時會將子表中對應的數據行更新;如果指定的是NO ACTION,則SQL Server 會產生一個錯誤,並將父表中的更新操作回滾。NO ACTION 是預設值。
NOT FOR REPLICATION
指定列的外關鍵字約束在把從其它表中復制的數據插入到表中時不發生作用。
例7-4:創建一個訂貨表,與前面創建的產品表相關聯
create table orders(
order_id char(8),
p_id char(8),
p_name char(10) ,
constraint pk_order_id primary key (order_id) ,
foreign key(p_id, p_name) references procts(p_id, p_name)
) on [primary]
注意:臨時表不能指定外關鍵字約束。
惟一性約束
惟一性約束指定一個或多個列的組合的值具有惟一性,以防止在列中輸入重復的值。惟一性約束指定的列可以有NULL 屬性。由於主關鍵字值是具有惟一性的,因此主關鍵字列不能再設定惟一性約束。惟一性約束最多由16 個列組成。
定義惟一性約束的語法如下:
CONSTRAINT constraint_name
UNIQUE [CLUSTERED | NONCLUSTERED]
(column_name1[, column_name2,…,column_name16])
例7-5:定義一個員工信息表,其中員工的身份證號具有惟一性。
create table employees (
emp_id char(8),
emp_name char(10) ,
emp_cardid char(18),
constraint pk_emp_id primary key (emp_id),
constraint uk_emp_cardid unique (emp_cardid)
) on [primary]
7.2.4 檢查約束
檢查約束對輸入列或整個表中的值設置檢查條件,以限制輸入值,保證資料庫的數據完整性。可以對每個列設置符合檢查。
定義檢查約束的語法如下:
CONSTRAINT constraint_name
CHECK [NOT FOR REPLICATION]
(logical_expression)
各參數說明如下:
NOT FOR REPLICATION
指定檢查約束在把從其它表中復制的數據插入到表中時不發生作用。
logical_expression
指定邏輯條件表達式返回值為TRUE 或FALSE。
例7-6: 創建一個訂貨表其中定貨量必須不小於10。
create table orders(
order_id char(8),
p_id char(8),
p_name char(10) ,
quantity smallint,
constraint pk_order_id primary key (order_id),
constraint chk_quantity check (quantity>=10) ,
) on [primary]
注意:對計算列不能作除檢查約束外的任何約束。
7.2.5 預設約束
預設約束通過定義列的預設值或使用資料庫的預設值對象綁定表的列,來指定列的預設值。SQL Server 推薦使用預設約束,而不使用定義預設值的方式來指定列的預設值。有關綁定預設約束的方法請參見「數據完整性」章節。
定義預設約束的語法如下:
CONSTRAINT constraint_name
DEFAULT constant_expression [FOR column_name]
例7-7:
constraint de_order_quantity default 100 for order_quantity
注意:不能在創建表時定義預設約束,只能向已經創建好的表中添加預設約束。
7.2.6 列約束和表約束
對於資料庫來說,約束又分為列約束(Column Constraint)和表約束(Table Constraint)。
列約束作為列定義的一部分只作用於此列本身。表約束作為表定義的一部分,可以作用於
多個列。
下面舉例說明列約束與表約束的區別。
例7-8:
create table procts (
p_id char(8) ,
p_name char(10) ,
price money default 0.01 ,
quantity smallint check (quantity>=10) , /* 列約束 */
constraint pk_p_id primary key (p_id, p_name) /* 表約束 */
㈨ SQl問題非空約束
樓主可以這樣試試,我用過很多次的絕對可以
首先update
dbo.T_user
set
user_Password=''
where
user_Password
is
null
然後在設置非空
alter
table
dbo.T_user
alter
column
user_Password
varchar(20)
not
null
這樣就可以讓欄位
user_Password
不允許null
這樣就可以把user_Password
欄位改成
varchar(20)
not
null
了
如果樓主想要不能空的約束,那個就要做觸發器了