日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 數據庫 > Sqlserver > SQL SERVER中的約束種類及相關使用

SQL SERVER中的約束種類及相關使用

來源:程序員人生   發布時間:2014-05-08 09:01:04 閱讀次數:3927次

  建站學院(LieHuo.Net)SQL教程 你知道SQL SERVER中約束到底有幾種嗎?你知道約束與主鍵是什么關系嗎?你知道約束該如何使用嗎?如果你對這幾個問題還有疑問,那么就請繼續往下看吧。

  SQL SERVER 2005中,約束,Constraints,顧名思義,就是按照約定來束縛某種東西。在數據庫,無非就是對存儲的數據進行束縛,當然需要按照某種既定的規則,一般是指語義的限制以及用來制約屬性上的關系。可能在平時的工作中,尤其是對開發人員來說,約束用的不是很多,更多的時候是用代碼去做一些輸入的驗證,這其實就是約束的思想,把不滿足條件的數據排除在外。其實SQL SERVER 2005也給我們提供這樣的一些約束:

  1. Check Constraints

  我相信大部分的朋友對約束的概念理解應該都是Check類型的約束,這種約束對表中的某一列的格式或者值進行限制,只有滿足條件的數據才能被寫入。比如:

  create table Goods( GoodsID int identity(1,1) primary key, Price decimal(12,4) constraint chkPrice check (Price>1000))

  上面的SQL建立了一張新表,并且對表中的列Price建立一個check約束,名叫chkPrice,它的作用就是對插入price列的數據進行判斷,如果大于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". The conflict occurred in database "AdventureWorks", table "dbo.Goods", column 'Price'.

  這里順便提一下,如果我們執行了下面的代碼,結果會是怎樣呢?

  insert into goods values(null)

  如果你覺得也會報錯,那么恭喜你,你錯了。約束其實是對滿足條件,即條件表達式返回TRUE的一律通過。那么,如果結果是NULL呢?NULL在SQL SERVER里的類型是UNKNOWN,就是不知道。那我們就要把它理解成可以成為任何類型,可能為TRUE。所以在這個例子中,NULL是可以被插入的。

  2. Default Constraints

  這個約束相對簡單一些,就是事先定義一個默認值,如果在插入數據的時候沒有指定,系統會自動把事先定義好的默認值寫入對應的列。

  create table Product(ProductID int identity(1,1) primary key,ProductName varchar(80) not null,Country varchar(40) default 'China')Country這列就是一個含有Default約束的列,如果在插入一條數據的時候沒有指定值,那么系統會默認的插入China.

  insert into product values('AAA','US')insert into product(ProductName) values('BBB')結果為

   1 AAA US

   2 BBB China

  3. Unique Constraints

   Unique就是獨有的,這個約束就是確保在非主鍵列中不輸入重復的值。這一點與主鍵的概念可能有一些類似,之所以把Unique放在前面說,就是為了強調一點,如果想強制一列或者多列的組合的唯一性時,應該選擇Unique而不是主鍵。

   同時,還有一點,主鍵不能為null,但是Unique可以支持null。

  alter table product add ProductCode int null constraint pc_unique unique我們對Product表中的ProductCode列設置了unique約束,這一列的值不可重復.但允許有空值存在.

  insert into product (productname,ProductCode) values('aaa',null)OK

  第一個空值插入成功

  insert into product (productname,ProductCode) values('bbb',null)ERROR:Violation of UNIQUE KEY constraint 'pc_unique'. Cannot insert duplicate key in object 'dbo.product'.

  第二個空值插入失敗

  4. Primary Key Constraints

  主鍵約束可能是大家最為熟悉的,在數據庫的設計中,我們基本上會對每一張表建一個主鍵約束,用以把數據庫的每條記錄(行)區分開來.主鍵可以針對表中的一列或多列。但與約束不同的是,它的值不能為空。

  下面的例子是對其中一列設置主鍵:

  Create Table Users(UserID int primary key,UserName varchar(50) not null)

  下面是對多列設置主鍵:

  CREATE TABLE KeyData( FiscalYear int not null, Period int not null, DataType int not null, KeyValue int not null CONSTRAINT [PK_constraint_keydata] PRIMARY KEY CLUSTERED ( FiscalYear, Period ))

  5. Foreign Key Constraints

  前面提到約束分語義上限制和屬性關系的限制,外鍵約束就是用來限制屬性間關系的。通俗一點講,就是一張表中的某列引用了另一張表的主鍵,因為該列的值必須出自主鍵列的值。

  Create table Manager( ManagerID int primary key, ManagerName varchar(50),)上面我們建立了一個Manager的表,有一個ID列是該表的主鍵,唯一代表了每一個經理。

  下面建立了銷售區域的表,并指定每個區域有一個經理負責:

  Create Table SalesRegion( SalesRegionID int Primary Key, SalesRegionName varchar(100), ManagerID int foreign key REFERENCES Manager(ManagerID))從上面的命令中可以看出,ManagerID就是外鍵,它的作用是連接了SalesRegion與Manager兩張表,限制ManagerID在表SalesRegion中的使用,我們不能把某個區域指定給一個不存在經理負責。如果我們試圖往SalesRegion插入一條記錄,而該記錄的ManagerID是Manager表中不存在的ManagerID,系統就會報出以下的錯誤:

  The INSERT statement conflicted with the FOREIGN KEY constraint "FK__SalesRegi__Manag__3F6663D5". The conflict occurred in database "AdventureWorks", table "dbo.Manager", column 'ManagerID'.

  文章來自:http://www.cnblogs.com/PumpkinDatabase/archive/2009/07/02/1432084.html

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日韩成人免费在线 | 日韩一区二区成人 | 日本视频在线观看 | 毛片视频大全 | 精品久久精品久久 | 国产精品视频一二三区 | 亚洲精品国产精品久久99热 | 欧美 日韩 中文字幕 | 91久久精品一区 | 在线免费日韩 | 久久久精品中文 | 亚洲精品99 | 国产91亚洲 | 欧美日韩国产综合在线 | 亚洲午夜视频在线 | 亚洲一级在线观看 | 久久精品国产一区二区电影 | 久久精品国产99国产 | 在线观看视频一区 | 国产网站在线 | 激情综合在线 | 久久精品在这里 | 最新国产精品精品视频 | 久久久国产精品一区 | 精品国产乱 | 久久精品国产清自在天天线 | 欧美成人福利 | 99re视频在线观看 | 久久亚洲一区二区三区四区 | 激情五月综合 | 少妇精品久久久一区二区三区 | 一级毛片在线 | 成人精品一区二区三区视频播放 | 亚洲精品色综合av网站 | 日韩在线观看 | 五月婷婷综合激情网 | 久久久久国产一区二区三区四区 | 国产在线网 | 欧美久久久| 国产精品久久国产精品 | 久久黄色 |