《數(shù)據(jù)庫(kù)對(duì)象的操作》PPT課件.ppt
《《數(shù)據(jù)庫(kù)對(duì)象的操作》PPT課件.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《《數(shù)據(jù)庫(kù)對(duì)象的操作》PPT課件.ppt(132頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第 5章 數(shù)據(jù)庫(kù)對(duì)象的操作 5.1 數(shù)據(jù)類型 在 SQL Server2005 中,每個(gè)列、局部變量、表達(dá)式和參數(shù)都有 其各自的數(shù)據(jù)類型。指定對(duì)象的數(shù)據(jù)類型相當(dāng)于定義了該對(duì)象的 四個(gè)特性: ( 1)對(duì)象所含的數(shù)據(jù)類型,如字符、整數(shù)或二進(jìn)制數(shù)。 ( 2)所存儲(chǔ)值的長(zhǎng)度或它的大小。 ( 3)數(shù)字精度(僅用于數(shù)字?jǐn)?shù)據(jù)類型)。 ( 4)小數(shù)位數(shù)(僅用于數(shù)字?jǐn)?shù)據(jù)類型)。 SQL Server提供系統(tǒng)數(shù)據(jù)類型集,定義了可與 SQL Server一起 使用的所有數(shù)據(jù)類型;另外用戶還可以使用 Transact-SQL或 .NET 框架定義自己的數(shù)據(jù)類型,它是系統(tǒng)提供的數(shù)據(jù)類型的別名。每 個(gè)表可以定義至多 25
2、0個(gè)字段,除文本和圖像數(shù)據(jù)類型外,每個(gè) 記錄的最大長(zhǎng)度限制為 1962個(gè)字節(jié)。 5.1.1 系統(tǒng)數(shù)據(jù)類型 1、精確數(shù)字類型; 2、近似數(shù)字類型; 3、日期和時(shí)間類型; 4、字符數(shù)據(jù)類型; 5、 Unicode 字符數(shù)據(jù)類型; 6、二進(jìn)制字符數(shù)據(jù)類型; 7、其它數(shù)據(jù)類型。 5.1.1 系統(tǒng)數(shù)據(jù)類型 1、精確數(shù)字類型 (1)精確數(shù)字類型包括: 整數(shù)類型 ; Bit(位類型) ; Decimal和 Numeric(數(shù)值類型) ; Money和 SmallMoney(貨幣類型)。 5.1.1 系統(tǒng)數(shù)據(jù)類型 1、精確數(shù)字類型 (2)整數(shù)類型 : 整數(shù)類型是最常用的數(shù)據(jù)類型之一,它主要用來(lái)存儲(chǔ)數(shù)值,可以直
3、接進(jìn) 行數(shù)據(jù)運(yùn)算,而不必使用函數(shù)轉(zhuǎn)換。整數(shù)類型包括以下四類: ( 1) Bigint: Bigint數(shù)據(jù)類型可以存儲(chǔ)從 (-9223372036854775808) 到 (9223372036854775807) 范圍之間的所有整型數(shù)據(jù)。每個(gè) Bigint數(shù)據(jù)類 型值存儲(chǔ)在 8個(gè)字節(jié)中。 ( 2) Int( Integer): Int(或 integer)數(shù)據(jù)類型可以存儲(chǔ)從( - 2147483648)到( 2147483647)范圍之間的所有正負(fù)整數(shù)。每個(gè) Int數(shù) 據(jù)類型值存儲(chǔ)在 4個(gè)字節(jié)中。 ( 3) Smallint:可以存儲(chǔ)從( -32768)到 32767范圍之間的所有正負(fù)整 數(shù)。
4、每個(gè) smallint類型的數(shù)據(jù)占用 2個(gè)字節(jié)的存儲(chǔ)空間。 ( 4) Tinyint:可以存儲(chǔ)從 0255范圍之間的所有正整數(shù)。每個(gè) tinyint類 型的數(shù)據(jù)占用 1個(gè)字節(jié)的存儲(chǔ)空間。 5.1.1 系統(tǒng)數(shù)據(jù)類型 1、精確數(shù)字類型 (3)位數(shù)據(jù)類型 Bit稱為位數(shù)據(jù)類型,其數(shù)據(jù)有兩種取值: 0和 1,長(zhǎng)度為 1字節(jié)。在輸入 0以外的其他值時(shí),系統(tǒng)均把它們當(dāng) 1看待。這種數(shù)據(jù)類型常作為邏輯變 量使用,用來(lái)表示真、假或是、否等二值選擇。 (4)Decimal數(shù)據(jù)類型和 Numeric數(shù)據(jù)類型 Decimal數(shù)據(jù)類型和 Numeric數(shù)據(jù)類型完全相同,它們可以提供小數(shù)所需 要的實(shí)際存儲(chǔ)空間,但也有一
5、定的限制,可以用 217個(gè)字節(jié)來(lái)存儲(chǔ) - 1038+1到 1038-1之間的固定精度和小數(shù)位的數(shù)字。也可以將其寫(xiě)為 Decimal( p, s)的形式, p和 s確定了精確的總位數(shù)和小數(shù)位。其中 p表 示可供存儲(chǔ)的值的總位數(shù),默認(rèn)設(shè)置為 18; s表示小數(shù)點(diǎn)后的位數(shù),默認(rèn) 設(shè)置為 0。例如: decimal( 10, 5),表示共有 10位數(shù),其中整數(shù) 5位, 小數(shù) 5位。 5.1.1 系統(tǒng)數(shù)據(jù)類型 1、精確數(shù)字類型 (5)貨幣數(shù)據(jù)類型 貨幣數(shù)據(jù)類型包括 Money和 SmallMoney兩種: ( 1) Money:用于存儲(chǔ)貨幣值,存儲(chǔ)在 money數(shù)據(jù)類型中的 數(shù)值以一個(gè)正數(shù)部分和一個(gè)小數(shù)
6、部分存儲(chǔ)在兩個(gè) 4字節(jié)的整型 值中,存儲(chǔ)范圍為( -9223372136854775808)到 ( 9223372136854775807),精確到貨幣單位的千分之十。 ( 2) Smallmoney:與 money數(shù)據(jù)類型類似,但范圍比 money數(shù)據(jù)類型小,其存儲(chǔ)范圍為 -2147483468到 2147483467之間,精確到貨幣單位的千分之十。 當(dāng)為 money或 smallmoney的表輸入數(shù)據(jù)時(shí),必須在有效位 置前面加一個(gè)貨幣單位符號(hào)。 5.1.1 系統(tǒng)數(shù)據(jù)類型 2、近似數(shù)字類型 近似數(shù)字類型包括 Real和 Float兩大類。 ( 1) Real:可以存儲(chǔ)正的或者負(fù)的十進(jìn)制數(shù)值,
7、最大可以有 7位精確位數(shù)。它的存儲(chǔ)范圍從 -3.40E-383.40E+38。每個(gè) Real 類型的數(shù)據(jù)占用 4個(gè)字節(jié)的存儲(chǔ)空間。 ( 2) Float:可以精確到第 15位小數(shù),其范圍從 -1.79E- 3081.79E+308。如果不指定 Float 數(shù)據(jù)類型的長(zhǎng)度,它占 用 8個(gè)字節(jié)的存儲(chǔ)空間。 Float數(shù)據(jù)類型也可以寫(xiě)為 Float( n) 的形式, n指定 Float數(shù)據(jù)的精度, n為 115之間的整數(shù)值。 當(dāng) n取 17時(shí),實(shí)際上是定義了一個(gè) Real 類型的數(shù)據(jù),系統(tǒng)用 4個(gè)字節(jié)存儲(chǔ)它;當(dāng) n取 815時(shí),系統(tǒng)認(rèn)為其是 Float類型, 用 8個(gè)字節(jié)存儲(chǔ)它。 5.1.1 系統(tǒng)數(shù)
8、據(jù)類型 3. 日期和時(shí)間數(shù)據(jù)類型 ( 1) Datetime:用于存儲(chǔ)日期和時(shí)間的結(jié)合體,它可以存儲(chǔ)從公元 1753 年 1月 1日零時(shí)起 公元 9999年 12月 31日 23時(shí) 59分 59秒之間的所有日期和 時(shí)間,其精確度可達(dá)三百分之一秒,即 3.33毫秒。 Datetime數(shù)據(jù)類型所 占用的存儲(chǔ)空間為 8個(gè)字節(jié),其中前 4個(gè)字節(jié)用于存儲(chǔ)基于 1900年 1月 1日 之前或者之后日期數(shù),數(shù)值分正負(fù),負(fù)數(shù)存儲(chǔ)的數(shù)值代表在基數(shù)日期之前 的日期,正數(shù)表示基數(shù)日期之后的日期,時(shí)間以子夜后的毫秒存儲(chǔ)在后面 的 4個(gè)字節(jié)中。當(dāng)存儲(chǔ) Datetime數(shù)據(jù)類型時(shí),默認(rèn)的格式是 MM DD YYYY hh
9、:mm A.M./P.M,當(dāng)插入數(shù)據(jù)或者在其他地方使用 Datetime類型 時(shí),需要用單引號(hào)把它括起來(lái)。默認(rèn)的時(shí)間日期是 January 1,1900 12:00 A.M。可以接受的輸入格式如下: Jan 4 1999、 JAN 4 1999、 January 4 1999、 Jan 1999 4、 1999 4 Jan和 1999 Jan 4。 ( 2) Smalldatetime:與 Datetime數(shù)據(jù)類型類似,但其日期時(shí)間范圍較 小,它存儲(chǔ)從 1900年 1月 1日 2079年 6月 6日內(nèi)的日期。 SmallDatetime 數(shù)據(jù)類型使用 4個(gè)字節(jié)存儲(chǔ)數(shù)據(jù), SQL Server
10、2000用 2個(gè)字節(jié)存儲(chǔ)日期 1900年 1月 1日以后的天數(shù),時(shí)間以子夜后的分鐘數(shù)形式存儲(chǔ)在另外兩個(gè) 字節(jié)中, SmallDatetime的精度為 1分鐘。 5.1.1 系統(tǒng)數(shù)據(jù)類型 4. 字符數(shù)據(jù)類型 字符數(shù)據(jù)類型也是 SQL Server中最常用的數(shù)據(jù)類型之一,它可以用來(lái)存儲(chǔ)各種字母、數(shù)字 符號(hào)和特殊符號(hào)。在使用字符數(shù)據(jù)類型時(shí),需要在其前后加上英文單引號(hào)或者雙引號(hào)。 ( 1) Char:其定義形式為 Char( n),當(dāng)用 Char數(shù)據(jù)類型存儲(chǔ)數(shù)據(jù)時(shí),每個(gè)字符和符號(hào)占 用一個(gè)字節(jié)的存儲(chǔ)空間。 n表示所有字符所占的存儲(chǔ)空間, n的取值為 18000。若不指定 n 值,系統(tǒng)默認(rèn) n的值為 1
11、。若輸入數(shù)據(jù)的字符串長(zhǎng)度小于 n,則系統(tǒng)自動(dòng)在其后添加空格來(lái)填 滿設(shè)定好的空間;若輸入的數(shù)據(jù)過(guò)長(zhǎng),將會(huì)截掉其超出部分。如果定義了一個(gè) Char數(shù)據(jù)類 型,而且允許該列為空,則該字段被當(dāng)作 Varchar來(lái)處理。 ( 2) Varchar:其在 SQL Server 2005中新定義形式為 Varchar(n|max),較之以前的版本 多了一個(gè) max選擇, max表示最大存儲(chǔ)大小是 231-1個(gè)字節(jié) 。用 Char數(shù)據(jù)類型可以存儲(chǔ)長(zhǎng) 達(dá) 255個(gè)字符的可變長(zhǎng)度字符串,和 Char類型不同的是 Varchar類型的存儲(chǔ)空間是根據(jù)存儲(chǔ) 在表的每一列值的字符數(shù)變化的。例如定義 Varchar( 20
12、),則它對(duì)應(yīng)的字段最多可以存儲(chǔ) 20個(gè)字符,但是在每一列的長(zhǎng)度達(dá)到 20字節(jié)之前系統(tǒng)不會(huì)在其后添加空格來(lái)填滿設(shè)定好的 空間,因此使用 Varchar類型可以節(jié)省空間。 ( 3) Text:用于存儲(chǔ)文本數(shù)據(jù),其容量理論上為 1231-1( 2, 147, 483, 647)個(gè)字節(jié), 但實(shí)際應(yīng)用時(shí)要根據(jù)硬盤(pán)的存儲(chǔ)空間而定。 5.1.1 系統(tǒng)數(shù)據(jù)類型 5. Unicode 字符數(shù)據(jù)類型 Unicode 字符數(shù)據(jù)類型包括 Nchar、 Nvarchar、 Ntext三種: ( 1) Nchar:其定義形式為 Nchar( n)。它與 Char數(shù)據(jù)類型類似,不 同的是 Nchar數(shù)據(jù)類型 n的取值為 1
13、4000。 Nchar數(shù)據(jù)類型采用 Unicode 標(biāo)準(zhǔn)字符集, Unicode標(biāo)準(zhǔn)用兩個(gè)字節(jié)為一個(gè)存儲(chǔ)單位,其一個(gè)存儲(chǔ)單位 的容納量就大大增加了,可以將全世界的語(yǔ)言文字都囊括在內(nèi),在一個(gè)數(shù) 據(jù)列中就可以同時(shí)出現(xiàn)中文、英文、法文等,而不會(huì)出現(xiàn)編碼沖突。 ( 2) Nvarchar:其在 SQL Server 2005中新的定義形式為 Nvarchar (n | max) 。它與 Varchchar數(shù)據(jù)類型相似, Nvarchar數(shù)據(jù)類型也采用 Unicode標(biāo)準(zhǔn)字符集, n的取值范圍為 14000。 ( 3) Ntext:與 Text數(shù)據(jù)類型類似,存儲(chǔ)在其中的數(shù)據(jù)通常是直接能輸 出到顯示設(shè)備上
14、的字符,顯示設(shè)備可以是顯示器、窗口或者打印機(jī)。 Ntext數(shù)據(jù)類型采用 Unicode標(biāo)準(zhǔn)字符集,因此其理論上的容量為 230-1 ( 1, 073, 741, 823)個(gè)字節(jié)。 5.1.1 系統(tǒng)數(shù)據(jù)類型 6. 二進(jìn)制字符數(shù)據(jù)類型 二進(jìn)制數(shù)據(jù)類型包括 Binary、 Varbinary、 Image三種: ( 1) Binary:其定義形式為 Binary( n),數(shù)據(jù)的存儲(chǔ)長(zhǎng)度是固定的, 即 n+4個(gè)字節(jié),當(dāng)輸入的二進(jìn)制數(shù)據(jù)長(zhǎng)度小于 n時(shí),余下部分填充 0。二進(jìn) 制數(shù)據(jù)類型的最大長(zhǎng)度(即 n的最大值)為 8000,常用于存儲(chǔ)圖像等數(shù)據(jù)。 ( 2) Varbinary:其在 SQL Serve
15、r 2005中新的定義形式為 Varbinary(n | max),較之以前的版本多了一個(gè) max選擇, max表示最大存儲(chǔ)大小是 231-1個(gè)字節(jié) 。數(shù)據(jù)的存儲(chǔ)長(zhǎng)度是變化的,它為實(shí)際所輸入數(shù)據(jù)的長(zhǎng)度加 上 4字節(jié)。其他含義同 Binary。 ( 3) Image:用于存儲(chǔ)照片、目錄圖片或者圖畫(huà),其理論容量為 231-1 ( 2, 147, 483, 647)個(gè)字節(jié)。其存儲(chǔ)數(shù)據(jù)的模式與 Text數(shù)據(jù)類型相同, 通常存儲(chǔ)在 Image字段中的數(shù)據(jù)不能直接用 Insert語(yǔ)句直接輸入。 5.1.1 系統(tǒng)數(shù)據(jù)類型 7. 其它數(shù)據(jù)類型 ( 1) Sql_variant:用于存儲(chǔ)除文本、圖形數(shù)據(jù)和 Ti
16、mestamp類型數(shù)據(jù)外的其他任何合法的 SQL Server數(shù)據(jù)。此數(shù)據(jù)類型極大地方便了 SQL Server的開(kāi)發(fā)工作。 ( 2) Table:用于存儲(chǔ)對(duì)表或者視圖處理后的結(jié)果集。這種新的數(shù)據(jù)類型使得變量可以存儲(chǔ)一 個(gè)表,從而使函數(shù)或過(guò)程返回查詢結(jié)果更加方便、快捷。 ( 3) Timestamp:亦稱時(shí)間戳數(shù)據(jù)類型,它提供數(shù)據(jù)庫(kù)范圍內(nèi)的惟一值,反應(yīng)數(shù)據(jù)庫(kù)中數(shù)據(jù) 修改的相對(duì)順序,相當(dāng)于一個(gè)單調(diào)上升的計(jì)數(shù)器。當(dāng)它所定義的列在更新或者插入數(shù)據(jù)行時(shí), 此列的值會(huì)被自動(dòng)更新,一個(gè)計(jì)數(shù)值將自動(dòng)地添加到此 Timestamp數(shù)據(jù)列中。如果建立一個(gè)名 為“ Timestamp”的列,則該列的類型將自動(dòng)設(shè)為
17、 Timestamp數(shù)據(jù)類型。 ( 4) Uniqueidentifier:用于存儲(chǔ)一個(gè) 16字節(jié)長(zhǎng)的二進(jìn)制數(shù)據(jù)類型,它是 SQL Server根據(jù)計(jì) 算機(jī)網(wǎng)絡(luò)適配器地址和 CPU時(shí)鐘產(chǎn)生的全局惟一標(biāo)識(shí)符代碼( Globally Unique Identifier,簡(jiǎn) 寫(xiě)為 GUID)。此數(shù)字可以通過(guò)調(diào)用 SQL Server的 newid()函數(shù)獲得,在全球各地的計(jì)算機(jī) 經(jīng)由此函數(shù)產(chǎn)生的數(shù)字不會(huì)相同。 ( 5) XML :可以存儲(chǔ) XML數(shù)據(jù)的數(shù)據(jù)類型。利用它可以將 XML實(shí)例存儲(chǔ)在字段中或者 XML類 型的變量中。注意存儲(chǔ)在 XML中的數(shù)據(jù)不能超過(guò) 2GB。 ( 6) Cursor:這是變
18、量或存儲(chǔ)過(guò)程 OUTPUT 參數(shù)的一種數(shù)據(jù)類型,這些參數(shù)包含對(duì)游標(biāo)的引 用。使用 Cursor 數(shù)據(jù)類型創(chuàng)建的變量可以為空。注意:對(duì)于 CREATE TABLE 語(yǔ)句中的列, 不能使用 Cursor 數(shù)據(jù)類型。 5.1.2 自定義數(shù)據(jù)類型 SQL Server允許用戶自定義數(shù)據(jù)類型,用戶自定義 數(shù)據(jù)類型是建立在 SQL Server系統(tǒng)數(shù)據(jù)類型基礎(chǔ)上的, 當(dāng)用戶定義一種數(shù)據(jù)類型時(shí),需要指定該類型的名稱、 建立在其上的系統(tǒng)數(shù)據(jù)類型以及是否允許為空等。 SQL Server為用戶提供了兩種方法來(lái)創(chuàng)建自定義數(shù) 據(jù)類型: ( 1) 使用 SQL Server管理平臺(tái)創(chuàng)建用戶自定義數(shù)據(jù) 類型; ( 2)
19、利用系統(tǒng)存儲(chǔ)過(guò)程創(chuàng)建用戶自定義數(shù)據(jù)類型 5.1.2 自定義數(shù)據(jù)類型 ( 1) 使用 SQL Server管理平臺(tái)創(chuàng)建用戶自定義數(shù)據(jù)類型 在 SQL Server管理平臺(tái)中,打開(kāi)指定的服務(wù)器和數(shù)據(jù)庫(kù)項(xiàng),如圖 5-1所示,選擇并展開(kāi)“程序 類型”項(xiàng),接下來(lái)用右鍵單擊“用戶自定義數(shù)據(jù)類型”選項(xiàng),從彈出的快捷菜單中選擇“新 建”命令,出現(xiàn)用戶定義的數(shù)據(jù)類型屬性對(duì)話框,如圖 5-2所示。 圖 5-1 打開(kāi)用戶定義的數(shù)據(jù)類型窗口 圖 5-2 用戶定義的數(shù)據(jù)類型屬性對(duì)話框 5.1.2 自定義數(shù)據(jù)類型 ( 2) 利用系統(tǒng)存儲(chǔ)過(guò)程創(chuàng)建用戶自定義數(shù)據(jù)類 型 系統(tǒng)存儲(chǔ)過(guò)程 sp_addtype為用戶提供了用 T_S
20、QL語(yǔ)句 創(chuàng)建自定義數(shù)據(jù)類型的途徑,其語(yǔ)法形式如下: sp_addtype typename= type, phystype= system_data_type , nulltype= null_type , owner= owner_name 5.1.2 自定義數(shù)據(jù)類型 ( 2) 利用系統(tǒng)存儲(chǔ)過(guò)程創(chuàng)建用戶自定義數(shù)據(jù)類 型 例 5-1 自定義一個(gè)地址( address)數(shù)據(jù)類型。 程序清單如下: exec sp_addtype address, varchar( 80) , not null 5.2 表操作 表是包含數(shù)據(jù)庫(kù)中所有數(shù)據(jù)的數(shù)據(jù)庫(kù)對(duì)象。表 定義為列的集合,數(shù)據(jù)在表中是按行和列的格 式
21、組織排列的,每行代表惟一的一條記錄,而 每列代表記錄中的一個(gè)域。 5.2.1 創(chuàng)建表 5.2.2 創(chuàng)建約束 5.2.3 修改表 5.2.4 查看表 5.2.5 刪除表 5.2.1 創(chuàng)建表 1.利用 SQL Server管理平臺(tái)創(chuàng)建表 在 SQL Server管理平臺(tái)中,展開(kāi)指定的服務(wù)器和數(shù)據(jù)庫(kù),打開(kāi)想要?jiǎng)?chuàng)建新表的數(shù)據(jù)庫(kù),右擊表對(duì)象, 并從彈出的快捷菜單中選擇“新建表”選項(xiàng),如圖 5-4所示。在圖 5-4的對(duì)話框中,可以對(duì)表的結(jié)構(gòu)進(jìn) 行更改,設(shè)置主鍵及字段屬性,使用 SQL Server管理平臺(tái)可以非常直觀地修改數(shù)據(jù)庫(kù)結(jié)構(gòu)和添加數(shù) 據(jù)。在表中任意行上右擊,則彈出一個(gè)快捷菜單,如圖 5-6所示。
22、圖 5-4 新建表對(duì)話框 圖 5-6 設(shè)置字段屬性對(duì)話框 5.2.1 創(chuàng)建表 2. 利用 create命令創(chuàng)建表 使用 create命令創(chuàng)建表非常靈活,它允許對(duì)表設(shè)置幾種不同的選項(xiàng),包括表名、 存放位置和列的屬性等。 其完整語(yǔ)法形式如下: CREATE TABLE database_name.owner.|owner.table_name ( |column_name AS computed_column_expression| , n ) ON filegroup|DEFAULT TEXTIMAGE_ON filegroup|DEFAULT :=column_name data_type C
23、OLLATE DEFAULT constant_expression |IDENTITY( seed,increment ) NOT FOR REPLICATION ROWGUIDCOL .n 5.2.1 創(chuàng)建表 2. 利用 create命令創(chuàng)建表 其中,各參數(shù)的說(shuō)明如下 : database_name:用于指定所創(chuàng)建表的數(shù)據(jù)庫(kù)名稱。 owner:用于指定新建表的所有者的用戶名。 table_name:用于指定新建表的名稱。 column_name:用于指定新建表的列名。 computed_column_expression:用于指定計(jì)算列的列值表達(dá)式。 ON filegroup | DEFA
24、ULT:用于指定存儲(chǔ)表的文件組名。 TEXTIMAGE_ON:用于指定 text、 ntext 和 image 列的數(shù)據(jù)存儲(chǔ)的文件組。 data_type:用于指定列的數(shù)據(jù)類型。 DEFAULT:用于指定列的默認(rèn)值。 constant_expression:用于指定列的默認(rèn)值的常量表達(dá)式、可以為一個(gè)常量或 NULL或系統(tǒng)函數(shù)。 IDENTITY:用于將列指定為標(biāo)識(shí)列。 Seed:用于指定標(biāo)識(shí)列的初始值。 Increment:用于指定標(biāo) 識(shí)列的增量值。 NOT FOR REPLICATION:用于指定列的 IDENTITY屬性,在把從其他表中復(fù)制的數(shù)據(jù)插入到表中 時(shí)不發(fā)生作用,即不生成列值,使得
25、復(fù)制的數(shù)據(jù)行保持原來(lái)的列值。 ROWGUIDCOL:用于將列指定為全局惟一標(biāo)識(shí)行號(hào)列( row global unique identifier column)。 COLLATE:用于指定表的校驗(yàn)方式。 column_constraint和 table_constraint:用于指定列約束和表約束。 5.2.1 創(chuàng)建表 2. 利用 create命令創(chuàng)建表 例 5-3 創(chuàng)建了一個(gè)工人信息表,它包括工人編號(hào)、姓名、性別、 出生日期、職位、工資和備注信息。 SQL語(yǔ)句的程序清單如下: CREATE TABLE worker ( number char(8) not null, name char(
26、8) NOT NULL, sex char( 2) NULL, birthday datetime null, job_title varchar( 10) null, salary money null, memo ntext null ) 5.2.2 創(chuàng)建約束 約束是 SQL Server提供的自動(dòng)保持?jǐn)?shù)據(jù)庫(kù)完整性的一種方法,它通過(guò) 限制字段中數(shù)據(jù)、記錄中數(shù)據(jù)和表之間的數(shù)據(jù)來(lái)保證數(shù)據(jù)的完整性。在 SQL SERVER中,對(duì)于基本表的約束分為列約束和表約束。 列約束是對(duì)某一個(gè)特定列的約束,包含在列定義中,直接跟在該列的其 他定義之后,用空格分隔,不必指定列名;表約束與列定義相互獨(dú)立, 不包括
27、在列定義中,通常用于對(duì)多個(gè)列一起進(jìn)行約束,與列定義用 , 分隔,定義表約束時(shí)必須指出要約束的那些列的名稱。 完整性約束的基本語(yǔ)法格式為: CONSTRAINT constraint_name(約束名) 約束不指定名稱時(shí),系統(tǒng)會(huì)給定一個(gè)名稱。 在 SQL Server 2005中有 6種約束:主鍵約束( primary key constraint)、惟一性約束( unique constraint)、檢查約束( check constraint)、默認(rèn)約束( default constraint)、外部鍵約束 ( foreign key constraint)和空值( NULL)約束。 5.2
28、.2 創(chuàng)建約束 1.主鍵( PRIMARY KEY)約束 PRIMARY KEY約束用于定義基本表的主鍵,它是惟一確定表中每一 條記錄的標(biāo)識(shí)符,其值不能為 NULL,也不能重復(fù),以此來(lái)保證實(shí)體 的完整性。 PRIMARY KEY與 UNIQUE約束類似,通過(guò)建立唯一索引 來(lái)保證基本表在主鍵列取值的唯一性,但它們之間存在著很大的區(qū)別: 在一個(gè)基本表中只能定義一個(gè) PRIMARY KEY約束,但可定義多個(gè) UNIQUE約束; 對(duì)于指定為 PRIMARY KEY的一個(gè)列或多個(gè)列的組合,其中任何一 個(gè)列都不能出現(xiàn)空值,而對(duì)于 UNIQUE所約束的唯一鍵,則允許為空。 注意:不能為同一個(gè)列或一組列既定義
29、 UNIQUE約束,又定義 PRIMARY KEY約束。 PRIMARY KEY既可用于列約束,也可用于表約束。 5.2.2 創(chuàng)建約束 1.主鍵( PRIMARY KEY)約束 主鍵的創(chuàng)建操作方法有兩種: SQL Server管理平臺(tái)操作法和 Transact- SQL語(yǔ)句操作法。 ( 1) SQL Server管理平臺(tái)操作法,如圖 5-7所示。 圖 5-7 選擇多個(gè)字段共同做為主鍵對(duì)話框 5.2.2 創(chuàng)建約束 1.主鍵( PRIMARY KEY)約束 ( 2)使用 Transact-SQL語(yǔ)句操作法設(shè)置主鍵約束,其語(yǔ)法形式如下: CONSTRAINT constraint_name PRIM
30、ARY KEY CLUSTERED|NONCLUSTERED ( column_name) PRIMARY KEY用于定義表約束時(shí),即將某些列的組合定義為主鍵,其語(yǔ)法 格式如下: CONSTRAINT constraint_name PRIMARY KEY CLUSTERED|NONCLUSTERED ( column_name,n ) 5.2.2 創(chuàng)建約束 1.主鍵( PRIMARY KEY)約束 例 5-5 建立一個(gè) SC表,定義 SNO, CNO共同組成 SC的主鍵 程序清單如下: CREATE TABLE SC (SNO CHAR(5) NOT NULL, CNO CHAR(5) NO
31、T NULL, SCORE NUMERIC(3), CONSTRAINT SC_PRIM PRIMARY KEY(SNO,CNO) 5.2.2 創(chuàng)建約束 2. 惟一性約束 惟一性約束用于指定一個(gè)或者多個(gè)列的組合值具有惟一性,以防 止在列中輸入重復(fù)的值。定義了 UNIQUE約束的那些列稱為唯一 鍵,系統(tǒng)自動(dòng)為唯一鍵建立唯一索引,從而保證了唯一鍵的唯一 性。 當(dāng)使用惟一性約束時(shí),需要考慮以下幾個(gè)因素: 使用惟一性約束的字段允許為空值; 一個(gè)表中可以允許有多個(gè)惟一性約束; 可以把惟一性約束定義在多個(gè)字段上; 惟一性約束用于強(qiáng)制在指定字段上創(chuàng)建一個(gè)惟一性索引; 默認(rèn)情況下,創(chuàng)建的索引類型為非聚集索引。
32、 5.2.2 創(chuàng)建約束 2. 惟一性約束 創(chuàng)建惟一性約束的方法有兩種:通過(guò) SQL Server管理平臺(tái)可以完成創(chuàng)建和修改惟一性約 束的操作;使用 Transact-SQL語(yǔ)句完成惟一性約束的操作。 ( 1)通過(guò) SQL Server管理平臺(tái)可以完成創(chuàng)建和修改惟一性約束的操作,如圖 5-8所示。 圖 5-8 創(chuàng)建惟一性約束對(duì)話框 5.2.2 創(chuàng)建約束 2. 惟一性約束 ( 2)使用 Transact-SQL語(yǔ)句完成惟一性約束的操作,其語(yǔ)法形式如下: CONSTRAINT constraint_name UNIQUE CLUSTERED|NONCLUSTERED ( column_name,n
33、) 例 5-6 創(chuàng)建一個(gè)學(xué)生信息表,其中 name字段具有惟一性。 程序清單如下: Create table student( id char( 8) , name char( 10) , sex char( 2) , constraint pk_id primary key( id) , constraint uk_identity unique( name) ) 5.2.2 創(chuàng)建約束 3. 檢查約束 檢查約束對(duì)輸入列或者整個(gè)表中的值設(shè)置檢查條件,以限制輸入 值,保證數(shù)據(jù)庫(kù)數(shù)據(jù)的完整性。 當(dāng)使用檢查約束時(shí),應(yīng)該考慮和注意以下幾點(diǎn): 一個(gè)列級(jí)檢查約束只能與限制的字段有關(guān);一個(gè)表級(jí)檢查約束只能
34、與限制的表中字段有關(guān); 一個(gè)表中可以定義多個(gè)檢查約束; 每個(gè) CREATE TABLE語(yǔ)句中每個(gè)字段只能定義一個(gè)檢查約束; 在多個(gè)字段上定義檢查約束,則必須將檢查約束定義為表級(jí)約束; 當(dāng)執(zhí)行 INSERT語(yǔ)句或者 UPDATE語(yǔ)句時(shí),檢查約束將驗(yàn)證數(shù)據(jù); 檢查約束中不能包含子查詢。 5.2.2 創(chuàng)建約束 3. 檢查約束 創(chuàng)建檢查約束常用的操作方法有如下兩種 :使用 SQL Server管理平臺(tái)創(chuàng)建 檢查約束;用 Transact-SQL語(yǔ)句創(chuàng)建檢查約束。 ( 1)使用 SQL Server管理平臺(tái)創(chuàng)建檢查約束,如圖 5-9所示。 圖 5-9 創(chuàng)建檢查約束對(duì)話框 5.2.2 創(chuàng)建約束 3. 檢查
35、約束 ( 2)用 Transact-SQL語(yǔ)句創(chuàng)建檢查約束。 用 Transact-SQL語(yǔ)句創(chuàng)建檢查約束。其語(yǔ)法形式如下: CONSTRAINT constraint_name CHECK NOT FOR REPLICATION (logical_expression) 例 5-8 建立一個(gè) SC表,定義 SCORE 的取值范圍為 0到 100之間。 程序清單如下: CREATE TABLE SC (SNO CHAR(5), CNO CHAR(5), SCORE NUMERIC(5,1) CONSTRAINT SCORE_CHK CHECK(SCORE=0 AND SCORE =100) 5
36、.2.2 創(chuàng)建約束 4. 默認(rèn)( DEFAULT)約束 默認(rèn)約束指定在插入操作中如果沒(méi)有提供輸入值時(shí),則系統(tǒng)自動(dòng)指 定值。默認(rèn)約束可以包括常量、函數(shù)、不帶變?cè)膬?nèi)建函數(shù)或者空值。 使用默認(rèn)約束時(shí),應(yīng)該注意以下幾點(diǎn): ( 1)每個(gè)字段只能定義一個(gè)默認(rèn)約束; ( 2)如果定義的默認(rèn)值長(zhǎng)于其對(duì)應(yīng)字段的允許長(zhǎng)度,那么輸入到表 中的默認(rèn)值將被截?cái)啵?( 3)不能加入到帶有 IDENTITY屬性或者數(shù)據(jù)類型為 timestamp的字 段上; ( 4)如果字段定義為用戶定義的數(shù)據(jù)類型,而且有一個(gè)默認(rèn)綁定到 這個(gè)數(shù)據(jù)類型上,則不允許該字段有默認(rèn)約束。 5.2.2 創(chuàng)建約束 4. 默認(rèn)( DEFAULT)約束
37、創(chuàng)建默認(rèn)約束常用的操作方法有如下兩種:使用 SQL Server管理平臺(tái)創(chuàng)建默 認(rèn)約束;創(chuàng)建默認(rèn)約束的 Transact-SQL語(yǔ)句操作法 。 ( 1) 使用 SQL Server管理平臺(tái)創(chuàng)建默認(rèn)約束 , 如圖 5-10所示 。 圖 5-10 創(chuàng)建默認(rèn)約束對(duì)話框 5.2.2 創(chuàng)建約束 4. 默認(rèn)( DEFAULT)約束 ( 2) 創(chuàng)建默認(rèn)約束的 Transact-SQL語(yǔ)句操作法 。 其 語(yǔ)法形式如下: CONSTRAINT constraint_name DEFAULT constraint_expression FOR column_name 例 5-10 為 dept字段創(chuàng)建默認(rèn)約束。
38、程序清單如下: constraint con_dept default 計(jì)算機(jī) for dept 5.2.2 創(chuàng)建約束 5. 外部鍵約束 外鍵 (FOREIGN KEY) 是用于建立和加強(qiáng)兩個(gè)表數(shù)據(jù)之間的鏈接的一列或 多列 。 外部鍵約束用于強(qiáng)制參照完整性 。 當(dāng)使用外部鍵約束時(shí),應(yīng)該考慮以下幾個(gè)因素: 外部鍵約束提供了字段參照完整性; 外部鍵從句中的字段數(shù)目和每個(gè)字段指定的數(shù)據(jù)類型都必須和 REFERENCES從句中的字段相匹配; 外部鍵約束不能自動(dòng)創(chuàng)建索引,需要用戶手動(dòng)創(chuàng)建; 用戶想要修改外部鍵約束的數(shù)據(jù),必須有對(duì)外部鍵約束所參考表的 SELECT 權(quán)限或者 REFERENCES權(quán)限; 參
39、考同一表中的字段時(shí),必須只使用 REFERENCES子句,不能使用外部鍵 子句; 一個(gè)表中最多可以有 31個(gè)外部鍵約束; 在臨時(shí)表中,不能使用外部鍵約束; 主鍵和外部鍵的數(shù)據(jù)類型必須嚴(yán)格匹配 5.2.2 創(chuàng)建約束 5. 外部鍵約束 創(chuàng)建外部鍵約束常用的操作方法有如下兩種:在 SQL Server管理平臺(tái)中添加 外部鍵約束;使用 Transact-SQL語(yǔ)句設(shè)置外部鍵約束 。 ( 1) 在 SQL Server管理平臺(tái)中添加外部鍵約束 , 在 SQL Server管理平臺(tái)中 添加外部鍵約束 。 如圖 5-11, 5-12所示 。 圖 5-11 選擇創(chuàng)建外鍵約束的字段 圖 5-12 創(chuàng)建外鍵約束對(duì)
40、話框 5.2.2 創(chuàng)建約束 5. 外部鍵約束 ( 2)使用 Transact-SQL語(yǔ)句設(shè)置外部鍵約束 ,其語(yǔ)法形式如下: CONSTRAINT constraint_name FOREIGN KEY ( column_name,n ) REFERENCES ref_table ( ref_column,n ) 例 5-11 建立一個(gè) SC表,定義 SNO,CNO為 SC的外部鍵。 程序清單如下: CREATE TABLE SC (SNO CHAR(5) NOT NULL CONSTRAINT S_FORE FOREIGN KEY REFERENCES S(SNO), CNO CHAR(5)
41、NOT NULL CONSTRAINT C_FORE FOREIGN KEY REFERENCES C(CNO), SCORE NUMERIC(3), CONSTRAINT S_C_PRIM PRIMARY KEY (SNO,CNO) 5.2.2 創(chuàng)建約束 6. 空值( NULL)約束 空值( NULL)約束用來(lái)控制是否允許該字段的值為 NULL。 NULL值不是 0也不是空白,更不是填入字符串的“ NULL”字符 串,而是表示“不知道”、“ 不確定”或“沒(méi)有數(shù)據(jù)”的意思。 當(dāng)某一字段的值一定要輸入才有意義的時(shí)候,則可以設(shè)置為 NOT NULL。如主鍵列就不允許出現(xiàn)空值,否則就失去了唯一 標(biāo)識(shí)
42、一條記錄的作用。空值( NULL)約束只能用于定義列約束。 創(chuàng)建空值( NULL)約束常用的操作方法有如下兩種: ( 1)在 SQL Server管理平臺(tái)中添加空值( NULL)約束; ( 2)使用 Transact-SQL語(yǔ)句設(shè)置空值( NULL)約束。 5.2.2 創(chuàng)建約束 6. 空值( NULL)約束 ( 1)在 SQL Server管理平臺(tái)中添加空值( NULL)約束。如圖 5-14所示。 圖 5-14設(shè)置空值( NULL)約束對(duì)話框 5.2.2 創(chuàng)建約束 6. 空值( NULL)約束 ( 2)使用 Transact-SQL語(yǔ)句設(shè)置空值( NULL)約束, 其語(yǔ)法 形式如下: CONS
43、TRAINT NULL|NOT NULL 例 5-13 建立一個(gè) S表,對(duì) SNO字段進(jìn)行 NOT NULL約束。 程序清單如下: CREATE TABLE S (SNO CHAR(10) CONSTRAINT S_CONS NOT NULL, SN VARCHAR(20), AGE INT, SEX CHAR(2) DEFAULT 男 , DEPT VARCHAR(20) 5.2.3 修改表 當(dāng)數(shù)據(jù)庫(kù)中的表創(chuàng)建完成后,可以根據(jù)需要改變表中 原先定義的許多選項(xiàng),以更改表的結(jié)構(gòu)。用戶可以增 加、刪除和修改列,增加、刪除和修改約束,更改表 名以及改變表的所有者等。 1、修改列屬性 修改列屬性包括以
44、下一些內(nèi)容: ( 1)修改列的數(shù)據(jù)類型; ( 2)修改列的數(shù)據(jù)長(zhǎng)度; ( 3)修改列的精度; ( 4)修改列的小數(shù)位數(shù); ( 5)修改列的為空性。 5.2.3 修改表 2、添加和刪除列 在 SQL Server 2005中,如果列允許空值或?qū)α袆?chuàng)建 DEFAULT 約束,則 可以將列添加到現(xiàn)有表中。將新列添加到表時(shí), SQL Server 2005數(shù)據(jù)庫(kù)引 擎在該列為表中的每個(gè)現(xiàn)有數(shù)據(jù)行插入一個(gè)值。因此,在向表中添加列時(shí)向 列添加 DEFAULT定義會(huì)很有用。如果新列沒(méi)有 DEFAULT定義,則必須指 定該列允許空值。數(shù)據(jù)庫(kù)引擎將空值插入該列,如果新列不允許空值,則返 回錯(cuò)誤。 反之,可以刪除
45、現(xiàn)有表中的列,但具有下列特征的列不能被刪除: ( 1)用于索引; ( 2)用于 CHECK、 FOREIGN KEY、 UNIQUE 或 PRIMARY KEY約束; ( 3)與 DEFAULT 定義關(guān)聯(lián)或綁定到某一默認(rèn)對(duì)象; ( 4)綁定到規(guī)則; ( 5)已注冊(cè)支持全文; ( 6)用作表的全文鍵。 5.2.3 修改表 3、增加、修改和刪除約束 ( 1)增加、修改和刪除 PRIMARY KEY 約束。 ( 2)增加、修改和刪除 UNIQUE約束。 ( 3)增加、修改和刪除 CHECK約束。 ( 4)增加、修改和刪除 DEFAULT約束。 ( 5)增加、修改和刪除 FOREIGN KEY約束。
46、( 6)增加和修改標(biāo)識(shí)符列。只能為每個(gè)表創(chuàng)建一個(gè) 標(biāo)識(shí)符列和一個(gè) GUID 列。 5.2.3 修改表 例 5-14 創(chuàng)建一個(gè)雇員信息表,然后在表中增加一個(gè) salary字段,刪除表 中的 age字段,并且修改 memo字段的數(shù)據(jù)類型。 SQL語(yǔ)句的程序清單如下: create table employees( id char( 8) primary key, name char( 20) not null, department char( 20) null, memo char( 30) null, age int null, ) alter table employees add sala
47、ry int null, drop column age, alter column memo varchar( 200) null 5.2.3 修改表 例 5-15 在 S表中增加一個(gè)班號(hào)列和住址列。 SQL語(yǔ)句的程序清單如下: ALTER TABLE S ADD CLASS_NO CHAR(6), ADDRESS CHAR(40) 注意:使用此方式增加的新列自動(dòng)填充 NULL值,所以不能為增加的新列指 定 NOT NULL約束。 例 5-16 在 SC表中增加完整性約束定義,使 SCORE在 0-100之間。 SQL語(yǔ)句的程序清單如下: ALTER TABLE SC ADD CONSTRA
48、INT SCORE_CHK CHECK(SCORE BETWEEN 0 AND 100) 5.2.4 查看表 當(dāng)在數(shù)據(jù)庫(kù)中創(chuàng)建了表后 , 有時(shí)需要查看表的有關(guān)信息 。 比如表的屬性 、 定義 、 數(shù)據(jù) 、 字段屬性和索引等 。 尤其重要的是查看表內(nèi)存放的數(shù)據(jù) , 另外 有時(shí)需要查看表與其他數(shù)據(jù)庫(kù)對(duì)象之間的依賴關(guān)系 。 1. 查看表的定義 , 如圖 5-15, 5-16所示 。 圖 5-15 選擇表格屬性對(duì)話框 圖 5-16 表格屬性對(duì)話框 5.2.4 查看表 2. 查看表中存儲(chǔ)的數(shù)據(jù) , 如圖 5-17, 5-18所示 。 圖 5-17 選擇打開(kāi)表對(duì)話框 圖 5-18 顯示表格數(shù)據(jù)對(duì)話框 5.
49、2.4 查看表 3. 查看表與其他數(shù)據(jù)庫(kù)對(duì)象的依賴關(guān)系 , 如圖 5-19所示 。 圖 5-19 顯示相關(guān)性對(duì)話框 5.2.4 查看表 4. 利用系統(tǒng)存儲(chǔ)過(guò)程查看表的信息 系統(tǒng)存儲(chǔ)過(guò)程 Sp_help可以提供指定數(shù)據(jù)庫(kù)對(duì)象的信息,也可以提供系統(tǒng)或 者用戶定義的數(shù)據(jù)類型的信息,其語(yǔ)法形式如下: sp_help objname=name 例 5-17 ( 1)顯示當(dāng)前數(shù)據(jù)庫(kù)中所有對(duì)象的信息;( 2)顯示表 Person.Contact 的信息。在 SQL Server管理平臺(tái)的查詢窗口中,它們對(duì)應(yīng) 的語(yǔ)句和運(yùn)行結(jié)果如圖 5-20和圖 5-21所示 圖 5-20 所有數(shù)據(jù)庫(kù)對(duì)象顯示窗口 圖 5-21
50、 當(dāng)前數(shù)據(jù)庫(kù)對(duì)象顯示窗口 5.2.5 刪除表 1. 利用管理平臺(tái)刪除表 在 SQL Server管理平臺(tái)中,展開(kāi)指定的數(shù)據(jù)庫(kù)和表,右擊要?jiǎng)h除的表,從彈 出的快捷菜單中選擇“刪除”選項(xiàng),則出現(xiàn)除去對(duì)象對(duì)話框,如圖 5-25所示。 圖 5-25 刪除表對(duì)話框 5.2.5 刪除表 2. 利用 DROP TABLE語(yǔ)句刪除表 DROP TABLE語(yǔ)句可以刪除一個(gè)表和表中的數(shù)據(jù)及其與表有關(guān) 的所有索引、觸發(fā)器、約束、許可對(duì)象。 DROP TABLE語(yǔ)句的語(yǔ)法形式如下: DROP TABLE table_name 要?jiǎng)h除的表如果不在當(dāng)前數(shù)據(jù)庫(kù)中,則應(yīng)在 table_name中指明 其所屬的數(shù)據(jù)庫(kù)和用戶名。
51、在刪除一個(gè)表之前要先刪除與此表 相關(guān)聯(lián)的表中的外部關(guān)鍵字約束。當(dāng)刪除表后,綁定的規(guī)則或 者默認(rèn)值會(huì)自動(dòng)松綁。 例 5-18 刪除 company數(shù)據(jù)庫(kù)中的表 employee。 程序如下: drop table company.dbo.employee 5.3 視圖概述 視圖是個(gè)虛表,是從一個(gè)或者多個(gè)表或視圖中導(dǎo)出的表,其 結(jié)構(gòu)和數(shù)據(jù)是建立在對(duì)表的查詢基礎(chǔ)上的。 使用視圖的優(yōu)點(diǎn)和作用主要有: ( 1)視圖可以使用戶只關(guān)心他感興趣的某些特定數(shù)據(jù)和他們所 負(fù)責(zé)的特定任務(wù),而那些不需要的或者無(wú)用的數(shù)據(jù)則不在視圖 中顯示。 ( 2)視圖大大地簡(jiǎn)化了用戶對(duì)數(shù)據(jù)的操作。 ( 3)視圖可以讓不同的用戶以不同
52、的方式看到不同或者相同的 數(shù)據(jù)集。 ( 4)在某些情況下,由于表中數(shù)據(jù)量太大,因此在表的設(shè)計(jì)時(shí) 常將表進(jìn)行水平或者垂直分割,但表的結(jié)構(gòu)的變化對(duì)應(yīng)用程序 產(chǎn)生不良的影響。而使用視圖可以重新組織數(shù)據(jù),從而使外模 式保持不變,原有的應(yīng)用程序仍可以通過(guò)視圖來(lái)重載數(shù)據(jù)。 ( 5)視圖提供了一個(gè)簡(jiǎn)單而有效的安全機(jī)制。 5.3.1創(chuàng)建視圖 SQL Server 2005提供了如下幾種創(chuàng)建視圖的方法: ( 1)用 SQL SERVER管理平臺(tái)創(chuàng)建視圖; ( 2)用 Transact-SQL語(yǔ)句中的 CREATE VIEW命令創(chuàng)建視圖; ( 3)利用 SQL SERVER管理平臺(tái)的視圖模板來(lái)創(chuàng)建視圖。 創(chuàng)建視圖
53、時(shí)應(yīng)該注意以下情況: ( 1)只能在當(dāng)前數(shù)據(jù)庫(kù)中創(chuàng)建視圖,在視圖中最多只能引用 1024列,視圖中記錄的數(shù) 目限制只由其基表中的記錄數(shù)決定。 ( 2)如果視圖引用的基表或者視圖被刪除,則該視圖不能再被使用,直到創(chuàng)建新的基 表或者視圖。 ( 3)如果視圖中某一列是函數(shù)、數(shù)學(xué)表達(dá)式、常量或者來(lái)自多個(gè)表的列名相同,則必 須為列定義名稱。 ( 4)不能在視圖上創(chuàng)建索引,不能在規(guī)則、默認(rèn)、觸發(fā)器的定義中引用視圖。 ( 5)當(dāng)通過(guò)視圖查詢數(shù)據(jù)時(shí), SQL Server要檢查以確保語(yǔ)句中涉及的所有數(shù)據(jù)庫(kù)對(duì)象 存在,每個(gè)數(shù)據(jù)庫(kù)對(duì)象在語(yǔ)句的上下文中有效,而且數(shù)據(jù)修改語(yǔ)句不能違反數(shù)據(jù)完整性 規(guī)則。 ( 6)視圖的
54、名稱必須遵循標(biāo)識(shí)符的規(guī)則,且對(duì)每個(gè)用戶必須是惟一的。此外,該名稱 不得與該用戶擁有的任何表的名稱相同。 5.3.1.1 利用 SQL SERVER管理平臺(tái)創(chuàng)建 視圖 利用 SQL SERVER管理平臺(tái)創(chuàng)建視圖的具體操作步驟如下: ( 1)在 SQL SERVER管理平臺(tái)中,展開(kāi)指定的服務(wù)器,打開(kāi)要?jiǎng)?chuàng)建視圖的數(shù)據(jù)庫(kù)文件夾,選擇 指定的數(shù)據(jù)庫(kù),右擊該數(shù)據(jù)庫(kù)圖標(biāo),從彈出的快捷菜單中依次選擇“新建( New) 視圖”選項(xiàng), 如圖 5-26所示。接著就出現(xiàn)添加表、視圖、函數(shù)對(duì)話框。如圖 5-27所示。 圖 5-26 選擇新建視圖選項(xiàng)對(duì)話框 圖 5-27 添加表、視圖、函數(shù)對(duì)話框 5.3.1.1 利用 S
55、QL SERVER管理平臺(tái)創(chuàng)建 視圖 ( 2)選擇好創(chuàng)建視圖所需的表、視圖、函數(shù)后,通過(guò)單擊字段左邊的復(fù)選框 選擇需要的字段,如圖 5-28所示。單擊工具欄中的“保存”按鈕,或者單擊 鼠標(biāo)右鍵,從快捷菜單中選擇保存選項(xiàng)保存視圖,輸入視圖名,即可完成視 圖的創(chuàng)建。 圖 5-28 選擇視圖字段對(duì)話框 5.3.1.2利用 Transact-SQL語(yǔ)句中的 CREATE VIEW命令創(chuàng)建視圖 使用 Transact-SQL語(yǔ)句中的 CREATE VIEW創(chuàng)建視圖, 其語(yǔ)法形式如下: CREATE VIEW schema_name. view_name (column ,.n) WITH ,.n AS
56、select_statement WITH CHECK OPTION := ENCRYPTION|SCHEMABINDING|VIEW_METADATA 5.3.1.2利用 Transact-SQL語(yǔ)句中的 CREATE VIEW命令創(chuàng)建視圖 例 5-19 選擇表 s和 sc中的部分字段和記錄來(lái)創(chuàng)建一個(gè)視圖,并且限制表 s中的記錄只 能是計(jì)算機(jī)系的記錄集合,視圖定義為 view_s。 程序清單如下: create view view_s as select s.name,s.age,s.sex, o,sc.score from s,sc where s.sno=sc.sno and s.dep
57、t=計(jì)算機(jī) 例 5-20 創(chuàng)建一個(gè)視圖,使之包含復(fù)雜的查詢。 程序清單如下: CREATE VIEW ExampleView WITH SCHEMABINDING AS SELECT sno, SUM(score) AS Sumscore, COUNT(*) AS CountCol FROM sc GROUP BY sno 5.3.1.2利用 Transact-SQL語(yǔ)句中的 CREATE VIEW命令創(chuàng)建視圖 例 5-21 創(chuàng)建一個(gè)視圖,使之包含字符串的運(yùn)算。 程序清單如下: CREATE VIEW v_shyjl(shyxh, shj, xm, jglb, phr, bzh) AS Sel
58、ect distinct shyxh,substring(shj,1,10)+zhi, t01_shbshy.xm,t012_shyjl.jglb,t012_shyjl.phr,t012_shyjl.bzh from t01_shbshy, t012_shyjl where t012_shyjl.xm=t01_shbshy.xm 其中 shj列是從基表中取出兩列并和一空字符串相加而得到的。 這些都為基表中字段間的靈活運(yùn)算提供了極大方便,從而使我 們可以隨心所欲地定制符合自己要求的數(shù)據(jù)。 5.3.1.3 利用模板創(chuàng)建視圖 使用視圖模板可以很容易地創(chuàng)建視圖,其具體操作步驟如下; ( 1)在 SQL
59、 SERVER管理平臺(tái)中,選擇 view菜單中的“模板資源管理器 ”選項(xiàng), 如圖 5-29所示。 ( 2)在出現(xiàn)的“模板資源管理器”選項(xiàng)中選擇“創(chuàng)建視圖”選項(xiàng),如圖 5-30所示。 ( 3)按照提示輸入視圖名稱, select語(yǔ)句后,執(zhí)行此語(yǔ)句,即可創(chuàng)建視圖。 圖 5-29 選擇工具菜單中的向?qū)?圖 5-30 創(chuàng)建視圖模板 5.3.2 修改、刪除和重命名視圖 5.3.2.1 修改視圖 5.3.2.2 重命名視圖 5.3.2.3 查看視圖信息 、 刪除視圖 5.3.2.1 修改視圖 修改視圖的方法有以下兩種方法: ( 1)在 SQL SERVER管理平臺(tái)中,右擊要修改的視圖,從彈出 的快捷菜
60、單中選擇“設(shè)計(jì)視圖”選項(xiàng),出現(xiàn)視圖修改對(duì)話框。該 對(duì)話框與創(chuàng)建視圖時(shí)的對(duì)話框相同,可以按照創(chuàng)建視圖的方法修 改視圖。 ( 2)使用 ALTER VIEW語(yǔ)句修改視圖,但首先必須擁有使用視 圖的權(quán)限,然后才能使用 ALTER VIEW語(yǔ)句,該語(yǔ)句的語(yǔ)法形式 如下: ALTER VIEW view_name ( column,.n) WITH ENCRYPTION AS select_statement WITH CHECK OPTION 5.3.2.1 修改視圖 例 5-23 修改了視圖 V_employees,在該視圖中增加了 新的字段 employees.salary,并且定義一個(gè)新的字段名
61、 稱 e_salary。 程序清單如下: alter view dbo.employees ( number,name,age,e_salary) as select number,name,age,salary from employees where name=張三 5.3.2.2 重命名視圖 重命名視圖方法有以下兩種: 1. 在 SQL SERVER管理平臺(tái)中,選擇要修改名稱的視 圖,并右擊該視圖,從彈出的快捷菜單中選擇“重命名” 選項(xiàng)。或者在視圖上再次單擊,也可以修改視圖的名稱。 接著該視圖的名稱變成可輸入狀態(tài),可以直接輸入新的 視圖名稱。 2. 使用系統(tǒng)存儲(chǔ)過(guò)程 sp_rename來(lái)
62、修改視圖的名稱,該 過(guò)程的語(yǔ)法形式如下: sp_rename old_name,new_name 例 5-24 把視圖 v_all重命名為 v_part。 程序清單如下: sp_rename v_all,v_part 5.3.3 查看視圖信息、刪除視圖 1. 查看視圖信息 可以使用系統(tǒng)存儲(chǔ)過(guò)程 sp_help顯示視圖特征,使用 sp_helptext顯示視圖在系統(tǒng)表中的 定義,使用 sp_depends顯示該視圖所依賴的對(duì)象。使用 SQL Server 查詢分析器可以方 便地顯示視圖屬性信息,如圖 5-31所示。圖 5-32顯示了使用 sp_helptext存儲(chǔ)過(guò)程顯示 視圖的創(chuàng)建語(yǔ)句。 圖
63、5-31 顯示視圖屬性對(duì)話框 圖 5-32 顯示視圖創(chuàng)建語(yǔ)句 5.3.3 查看視圖信息、刪除視圖 1. 查看視圖信息 利用 select語(yǔ)句或 SQL SERVER管理平臺(tái)可以查看視圖的輸出數(shù)據(jù)。在 SQL SERVER管理平臺(tái)中,右擊某個(gè)視圖的名稱,從彈出的快捷菜單中選擇“打開(kāi) 視圖”選項(xiàng),在 SQL SERVER管理平臺(tái)中就會(huì)顯示該視圖的輸出數(shù)據(jù),如圖 5- 33所示。 圖 5-33 視圖輸出數(shù)據(jù)窗口 5.3.3 查看視圖信息、刪除視圖 2. 刪除視圖 對(duì)于不再使用的視圖,可以使用 SQL SERVER管理平臺(tái)或者 Transact-SQL語(yǔ)句中的 DROP VIEW命令刪除它。 使用 T
64、ransact-SQL語(yǔ)句 DROP VIEW刪除視圖,其語(yǔ)法形式如下: DROP VIEW view_name ,n 可以使用該命令同時(shí)刪除多個(gè)視圖,只需在要?jiǎng)h除的各視圖名稱 之間用逗號(hào)隔開(kāi)即可。 例 5-25 同時(shí)刪除視圖 v_student和 v_teacher。 程序清單如下: drop view v_student,v_teacher 5.3.4 通過(guò)視圖修改記錄 使用視圖修改數(shù)據(jù)時(shí),需要注意以下幾點(diǎn): ( 1)修改視圖中的數(shù)據(jù)時(shí),不能同時(shí)修改兩個(gè)或者多個(gè)基表,可以對(duì) 基于兩個(gè)或多個(gè)基表或者視圖的視圖進(jìn)行修改,但是每次修改都只能影 響一個(gè)基表。 ( 2)不能修改那些通過(guò)計(jì)算得到的字段
65、,例如包含計(jì)算值或者合計(jì)函 數(shù)的字段。 ( 3)如果在創(chuàng)建視圖時(shí)指定了 WITH CHECK OPTION選項(xiàng),那么使用 視圖修改數(shù)據(jù)庫(kù)信息時(shí),必須保證修改后的數(shù)據(jù)滿足視圖定義的范圍。 ( 4)執(zhí)行 UPDATE、 DELETE命令時(shí),所刪除與更新的數(shù)據(jù)必須包含 在視圖的結(jié)果集中。 ( 5)如果視圖引用多個(gè)表時(shí),無(wú)法用 DELETE命令刪除數(shù)據(jù),若使用 UPDATE命令則應(yīng)與 INSERT操作一樣,被更新的列必須屬于同一個(gè)表。 5.3.4.1 插入數(shù)據(jù)記錄 例 5-26 創(chuàng)建一個(gè)基于表 employees的新視圖 v_employees。 程序清單如下: create view v_emplo
66、yees( number, name, age, sex, salary) as select number, name, age, sex, salary from employees where name=張三 執(zhí)行以下語(yǔ)句可向表 employees中添加一條新的數(shù)據(jù)記錄: Insert into v_employees Values( 001,李力 ,22,m,2000) 5.3.4.1 插入數(shù)據(jù)記錄 例 5-27 首先創(chuàng)建一個(gè)包含限制條件的視圖 v_employee2,限制條件為工資 2000,然 后插入了一條不滿足限制條件的記錄,再用 SELECT語(yǔ)句檢索視圖和表。 程序清單如下: create view v_employee2 as select * from employee where 工資 2000 go insert into v_employee2 values( 002,王則 ,30,f,1000) go select * from employee go select * from v_employee2 go 5.3.4.1 插入數(shù)據(jù)記錄 例 5-28 在例
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 造紙納米碳酸鈣
- 2019中考物理第1章機(jī)械運(yùn)動(dòng)復(fù)習(xí)課件新人教版1
- LRBG的技能模型與角色模型
- 轉(zhuǎn)子間骨折的個(gè)手術(shù)技巧
- 生命之源血液
- 表情符號(hào)與藝術(shù)-美術(shù)ppt課件
- 壓力管理和積極心態(tài)
- 部編版初中語(yǔ)文春優(yōu)質(zhì)課課件
- 教育行業(yè)聯(lián)盟解決方案培訓(xùn)-new
- 控制與接口技術(shù)-基于模糊推理的智能控制 1226
- 八年級(jí)物理-聲音的特征-課件
- 藤野先生余映潮教案課件
- 興趣及其培養(yǎng)(發(fā)展職業(yè)生涯要立足本人實(shí)際)詳解課件
- 學(xué)會(huì)調(diào)控情緒_課件(教育精品)
- (廣州版)五年級(jí)英語(yǔ)下冊(cè)課件-Module-4-Unit-112