來源:竇孟園 發(fā)布時(shí)間:2018-12-05 11:41:24 閱讀量:1046
一:可以使用約束實(shí)現(xiàn)數(shù)據(jù)完整性
二:可以使用規(guī)則和默認(rèn)值
三:在此之前先了解創(chuàng)建數(shù)據(jù)表的基本知識
建立一個名字為student的數(shù)據(jù)庫
然后在student 的下邊建立一個名字為student1的表
要求如下
屬性名
數(shù)據(jù)類型
可否為空
約束要求
學(xué)號
Char
否
主鍵
姓名
varchar
否
性別
Char
否
年齡
Tinyint
可
所在系
Char
否
建立數(shù)據(jù)庫和數(shù)據(jù)表有兩種方式,一種是在企業(yè)管理器(2000的低版本里)用設(shè)計(jì)完成,另一種是通過(查詢分析器2000)新建查詢完成,sql2008沒有明顯的企業(yè)管理器和查詢分析器,他們都在一個窗體,這樣很方便了,由于通過新建查詢寫代碼的方式要簡便的多,盡量使用寫代碼來實(shí)現(xiàn)吧
建立數(shù)據(jù)庫
建立數(shù)據(jù)表student1
查看數(shù)據(jù)表有沒有建成
學(xué)會了建庫建表,已經(jīng)邁出了第一步,然而建表不能隨便建表,我們需要限制,來實(shí)現(xiàn)數(shù)據(jù)的完整性,開始奔入主題。
【約束】
下邊通過一個總體說明約束怎樣保證數(shù)據(jù)完整性的
名稱
作用
體現(xiàn)的完整性
Primary key
定義外鍵,保證被設(shè)定的列內(nèi)不出現(xiàn)重復(fù)值
實(shí)體完整性
Unique
不出現(xiàn)重復(fù)
實(shí)體完整性
Foreign key
定義外鍵,保證表和表之間的一致性
參照完整性
Check
定義列中數(shù)據(jù)的范圍
自定義完整性
default
為列的數(shù)據(jù)設(shè)定默認(rèn)值
自定義完整性
1:主鍵 一個表中只能有一個主鍵 定義主鍵可以設(shè)定,也可以在代碼中需要的時(shí)候加在相應(yīng)的字段
2:unique 數(shù)據(jù)表中非主鍵列在各行記錄中不能出現(xiàn)相同的非空值,這時(shí)就需要有unique的特性,用法和主鍵一樣
3:外鍵 是不同的表之間的關(guān)系,當(dāng)其中有一些數(shù)據(jù)存在關(guān)系是可以建立外鍵,(可以避免出錯)
[constraint 約束名] foreign key (列名) reference 表名(列名)
4:check 限定列之間數(shù)據(jù)的參照關(guān)系 比如一個表中包含學(xué)生的“出生日期”和“入校日期”,入校日期肯定要晚于出生日期,這個時(shí)候可以用check來限定
[constraint 約束名] check (關(guān)系式)
5:default 當(dāng)有非常多的相同數(shù)據(jù)要輸入到數(shù)據(jù)表中的時(shí)候,可以設(shè)定一個默認(rèn)值,這樣減少工作量
[constraint 約束名] default 常量表達(dá)式 for 字段名
說明::在沒有單獨(dú)拿出定義約束的時(shí)候可以省略[constraint 約束名]
【規(guī)則和默認(rèn)值】
1:規(guī)則
規(guī)則可以做:驗(yàn)證數(shù)據(jù)的值是否處于一定的范圍內(nèi)
是否和特定格式相匹配 是否與制定列表中的輸入相匹配(想到了學(xué)生信息管理系統(tǒng)一些東西我們都可以在數(shù)據(jù)庫里設(shè)定,比如時(shí)間的格式)
創(chuàng)建規(guī)則:create rule 規(guī)則名 as 規(guī)則的表達(dá)式(如果表達(dá)式中含有參數(shù)要加上@)
使用規(guī)則:sp_bindrule 規(guī)則名, ‘表名.列名’
查看規(guī)則:sp_helptext 規(guī)則名
解除規(guī)則: sp_unbindrule 規(guī)則名, ‘表名.列名’
刪除規(guī)則:drop rule 規(guī)則名組
2:默認(rèn)值
創(chuàng)建默認(rèn)值:create default 默認(rèn)名 as 表達(dá)式
使用默認(rèn)值:sp_bindefault 默認(rèn)名, ‘表名.列名’(注意在敲代碼的時(shí)候注意必須是英文)
查看默認(rèn)值:sp_helpconstraint 表名
解除默認(rèn)值:sp_unbindefault 默認(rèn)名, ‘表名.列名’
刪除默認(rèn)值:drop_default 默認(rèn)值名
四:【總結(jié)】
規(guī)則和約束都可以保證數(shù)據(jù)完整性,二者的區(qū)別
1:約束是基于表的操作
規(guī)則和默認(rèn)值在創(chuàng)建了以后,他不屬于某個表,只有在綁定了命令了以后才會發(fā)生關(guān)系
2:一個約束只能對一個表的一個列產(chǎn)生作用,
規(guī)則和默認(rèn)值可以綁定到多個表多個列中。
---------------------