第4章數(shù)據(jù)表對(duì)象的創(chuàng)建與管理_第1頁(yè)
第4章數(shù)據(jù)表對(duì)象的創(chuàng)建與管理_第2頁(yè)
第4章數(shù)據(jù)表對(duì)象的創(chuàng)建與管理_第3頁(yè)
第4章數(shù)據(jù)表對(duì)象的創(chuàng)建與管理_第4頁(yè)
第4章數(shù)據(jù)表對(duì)象的創(chuàng)建與管理_第5頁(yè)
已閱讀5頁(yè),還剩92頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐第四章第四章 數(shù)據(jù)表對(duì)象的創(chuàng)建與管理數(shù)據(jù)表對(duì)象的創(chuàng)建與管理制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐本章學(xué)習(xí)目標(biāo)本章學(xué)習(xí)目標(biāo)1、學(xué)習(xí)目標(biāo)l掌握SQL Server2008數(shù)據(jù)表的基本概念;l理解約束、默認(rèn)和規(guī)則的含義并學(xué)會(huì)運(yùn)用;l熟練掌握利用SQL Server Mangement Studio對(duì)象資源管理器和T-SQL語(yǔ)句兩種方法進(jìn)行數(shù)據(jù)表的創(chuàng)建、查看、修改、重命名及刪除操作;l熟練掌握利用SQL Server Mangement Studio對(duì)象資源管理器和T-SQL語(yǔ)句兩種方法進(jìn)行數(shù)據(jù)表中數(shù)據(jù)的增、刪、改操作;l熟練掌握利用SQL Server Mangement Stud

2、io對(duì)象資源管理器和T-SQL語(yǔ)句兩種方法進(jìn)行數(shù)據(jù)表的約束的設(shè)置操作;2. 學(xué)習(xí)要點(diǎn)lSQL Server 2008表結(jié)構(gòu)的創(chuàng)建、修改; lSQL Server 2008的表數(shù)據(jù)的增、刪、改操作; l約束的創(chuàng)建及管理。 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐4.1.14.1.1數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 所謂數(shù)據(jù)類(lèi)型就是以數(shù)據(jù)的表現(xiàn)方式和存所謂數(shù)據(jù)類(lèi)型就是以數(shù)據(jù)的表現(xiàn)方式和存儲(chǔ)方式來(lái)劃分的數(shù)據(jù)的種類(lèi)。儲(chǔ)方式來(lái)劃分的數(shù)據(jù)的種類(lèi)。 在在SQL Server SQL Server 中每個(gè)變量、參數(shù)、表達(dá)式等中每個(gè)變量、參數(shù)、表達(dá)式等都有數(shù)據(jù)類(lèi)型。都有數(shù)據(jù)類(lèi)型。 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐(一)(一) 整數(shù)數(shù)據(jù)類(lèi)型整數(shù)

3、數(shù)據(jù)類(lèi)型 1. INT 1. INT (INTEGERINTEGER)說(shuō)明:(1)(1)取值范圍:取值范圍: -2 31(-2 147483448) 2 31 -1 (2147 483447)之間的所有正負(fù)整數(shù)。(2)(2)存儲(chǔ)大小存儲(chǔ)大?。?4個(gè)字節(jié),其中1位表示整數(shù)值的正負(fù)號(hào),其它31 位表示整數(shù)值的長(zhǎng)度和大小。例: declare a int declare a int -定義一個(gè)整型局部變量定義一個(gè)整型局部變量a a select a=-12345 select a=-12345 -為該局部變量賦值為為該局部變量賦值為-12345-12345 select a select a -在屏

4、幕上輸出該局部變量的值在屏幕上輸出該局部變量的值 go go -整個(gè)程序段結(jié)束整個(gè)程序段結(jié)束制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐2. SMALLINT2. SMALLINT說(shuō)明:(1 1)取值范圍:)取值范圍:-2 15(-32768) 2 15 -1(32767)之間的所有正負(fù)整數(shù)。 (2 2)存儲(chǔ)大小:)存儲(chǔ)大?。?個(gè)字節(jié),其中1位表示整數(shù)的正負(fù)號(hào),其它15位表示整數(shù)值的長(zhǎng)度和大小 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐3. TINYINT3. TINYINT說(shuō)明:(1 1)取值范圍:)取值范圍: 0 255 之間的所有正整數(shù)。(2 2)存儲(chǔ)大小:)存儲(chǔ)大?。? 個(gè)字節(jié)例: declare b tinyin

5、t set b=12345 select b go結(jié)果:出錯(cuò)制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐4. BIGINT4. BIGINT 說(shuō)明:(1 1)取值范圍:)取值范圍: -243 (-9223372034854775807) 243-1( 9223372034854775807)之間的所有正負(fù)整數(shù)。(2 2)存儲(chǔ)大?。海┐鎯?chǔ)大?。好總€(gè)BIGINT 類(lèi)型的數(shù)據(jù)占用8個(gè)字節(jié)的存儲(chǔ)空間。 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐(二)浮點(diǎn)數(shù)據(jù)類(lèi)型(二)浮點(diǎn)數(shù)據(jù)類(lèi)型 ( (一一) )近似數(shù)值類(lèi)型:指在其范圍內(nèi)不是所有的近似數(shù)值類(lèi)型:指在其范圍內(nèi)不是所有的數(shù)都能精確表示數(shù)都能精確表示 REAL REAL 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)

6、型: : REALREAL數(shù)據(jù)類(lèi)型以指數(shù)形式表示時(shí)可精確到第數(shù)據(jù)類(lèi)型以指數(shù)形式表示時(shí)可精確到第7 7 位小數(shù),位小數(shù),(1)(1)取值范圍:從取值范圍:從-3.40E+38 -3.40E+38 到到3.40E +383.40E +38。(2)(2)存儲(chǔ)大小:占用存儲(chǔ)大?。赫加? 4 個(gè)字節(jié)個(gè)字節(jié)的存儲(chǔ)空間的存儲(chǔ)空間。(3)(3)若以小數(shù)點(diǎn)表示,則可精確到小數(shù)點(diǎn)后第(若以小數(shù)點(diǎn)表示,則可精確到小數(shù)點(diǎn)后第(8-8-整數(shù)位)整數(shù)位)位;位;(4)(4)當(dāng)整數(shù)位達(dá)到當(dāng)整數(shù)位達(dá)到8 8位時(shí),系統(tǒng)自動(dòng)以指數(shù)形式表示位時(shí),系統(tǒng)自動(dòng)以指數(shù)形式表示 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐 2. FLOAT FLOAT:說(shuō)

7、明:(1)(1)取值范圍:取值范圍:可精確到第15 位小數(shù),其范圍為從-1.79E +308 到1.79E +308。 (2)(2)存儲(chǔ)大小存儲(chǔ)大?。赫加? 個(gè)字節(jié)的存儲(chǔ)空間。(3)(3)當(dāng)整數(shù)位數(shù)達(dá)到16位時(shí),系統(tǒng)自動(dòng)以指數(shù)形式表示。制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐(三)精確小數(shù): 1. DECIMALDECIMAL說(shuō)明:(1)(1)取值范圍:取值范圍:存儲(chǔ)從-1038+1到1038-1的固定精度和范圍的數(shù)值型數(shù)據(jù);(2)(2)存儲(chǔ)大小存儲(chǔ)大?。?17個(gè)字節(jié)不等;(3)(3)可用格式可用格式: DECIMALDECIMAL(p p,ss) P指范圍是小數(shù)點(diǎn)左右所能存儲(chǔ)的數(shù)字的總位數(shù),不包括小數(shù)點(diǎn)

8、; S是精度,小數(shù)點(diǎn)右邊存儲(chǔ)的數(shù)字的位數(shù),缺省為0。例如:例如:decimal(15decimal(15,5)5),表示共有,表示共有15 15 位數(shù),其位數(shù),其中整數(shù)中整數(shù)10 10 位,小數(shù)位,小數(shù)5 5位。位。制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐 2. NUMERIC2. NUMERIC NUMERIC數(shù)據(jù)類(lèi)型與DECIMAL數(shù)據(jù)類(lèi)型完全相同。注意:注意:SQL Server 為了和前端的開(kāi)發(fā)工具配合,其所支持的數(shù)據(jù)精度默認(rèn)最大為28位。但可以通過(guò)使用命令來(lái)改變默認(rèn)精度 .制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐(四)(四) 二進(jìn)制數(shù)據(jù)類(lèi)型二進(jìn)制數(shù)據(jù)類(lèi)型 1 1 . BINARYBINARY:固定長(zhǎng)度的二進(jìn)

9、制數(shù)據(jù)類(lèi)型。(1 1) 格式:格式:BINARYBINARY( n n), n 表示數(shù)據(jù)的長(zhǎng)度,取值為1 到8000 ,必須指定BINARY 類(lèi)型數(shù)據(jù)的大小。 注:注:輸入數(shù)據(jù)時(shí)必須在數(shù)據(jù)前加上字符“0X” 作為二進(jìn)制標(biāo)識(shí),且數(shù)據(jù)輸入時(shí)為十六進(jìn)制數(shù)字,若輸入的數(shù)據(jù)過(guò)長(zhǎng)將會(huì)截掉其超出部分,若輸入的數(shù)據(jù)位數(shù)為奇數(shù),則會(huì)在符號(hào)“0X ”后添加一個(gè)0。制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐 2 .2 . VARBINARYVARBINARY: 可變長(zhǎng)度的二進(jìn)制數(shù)據(jù)類(lèi)型 (1)(1) 格式:格式:VARBINARYVARBINARY(n n)。 n 的取值也為1 到8000, (2)(2) 存儲(chǔ)大?。捍鎯?chǔ)大?。簩?shí)

10、際數(shù)值長(zhǎng)度+4個(gè)字節(jié)制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐(五)邏輯數(shù)據(jù)類(lèi)型(五)邏輯數(shù)據(jù)類(lèi)型 BITBIT (1 1) 存儲(chǔ)大小存儲(chǔ)大?。赫加? 個(gè)字節(jié)的存儲(chǔ)空間; (2 2)取值范圍:)取值范圍:0 或1 ,如果輸入0 或1以外的值,將被視為1 (3 3)說(shuō)明:)說(shuō)明: BIT 類(lèi)型不能定義為NULL 值(所謂NULL 值是指空值或無(wú)意義的值)。例:declare a bit -定義局部變量a為BIT型 set a=2 -為a賦值為2 select a -輸出結(jié)果為1制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐(六)字符數(shù)據(jù)類(lèi)型(六)字符數(shù)據(jù)類(lèi)型 1. CHAR1. CHAR: 固定長(zhǎng)度的非UNICODE字符 (1

11、 1) 定義形式定義形式:CHAR (n) ; (2 2)存儲(chǔ)大?。┐鎯?chǔ)大小:字符串中每個(gè)字符和符號(hào)占一個(gè)字節(jié)的存儲(chǔ)空間,漢字占2個(gè)字節(jié)的空間n 表示所有字符占的總存儲(chǔ)空間,n 的取值為1 8000, 即可容納8000 個(gè)ANSI 字符。 (3 3) 說(shuō)明說(shuō)明:省略N系統(tǒng)默認(rèn)值為1, 若輸入數(shù)據(jù)的字符數(shù)小于n,則系統(tǒng)自動(dòng)在其后添加空格來(lái)填滿設(shè)定好的空間。若輸入的數(shù)據(jù)過(guò)長(zhǎng),將會(huì)截掉其超出部分。制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐2 . VARCHAR2 . VARCHAR: 可變長(zhǎng)度的非Unicode字符(1)1) 定義形式定義形式:VARCHAR (n) ,n 的取值為1 到8000(2)2) 存儲(chǔ)大

12、小存儲(chǔ)大?。簩?shí)際數(shù)值長(zhǎng)度,若輸入數(shù)據(jù)的字符數(shù)小于n ,則系統(tǒng)不會(huì)在其后添加空格來(lái)填充空間。制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐 . NCHAR. NCHAR: 固定長(zhǎng)度的UNICODE字符 (1)(1)定義形式定義形式:NCHAR NCHAR (n n) 。 (2)(2)存儲(chǔ)大小存儲(chǔ)大?。鹤址忻總€(gè)字符、符號(hào)和漢字均占每個(gè)字符、符號(hào)和漢字均占兩個(gè)字節(jié)兩個(gè)字節(jié)的存儲(chǔ)空間,n表示總存儲(chǔ)空間,取值為14000。 (3)(3)說(shuō)明說(shuō)明:(字符中,英文字符只需要一個(gè)字節(jié)存儲(chǔ)就足夠了,但漢字眾多,需要兩個(gè)字節(jié)存儲(chǔ),英文與漢字同時(shí)存在時(shí)容易造成混亂)Unicode字符集就是為了解決字符集這種不兼容的問(wèn)題而產(chǎn)生的,

13、它所有的字符都用兩個(gè)字節(jié)表示,即英文字符也是用兩個(gè)字節(jié)表示。 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐. NVARCHAR:. NVARCHAR:可變長(zhǎng)度的UNICODE字符 (1)(1) 定義形式定義形式:NVARCHAR NVARCHAR (n n) 。 它與VARCHAR 類(lèi)型相似。不同的是,NVARCHAR數(shù)據(jù)類(lèi)型采用UNICODE 標(biāo)準(zhǔn)字符集(Character Set), n 的取值為1 到4000。(2 2) 存儲(chǔ)大小存儲(chǔ)大?。簩?shí)際數(shù)值長(zhǎng)度實(shí)際數(shù)值長(zhǎng)度, ,超出N的部分截去,不足N的部分不補(bǔ)空格。 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐(七)(七) 文本和圖形數(shù)據(jù)類(lèi)型文本和圖形數(shù)據(jù)類(lèi)型 1 1、TEX

14、TTEXT:用于存儲(chǔ)大量文本數(shù)據(jù)(1)(1) 容量:容量:理論上為1231 1(2147483447)個(gè)字節(jié),實(shí)際應(yīng)用時(shí)需要視硬盤(pán)的存儲(chǔ)空間而定。(2)(2) 說(shuō)明說(shuō)明:SQL SERVER存儲(chǔ)此類(lèi)數(shù)據(jù)時(shí),將TEXT 和IMAGE 類(lèi)型的數(shù)據(jù)直接存放到表的數(shù)據(jù)行中,而不是存放到不同的數(shù)據(jù)頁(yè)中。 這就減少了用于存儲(chǔ)TEXT 和IMAGE 類(lèi)型的空間,并相應(yīng)減少了磁盤(pán)處理這類(lèi)數(shù)據(jù)的I/O 數(shù)量。 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐 2 2 、NTEXTNTEXT NTEXT數(shù)據(jù)類(lèi)型與TEXT類(lèi)型相似,不同的是NTEXT 類(lèi)型采用UNICODE 標(biāo)準(zhǔn)字符集(Character Set), 因此其理論容量為

15、230-1(1, 073, 741, 823)個(gè)字節(jié)。制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐3 3、 IMAGEIMAGE IMAGE數(shù)據(jù)類(lèi)型用于存儲(chǔ)大量的二進(jìn)制數(shù)據(jù)B i n a r y D a t a 。 其 理 論 容 量 為 2 3 1 -1(2,147,483,447)個(gè)字節(jié)。 通常用來(lái)存儲(chǔ)圖形等OLE (Object Linking and Embedding,對(duì)象連接和嵌入)對(duì)象,該類(lèi)型不指定長(zhǎng)度,可用來(lái)輸入任何二進(jìn)制數(shù)據(jù)。在輸入數(shù)據(jù)時(shí)必須在數(shù)據(jù)前加上字符“0X”作為二進(jìn)制標(biāo)識(shí) 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐(八)(八) 日期和時(shí)間數(shù)據(jù)類(lèi)型日期和時(shí)間數(shù)據(jù)類(lèi)型 1. DATETIME1. DA

16、TETIME (1)日期范圍:日期范圍:從 1753 年 1 月 1 日至 9999 年 12 月 31 日的日期;(2) (2) 存儲(chǔ)大?。捍鎯?chǔ)大?。好總€(gè)數(shù)值要求 8 個(gè)字節(jié)的存儲(chǔ)空間。(3) (3) 說(shuō)明:說(shuō)明:如果省略了日期部分,則系統(tǒng)將1900 年1 月1 日作為日期缺省值。 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐 2. SMALLDATETIMESMALLDATETIME (1) (1) 日期范圍:日期范圍:從1900年1月1日到2079年6月6日的日期和時(shí)間數(shù)據(jù); (2) (2) 存儲(chǔ)大小:存儲(chǔ)大?。菏褂? 個(gè)字節(jié)存儲(chǔ)數(shù)據(jù)。 (3) (3) 日期輸入格式日期輸入格式: 允許用斜杠(斜杠(/

17、/)、連接符)、連接符(- -)和小數(shù)點(diǎn)()和小數(shù)點(diǎn)(. .)作為用數(shù)字表示的年、月、日之間的分隔符。如: YMD:2000/4/22 2000-4-22 2000.4.22 MDY:3/5/2000 3-5-2000 3.5.2000 DMY:31/12/1999 31-12-1999 31.12.2000 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐(2 2)時(shí)間輸入格式:)時(shí)間輸入格式: 順序?yàn)椤靶r(shí)、分鐘、秒、毫秒小時(shí)、分鐘、秒、毫秒”,中間用冒號(hào)“:”隔開(kāi),秒和毫秒之間可用小數(shù)點(diǎn)“. .”隔開(kāi),隔開(kāi)后的第一位數(shù)字代表十分之一秒,第二位數(shù)字代表百分之一秒,第三位數(shù)字代表千分之一秒。Am表示午前12小時(shí)

18、 、PM表示午后12小時(shí),默認(rèn)情況為AM。AM 與PM 均不區(qū)分大小寫(xiě)。如:3:5:7.2pm-下午3 時(shí)5 分7 秒200 毫秒10:23:5.123Am-上午10 時(shí)23 分5 秒123 毫秒制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐(九)(九) 貨幣數(shù)據(jù)類(lèi)型貨幣數(shù)據(jù)類(lèi)型 貨幣數(shù)據(jù)類(lèi)型用于存儲(chǔ)貨幣值。在使用貨貨幣數(shù)據(jù)類(lèi)型用于存儲(chǔ)貨幣值。在使用貨幣數(shù)據(jù)類(lèi)型時(shí),應(yīng)在數(shù)據(jù)前加上貨幣符號(hào),系幣數(shù)據(jù)類(lèi)型時(shí),應(yīng)在數(shù)據(jù)前加上貨幣符號(hào),系統(tǒng)才能辨識(shí)其為哪國(guó)的貨幣,如果不加貨幣符統(tǒng)才能辨識(shí)其為哪國(guó)的貨幣,如果不加貨幣符號(hào),則默認(rèn)為號(hào),則默認(rèn)為“¥” 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐1 MONEY1 MONEY(1)(1) 精

19、確值:貨幣單位的萬(wàn)分之一,即精確值:貨幣單位的萬(wàn)分之一,即4 4 位小位小數(shù)數(shù)( 2 ) ( 2 ) 取 值 范 圍 :取 值 范 圍 : - 2- 2 43 43( - -9 2 2 3 3 7 2 0 3 4 8 5 4 7 7 . 5 8 0 8 2 9 2 2 3 3 7 2 0 3 4 8 5 4 7 7 . 5 8 0 8 2 4 34 3 - 1 - 1(+922337203485477.5807+922337203485477.5807)。)。(3)(3) 存儲(chǔ)大上:使用存儲(chǔ)大上:使用8 8個(gè)字節(jié)個(gè)字節(jié)存儲(chǔ)。存儲(chǔ)。制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐2. SMALLMONEY2. SM

20、ALLMONEY 類(lèi)似于類(lèi)似于MONEY MONEY 類(lèi)型,存儲(chǔ)的貨幣值范圍較小類(lèi)型,存儲(chǔ)的貨幣值范圍較小. .(1)(1)取值取值: :從從-214,748.3448-214,748.3448到到+214,748.3447+214,748.3447,(2)(2)存儲(chǔ)空間存儲(chǔ)空間:4 :4 個(gè)字節(jié)個(gè)字節(jié) 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐(十)特定數(shù)據(jù)類(lèi)型(十)特定數(shù)據(jù)類(lèi)型 1 TIMESTAMP1 TIMESTAMP 提供數(shù)據(jù)庫(kù)范圍內(nèi)的惟一值,此類(lèi)型相當(dāng)于提供數(shù)據(jù)庫(kù)范圍內(nèi)的惟一值,此類(lèi)型相當(dāng)于BINARY8BINARY8或或VARBINARYVARBINARY(8 8),但當(dāng)它所定義的),但當(dāng)它所

21、定義的列在更新或插入數(shù)據(jù)行時(shí),此列的值會(huì)被自動(dòng)列在更新或插入數(shù)據(jù)行時(shí),此列的值會(huì)被自動(dòng)更新,一個(gè)計(jì)數(shù)值將自動(dòng)地添加到此更新,一個(gè)計(jì)數(shù)值將自動(dòng)地添加到此TIMESTAMPTIMESTAMP數(shù)據(jù)列中。每個(gè)數(shù)據(jù)庫(kù)表中只能有數(shù)據(jù)列中。每個(gè)數(shù)據(jù)庫(kù)表中只能有一個(gè)一個(gè)TIMESTAMPTIMESTAMP數(shù)據(jù)列。如果建立一個(gè)名為數(shù)據(jù)列。如果建立一個(gè)名為“TIMESTAMPTIMESTAMP”的列,則該列的類(lèi)型將被自動(dòng)設(shè)的列,則該列的類(lèi)型將被自動(dòng)設(shè)為為T(mén)IMESTAMPTIMESTAMP數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐UNIQUEIDENTIFIERUNIQUEIDENTIFIER 存儲(chǔ)一個(gè)存儲(chǔ)一

22、個(gè)14 14 位的二進(jìn)制數(shù)字。此數(shù)字稱(chēng)為位的二進(jìn)制數(shù)字。此數(shù)字稱(chēng)為(GUIDGlobally Unique Identifier GUIDGlobally Unique Identifier ,即全,即全球惟一鑒別號(hào))。球惟一鑒別號(hào))。 此數(shù)字由此數(shù)字由SQLServer SQLServer 的的NEWIDNEWID函數(shù)產(chǎn)生的函數(shù)產(chǎn)生的全球惟一的編碼,在全球各地的計(jì)算機(jī)經(jīng)由全球惟一的編碼,在全球各地的計(jì)算機(jī)經(jīng)由此函數(shù)產(chǎn)生的數(shù)字不會(huì)相同此函數(shù)產(chǎn)生的數(shù)字不會(huì)相同 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐4.1.2 常量的表示及輸入方法常量的表示及輸入方法 字符串類(lèi)型字符串類(lèi)型:用單引號(hào)來(lái)標(biāo)識(shí)。若串中出現(xiàn)單:用

23、單引號(hào)來(lái)標(biāo)識(shí)。若串中出現(xiàn)單引號(hào)本身,則連寫(xiě)兩個(gè)表示一個(gè)。引號(hào)本身,則連寫(xiě)兩個(gè)表示一個(gè)。unicodeunicode型型要在前邊加大寫(xiě)的要在前邊加大寫(xiě)的N N,比如:,比如:N NABCDABCD。二進(jìn)制常量二進(jìn)制常量:以:以0 x0 x開(kāi)頭的開(kāi)頭的1616進(jìn)制符號(hào)來(lái)表示;進(jìn)制符號(hào)來(lái)表示;bit型常量型常量:只有:只有0 0和和1 1兩個(gè)值;兩個(gè)值;日期類(lèi)型常量日期類(lèi)型常量:用引號(hào)括起來(lái)。:用引號(hào)括起來(lái)。2000-04-2000-04-1212,2000.04.152000.04.15,2000-5-12 14:202000-5-12 14:20。貨幣常量貨幣常量:以:以$開(kāi)頭表示。開(kāi)頭表示。$

24、15,$23.12; 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐4.1.34.1.3用戶自定義數(shù)據(jù)類(lèi)型用戶自定義數(shù)據(jù)類(lèi)型 1 1、 功能:功能: (1 1) 自定義數(shù)據(jù)類(lèi)型創(chuàng)建成功后,用戶可以自定義數(shù)據(jù)類(lèi)型創(chuàng)建成功后,用戶可以像使用系統(tǒng)自身的數(shù)據(jù)類(lèi)型一樣使用自定義數(shù)像使用系統(tǒng)自身的數(shù)據(jù)類(lèi)型一樣使用自定義數(shù)據(jù)類(lèi)型。據(jù)類(lèi)型。 (2 2) 在在modelmodel數(shù)據(jù)庫(kù)中創(chuàng)建的用戶自定義數(shù)數(shù)據(jù)庫(kù)中創(chuàng)建的用戶自定義數(shù)據(jù)類(lèi)型將出現(xiàn)在所有以后新建的數(shù)據(jù)庫(kù)中。但據(jù)類(lèi)型將出現(xiàn)在所有以后新建的數(shù)據(jù)庫(kù)中。但在用戶數(shù)據(jù)庫(kù)中創(chuàng)建的則只能在本數(shù)據(jù)庫(kù)類(lèi)使在用戶數(shù)據(jù)庫(kù)中創(chuàng)建的則只能在本數(shù)據(jù)庫(kù)類(lèi)使用。用。 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐2.

25、 創(chuàng)建過(guò)程創(chuàng)建過(guò)程 (1 1)T-SQLT-SQL語(yǔ)言創(chuàng)建語(yǔ)言創(chuàng)建 格式:格式:sp_addtype sp_addtype type_nqmetype_nqme,phystype-(length) | phystype-(length) | (precision,scale)(precision,scale) , , null| not null| not null|identitynull|identity 中文格式:中文格式:sp_addtype sp_addtype 自定義數(shù)據(jù)類(lèi)型名自定義數(shù)據(jù)類(lèi)型名, ,系統(tǒng)數(shù)據(jù)類(lèi)型名系統(tǒng)數(shù)據(jù)類(lèi)型名( (長(zhǎng)度長(zhǎng)度)|()|(總位數(shù),小數(shù)位數(shù)總位數(shù),小數(shù)位

26、數(shù)) ),空值空值| |非空值非空值| |標(biāo)識(shí)列性質(zhì)標(biāo)識(shí)列性質(zhì) 默認(rèn)為not null,不允許為空值。 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐例:定義一個(gè)可變長(zhǎng)度非unicode字符類(lèi)型的自定義數(shù)據(jù)類(lèi)型,類(lèi)型名為username1,長(zhǎng)度為10,不允許為空值。sp_addtype username1sp_addtype username1,varchar(10)varchar(10), ,not not nullnull 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐 (2 2) 使用管理器創(chuàng)建使用管理器創(chuàng)建步驟如下:進(jìn)入指定數(shù)據(jù)庫(kù),選擇步驟如下:進(jìn)入指定數(shù)據(jù)庫(kù),選擇“可編程可編程性性”“類(lèi)型類(lèi)型”-“用戶定義數(shù)據(jù)類(lèi)型用戶

27、定義數(shù)據(jù)類(lèi)型” 1 1、查看特征、查看特征:sp_help sp_help 自定義數(shù)據(jù)類(lèi)型名自定義數(shù)據(jù)類(lèi)型名 例例: :sp_help username1sp_help username1 2 2、重命名、重命名:sp_rename sp_rename 舊自定義數(shù)據(jù)類(lèi)型名,舊自定義數(shù)據(jù)類(lèi)型名,新自定義數(shù)據(jù)類(lèi)型名新自定義數(shù)據(jù)類(lèi)型名 例:例:sp_rename username1,username2sp_rename username1,username2制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐 5 5、 刪除用戶自定義數(shù)據(jù)類(lèi)型刪除用戶自定義數(shù)據(jù)類(lèi)型: sp_droptype sp_droptype 用戶自定

28、義數(shù)據(jù)類(lèi)型名。用戶自定義數(shù)據(jù)類(lèi)型名。 注:此時(shí)不能刪除正被表或其他數(shù)據(jù)庫(kù)對(duì)象調(diào)用的類(lèi)注:此時(shí)不能刪除正被表或其他數(shù)據(jù)庫(kù)對(duì)象調(diào)用的類(lèi)型,此時(shí)應(yīng)先將調(diào)用對(duì)象的類(lèi)型換成其他類(lèi)型后再刪型,此時(shí)應(yīng)先將調(diào)用對(duì)象的類(lèi)型換成其他類(lèi)型后再刪除。除。制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐現(xiàn)場(chǎng)操作 1 1 使用使用T-SQLT-SQL語(yǔ)言創(chuàng)建一個(gè)自定義數(shù)據(jù)類(lèi)型語(yǔ)言創(chuàng)建一個(gè)自定義數(shù)據(jù)類(lèi)型addressaddress,長(zhǎng),長(zhǎng)度為度為4040,可變,可變UNICODEUNICODE字符型,不允許為空;字符型,不允許為空; 2 2 創(chuàng)建成功后,查看該類(lèi)型特征;創(chuàng)建成功后,查看該類(lèi)型特征; 3 3 將數(shù)據(jù)類(lèi)型名更改為將數(shù)據(jù)類(lèi)型名更改為

29、home_addrhome_addr; 4 4 聲明一個(gè)類(lèi)型為聲明一個(gè)類(lèi)型為home_addrhome_addr的變量的變量A A,觀察執(zhí)行結(jié)果;,觀察執(zhí)行結(jié)果; 5 5 完成后刪除。完成后刪除。 6 6 再次聲明一個(gè)類(lèi)型為再次聲明一個(gè)類(lèi)型為home_addrhome_addr的變量的變量B B,觀察執(zhí)行結(jié),觀察執(zhí)行結(jié)果。果。制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐運(yùn)算符及優(yōu)先級(jí)運(yùn)算符及優(yōu)先級(jí) 1. 1. 算術(shù)運(yùn)算符算術(shù)運(yùn)算符包括:包括:+ +(加)、(加)、(減)、(減)、* *(乘)、(乘)、/ /(除)、(除)、% %(取余)(取余): :返回兩個(gè)整數(shù)除法的余數(shù),返回兩個(gè)整數(shù)除法的余數(shù), 例如:例如

30、:12%5=212%5=22. 2. 比較運(yùn)算符比較運(yùn)算符 包括:包括: (大于)、(大于)、 =(大于等于)、(大于等于)、=(小于等于)、(小于等于)、(不等(不等于)、于)、制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐3. 3. 邏輯運(yùn)算符邏輯運(yùn)算符包括:包括:ANDAND(與)、(與)、OROR(或)、(或)、NOTNOT(非)(非) 結(jié)果為布爾型結(jié)果為布爾型4. 4. 連接運(yùn)算符連接運(yùn)算符:使用加號(hào)(:使用加號(hào)(+ +)將兩個(gè)字符串連)將兩個(gè)字符串連接成一個(gè)字符串,加號(hào)作為字符串連接符。接成一個(gè)字符串,加號(hào)作為字符串連接符。例如,例如,abc +123abc +123結(jié)果為結(jié)果為abc123abc1

31、23 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐(1 1)字符串常量使用()字符串常量使用( )作為定界符。)作為定界符。 A A、單引號(hào)、單引號(hào) B B、雙引號(hào)、雙引號(hào) C C、方括號(hào)、方括號(hào) D D、花括號(hào)、花括號(hào)(2 2)下列常數(shù)中,屬于)下列常數(shù)中,屬于UnicodeUnicode字符串常量的是(字符串常量的是( )。)。 A A、123 B123 B、123 C123 C、N 123 DN 123 D、abcabc(3 3)表達(dá)式)表達(dá)式123123+ +454454的結(jié)果是(的結(jié)果是( )。)。 A A、579 B579 B、579 579 C C、123454 D123454 D、123123

32、(4 4)下列函數(shù)中,返回值數(shù)據(jù)類(lèi)型為)下列函數(shù)中,返回值數(shù)據(jù)類(lèi)型為intint的是(的是( )。)。 A A、LEFT LEFT B B、LEN LEN C C、LTRIM LTRIM D D、SUNSTRINGSUNSTRING制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐42 表的創(chuàng)建表的創(chuàng)建 表定義為列的集合,數(shù)據(jù)在表中是按表定義為列的集合,數(shù)據(jù)在表中是按行和列的組織形式排列的。每行代表惟一行和列的組織形式排列的。每行代表惟一的一條記錄,每列代表記錄中的一個(gè)數(shù)據(jù)的一條記錄,每列代表記錄中的一個(gè)數(shù)據(jù)項(xiàng),一個(gè)表最多個(gè)創(chuàng)建項(xiàng),一個(gè)表最多個(gè)創(chuàng)建1024列,一個(gè)行最列,一個(gè)行最多可容納多可容納8092字節(jié)的用戶數(shù)

33、據(jù)。字節(jié)的用戶數(shù)據(jù)。 編號(hào)姓名性別成績(jī)101小齊男95102琳達(dá)女80制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐2幾個(gè)與表結(jié)構(gòu)設(shè)計(jì)相關(guān)的概念幾個(gè)與表結(jié)構(gòu)設(shè)計(jì)相關(guān)的概念(1) NULL或或NOT NULLNULL:空值,其不等于:空值,其不等于0、空白或零長(zhǎng)度的字、空白或零長(zhǎng)度的字符串,而是表示沒(méi)有輸入,符串,而是表示沒(méi)有輸入,NULL的存在通常的存在通常表明值未知或未定義。表明值未知或未定義。若表的某一列被指定具有若表的某一列被指定具有NULL屬性,則允許在屬性,則允許在插入數(shù)據(jù)時(shí)省略該列的值插入數(shù)據(jù)時(shí)省略該列的值反之若指定具有反之若指定具有NOT NULL屬性,則不允許在沒(méi)屬性,則不允許在沒(méi)有指定默認(rèn)值的

34、列上省略該列的數(shù)據(jù)行。有指定默認(rèn)值的列上省略該列的數(shù)據(jù)行。 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐任務(wù):在電腦配件管理系統(tǒng)數(shù)據(jù)庫(kù)中創(chuàng)建名為任務(wù):在電腦配件管理系統(tǒng)數(shù)據(jù)庫(kù)中創(chuàng)建名為Ware的數(shù)據(jù)表,結(jié)構(gòu)如下表所示:的數(shù)據(jù)表,結(jié)構(gòu)如下表所示:表表4-1 Ware表表(貨物表貨物表)結(jié)構(gòu)結(jié)構(gòu)字段名稱(chēng)字段名稱(chēng)數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型長(zhǎng)度長(zhǎng)度空值空值說(shuō)明說(shuō)明Ware_Idnvarchar4否否貨號(hào)貨號(hào)Ware_Namenvarchar16是是貨名貨名Specnvarchar12是是規(guī)格規(guī)格Unitnvarchar2是是單位單位利用對(duì)象資源管理器創(chuàng)建制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐利用對(duì)象資源管理器創(chuàng)建制作:荊州職業(yè)技術(shù)學(xué)院

35、彭嵐注意:注意:IDENTITY(標(biāo)識(shí)列)(標(biāo)識(shí)列) v 含義:含義: IDENTITY惟一地標(biāo)識(shí)表中的一行,惟一地標(biāo)識(shí)表中的一行,其值由上一行的其值由上一行的IDENTITY列值和為該列列值和為該列定義的步長(zhǎng)自動(dòng)生成。定義的步長(zhǎng)自動(dòng)生成。 v 生成值說(shuō)明:生成值說(shuō)明: 插入數(shù)據(jù)到含有插入數(shù)據(jù)到含有IDENTITY列的表中列的表中時(shí),初始值在插入第一行數(shù)據(jù)時(shí)使用,以時(shí),初始值在插入第一行數(shù)據(jù)時(shí)使用,以后由后由SQL根據(jù)上一行使用的根據(jù)上一行使用的IDENTITY值值加上增量得到。加上增量得到。 編號(hào)123n有有序序的的自自動(dòng)動(dòng)增增長(zhǎng)長(zhǎng)或或遞遞減減制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐v定義說(shuō)明:定義說(shuō)明

36、: 定義列時(shí)需給出一個(gè)初始值和一個(gè)步長(zhǎng)值定義列時(shí)需給出一個(gè)初始值和一個(gè)步長(zhǎng)值(增量),若未定義則默認(rèn)初始值為(增量),若未定義則默認(rèn)初始值為1 1,步長(zhǎng),步長(zhǎng)值為值為1 1。 每張表只允許有一個(gè)每張表只允許有一個(gè)IDENTITYIDENTITY列;列; IDENTITYIDENTITY列值不能被更新、不允許有空值,其列值不能被更新、不允許有空值,其值只允許是值只允許是INTINT、SMALLINTSMALLINT、TINYINTTINYINT、NUMERICNUMERIC(小數(shù)部分為(小數(shù)部分為0 0)、)、DECIMALDECIMAL(小數(shù)部(小數(shù)部分為分為0 0);); 通過(guò)函數(shù)通過(guò)函數(shù)i

37、dent_seed(表名表名)可獲得初始值,可獲得初始值,通過(guò)函數(shù)通過(guò)函數(shù)ident_incr(表名表名)可獲得步長(zhǎng)值,可獲得步長(zhǎng)值,使用全局變量使用全局變量identity可返回標(biāo)識(shí)列的數(shù)據(jù)??煞祷貥?biāo)識(shí)列的數(shù)據(jù)。 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐使用使用T-SQL語(yǔ)創(chuàng)建表語(yǔ)創(chuàng)建表 1、格式、格式:Create table table_nameCreate table table_name( (字段名字段名1 1 數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 null|not null|identitynull|not null|identity(初始(初始值,步長(zhǎng)值)值,步長(zhǎng)值) ,.N )制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐2

38、2、說(shuō)明:、說(shuō)明:(1)table_name:新創(chuàng)建的表的名字;:新創(chuàng)建的表的名字;(2)column:列名;:列名;(3)data_type:指定列的數(shù)據(jù)類(lèi)型和寬度:指定列的數(shù)據(jù)類(lèi)型和寬度(4)null|not null|identity:指定該列是否允:指定該列是否允許為空或是否是標(biāo)識(shí)列;許為空或是否是標(biāo)識(shí)列;(5),.N:可創(chuàng)建多個(gè)這樣的字段。:可創(chuàng)建多個(gè)這樣的字段。 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐示例:示例:任務(wù)三:創(chuàng)建任務(wù)三:創(chuàng)建Sell(銷(xiāo)售表)(銷(xiāo)售表)制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐任務(wù):創(chuàng)建任務(wù):創(chuàng)建Ware(貨物表),結(jié)構(gòu)如下表所示:(貨物表),結(jié)構(gòu)如下表所示:表表4-1 War

39、e表表(貨物表貨物表)結(jié)構(gòu)結(jié)構(gòu)字段名稱(chēng)字段名稱(chēng)數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型長(zhǎng)度長(zhǎng)度空值空值說(shuō)明說(shuō)明Ware_Idnvarchar4否否貨號(hào)貨號(hào)Ware_Namenvarchar16是是貨名貨名Specnvarchar12是是規(guī)格規(guī)格Unitnvarchar2是是單位單位制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐4.3.14.3.1使用對(duì)象資源管理器修改表的結(jié)構(gòu)使用對(duì)象資源管理器修改表的結(jié)構(gòu) 43 表結(jié)構(gòu)的修改表結(jié)構(gòu)的修改 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐4 43 32 2 使用語(yǔ)句修改表結(jié)構(gòu)使用語(yǔ)句修改表結(jié)構(gòu)1、格式:、格式:ALTER TABLE table_nameALTER TABLE table_name ALTE

40、R COLUMNALTER COLUMN column_name new_data_type(length)| column_name new_data_type(length)| (precision,scale) null|not null|identity(precision,scale) null|not null|identity - - 修改列的結(jié)構(gòu)修改列的結(jié)構(gòu)| |ADDADD |, |,.N.N 添加新列添加新列|DROP COLUMN drop_name|,.N 刪除指定表中的列刪除指定表中的列 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐說(shuō)明:說(shuō)明: column_namecolumn_n

41、ame:要修改的列名;:要修改的列名; new_data_typenew_data_type:要修改列的新數(shù)據(jù)類(lèi)型;:要修改列的新數(shù)據(jù)類(lèi)型; lengthlength、precisioinprecisioin、scalescale:分別表示數(shù)據(jù):分別表示數(shù)據(jù)長(zhǎng)度、總位數(shù)和小數(shù)位數(shù);長(zhǎng)度、總位數(shù)和小數(shù)位數(shù); add_column_nameadd_column_name:新添加到表中的列名:新添加到表中的列名 add_data_typeadd_data_type:新添加到表中的列的數(shù)據(jù)類(lèi):新添加到表中的列的數(shù)據(jù)類(lèi)型;型; drop_colum_namedrop_colum_name:要從表中刪除的

42、列名;:要從表中刪除的列名; ,.N:可以有多個(gè)列可以有多個(gè)列 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐任務(wù)六:修改任務(wù)六:修改SellSell表表( (銷(xiāo)售表銷(xiāo)售表) ),給,給SellSell表增加一個(gè)備注表增加一個(gè)備注字段,類(lèi)型為字段,類(lèi)型為texttext類(lèi)型。類(lèi)型。ALTER TABLE sellALTER TABLE sellAdd notation textAdd notation textGoGo任務(wù)七:修改任務(wù)七:修改SellSell表表( (銷(xiāo)售表銷(xiāo)售表) ),刪除備注字段。,刪除備注字段。ALTER TABLE sellALTER TABLE sellDrop column nota

43、tion Drop column notation GoGo任務(wù)八:修改任務(wù)八:修改SellSell表表( (銷(xiāo)售表銷(xiāo)售表) ),將,將Ware_Id Ware_Id 字段類(lèi)型改字段類(lèi)型改為為charchar型,長(zhǎng)度為型,長(zhǎng)度為5 5。ALTER TABLE sellALTER TABLE sellAlter column Ware_Id char(5)Alter column Ware_Id char(5)GoGo制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐表的重命名與刪除表的重命名與刪除 1、使用、使用T-SQLT-SQL語(yǔ)言進(jìn)行:語(yǔ)言進(jìn)行: 重命名:重命名:EXEC SP_RENAME table_ol

44、d_name, table_new_nameEXEC SP_RENAME table_old_name, table_new_name 刪除表:刪除表:DROP TABLE table_name 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐2、使用企業(yè)管理器:、使用企業(yè)管理器: 在企業(yè)管理器的數(shù)據(jù)庫(kù)列表中,選在企業(yè)管理器的數(shù)據(jù)庫(kù)列表中,選擇用戶所在數(shù)據(jù)庫(kù)擇用戶所在數(shù)據(jù)庫(kù)/表,右擊要?jiǎng)h除或重表,右擊要?jiǎng)h除或重命名的表,在彈出菜單中,分別單擊命名的表,在彈出菜單中,分別單擊“重命名表重命名表”或或“刪除表刪除表”即可。即可。 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐數(shù)據(jù)完整性的實(shí)現(xiàn)數(shù)據(jù)完整性的實(shí)現(xiàn)制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐

45、為什么要使用數(shù)據(jù)完整性為什么要使用數(shù)據(jù)完整性編號(hào)編號(hào)姓名姓名年齡年齡成績(jī)成績(jī)性別性別1張三張三25-145男男1張三張三25-145男男2李四李四24085男男3王五王五2675女女出現(xiàn)重復(fù)記錄出現(xiàn)重復(fù)記錄數(shù)據(jù)超出正常范圍數(shù)據(jù)超出正常范圍制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐數(shù)據(jù)完整性概念數(shù)據(jù)完整性概念 數(shù)據(jù)完整性:指數(shù)據(jù)的正確性、完備性和數(shù)據(jù)完整性:指數(shù)據(jù)的正確性、完備性和一致性,是衡量數(shù)據(jù)庫(kù)質(zhì)量好壞的重要標(biāo)準(zhǔn),一致性,是衡量數(shù)據(jù)庫(kù)質(zhì)量好壞的重要標(biāo)準(zhǔn),它反映了現(xiàn)實(shí)世界中事物的本來(lái)面貌。如一個(gè)它反映了現(xiàn)實(shí)世界中事物的本來(lái)面貌。如一個(gè)人的身高人的身高15M,年齡,年齡300歲等就是完整性受到歲等就是完整性

46、受到破壞的例子。破壞的例子。主要分為:主要分為: 域完整性、實(shí)體完整性和參照完整性。域完整性、實(shí)體完整性和參照完整性。 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐1 1域完整性:域完整性: 域完整性域完整性:也可稱(chēng)為列的完整性,指表中一個(gè)也可稱(chēng)為列的完整性,指表中一個(gè)列的輸入有效性(即列數(shù)據(jù)必須滿足所定義的列的輸入有效性(即列數(shù)據(jù)必須滿足所定義的數(shù)據(jù)類(lèi)型,且值必須在有效的范圍內(nèi))。數(shù)據(jù)類(lèi)型,且值必須在有效的范圍內(nèi))。制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐 強(qiáng)制域完整性的方法有強(qiáng)制域完整性的方法有:限定類(lèi)型:主要在建表時(shí)設(shè)置;限定類(lèi)型:主要在建表時(shí)設(shè)置;限定格式:主要通過(guò)限定格式:主要通過(guò)CHECKCHECK約束和規(guī)則

47、;約束和規(guī)則;限定可能值的范圍:通過(guò)外鍵約束、檢查限定可能值的范圍:通過(guò)外鍵約束、檢查約束、缺省定義、非空定義和規(guī)則設(shè)置約束、缺省定義、非空定義和規(guī)則設(shè)置 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐2 2實(shí)體完整性:實(shí)體完整性: 實(shí)體完整性實(shí)體完整性也稱(chēng)為表的完整性,指表中必須有也稱(chēng)為表的完整性,指表中必須有一個(gè)主關(guān)鍵字,用來(lái)惟一地標(biāo)識(shí)表中的每一行,一個(gè)主關(guān)鍵字,用來(lái)惟一地標(biāo)識(shí)表中的每一行,且不允許為空值。且不允許為空值。 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐強(qiáng)制域完整性的主法有強(qiáng)制域完整性的主法有:索引索引uniqueunique約束約束primary keyprimary key約束約束identityiden

48、tity屬性。屬性。 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐3.參照完整性:參照完整性: 參照完整性參照完整性也稱(chēng)為引用完整性,是對(duì)表與表之也稱(chēng)為引用完整性,是對(duì)表與表之間的聯(lián)系而言的。間的聯(lián)系而言的。 主要用于保證主關(guān)鍵字和外部關(guān)鍵字之間的參主要用于保證主關(guān)鍵字和外部關(guān)鍵字之間的參照關(guān)系,確保主鍵值和外鍵值在所有表中的一照關(guān)系,確保主鍵值和外鍵值在所有表中的一致。致。 它涉及兩個(gè)或兩個(gè)以上表數(shù)據(jù)的一致性維護(hù)。它涉及兩個(gè)或兩個(gè)以上表數(shù)據(jù)的一致性維護(hù)。 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐數(shù)據(jù)完整性實(shí)施方法:數(shù)據(jù)完整性實(shí)施方法: (1 1)聲明型數(shù)據(jù)完整性:)聲明型數(shù)據(jù)完整性:在對(duì)象創(chuàng)建時(shí)定義,在對(duì)象創(chuàng)建時(shí)定義,

49、這種數(shù)據(jù)完整性是在通過(guò)數(shù)據(jù)庫(kù)說(shuō)明的一部分這種數(shù)據(jù)完整性是在通過(guò)數(shù)據(jù)庫(kù)說(shuō)明的一部分在語(yǔ)法中實(shí)現(xiàn)。在語(yǔ)法中實(shí)現(xiàn)。 (2)過(guò)程型數(shù)據(jù)完整性:)過(guò)程型數(shù)據(jù)完整性:指由某個(gè)過(guò)程引發(fā)指由某個(gè)過(guò)程引發(fā)而實(shí)施的數(shù)據(jù)完整性。這種數(shù)據(jù)完整性由默認(rèn)、而實(shí)施的數(shù)據(jù)完整性。這種數(shù)據(jù)完整性由默認(rèn)、規(guī)則和觸發(fā)器具體實(shí)現(xiàn),由視圖和存儲(chǔ)過(guò)程支規(guī)則和觸發(fā)器具體實(shí)現(xiàn),由視圖和存儲(chǔ)過(guò)程支持。一般先寫(xiě)出實(shí)施條件,再寫(xiě)出強(qiáng)制該條件持。一般先寫(xiě)出實(shí)施條件,再寫(xiě)出強(qiáng)制該條件所執(zhí)行的用于保證數(shù)據(jù)完整性的腳本。所執(zhí)行的用于保證數(shù)據(jù)完整性的腳本。 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐3 3約束約束 (一)約束簡(jiǎn)介(一)約束簡(jiǎn)介 概念:概念:是是SQLSQ

50、L強(qiáng)制實(shí)行的應(yīng)用規(guī)則,它能強(qiáng)制實(shí)行的應(yīng)用規(guī)則,它能夠限制用戶存放到表中數(shù)據(jù)的格式和可夠限制用戶存放到表中數(shù)據(jù)的格式和可能值,建立和使用約束的目的是保證數(shù)能值,建立和使用約束的目的是保證數(shù)據(jù)的完整性。據(jù)的完整性。 目的:目的:使用約束的目的在于防止列中出使用約束的目的在于防止列中出現(xiàn)非法數(shù)據(jù),可以自動(dòng)維護(hù)數(shù)據(jù)庫(kù)中數(shù)現(xiàn)非法數(shù)據(jù),可以自動(dòng)維護(hù)數(shù)據(jù)庫(kù)中數(shù)據(jù)完整性。據(jù)完整性。 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐約束的類(lèi)型:約束的類(lèi)型: 非空約束非空約束(not null) 缺省約束缺省約束(Default constraints) 檢查約束檢查約束(Check Constraints) 主鍵約束(主鍵約束(P

51、rimary Key Constraints) 惟一約束惟一約束(Unique Key Constraints) 外鍵約束外鍵約束(Foreign Key Constraints) 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐約束的類(lèi)型與數(shù)據(jù)完整性的關(guān)系約束的類(lèi)型與數(shù)據(jù)完整性的關(guān)系 域完整性:域完整性:非空約束、非空約束、DEFAULTDEFAULT、CHECKCHECK 實(shí)體完整性:實(shí)體完整性:PRIMARY KEYPRIMARY KEY、UNIQUEUNIQUE 參照完整性:參照完整性:FOREIGN KEYFOREIGN KEY制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐(二)使用(二)使用T-SQLT-SQL語(yǔ)言創(chuàng)建

52、、管理約束語(yǔ)言創(chuàng)建、管理約束CREATE TABLE CREATE TABLE 表名表名( (列名列名 類(lèi)型類(lèi)型 約束)約束)約束格式如下:約束格式如下:PRIMARY KEYPRIMARY KEY|UNIQUE |UNIQUE |REFERENCES |REFERENCES 外鍵對(duì)應(yīng)的主表名外鍵對(duì)應(yīng)的主表名(外鍵列名外鍵列名)|DEFAULT |DEFAULT 缺省表達(dá)式缺省表達(dá)式|CHECK (限定范圍的邏輯表達(dá)式)(限定范圍的邏輯表達(dá)式),n 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐說(shuō)明:說(shuō)明: 可在已有的表中創(chuàng)建、修改、刪除約束;可在已有的表中創(chuàng)建、修改、刪除約束; 可在應(yīng)用程序中創(chuàng)建錯(cuò)誤檢查邏輯

53、,測(cè)試是否可在應(yīng)用程序中創(chuàng)建錯(cuò)誤檢查邏輯,測(cè)試是否違反約束;違反約束; 在給表添加約束時(shí),在給表添加約束時(shí),SQLSQL將驗(yàn)證表中已有數(shù)據(jù)將驗(yàn)證表中已有數(shù)據(jù)是否滿足正在添加的約束,若不滿足則約束創(chuàng)是否滿足正在添加的約束,若不滿足則約束創(chuàng)建不成功。建不成功。 給已有表添加各種約束的語(yǔ)法:給已有表添加各種約束的語(yǔ)法: 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐1 1、缺省約束:、缺省約束: DEFAULT CONSTRAINTSDEFAULT CONSTRAINTS 指當(dāng)向數(shù)據(jù)庫(kù)中的表插入數(shù)據(jù)時(shí),如果用戶沒(méi)指當(dāng)向數(shù)據(jù)庫(kù)中的表插入數(shù)據(jù)時(shí),如果用戶沒(méi)有明確給出某列的值,有明確給出某列的值,SQL SERVERSQL

54、 SERVER自動(dòng)為該列自動(dòng)為該列輸入默認(rèn)值輸入默認(rèn)值 格式:格式: ALTER TABLE ALTER TABLE 表名表名 ADD CONSTRAINT ADD CONSTRAINT 缺省約束名缺省約束名 DEFAULTM DEFAULTM 缺省值缺省值 FOR FOR 列名列名制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐說(shuō)明:說(shuō)明: DEFAULTDEFAULT只用于只用于INSERTINSERT語(yǔ)句;語(yǔ)句; 不能用于具有不能用于具有timestamptimestamp數(shù)據(jù)類(lèi)型、數(shù)據(jù)類(lèi)型、identity identity 屬性、現(xiàn)有屬性、現(xiàn)有DEFAULTDEFAULT定義或綁定默認(rèn)值的列;定義或綁定

55、默認(rèn)值的列; 若列中已有默認(rèn)值,必須除去舊默認(rèn)值后才能若列中已有默認(rèn)值,必須除去舊默認(rèn)值后才能添加新默認(rèn)值。添加新默認(rèn)值。 每列只能有一個(gè)每列只能有一個(gè)DEFAULT約束。約束。制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐為數(shù)據(jù)庫(kù)為數(shù)據(jù)庫(kù)CPMSCPMS中表中表WorkerWorker的的SEXSEX字段創(chuàng)建一個(gè)缺字段創(chuàng)建一個(gè)缺省約束,缺省值為省約束,缺省值為1 1(男)。(男)。 alter table workeralter table worker add constraint default_sexadd constraint default_sex default 1 for sexdefault

56、1 for sex gogo制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐 例例2:為:為Restock(進(jìn)貨表進(jìn)貨表)中的進(jìn)貨日期設(shè)置默中的進(jìn)貨日期設(shè)置默認(rèn)值為系統(tǒng)當(dāng)前的日期認(rèn)值為系統(tǒng)當(dāng)前的日期 例例3:設(shè)置默認(rèn):設(shè)置默認(rèn)Users表中的用戶類(lèi)型默認(rèn)為表中的用戶類(lèi)型默認(rèn)為“普通用戶普通用戶”制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐2 2、檢查約束:、檢查約束: CHECK ConstraintsCHECK Constraints 限制插入列中的值的范圍,主要用于實(shí)現(xiàn)域完限制插入列中的值的范圍,主要用于實(shí)現(xiàn)域完整性。它是當(dāng)對(duì)數(shù)據(jù)庫(kù)中的表執(zhí)行插入或更新整性。它是當(dāng)對(duì)數(shù)據(jù)庫(kù)中的表執(zhí)行插入或更新操作時(shí),檢查新行中的列值必須滿足的

57、約束條操作時(shí),檢查新行中的列值必須滿足的約束條件件 格式:格式: ALTER TABLE ALTER TABLE 表名表名 ADD CONSTRAINT ADD CONSTRAINT 檢查約束名檢查約束名 CHECK (范圍表達(dá)式)(范圍表達(dá)式) 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐例 : 為例 : 為 R e s t o c k ( 進(jìn) 貨 表進(jìn) 貨 表 ) 中 的 進(jìn) 貨 數(shù) 量中 的 進(jìn) 貨 數(shù) 量(Res_number)設(shè)置必須)設(shè)置必須=2ALTER TABLE Restock ADD CONSTRAINT CK_ BesNum CHECK( Res_Number =2)制作:荊州職業(yè)技術(shù)學(xué)

58、院 彭嵐3、主鍵約束主鍵約束:Primary Key Constraints 用來(lái)保證某一列或一組列中的數(shù)據(jù)相對(duì)于用來(lái)保證某一列或一組列中的數(shù)據(jù)相對(duì)于表中的每一行都是惟一的,這些列就是該表的表中的每一行都是惟一的,這些列就是該表的主鍵,不允許在創(chuàng)建主鍵約束的列上有空值。主鍵,不允許在創(chuàng)建主鍵約束的列上有空值。 格式:格式: ALTER TABLE ALTER TABLE 表名表名 ADD CONSTRAINT ADD CONSTRAINT 主鍵約束名主鍵約束名 PRIMARY KEY clustered|nonclustered(主鍵所主鍵所在的列名在的列名) 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐考慮

59、因素:考慮因素: 每個(gè)表有且僅有一個(gè)主鍵,該主鍵不允許為空每個(gè)表有且僅有一個(gè)主鍵,該主鍵不允許為空值;值; 參照約束使用它作為維護(hù)參照完整性的參考點(diǎn);參照約束使用它作為維護(hù)參照完整性的參考點(diǎn); 創(chuàng)建主鍵時(shí),在創(chuàng)建主鍵的列上創(chuàng)建了一個(gè)惟創(chuàng)建主鍵時(shí),在創(chuàng)建主鍵的列上創(chuàng)建了一個(gè)惟一索引,可以是聚簇索引(默認(rèn)),也可以是一索引,可以是聚簇索引(默認(rèn)),也可以是非聚簇索引非聚簇索引 制作:荊州職業(yè)技術(shù)學(xué)院 彭嵐例:為用戶表設(shè)置主鍵例:為用戶表設(shè)置主鍵; ;ALTER TABLE Users ADD CONSTRAINT PK_ UName PRIMARY KEY ( UserName ) 制作:荊州職業(yè)

60、技術(shù)學(xué)院 彭嵐4 4、惟一約束:、惟一約束: Unique ConstraintsUnique Constraints 限制表中指定列上所有非空值必須惟一,即表限制表中指定列上所有非空值必須惟一,即表中任意兩行在指定列上都不允許有相同的值,中任意兩行在指定列上都不允許有相同的值,與主鍵不同的是,在與主鍵不同的是,在UniqueUnique字段中允許出現(xiàn)字段中允許出現(xiàn)NULLNULL值,但為了保持惟一性,最多只能出現(xiàn)一值,但為了保持惟一性,最多只能出現(xiàn)一次次NULLNULL值值 格式:格式: ALTER TABLE ALTER TABLE 表名表名 ADD CONSTRAINT ADD CONS

溫馨提示

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

評(píng)論

0/150

提交評(píng)論