亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網(wǎng)絡(luò),我們將竭誠為您提供優(yōu)質(zhì)的服務(wù)! 誠征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯(lián)系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發(fā)消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術(shù)支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當(dāng)前位置:首頁 >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

sql server創(chuàng)建和使用約束

添加時間:2013-4-23 17:39:49  添加: 思海網(wǎng)絡(luò) 
約束(Constraint)是Microsoft SQL Server 提供的自動保持?jǐn)?shù)據(jù)庫完整性的一種方法,定義了可輸入表或表的單個列中的數(shù)據(jù)的限制條件(有關(guān)數(shù)據(jù)完整性的介紹請參見第9 章)。在SQL Server 中有5 種約束:主關(guān)鍵字約束(Primary Key Constraint)、外關(guān)鍵字約束(Foreign Key Constraint)、惟一性約束(Unique Constraint)、檢查約束(Check Constraint)和缺省約束(Default Constraint)。

7.2.1 主關(guān)鍵字約束
主關(guān)鍵字約束指定表的一列或幾列的組合的值在表中具有惟一性,即能惟一地指定一行記錄。每個表中只能有一列被指定為主關(guān)鍵字,且IMAGE 和TEXT 類型的列不能被指定為主關(guān)鍵字,也不允許指定主關(guān)鍵字列有NULL 屬性。
定義主關(guān)鍵字約束的語法如下:
CONSTRAINT constraint_name
PRIMARY KEY [CLUSTERED | NONCLUSTERED]
(column_name1[, column_name2,…,column_name16])
各參數(shù)說明如下:

  • constraint_name
    指定約束的名稱約束的名稱。在數(shù)據(jù)庫中應(yīng)是惟一的。如果不指定,則系統(tǒng)會自動生成一個約束名。
  • CLUSTERED | NONCLUSTERED
    指定索引類別,CLUSTERED 為缺省值。其具體信息請參見下一章。
  • column_name
    指定組成主關(guān)鍵字的列名。主關(guān)鍵字最多由16 個列組成。

例7-3: 創(chuàng)建一個產(chǎn)品信息表,以產(chǎn)品編號和名稱為主關(guān)鍵字
create table products (
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]

7.2.2 外關(guān)鍵字約束
外關(guān)鍵字約束定義了表之間的關(guān)系。當(dāng)一個表中的一個列或多個列的組合和其它表中的主關(guān)鍵字定義相同時,就可以將這些列或列的組合定義為外關(guān)鍵字,并設(shè)定它適合哪個表中哪些列相關(guān)聯(lián)。這樣,當(dāng)在定義主關(guān)鍵字約束的表中更新列值,時其它表中有與之相關(guān)聯(lián)的外關(guān)鍵字約束的表中的外關(guān)鍵字列也將被相應(yīng)地做相同的更新。外關(guān)鍵字約束的作用還體現(xiàn)在,當(dāng)向含有外關(guān)鍵字的表插入數(shù)據(jù)時,如果與之相關(guān)聯(lián)的表的列中無與插入的外關(guān)鍵字列值相同的值時,系統(tǒng)會拒絕插入數(shù)據(jù)。與主關(guān)鍵字相同,不能使用一個定義為 TEXT 或IMAGE 數(shù)據(jù)類型的列創(chuàng)建外關(guān)鍵字。外關(guān)鍵字最多由16 個列組成。
定義外關(guān)鍵字約束的語法如下:
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 ]
各參數(shù)說明如下:

  • REFERENCES
    指定要建立關(guān)聯(lián)的表的信息。
  • ref_table
    指定要建立關(guān)聯(lián)的表的名稱。
  • ref_column
    指定要建立關(guān)聯(lián)的表中的相關(guān)列的名稱。
  • ON DELETE {CASCADE | NO ACTION}
    指定在刪除表中數(shù)據(jù)時,對關(guān)聯(lián)表所做的相關(guān)操作。在子表中有數(shù)據(jù)行與父表中的對應(yīng)數(shù)據(jù)行相關(guān)聯(lián)的情況下,如果指定了值CASCADE,則在刪除父表數(shù)據(jù)行時會將子表中對應(yīng)的數(shù)據(jù)行刪除;如果指定的是NO ACTION,則SQL Server 會產(chǎn)生一個錯誤,并將父表中的刪除操作回滾。NO ACTION 是缺省值。
  • ON UPDATE {CASCADE | NO ACTION}
    指定在更新表中數(shù)據(jù)時,對關(guān)聯(lián)表所做的相關(guān)操作。在子表中有數(shù)據(jù)行與父表中的對應(yīng)數(shù)據(jù)行相關(guān)聯(lián)的情況下,如果指定了值CASCADE,則在更新父表數(shù)據(jù)行時會將子表中對應(yīng)的數(shù)據(jù)行更新;如果指定的是NO ACTION,則SQL Server 會產(chǎn)生一個錯誤,并將父表中的更新操作回滾。NO ACTION 是缺省值。
  • NOT FOR REPLICATION
    指定列的外關(guān)鍵字約束在把從其它表中復(fù)制的數(shù)據(jù)插入到表中時不發(fā)生作用。
    例7-4:創(chuàng)建一個訂貨表,與前面創(chuàng)建的產(chǎn)品表相關(guān)聯(lián)
    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 products(p_id, p_name)
    ) on [primary]
    注意:臨時表不能指定外關(guān)鍵字約束。

7.2.3 惟一性約束
惟一性約束指定一個或多個列的組合的值具有惟一性,以防止在列中輸入重復(fù)的值。惟一性約束指定的列可以有NULL 屬性。由于主關(guān)鍵字值是具有惟一性的,因此主關(guān)鍵字列不能再設(shè)定惟一性約束。惟一性約束最多由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 檢查約束
檢查約束對輸入列或整個表中的值設(shè)置檢查條件,以限制輸入值,保證數(shù)據(jù)庫的數(shù)據(jù)完整性。可以對每個列設(shè)置符合檢查。
定義檢查約束的語法如下:
CONSTRAINT constraint_name
CHECK [NOT FOR REPLICATION]
(logical_expression)
各參數(shù)說明如下:
NOT FOR REPLICATION
指定檢查約束在把從其它表中復(fù)制的數(shù)據(jù)插入到表中時不發(fā)生作用。
logical_expression
指定邏輯條件表達(dá)式返回值為TRUE 或FALSE。
例7-6: 創(chuàng)建一個訂貨表其中定貨量必須不小于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 缺省約束
缺省約束通過定義列的缺省值或使用數(shù)據(jù)庫的缺省值對象綁定表的列,來指定列的缺省值。SQL Server 推薦使用缺省約束,而不使用定義缺省值的方式來指定列的缺省值。有關(guān)綁定缺省約束的方法請參見“數(shù)據(jù)完整性”章節(jié)。
定義缺省約束的語法如下:
CONSTRAINT constraint_name
DEFAULT constant_expression [FOR column_name]
例7-7:
constraint de_order_quantity default 100 for order_quantity
注意:不能在創(chuàng)建表時定義缺省約束,只能向已經(jīng)創(chuàng)建好的表中添加缺省約束。

7.2.6 列約束和表約束
對于數(shù)據(jù)庫來說,約束又分為列約束(Column Constraint)和表約束(Table Constraint)。
列約束作為列定義的一部分只作用于此列本身。表約束作為表定義的一部分,可以作用于
多個列。
下面舉例說明列約束與表約束的區(qū)別。
例7-8:
create table products (
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) /* 表約束 */
關(guān)鍵字:sql server、數(shù)據(jù)庫

分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國增值電信業(yè)務(wù)經(jīng)營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網(wǎng)站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網(wǎng)安 舉報有獎  警警  手機(jī)打開網(wǎng)站