資料庫中的完整性約束及例項
(1)使用IDENTITY(識別符號)列
語法格式:
CREATE TABEL 資料表名
(列名 列資料型別 IDENTITY [(種子, 增量)] [,…])
說明:標識種子為標識列的起始值,標識遞增量為每次增加的數,二者的預設值均為1。
(2)使用IDENTITY函式
語法格式:
IDENTITY ( 資料型別 [ , 種子 , 遞增量 ] ) AS 列名
說明:只用在帶有 INTO table 子句的 SELECT 語句中,可以將標識列插入到新表中。
儘管類似,但是 IDENTITY 函式不是與 CREATE TABLE 和 ALTER TABLE 一起使用的 IDENTITY 屬性。
完整性型別 約束型別 描述
域 DEFAULT 指定列的預設值
CHECK 指定列的允許值
FOREIGN KEY 指定必須存在值的列
NULL 指定是否允許為NULL
實體 PRIMARY KEY 唯一標識每一行
UNIQUE 防止非主鍵重複
引用 FOREIGN KEY 定義值與同一個表或另一個表的主鍵值匹配的一列或多列組合
CHECK 指定根據同一個表中其他列的值可在列中接受的資料值
在SQL SERVER中,對於基本表的約束分為列約束和表約束。
完整性約束的基本語法格式為:
[CONSTRAINT constraint_name(約束名)] <約束型別>
約束不指定名稱時,系統會給定一個名稱。
在SQL Server 2005中有6種約束:主鍵約束(primary key constraint)、惟一性約束(unique constraint)、檢查約束(check constraint)、預設約束(default constraint)、外部鍵約束(foreign key constraint)和空值(NULL)約束。
PRIMARY KEY 約束
PRIMARY KEY約束用於定義基本表的主鍵,它是惟一確定表中每一條記錄的識別符號,其值不能為NULL,也不能重複,以此來保證實體的完整性。PRIMARY KEY與UNIQUE約束類似,通過建立唯一索引來保證基本表在主鍵列取值的唯一性,但它們之間存在著很大的區別:
①一個表只能有一個 PRIMARY KEY 約束 ,但可定義多個UNIQUE約束;
②對於指定為PRIMARY KEY的一個列或多個列的組合,其中任何一個列都不能出現空值,而對於UNIQUE所約束的唯一鍵,則允許為空。
注意:不能為同一個列或一組列既定義UNIQUE約束,又定義PRIMARY KEY約束;
PRIMARY KEY既可用於列約束,也可用於表約束。
(2)使用Transact-SQL語句操作法設定主鍵約束,其語法形式如下:
PRIMARY KEY
CONSTRAINT constraint_name PRIMARY KEY ( column_name )
舉例:建立一個SC表,定義SNO,CNO共同組成SC的主鍵
程式清單如下:
create table sc(
sno char(5) not null,
cno char(5) not null,
score numeric (3),
constraint sc_prim primary key(sno,cno)
)
UNIQUE約束
惟一性約束用於指定一個或者多個列的組合值具有惟一性,以防止在列中輸入重複的值。定義了UNIQUE約束的那些列稱為唯一鍵,系統自動為唯一鍵建立唯一索引,從而保證了唯一鍵的唯一性。
當使用惟一性約束時,需要考慮以下幾個因素:
• 使用惟一性約束的欄位允許為空值;
• 一個表中可以允許有多個惟一性約束;
• 可以把惟一性約束定義在多個欄位上;
• 惟一性約束用於強制在指定欄位上建立一個惟一性索引;
• 預設情況下,建立的索引型別為非聚集索引。
使用Transact-SQL語句完成惟一性約束的操作,其語法形式如下:
• UNIQUE
• CONSTRAINT constraint_name UNIQUE ( column_name )
CHECK 約束
檢查約束對輸入列或者整個表中的值設定檢查條件,以限制輸入值,保證資料庫資料的完整性。
當使用檢查約束時,應該考慮和注意以下幾點:
• 一個列級檢查約束只能與限制的欄位有關;一個表級檢查約束只能與限制的表中欄位有關;
• 一個表中可以定義多個檢查約束;
• 每個CREATE TABLE語句中每個欄位只能定義一個檢查約束;
• 在多個欄位上定義檢查約束,則必須將檢查約束定義為表級約束;
• 當執行INSERT語句或者UPDATE語句時,檢查約束將驗證資料;
• 檢查約束中不能包含子查詢。
用Transact-SQL語句建立檢查約束。其語法形式如下:
• CONSTRAINT constraint_name CHECK (logical_expression)
• CHECK (logical_expression)
create table sc(
sno char(5) not null,
cno char(5) not null,
score numeric(5,1) constraint score_chk check(score>=0 and score <=100),
constraint sc_prim primary key(sno,cno),
)
drop table sc
insert into sc values('1','2',3)
DEFAULT 約束
預設約束指定在插入操作中如果沒有提供輸入值時,則系統自動指定值。預設約束可以包括常量、函式、不帶變元的內建函式或者空值。
使用預設約束時,應該注意以下幾點:
(1)每個欄位只能定義一個預設約束;
(2)如果定義的預設值長於其對應欄位的允許長度,那麼輸入到表中的預設值將被截斷;
(3)不能加入到帶有IDENTITY屬性或者資料型別為timestamp的欄位上;
(4)如果欄位定義為使用者定義的資料型別,而且有一個預設繫結到這個資料型別上,則不允許該欄位有預設約束。
建立預設約束的Transact-SQL語句操作法。其語法形式如下:
• CONSTRAINT constraint_name DEFAULT constraint_expression [FOR column_name]
• DEFAULT constraint_expression [FOR column_name]
舉例:為 dept欄位建立預設約束。
程式清單如下:
constraint con_dept default ‘計算機’ for dept
NULL 約束
空值約束用來控制是否允許該欄位的值為NULL。NULL值不是0也不是空白,更不是填入字串的“NULL”字串,而是表示“不知道”、“ 不確定”或“沒有資料”的意思。
當某一欄位的值一定要輸入才有意義的時候,則可以設定為NOT NULL。如主鍵列就不允許出現空值,否則就失去了唯一標識一條記錄的作用。空值約束只能用於定義列約束。
FOREIGN KEY 約束
FOREIGN KEY約束是用於建立和加強兩個表資料之間的連結的一列或多列。外部鍵約束用於強制參照完整性。
FOREIGN KEY 約束確保同一個表或者不同表之間的引用完整性
必須引用一個PRIMARY KEY或者UNIQUE約束
使用者必須在應用表上具有REFERENCES許可權
一個表中最多可以有31個外部鍵約束;
在臨時表中,不能使用外部鍵約束;
主鍵和外部鍵的資料型別必須嚴格匹配 。
使用Transact-SQL語句設定外部鍵約束 ,其語法形式如下:
CONSTRAINT constraint_name
FOREIGN KEY (column_name[,…n])
REFERENCES ref_table [(ref_column[,…n])]
ALTER TABLE [Sales].[SalesOrderHeader] WITH CHECK
ADD CONSTRAINT [FK_SalesOrderHeader_Customer_CustomerID]
FOREIGN KEY([CustomerID])
REFERENCES [Sales].[Customer] ([CustomerID])
禁用 CHECK 和 FOREIGN KEY 約束:
當執行大型批處理作業時提高效能
相關推薦
資料庫中的完整性約束及例項
宣告資料完整性和過程資料完整性 (1)使用IDENTITY(識別符號)列 語法格式: CREATE TABEL 資料表名 (列名 列資料型別 IDENTITY [(種子, 增量)] [,…]) 說明:標識種子為標識列的起始值,標識遞增量為每次增加的數,二者的預設值均為1。 (2)使用IDENTIT
五、資料庫之完整性約束
一、介紹 約束條件與資料型別的寬度一樣,都是可選引數 作用:用於保證資料的完整性和一致性主要分為: PRIMARY KEY (PK) 標識該欄位為該表的主鍵,可以唯一的標識記錄 FOREIGN KEY (FK) 標識該欄位為
Django基礎-----ORM簡介、資料庫中資料操作及簡單的一對多模型
一:ORM 物件關係對映,是一種程式技術,用於實現面向物件程式語言裡不同型別系統的資料之間的轉換 。從效果上說,它其實是建立了一個可在程式語言裡使用的–“虛擬物件資料庫”。 在ORM框架中,它幫我們把類和資料表進行了一個對映,可以讓我們通過類和類物件就能操作它所對應的表格中的資料。ORM框架
資料庫基礎知識:資料庫中的約束和三大正規化
一.資料庫中的正規化: 正規化, 英文名稱是 Normal Form,它是英國人 E.F.Codd(關係資料庫的老祖宗)在上個世紀70年代提出關係資料庫模型後總結出來的,正規化是關係資料庫理論的基礎,也是我們在設計資料庫結構過程中所要遵循的規則和指導方法,以下就是對
資料庫的完整性約束(ForeignKey ,Unique)
文字轉自於 海燕.部落格 一、介紹 約束條件與資料型別的寬度一樣,都是可選引數 作用:用於保證資料的完整性和一致性主要分為: PRIMARY KEY (PK) 標識該欄位為該表的主鍵,可以唯一的標識記錄 FOREIGN KEY (FK) 標識該欄位為
Sql Server 資料庫之完整性約束
在資料庫中有四種類型的約束來保證完整性: 域完整性 —— 對列的約束 實體完整性 —— 對行的約束(不能用重複行) 引用完整性 —— 一個表中的某列值是引自另一個表的 自定義完整性(這個可能有點深奧,未進行了解) 1.保證域完整性的約束方法:檢查約束、預設
mysql學習【第5篇】:資料庫之完整性約束 資料庫之完整性約束
資料庫之完整性約束 一、介紹 約束條件與資料型別的寬度一樣,都是可選引數 作用:用於保證資料的完整性和一致性主要分為:
MySQL資料庫--外來鍵約束及外來鍵使用
什麼是主鍵、外來鍵 關係型資料庫中的一條記錄中有若干個屬性,若其中某一個屬性組(注意是組)能唯一標識一條記錄,該屬性組就可以成為一個主鍵。 比如: 學生表(學號,姓名,性別,班級) 其中每個學生的學號是唯一的,學號就是一個主鍵 課程
jsp中向資料庫中插入資料及中文亂碼問題
首先附上最剛開始的程式碼,功能是向資料庫中插入資料,資料庫中的屬性如下: <% String action = request.getParameter("action"); //表單中提交過來的資料。 if(action != null &&
檢視MYSQL資料庫中所有使用者及擁有許可權
如何檢視授權的所有使用者 SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; 撤銷已經賦予給 MySQL 使用者許可權的許可權。 revoke 跟 grant 的語法差不多,只需要把關鍵字
建立表、修改表、刪除表的方法 ,建立主鍵約束、外來鍵約束、使用者自定義約束的方法 ,建立查詢表的方法及使用截斷表的方法,理解約束在資料庫中的作用
撰寫人——軟工二班——陳喜平 – 實驗內容: – 一、建立表 – 建立圖書館管理系統所涉及的表 – 建立產品銷售系統所涉及的表 – 圖書表book(bid,bname,price,qty) – 書庫表lib(lid,lname,address) – 讀者表reader
java中Mysql資料庫連線及例項
目標:通過在eclipse中載入mysql驅動,將users表中的資料提取出來。 1.建立資料庫 在mysql資料庫中test目錄下建立users資料庫。存取欄位:id username password。 2.構建java專案 2.1 在構建的
sql中表達完整性約束
AC enc 語義 表名 .so del eat HA pos sql中表達完整性約束 sql約束性分為實體完整性,參照完整性,用戶定義完整性,刪除約束 實體完整性 1.建表時定義主鍵 Create table 表名 ( Sno
數據庫中的sql語句完整性約束
處理 hang tid 否則 都是 生成 添加 cti 增長 完整性約束 完整性約束是為了表的數據的正確性!如果數據不正確,那麽一開始就不能添加到表中。 1 主鍵 當某一列添加了主鍵約束後,那麽這一列的數據就不能重復出現。這樣每行記錄中其主鍵列的值就是這一行的唯一標識。
2018.11.13 Hibernate 中資料庫查詢中的Criteria查詢例項
Criteria是面向物件的無語句查詢 Demo.java package com.legend.b_criteria; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Session; import
sqlserver資料庫設計完整性與約束
1 use StudentManageDB 2 go 3 --建立主鍵約束 4 5 if exists(select * from sysobjects where name='pk_StudentId') 6 alter table Students drop constraint pk
Sqlit3資料庫的詳細講解及一些在python中的小技巧
資料庫的基本概念。 庫 schema:好像整個表格文件。好像一個物流公司共佔地100畝,蓋了50個倉庫,A01倉庫負責儲存河南客戶貨物,A02倉庫負責儲存廣州xx專案物料。每一個倉庫對應一個專案。 表 table:對應Excel表格裡sheet1 sheet2。由行內內
Python中函式定義及引數例項
1.函式定義 函式就是完成特定功能的一個語句組,這組語句可以作為一個單位使用,並且給它取一個名字 ,可以通過函式名在程式的不同地方多次執行(這通常叫函式呼叫) 預定義函式(可以直接使用) 自定義函式(自己編寫) 為什麼使用函式? 降低程式設計難度,通常將
Oracel資料庫中檢視與同義詞的理解及應用場景
轉載至: https://blog.csdn.net/u012411219/article/details/51321162 1. 資料庫物件之【檢視】簡單介紹 1.1 What:什麼叫檢視?
scrapy-redis例項,分佈爬蟲爬取騰訊新聞,儲存在資料庫中
本篇文章為scrapy-redis的例項應用,原始碼已經上傳到github: https://github.com/Voccoo/NewSpider 使用到了: python 3.x redis scrapy-redis pymysql Redis-Desktop-Manage