SQL_SERVER中的約束_第1頁
SQL_SERVER中的約束_第2頁
SQL_SERVER中的約束_第3頁
SQL_SERVER中的約束_第4頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、SQL SERVER 中的約束你知道 SQL SERVER 中約束到底有幾種嗎?你知道約束與主鍵是什么關(guān)系嗎?你知道約束該如何使用嗎?如果你對這幾個問題還有疑問,那么就請繼續(xù)往下看吧。SQL SERVER 2005 中,約束, Constraints,顧名思義,就是按照約定來束縛某種東西。在數(shù)據(jù)庫, 無非就是對存儲的數(shù)據(jù)進行束縛,當(dāng)然需要按照某種既定的規(guī)則,一般是指語義的限制以及用來制約屬性上的關(guān)系??赡茉谄綍r的工作中,尤其是對開發(fā)人員來說,約束用的不是很多, 更多的時候是用代碼去做一些輸入的驗證,這其實就是約束的思想,把不滿足條件的數(shù)據(jù)排除在外。其實SQL SERVER 2005 也給我們提

2、供這樣的一些約束:1. Check Constraints我相信大部分的朋友對約束的概念理解應(yīng)該都是Check 類型的約束, 這種約束對表中的某一列的格式或者值進行限制,只有滿足條件的數(shù)據(jù)才能被寫入。比如:create table Goods(GoodsID int identity (1,1) primary key,Price decimal( 12,4) constraint chkPrice check (Price>1000)上面的 SQL 建立了一張新表, 并且對表中的列Price 建立一個 check 約束,名叫 chkPrice,它的作用就是對插入price 列的數(shù)據(jù)進行

3、判斷,如果大于1000,滿足條件就插入,否則就報錯。insert into Goods values( 2000)(1 row(s) affected) 成功insert into Goods values( 200)ERROR : The INSERT statement conflicted with the CHECK constraint "chkPrice". Theconflict occurred in database "AdventureWorks", table "dbo.Goods", column 'P

4、rice'.這里順便提一下,如果我們執(zhí)行了下面的代碼,結(jié)果會是怎樣呢?insert into goods values(null)如果你覺得也會報錯,那么恭喜你,你錯了。約束其實是對滿足條件,即條件表達式返回 TRUE 的一律通過。那么,如果結(jié)果是NULL 呢? NULL 在 SQL SERVER 里的類型是 UNKNOWN ,就是不知道。那我們就要把它理解成可以成為任何類型,可能為 TRUE 。所以在這個例子中, NULL 是可以被插入的。2. Default Constraints這個約束相對簡單一些, 就是事先定義一個默認值, 如果在插入數(shù)據(jù)的時候沒有指定,系統(tǒng)會自動把事先定義好

5、的默認值寫入對應(yīng)的列。create table Product(ProductID int identity (1,1) primary key,ProductName varchar(80) not null ,Country varchar(40) default 'China')Country 這列就是一個含有Default 約束的列,如果在插入一條數(shù)據(jù)的時候沒有指定值,那么系統(tǒng)會默認的插入China.insert into product values('AAA' ,'US')insert into product(ProductName

6、) values('BBB' )結(jié)果為1 AAA US2 BBB China3. Unique ConstraintsUnique 就是獨有的,這個約束就是確保在非主鍵列中不輸入重復(fù)的值。這一點與主鍵的概念可能有一些類似,之所以把Unique 放在前面說,就是為了強調(diào)一點,如果想強制一列或者多列的組合的唯一性時,應(yīng)該選擇Unique而不是主鍵。同時,還有一點,主鍵不能為null ,但是Unique 可以支持null 。alter table productadd ProductCode int null constraint pc_unique unique我們對 Produc

7、t 表中的 ProductCode 列設(shè)置了 unique 約束 ,這一列的值不可重復(fù).但允許有空值存在 .insert into product (productname,ProductCode) values( 'aaa',null )OK第一個空值插入成功insert into product (productname,ProductCode) values( 'bbb',null )ERROR:Violationof UNIQUE KEY constraint 'pc_unique'. Cannot insert duplicate ke

8、y in object'duct'.第二個空值插入失敗4. Primary Key Constraints主鍵約束可能是大家最為熟悉的,在數(shù)據(jù)庫的設(shè)計中,我們基本上會對每一張表建一個主鍵約束 ,用以把數(shù)據(jù)庫的每條記錄(行 )區(qū)分開來 .主鍵可以針對表中的一列或多列。但與約束不同的是,它的值不能為空。下面的例子是對其中一列設(shè)置主鍵:Create Table Users(UserID int primary key,UserName varchar(50) not null)下面是對多列設(shè)置主鍵:CREATE TABLE KeyData(FiscalYear int

9、not null ,Period int not null ,DataType int not null,KeyValue int not nullCONSTRAINTPK_constraint_keydata PRIMARYKEY CLUSTERED(FiscalYear,Period)5. Foreign Key Constraints前面提到約束分語義上限制和屬性關(guān)系的限制,外鍵約束就是用來限制屬性間關(guān)系的。通俗一點講,就是一張表中的某列引用了另一張表的主鍵,因為該列的值必須出自主鍵列的值。Create table Manager(ManagerID int primary key,Ma

10、nagerName varchar(50),)上面我們建立了一個Manager 的表,有一個ID 列是該表的主鍵,唯一代表了每一個經(jīng)理。下面建立了銷售區(qū)域的表,并指定每個區(qū)域有一個經(jīng)理負責(zé):Create Table SalesRegion(SalesRegionID int Primary Key ,SalesRegionName varchar(100),ManagerID int foreign key REFERENCES Manager(ManagerID)從上面的命令中可以看出,ManagerID 就是外鍵, 它的作用是連接了SalesRegion 與 Manager兩張表,限制Ma

11、nagerID 在表 SalesRegion 中的使用,我們不能把某個區(qū)域指定給一個不存在經(jīng)理負責(zé)。 如果我們試圖往SalesRegion 插入一條記錄, 而該記錄的ManagerID 是 Manager表中不存在的ManagerID, 系統(tǒng)就會報出以下的錯誤:The INSERT statement conflicted with the FOREIGN KEY constraint"FK_SalesRegi_Manag_3F6663D5". The conflict occurred in database "AdventureWorks",tabl

12、e "dbo.Manager", column 'ManagerID'討論.討論主題主題 :VPC虛擬機的使用.libq/jmu創(chuàng)建于 2005-02-24 10:16分類 :linux課件一、安裝虛擬機控制臺 (Virtual PC Console)基本概念:這是一個虛擬機運行和管理環(huán)境??梢栽谄渲袆?chuàng)建任意多臺虛擬機,并運行這些虛擬機。能夠同時運行的虛擬機的數(shù)量及各自的配置 (如內(nèi)存大小等) 取決于你真實 PC機的配置。1、虛擬機文件( .vmc)這是可以在虛擬機控制臺上加載并管理的一臺虛擬機的配置文件。虛擬機的內(nèi)存、光驅(qū)、軟驅(qū)、顯示、串口、并口、鼠標等虛

13、擬硬件可來自你的真實PC機。2、虛擬硬盤( .vhd )虛擬硬盤是虛擬機可以加以配置并用來安裝運行操作系統(tǒng)、安裝運行應(yīng)用軟件、存儲數(shù)據(jù)的虛擬磁盤,是你的真實 PC的硬盤中的一個或多個文件。二、在虛擬機控制臺中創(chuàng)建新的虛擬機操作系統(tǒng)1、新建虛擬機( New. )2、執(zhí)行新建虛擬機向?qū)?、選擇安裝方式方式一、創(chuàng)建一臺虛擬機在這個向?qū)憧梢赃M行一些基本選項的設(shè)置,適用于專業(yè)人員或?qū)τ嬎銠C較熟悉的人。方式二、使用缺省設(shè)置創(chuàng)建一臺虛擬機這個向?qū)⒆詣舆M行基本參數(shù)的配置,適用于初學(xué)者。方式三、增加一臺已經(jīng)存在的虛擬機將已有的一臺.vmc 文件加載到虛擬機控制臺中,創(chuàng)建一臺虛擬機。4、命名并指定虛擬機配置文件保存位置用按鈕 Browse.選擇要保存在哪個真實磁盤和目錄,并命名.vmc 文件,如E:VPCLinux-demolinux-ins-demo.vmc。5、選擇操作系統(tǒng)類型安裝 linux時請選擇Other6、設(shè)置虛擬機的內(nèi)存大小要根據(jù)你的真實PC 的內(nèi)存大小和所安裝的操作系統(tǒng)類型來決定內(nèi)存大小的設(shè)置。Linux 的內(nèi)存可設(shè)置為48M 到 128M(通常48M 至 96M 即可)。7、為你的虛擬機選擇虛擬硬盤( .vhd )若沒有現(xiàn)成的虛擬

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論