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