sql語句非空
① sql 語言中,非空語句是什麼
非空語句 是不是 指
檢索條件
資料庫的表裡面, 某個欄位的值 非空?
那就是
SELECT * FROM 表 WHERE 欄位 IS NOT NULL;
如果你是 創建表的時候, 要求某個欄位,不能為空
那就是
CREATE TABLE 表 (
欄位 數據類型 NOT 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語句創建非空欄位
可能是資料庫中原來有數據,可以刪除數據後在試
④ sql server的sql語句怎麼判斷一個欄位是否為空
使用 is null 或 is not null 來處理列的空值。
語法為:
列名 is null (欄位為空返回true ,不為空返回 false)
列名 is not null (欄位為空返回false,不為空返回 true)
例如:
select case when a is null then 1 else 0 end from aaa
語法大意:如果a列 為空顯示1,不為空顯示0。
(4)sql語句非空擴展閱讀:
注意事項
欄位內容為空有兩種情況
1.為null
2.為字元串的空''
語句如下:
select * from table where column is null or trim(column)=''
這樣就可以排除欄位內容為null、''的。
判斷某個欄位不為空
select * from table where trim(column) != ''
曾經嘗試判斷null:is not null.但是不起作用,放棄。。。直接 trim(column) != '' 就能解決。
⑤ sql語句 如何將一個列設為非空和唯一
create table tableName( id [欄位類型] IDENTITY PRIMARY KEY NOT; --創建表,中欄位有id、department,其中id唯一,dpartment非空 CREATE TABLE
⑥ 如何用sql語句添加非空列
alter
column
欄位類型
[(字長)]
|
constraint
多重欄位索引
}
|
drop
drop{column
欄位
i
constraint
索引名
}
}
alter
table
語句分為以下幾個部分:部分
說明table
欲修改的表之名稱。
field
欲在表內增加或刪除的欄位的名稱。或表內欲被替換的欄位名稱。
type
欄位的數據類型。
size
欄位的字元長度
(文本及二進制欄位)。
indexname
欲刪除的多重欄位索引的名稱。
說明使用
alter
table
語句,可用多種不同方法更改當前已存在的表:你可以:
使用
add
column
在表中添加新的欄位。需要指定欄位名、數據類型、還可以
(對文本和二進制欄位)指定長度。例如,下列語句在員工表中增加一
25
個字元的、名為
notes
的文本欄位:
alter
table
employees
add
column
notes
text(25)
也可以定義此欄位的索引。關於單一欄位索引的詳細信息,請參閱constraint
子句主題。
如果對一欄位指定
not
null,則在這欄位中添加的新記錄必須有有效的數據。
使用alter
column改變一個當前欄位的數據類型,需要指定欄位名、新數據類型、還可以
(對文本和二進制欄位)指定長度。例如,下列語句把雇員表中一個欄位的數據類型,
被稱為zipcode(最初被定義為整數),改變成一個10字元文本欄位:
alter
table
employees
alter
column
zipcode
text(10)
使用
add
constraint
添加多重欄位索引。關於多重欄位索引的詳細信息,請參閱
constraint
子句主題。
使用
drop
column
刪除欄位。只要指定欲刪除的欄位名即可。
使用
drop
constraint
刪除多重欄位索引。只要在
constraint
保留字後面指定索引名即可。
--------------------------------------------------------------------------------注意不能同時添加或刪除一個以上的欄位或索引。
你可以使用
create
index
語句在一個表中增加一個單欄位或多重欄位,你還可以使用
alter
table
或
drop
語句刪除一個由alter
table或create
index建立的索引。
可以在單一欄位上使用
not
null,或在用於單一欄位或多重欄位(名為
constraint)
的
constraint
子句中使用
not
null。但是,一個欄位只能使用一次
not
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 增加非空約束;
⑧ SQL2008在建表時,怎麼用SQL語句設置欄位的屬性非空且唯一。。。格式
非空就是:NOT NULL
至於唯一嘛,可以使用uniqueidentifier這種數據類型,全球唯一,用普通的自增的ID(int型)還不能滿足要求的。如下:
create table test
(
ceshi uniqueidentifier NOT NULL
)
⑨ SQL 語句 選擇 非空欄位 問題
/***** 第一列容易理解:直接取第一個非空的號碼 *****/
/***** 第二列根據第一列的結果,再取一個電話號碼 *****/
select nvl(辦公電話家,nvl(家庭電話,nvl(手機1,nvl(手機2,手機3)))) 首選電話號碼,
decode(nvl(辦公電話家,nvl(家庭電話,nvl(手機1,nvl(手機2,手機3)))),
辦公電話家,nvl(家庭電話,nvl(手機1,nvl(手機2,手機3))),
家庭電話,nvl(手機1,nvl(手機2,手機3)),
手機1,nvl(手機2,手機3)),
手機2,手機3) 次選電話號碼
from 電話本
⑩ 怎樣用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) /* 表約束 */