第5章數(shù)據(jù)庫對(duì)象的操作課件



《第5章數(shù)據(jù)庫對(duì)象的操作課件》由會(huì)員分享,可在線閱讀,更多相關(guān)《第5章數(shù)據(jù)庫對(duì)象的操作課件(133頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),,,*,單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),2020/9/14,,?#?,第5章 數(shù)據(jù)庫對(duì)象的操作,,,第5章 數(shù)據(jù)庫對(duì)象的操作,1,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 S
2、erver提供系統(tǒng)數(shù)據(jù)類型集,定義了可與SQL Server一起使用的所有數(shù)據(jù)類型;另外用戶還可以使用Transact-SQL或.NET框架定義自己的數(shù)據(jù)類型,它是系統(tǒng)提供的數(shù)據(jù)類型的別名。每個(gè)表可以定義至多250個(gè)字段,除文本和圖像數(shù)據(jù)類型外,每個(gè)記錄的最大長(zhǎng)度限制為1962個(gè)字節(jié)。,,,5.1 數(shù)據(jù)類型 在SQL Server2005 中,每個(gè)列,2,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ù)字類型;,
3、3,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ù)字類型,4,5.1.1 系統(tǒng)數(shù)據(jù)類型,,1、精確數(shù)字類型,(2)整數(shù)類型,:,整數(shù)類型是最常用的數(shù)據(jù)類型之一,它主要用來存儲(chǔ)數(shù)值,可以直接進(jìn)行數(shù)據(jù)運(yùn)算,而不必使用函數(shù)轉(zhuǎn)換。整數(shù)類型包括以下四類:,(1)Bigint:Bigint數(shù)據(jù)類型可以存儲(chǔ)從 (-92233728) 到(92233727) 范圍之間的所有整型數(shù)據(jù)。每個(gè)Bigint數(shù)據(jù)類型值存儲(chǔ)在8個(gè)字
4、節(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ù)。每個(gè)smallint類型的數(shù)據(jù)占用2個(gè)字節(jié)的存儲(chǔ)空間。,(4)Tinyint:可以存儲(chǔ)從0~255范圍之間的所有正整數(shù)。每個(gè)tinyint類型的數(shù)據(jù)占用1個(gè)字節(jié)的存儲(chǔ)空間。,,,5.1.1 系統(tǒng)數(shù)據(jù)類型 1、精確數(shù)字類型,5,5.1.1 系統(tǒng)數(shù)據(jù)類型,,1、精確數(shù)字類型,(3)位數(shù)據(jù)類型,Bit稱為位數(shù)據(jù)類型,其
5、數(shù)據(jù)有兩種取值:0和1,長(zhǎng)度為1字節(jié)。在輸入0以外的其他值時(shí),系統(tǒng)均把它們當(dāng)1看待。這種數(shù)據(jù)類型常作為邏輯變量使用,用來表示真、假或是、否等二值選擇。,,(4)Decimal數(shù)據(jù)類型和Numeric數(shù)據(jù)類型,Decimal數(shù)據(jù)類型和Numeric數(shù)據(jù)類型完全相同,它們可以提供小數(shù)所需要的實(shí)際存儲(chǔ)空間,但也有一定的限制,可以用2~17個(gè)字節(jié)來存儲(chǔ)-1038+1到1038-1之間的固定精度和小數(shù)位的數(shù)字。也可以將其寫為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)
6、,表示共有10位數(shù),其中整數(shù)5位,小數(shù)5位。,,,5.1.1 系統(tǒng)數(shù)據(jù)類型 1、精確數(shù)字類型,6,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ù)部分存儲(chǔ)在兩個(gè)4字節(jié)的整型值中,存儲(chǔ)范圍為(-92233728)到(92233727),精確到貨幣單位的千分之十。,(2)Smallmoney:與money數(shù)據(jù)類型類似,但范圍比money數(shù)據(jù)類型小,其存儲(chǔ)范圍為-2147483468到2147483467之間,精確到貨幣單位的千分之十。,
7、當(dāng)為money或smallmoney的表輸入數(shù)據(jù)時(shí),必須在有效位置前面加一個(gè)貨幣單位符號(hào)。,,,5.1.1 系統(tǒng)數(shù)據(jù)類型 1、精確數(shù)字類型,7,5.1.1 系統(tǒng)數(shù)據(jù)類型,,2、近似數(shù)字類型,近似數(shù)字類型包括Real和Float兩大類。,(1)Real:可以存儲(chǔ)正的或者負(fù)的十進(jìn)制數(shù)值,最大可以有7位精確位數(shù)。它的存儲(chǔ)范圍從-3.40E-38~3.40E+38。每個(gè)Real 類型的數(shù)據(jù)占用4個(gè)字節(jié)的存儲(chǔ)空間。,(2)Float:可以精確到第15位小數(shù),其范圍從-1.79E-308~1.79E+308。如果不指定Float 數(shù)據(jù)類型的長(zhǎng)度,它占用8個(gè)字節(jié)的存儲(chǔ)空間。Float數(shù)據(jù)類型也可以寫為Flo
8、at(n)的形式,n指定Float數(shù)據(jù)的精度,n為1~15之間的整數(shù)值。當(dāng)n取1~7時(shí),實(shí)際上是定義了一個(gè)Real 類型的數(shù)據(jù),系統(tǒng)用4個(gè)字節(jié)存儲(chǔ)它;當(dāng)n取8~15時(shí),系統(tǒng)認(rèn)為其是Float類型,用8個(gè)字節(jié)存儲(chǔ)它。,,,,5.1.1 系統(tǒng)數(shù)據(jù)類型 2、近似數(shù)字類型,8,5.1.1 系統(tǒng)數(shù)據(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é)用于存
9、儲(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:mm A.M./P.M,當(dāng)插入數(shù)據(jù)或者在其他地方使用Datetime類型時(shí),需要用單引號(hào)把它括起來。默認(rèn)的時(shí)間日期是January 1,1900 12:00 A.M??梢越邮艿妮斎敫袷饺缦拢篔an 4 1999、JAN 4 1999、January 4 1999、Jan 1999 4、1999 4 Jan和1999 Jan 4。,(2)Smalldateti
10、me:與Datetime數(shù)據(jù)類型類似,但其日期時(shí)間范圍較小,它存儲(chǔ)從1900年1月1日~2079年6月6日內(nèi)的日期。SmallDatetime數(shù)據(jù)類型使用4個(gè)字節(jié)存儲(chǔ)數(shù)據(jù),SQL Server 2000用2個(gè)字節(jié)存儲(chǔ)日期1900年1月1日以后的天數(shù),時(shí)間以子夜后的分鐘數(shù)形式存儲(chǔ)在另外兩個(gè)字節(jié)中,SmallDatetime的精度為1分鐘。,,,,5.1.1 系統(tǒng)數(shù)據(jù)類型 3. 日期和時(shí)間數(shù)據(jù)類型,9,5.1.1 系統(tǒng)數(shù)據(jù)類型,,4. 字符數(shù)據(jù)類型,字符數(shù)據(jù)類型也是SQL Server中最常用的數(shù)據(jù)類型之一,它可以用來存儲(chǔ)各種字母、數(shù)字符號(hào)和特殊符號(hào)。在使用字符數(shù)據(jù)類型時(shí),需要在其前后加上英文單引
11、號(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的取值為1~8000。若不指定n值,系統(tǒng)默認(rèn)n的值為1。若輸入數(shù)據(jù)的字符串長(zhǎng)度小于n,則系統(tǒng)自動(dòng)在其后添加空格來填滿設(shè)定好的空間;若輸入的數(shù)據(jù)過長(zhǎng),將會(huì)截掉其超出部分。如果定義了一個(gè)Char數(shù)據(jù)類型,而且允許該列為空,則該字段被當(dāng)作Varchar來處理。,(2)Varchar:其在SQL Server 2005中新定義形式為Varchar(n|max),較之以前的版本多了一個(gè)max選擇,max表示最大存儲(chǔ)大小是231-1個(gè)字節(jié),,。用
12、Char數(shù)據(jù)類型可以存儲(chǔ)長(zhǎng)達(dá)255個(gè)字符的可變長(zhǎng)度字符串,和Char類型不同的是Varchar類型的存儲(chǔ)空間是根據(jù)存儲(chǔ)在表的每一列值的字符數(shù)變化的。例如定義Varchar(20),則它對(duì)應(yīng)的字段最多可以存儲(chǔ)20個(gè)字符,但是在每一列的長(zhǎng)度達(dá)到20字節(jié)之前系統(tǒng)不會(huì)在其后添加空格來填滿設(shè)定好的空間,因此使用Varchar類型可以節(jié)省空間。,(3)Text:用于存儲(chǔ)文本數(shù)據(jù),其容量理論上為1~231-1(2,147,483,647)個(gè)字節(jié),但實(shí)際應(yīng)用時(shí)要根據(jù)硬盤的存儲(chǔ)空間而定。,,,,5.1.1 系統(tǒng)數(shù)據(jù)類型 4. 字符數(shù)據(jù)類型,10,5.1.1 系統(tǒng)數(shù)據(jù)類型,,5. Unicode 字符數(shù)據(jù)類型,U
13、nicode 字符數(shù)據(jù)類型包括Nchar、Nvarchar、Ntext三種:,(1)Nchar:其定義形式為Nchar(n)。它與Char數(shù)據(jù)類型類似,不同的是Nchar數(shù)據(jù)類型n的取值為1~4000。Nchar數(shù)據(jù)類型采用Unicode標(biāo)準(zhǔn)字符集,Unicode標(biāo)準(zhǔn)用兩個(gè)字節(jié)為一個(gè)存儲(chǔ)單位,其一個(gè)存儲(chǔ)單位的容納量就大大增加了,可以將全世界的語言文字都囊括在內(nèi),在一個(gè)數(shù)據(jù)列中就可以同時(shí)出現(xiàn)中文、英文、法文等,而不會(huì)出現(xiàn)編碼沖突。,(2)Nvarchar:其在SQL Server 2005中新的定義形式為Nvarchar,(n | max) 。它與Varchchar數(shù)據(jù)類型相似,Nvarchar
14、數(shù)據(jù)類型也采用Unicode標(biāo)準(zhǔn)字符集,n的取值范圍為1~4000。,(3)Ntext:與Text數(shù)據(jù)類型類似,存儲(chǔ)在其中的數(shù)據(jù)通常是直接能輸出到顯示設(shè)備上的字符,顯示設(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ù)類型 5. Unicode 字符數(shù)據(jù)類型,11,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+
15、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 Server 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ǔ)照片、目錄圖片或者圖畫,其理論容量為231-1(2,147,483,647)個(gè)字節(jié)。其存儲(chǔ)數(shù)據(jù)的模式與Text數(shù)據(jù)類型相同,通常存儲(chǔ)在Image字段中的數(shù)據(jù)不能
16、直接用Insert語句直接輸入。,,,,5.1.1 系統(tǒng)數(shù)據(jù)類型 6. 二進(jìn)制字符數(shù)據(jù)類型,12,5.1.1 系統(tǒng)數(shù)據(jù)類型,,7. 其它數(shù)據(jù)類型,(1)Sql_variant:用于存儲(chǔ)除文本、圖形數(shù)據(jù)和Timestamp類型數(shù)據(jù)外的其他任何合法的SQL Server數(shù)據(jù)。此數(shù)據(jù)類型極大地方便了SQL Server的開發(fā)工作。,(2)Table:用于存儲(chǔ)對(duì)表或者視圖處理后的結(jié)果集。這種新的數(shù)據(jù)類型使得變量可以存儲(chǔ)一個(gè)表,從而使函數(shù)或過程返回查詢結(jié)果更加方便、快捷。,(3)Timestamp:亦稱時(shí)間戳數(shù)據(jù)類型,它提供數(shù)據(jù)庫范圍內(nèi)的惟一值,反應(yīng)數(shù)據(jù)庫中數(shù)據(jù)修改的相對(duì)順序,相當(dāng)于一個(gè)單調(diào)上升的計(jì)數(shù)器
17、。當(dāng)它所定義的列在更新或者插入數(shù)據(jù)行時(shí),此列的值會(huì)被自動(dòng)更新,一個(gè)計(jì)數(shù)值將自動(dòng)地添加到此Timestamp數(shù)據(jù)列中。如果建立一個(gè)名為“Timestamp”的列,則該列的類型將自動(dòng)設(shè)為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)寫為GUID)。此數(shù)字可以通過調(diào)用SQL Server的 newid()函數(shù)獲得,在全球各地的計(jì)算機(jī)經(jīng)由此函數(shù)產(chǎn)生的數(shù)字不會(huì)相同。,(5)XML :可以存儲(chǔ)XML數(shù)據(jù)
18、的數(shù)據(jù)類型。利用它可以將XML實(shí)例存儲(chǔ)在字段中或者XML類型的變量中。注意存儲(chǔ)在XML中的數(shù)據(jù)不能超過2GB。,(6)Cursor:這是變量或存儲(chǔ)過程OUTPUT 參數(shù)的一種數(shù)據(jù)類型,這些參數(shù)包含對(duì)游標(biāo)的引用。使用 Cursor 數(shù)據(jù)類型創(chuàng)建的變量可以為空。注意:對(duì)于 CREATE TABLE 語句中的列,不能使用Cursor 數(shù)據(jù)類型。,,,,5.1.1 系統(tǒng)數(shù)據(jù)類型 7. 其它數(shù)據(jù)類型,13,5.1.2 自定義數(shù)據(jù)類型,,SQL Server允許用戶自定義數(shù)據(jù)類型,用戶自定義數(shù)據(jù)類型是建立在SQL Server系統(tǒng)數(shù)據(jù)類型基礎(chǔ)上的,當(dāng)用戶定義一種數(shù)據(jù)類型時(shí),需要指定該類型的名稱、建立在其上
19、的系統(tǒng)數(shù)據(jù)類型以及是否允許為空等。,SQL Server為用戶提供了兩種方法來創(chuàng)建自定義數(shù)據(jù)類型:,(1),使用SQL Server管理平臺(tái)創(chuàng)建用戶自定義數(shù)據(jù)類型;,(2)利用系統(tǒng)存儲(chǔ)過程創(chuàng)建用戶自定義數(shù)據(jù)類型,,,,,5.1.2 自定義數(shù)據(jù)類型 SQL Server允許用戶自定,14,5.1.2 自定義數(shù)據(jù)類型,,(1),使用SQL Server管理平臺(tái)創(chuàng)建用戶自定義數(shù)據(jù)類型,在SQL Server管理平臺(tái)中,打開指定的服務(wù)器和數(shù)據(jù)庫項(xiàng),如圖5-1所示,選擇并展開“程序→類型”項(xiàng),接下來用右鍵單擊“用戶自定義數(shù)據(jù)類型”選項(xiàng),從彈出的快捷菜單中選擇“新建”命令,出現(xiàn)用戶定義的數(shù)據(jù)類型屬性對(duì)話框
20、,如圖5-2所示。,,圖5-1 打開用戶定義的數(shù)據(jù)類型窗口,,圖5-2 用戶定義的數(shù)據(jù)類型屬性對(duì)話框,,,,5.1.2 自定義數(shù)據(jù)類型 (1)使用SQL Server管,15,5.1.2 自定義數(shù)據(jù)類型,,(2),利用系統(tǒng)存儲(chǔ)過程創(chuàng)建用戶自定義數(shù)據(jù)類型,,,系統(tǒng)存儲(chǔ)過程sp_addtype為用戶提供了用T_SQL語句創(chuàng)建自定義數(shù)據(jù)類型的途徑,其語法形式如下:,sp_addtype [@typename=] type,,[@phystype=] system_data_type,[, [@nulltype=] ‘null_type’],[, [@owner=] ‘owner_name’],,
21、,5.1.2 自定義數(shù)據(jù)類型 (2)利用系統(tǒng)存儲(chǔ)過程創(chuàng)建用戶自,16,5.1.2 自定義數(shù)據(jù)類型,,(2),利用系統(tǒng)存儲(chǔ)過程創(chuàng)建用戶自定義數(shù)據(jù)類型,,,例5-1,,自定義一個(gè)地址(address)數(shù)據(jù)類型。,程序清單如下:,exec sp_addtype address, ‘varchar(80)’, ‘not null’,,,5.1.2 自定義數(shù)據(jù)類型 (2)利用系統(tǒng)存儲(chǔ)過程創(chuàng)建用戶自,17,5.2 表操作,,表是包含數(shù)據(jù)庫中所有數(shù)據(jù)的數(shù)據(jù)庫對(duì)象。表定義為列的集合,數(shù)據(jù)在表中是按行和列的格式組織排列的,每行代表惟一的一條記錄,而每列代表記錄中的一個(gè)域。,5.2.1 創(chuàng)建表,,5.2.2
22、創(chuàng)建約束,5.2.3 修改表,5.2.4 查看表,5.2.5 刪除表,,,5.2 表操作 表是包含數(shù)據(jù)庫中所有數(shù)據(jù)的數(shù)據(jù)庫對(duì)象。表定義,18,5.2.1 創(chuàng)建表,利用SQL Server管理平臺(tái)創(chuàng)建表,在SQL Server管理平臺(tái)中,展開指定的服務(wù)器和數(shù)據(jù)庫,打開想要?jiǎng)?chuàng)建新表的數(shù)據(jù)庫,右擊表對(duì)象,并從彈出的快捷菜單中選擇“新建表”選項(xiàng),如圖5-4所示。在圖5-4的對(duì)話框中,可以對(duì)表的結(jié)構(gòu)進(jìn)行更改,設(shè)置主鍵及字段屬性,使用SQL Server管理平臺(tái)可以非常直觀地修改數(shù)據(jù)庫結(jié)構(gòu)和添加數(shù)據(jù)。在表中任意行上右擊,則彈出一個(gè)快捷菜單,如圖5-6所示。,圖5-4 新建表對(duì)話框,,圖5-6
23、設(shè)置字段屬性對(duì)話框,,,,5.2.1 創(chuàng)建表利用SQL Server管理平臺(tái)創(chuàng)建表圖,19,5.2.1 創(chuàng)建表,2. 利用create命令創(chuàng)建表,使用create命令創(chuàng)建表非常靈活,它允許對(duì)表設(shè)置幾種不同的選項(xiàng),包括表名、存放位置和列的屬性等。,其完整語法形式如下:,CREATE TABLE [database_name,.,[owner],.,|owner,.,]table_name ?。▄|column_name AS computed_column_expression|,}[,…n]) [ON{ filegroup|DEFAULT}],[TEXTIMAGE_
24、ON { filegroup|DEFAULT}] ::={column_name data_type} ? [COLLATE ] [[DEFAULT constant_expression] |[IDENTITY[(seed,,,increment )[NOT FOR REPLICATION]]]] ? [ROWGUIDCOL] [][...n],,,5.2.1 創(chuàng)建表2. 利用create命令創(chuàng)建表,20,5.2.1 創(chuàng)建表,2. 利用create命令創(chuàng)建表,其中,各參數(shù)的說明如下,:,database_name:用
25、于指定所創(chuàng)建表的數(shù)據(jù)庫名稱。,owner:用于指定新建表的所有者的用戶名。,table_name:用于指定新建表的名稱。,column_name:用于指定新建表的列名。,computed_column_expression:用于指定計(jì)算列的列值表達(dá)式。,ON {filegroup | DEFAULT}:用于指定存儲(chǔ)表的文件組名。,TEXTIMAGE_ON:用于指定 text、ntext 和 image 列的數(shù)據(jù)存儲(chǔ)的文件組。,data_type:用于指定列的數(shù)據(jù)類型。,DEFAULT:用于指定列的默認(rèn)值。,constant_expression:用于指定列的默認(rèn)值的常量表達(dá)式、可以為一個(gè)常量或
26、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ā)生作用,即不生成列值,使得復(fù)制的數(shù)據(jù)行保持原來的列值。,ROWGUIDCOL:用于將列指定為全局惟一標(biāo)識(shí)行號(hào)列(row global unique identifier column)。,COLLATE:用于指定表的校驗(yàn)方式。,column_constraint和table_constraint:用于指定列約束和表約束。,,,5.2.1 創(chuàng)
27、建表2. 利用create命令創(chuàng)建表,21,5.2.1 創(chuàng)建表,2. 利用create命令創(chuàng)建表,例5-3,,創(chuàng)建了一個(gè)工人信息表,它包括工人編號(hào)、姓名、性別、出生日期、職位、工資和備注信息。,SQL語句的程序清單如下:,CREATE TABLE worker,(number char(8) not null,,name char(8) NOT NULL,,sex char(2) NULL,,birthday datetime null,,job_title varchar(10) null,,salary money null,,memo ntext null,
28、),,,5.2.1 創(chuàng)建表2. 利用create命令創(chuàng)建表,22,5.2.2 創(chuàng)建約束,,約束是SQL Server提供的自動(dòng)保持?jǐn)?shù)據(jù)庫完整性的一種方法,它通過限制字段中數(shù)據(jù)、記錄中數(shù)據(jù)和表之間的數(shù)據(jù)來保證數(shù)據(jù)的完整性。在SQL SERVER中,對(duì)于基本表的約束分為列約束和表約束。,列約束是對(duì)某一個(gè)特定列的約束,包含在列定義中,直接跟在該列的其他定義之后,用空格分隔,不必指定列名;表約束與列定義相互獨(dú)立,不包括在列定義中,通常用于對(duì)多個(gè)列一起進(jìn)行約束,與列定義用’,’分隔,定義表約束時(shí)必須指出要約束的那些列的名稱。,完整性約束的基本語法格式為:,[CONSTRAINT constraint_
29、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.2 創(chuàng)建約束 約束是SQL Server提供的自動(dòng)保,23,5.2.2 創(chuàng)建約束,,主鍵(PRIMARY KEY)約束,,PRIMARY KEY約束用于定義基本表的主鍵,它是惟一確定表中每
30、一條記錄的標(biāo)識(shí)符,其值不能為NULL,也不能重復(fù),以此來保證實(shí)體的完整性。PRIMARY KEY與UNIQUE約束類似,通過建立唯一索引來保證基本表在主鍵列取值的唯一性,但它們之間存在著很大的區(qū)別:,①在一個(gè)基本表中只能定義一個(gè)PRIMARY KEY約束,但可定義多個(gè)UNIQUE約束;,②對(duì)于指定為PRIMARY KEY的一個(gè)列或多個(gè)列的組合,其中任何一個(gè)列都不能出現(xiàn)空值,而對(duì)于UNIQUE所約束的唯一鍵,則允許為空。,注意:不能為同一個(gè)列或一組列既定義UNIQUE約束,又定義PRIMARY KEY約束。,PRIMARY KEY既可用于列約束,也可用于表約束。,,,5.2.2 創(chuàng)建約束 主鍵(
31、PRIMARY KEY)約束,24,5.2.2 創(chuàng)建約束,,主鍵(PRIMARY KEY)約束,,主鍵的創(chuàng)建操作方法有兩種:SQL Server管理平臺(tái)操作法和Transact-SQL語句操作法。,(1) SQL Server管理平臺(tái)操作法,如圖5-7所示。,圖5-7 選擇多個(gè)字段共同做為主鍵對(duì)話框,,,,5.2.2 創(chuàng)建約束 主鍵(PRIMARY KEY)約束 圖,25,5.2.2 創(chuàng)建約束,,主鍵(PRIMARY KEY)約束,,,(2)使用Transact-SQL語句操作法設(shè)置主鍵約束,其語法形式如下:,CONSTRAINT constraint_name,PRIMARY KEY
32、 [CLUSTERED|NONCLUSTERED],(column_name),,PRIMARY KEY用于定義表約束時(shí),即將某些列的組合定義為主鍵,其語法格式如下:,CONSTRAINT constraint_name,PRIMARY KEY [CLUSTERED|NONCLUSTERED],(column_name[,…n]),,,5.2.2 創(chuàng)建約束 主鍵(PRIMARY KEY)約束,26,5.2.2 創(chuàng)建約束,,主鍵(PRIMARY KEY)約束,,,例5-5 建立一個(gè)SC表,定義SNO,CNO共同組成SC的主鍵,程序清單如下:,CREATE TABLE SC,(SNO CHA
33、R(5) NOT NULL,,CNO CHAR(5) NOT NULL,,SCORE NUMERIC(3),,CONSTRAINT SC_PRIM PRIMARY KEY(SNO,CNO)),,,5.2.2 創(chuàng)建約束 主鍵(PRIMARY KEY)約束,27,5.2.2 創(chuàng)建約束,,2. 惟一性約束,,惟一性約束用于指定一個(gè)或者多個(gè)列的組合值具有惟一性,以防止在列中輸入重復(fù)的值。定義了UNIQUE約束的那些列稱為唯一鍵,系統(tǒng)自動(dòng)為唯一鍵建立唯一索引,從而保證了唯一鍵的唯一性。,,當(dāng)使用惟一性約束時(shí),需要考慮以下幾個(gè)因素:,使用惟一性約束的字段允許為空值;,一個(gè)表中可以允許有多個(gè)惟一性約束;,可
34、以把惟一性約束定義在多個(gè)字段上;,惟一性約束用于強(qiáng)制在指定字段上創(chuàng)建一個(gè)惟一性索引;,默認(rèn)情況下,創(chuàng)建的索引類型為非聚集索引。,,,,5.2.2 創(chuàng)建約束 2. 惟一性約束,28,5.2.2 創(chuàng)建約束,,2. 惟一性約束,,創(chuàng)建惟一性約束的方法有兩種:通過SQL Server管理平臺(tái)可以完成創(chuàng)建和修改惟一性約束的操作;使用Transact-SQL語句完成惟一性約束的操作。,(1)通過SQL Server管理平臺(tái)可以完成創(chuàng)建和修改惟一性約束的操作,如圖5-8所示。,圖5-8 創(chuàng)建惟一性約束對(duì)話框,,,,5.2.2 創(chuàng)建約束 2. 惟一性約束 圖5-8 創(chuàng)建惟一,29,5.2.2 創(chuàng)建約束,,
35、2. 惟一性約束,,(2)使用Transact-SQL語句完成惟一性約束的操作,其語法形式如下:,CONSTRAINT constraint_name,UNIQUE [CLUSTERED|NONCLUSTERED],(column_name[,…n]),例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 uni
36、que(name),),,,5.2.2 創(chuàng)建約束 2. 惟一性約束,30,5.2.2 創(chuàng)建約束,,3. 檢查約束,,,檢查約束對(duì)輸入列或者整個(gè)表中的值設(shè)置檢查條件,以限制輸入值,保證數(shù)據(jù)庫數(shù)據(jù)的完整性。,,當(dāng)使用檢查約束時(shí),應(yīng)該考慮和注意以下幾點(diǎn):,一個(gè)列級(jí)檢查約束只能與限制的字段有關(guān);一個(gè)表級(jí)檢查約束只能與限制的表中字段有關(guān);,一個(gè)表中可以定義多個(gè)檢查約束;,每個(gè)CREATE TABLE語句中每個(gè)字段只能定義一個(gè)檢查約束;,在多個(gè)字段上定義檢查約束,則必須將檢查約束定義為表級(jí)約束;,當(dāng)執(zhí)行INSERT語句或者UPDATE語句時(shí),檢查約束將驗(yàn)證數(shù)據(jù);,檢查約束中不能包含子查詢。,,,5.2.2
37、 創(chuàng)建約束 3. 檢查約束,31,5.2.2 創(chuàng)建約束,,3. 檢查約束,,創(chuàng)建檢查約束常用的操作方法有如下兩種 :使用SQL Server管理平臺(tái)創(chuàng)建檢查約束;用Transact-SQL語句創(chuàng)建檢查約束。,(1)使用SQL Server管理平臺(tái)創(chuàng)建檢查約束,如圖5-9所示。,圖5-9 創(chuàng)建檢查約束對(duì)話框,,,,5.2.2 創(chuàng)建約束 3. 檢查約束 圖5-9 創(chuàng)建檢查,32,5.2.2 創(chuàng)建約束,,3. 檢查約束,,(2)用Transact-SQL語句創(chuàng)建檢查約束。,用Transact-SQL語句創(chuàng)建檢查約束。其語法形式如下:,CONSTRAINT constraint_name,CH
38、ECK [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.2.2 創(chuàng)建約束 3. 檢查約束,33,5.2.2 創(chuàng)建約束,,4. 默認(rèn)(DEFAULT)約束,,,默認(rèn)約束指定在插入操作中如果沒有提供輸入值時(shí),則系統(tǒng)自動(dòng)指定值。默認(rèn)約
39、束可以包括常量、函數(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)約束,34,5.2.2 創(chuàng)建約束,,4. 默認(rèn)(DEFAULT)約束,,創(chuàng)建默認(rèn)約束常用的操作方法有如下兩種:使用SQL Server管理平臺(tái)創(chuàng)建
40、默認(rèn)約束;創(chuàng)建默認(rèn)約束的Transact-SQL語句操作法。,(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)約束 圖,35,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)約束。,程序清單如下:,co
41、nstraint con_dept default ‘計(jì)算機(jī)’ for dept,,,5.2.2 創(chuàng)建約束 4. 默認(rèn)(DEFAULT)約束,36,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ì)外部鍵約束所參考表的S
42、ELECT權(quán)限或者REFERENCES權(quán)限;,參考同一表中的字段時(shí),必須只使用REFERENCES子句,不能使用外部鍵子句;,一個(gè)表中最多可以有31個(gè)外部鍵約束;,在臨時(shí)表中,不能使用外部鍵約束;,主鍵和外部鍵的數(shù)據(jù)類型必須嚴(yán)格匹配,,,5.2.2 創(chuàng)建約束 5. 外部鍵約束,37,5.2.2 創(chuàng)建約束,,5. 外部鍵約束,,創(chuàng)建外部鍵約束常用的操作方法有如下兩種:在SQL Server管理平臺(tái)中添加外部鍵約束;使用Transact-SQL語句設(shè)置外部鍵約束。,(1)在SQL Server管理平臺(tái)中添加外部鍵約束,在SQL Server管理平臺(tái)中添加外部鍵約束。如圖5-11,5-12所示。,圖
43、5-11 選擇創(chuàng)建外鍵約束的字段,,圖5-12 創(chuàng)建外鍵約束對(duì)話框,,,,5.2.2 創(chuàng)建約束 5. 外部鍵約束 圖5-11 選擇,38,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 建立一個(gè)SC表,定義SNO,CNO為SC的外部鍵。,程序清單如下:,CREATE TABLE SC,(SNO CHAR(
44、5) NOT NULL,CONSTRAINT S_FORE FOREIGN KEY REFERENCES S(SNO),,CNO CHAR(5) 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)建約束 5. 外部鍵約束,39,5.2.2 創(chuàng)建約束,,6. 空值(NULL)約束,,空值(NULL)約束用來控制是否允許該字段的值為NULL。NULL值不是0也不是空白,更不是填入字符串的“NUL
45、L”字符串,而是表示“不知道”、“ 不確定”或“沒有數(shù)據(jù)”的意思。,當(dāng)某一字段的值一定要輸入才有意義的時(shí)候,則可以設(shè)置為NOT NULL。如主鍵列就不允許出現(xiàn)空值,否則就失去了唯一標(biāo)識(shí)一條記錄的作用。空值(NULL)約束只能用于定義列約束。,創(chuàng)建空值(NULL)約束常用的操作方法有如下兩種:,(1)在SQL Server管理平臺(tái)中添加空值(NULL)約束;,(2)使用Transact-SQL語句設(shè)置空值(NULL)約束。,,,5.2.2 創(chuàng)建約束 6. 空值(NULL)約束,40,5.2.2 創(chuàng)建約束,,6. 空值(NULL)約束,,(1)在SQL Server管理平臺(tái)中添加空值(NULL)約
46、束。如圖5-14所示。,圖5-14設(shè)置空值(NULL)約束對(duì)話框,,,,5.2.2 創(chuàng)建約束 6. 空值(NULL)約束 圖5,41,5.2.2 創(chuàng)建約束,,6. 空值(NULL)約束,,(2)使用Transact-SQL語句設(shè)置空值(NULL)約束, 其語法形式如下:,[CONSTRAINT ][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 CHA
47、R(2) DEFAULT ’男’ ,,DEPT VARCHAR(20)),,,5.2.2 創(chuàng)建約束 6. 空值(NULL)約束,42,5.2.3 修改表,,當(dāng)數(shù)據(jù)庫中的表創(chuàng)建完成后,可以根據(jù)需要改變表中原先定義的許多選項(xiàng),以更改表的結(jié)構(gòu)。用戶可以增加、刪除和修改列,增加、刪除和修改約束,更改表名以及改變表的所有者等。,1、修改列屬性,修改列屬性包括以下一些內(nèi)容:,(1)修改列的數(shù)據(jù)類型;,(2)修改列的數(shù)據(jù)長(zhǎng)度;,(3)修改列的精度;,(4)修改列的小數(shù)位數(shù);,(5)修改列的為空性。,,,5.2.3 修改表 當(dāng)數(shù)據(jù)庫中的表創(chuàng)建完成后,可以根據(jù)需要改,43,5.2.3 修改表,,2、添加和刪除列
48、,在SQL Server 2005中,如果列允許空值或?qū)α袆?chuàng)建 DEFAULT 約束,則可以將列添加到現(xiàn)有表中。將新列添加到表時(shí),SQL Server 2005數(shù)據(jù)庫引擎在該列為表中的每個(gè)現(xiàn)有數(shù)據(jù)行插入一個(gè)值。因此,在向表中添加列時(shí)向列添加DEFAULT定義會(huì)很有用。如果新列沒有 DEFAULT定義,則必須指定該列允許空值。數(shù)據(jù)庫引擎將空值插入該列,如果新列不允許空值,則返回錯(cuò)誤。,反之,可以刪除現(xiàn)有表中的列,但具有下列特征的列不能被刪除:,(1)用于索引;,(2)用于CHECK、FOREIGN KEY、UNIQUE 或PRIMARY KEY約束;,(3)與DEFAULT 定義關(guān)聯(lián)或綁定到某一
49、默認(rèn)對(duì)象;,(4)綁定到規(guī)則;,(5)已注冊(cè)支持全文;,(6)用作表的全文鍵。,,,5.2.3 修改表 2、添加和刪除列,44,5.2.3 修改表,,3、增加、修改和刪除約束,,,,(1)增加、修改和刪除PRIMARY KEY 約束。,(2)增加、修改和刪除UNIQUE約束。,(3)增加、修改和刪除CHECK約束。,(4)增加、修改和刪除DEFAULT約束。,(5)增加、修改和刪除FOREIGN KEY約束。,(6)增加和修改標(biāo)識(shí)符列。只能為每個(gè)表創(chuàng)建一個(gè)標(biāo)識(shí)符列和一個(gè) GUID 列。,,,5.2.3 修改表 3、增加、修改和刪除約束,45,5.2.3 修改表,,,例 5-14,,創(chuàng)建一個(gè)雇員
50、信息表,然后在表中增加一個(gè)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 salary int null,,drop column age,,alter column memo varc
51、har(200) null,,,5.2.3 修改表 例 5-14 創(chuàng)建一個(gè)雇員信息表,然后,46,5.2.3 修改表,,例 5-15 在S表中增加一個(gè)班號(hào)列和住址列。,SQL語句的程序清單如下:,ALTER TABLE S,ADD,CLASS_NO CHAR(6),,ADDRESS CHAR(40),注意:使用此方式增加的新列自動(dòng)填充NULL值,所以不能為增加的新列指定NOT NULL約束。,,例5-16 在SC表中增加完整性約束定義,使SCORE在0-100之間。,SQL語句的程序清單如下:,ALTER TABLE SC,ADD,CONSTRAINT SCORE_CHK CHECK(S
52、CORE BETWEEN 0 AND 100),,,5.2.3 修改表 例 5-15 在S表中增加一個(gè)班號(hào)列和,47,5.2.4 查看表,,,當(dāng)在數(shù)據(jù)庫中創(chuàng)建了表后,有時(shí)需要查看表的有關(guān)信息。比如表的屬性、定義、數(shù)據(jù)、字段屬性和索引等。尤其重要的是查看表內(nèi)存放的數(shù)據(jù),另外有時(shí)需要查看表與其他數(shù)據(jù)庫對(duì)象之間的依賴關(guān)系。,1. 查看表的定義,,,如圖5-15,5-16所示。,圖5-15 選擇表格屬性對(duì)話框,,圖5-16 表格屬性對(duì)話框,,,,5.2.4 查看表 當(dāng)在數(shù)據(jù)庫中創(chuàng)建了表后,有時(shí)需要查看,48,5.2.4 查看表,,,2. 查看表中存儲(chǔ)的數(shù)據(jù),如圖5-17,5-18所示。,圖5
53、-17 選擇打開表對(duì)話框,圖5-18 顯示表格數(shù)據(jù)對(duì)話框,,,,5.2.4 查看表 2. 查看表中存儲(chǔ)的數(shù)據(jù),如圖5-1,49,5.2.4 查看表,,,3. 查看表與其他數(shù)據(jù)庫對(duì)象的依賴關(guān)系,如圖5-19所示。,圖5-19 顯示相關(guān)性對(duì)話框,,,,5.2.4 查看表 3. 查看表與其他數(shù)據(jù)庫對(duì)象的依賴關(guān),50,5.2.4 查看表,,4. 利用系統(tǒng)存儲(chǔ)過程查看表的信息,系統(tǒng)存儲(chǔ)過程Sp_help可以提供指定數(shù)據(jù)庫對(duì)象的信息,也可以提供系統(tǒng)或者用戶定義的數(shù)據(jù)類型的信息,其語法形式如下:,sp_help [[@objname=]name],例5-17,,(1)顯示當(dāng)前數(shù)據(jù)庫中所有對(duì)象的
54、信息;(2)顯示表Person.Contact 的信息。在SQL Server管理平臺(tái)的查詢窗口中,它們對(duì)應(yīng)的語句和運(yùn)行結(jié)果如圖5-20和圖5-21所示,圖5-20 所有數(shù)據(jù)庫對(duì)象顯示窗口,,圖5-21 當(dāng)前數(shù)據(jù)庫對(duì)象顯示窗口,,,,5.2.4 查看表 4. 利用系統(tǒng)存儲(chǔ)過程查看表的信息圖5-,51,5.2.5 刪除表,,1. 利用管理平臺(tái)刪除表,在SQL Server管理平臺(tái)中,展開指定的數(shù)據(jù)庫和表,右擊要?jiǎng)h除的表,從彈出的快捷菜單中選擇“刪除”選項(xiàng),則出現(xiàn)除去對(duì)象對(duì)話框,如圖5-25所示。,圖5-25 刪除表對(duì)話框,,,,5.2.5 刪除表 1. 利用管理平臺(tái)刪除表圖5-25 刪,52
55、,5.2.5 刪除表,,2. 利用DROP TABLE語句刪除表,DROP TABLE語句可以刪除一個(gè)表和表中的數(shù)據(jù)及其與表有關(guān)的所有索引、觸發(fā)器、約束、許可對(duì)象。,DROP TABLE語句的語法形式如下:,DROP TABLE table_name,要?jiǎng)h除的表如果不在當(dāng)前數(shù)據(jù)庫中,則應(yīng)在table_name中指明其所屬的數(shù)據(jù)庫和用戶名。在刪除一個(gè)表之前要先刪除與此表相關(guān)聯(lián)的表中的外部關(guān)鍵字約束。當(dāng)刪除表后,綁定的規(guī)則或者默認(rèn)值會(huì)自動(dòng)松綁。,例5-18,,刪除company數(shù)據(jù)庫中的表employee。,程序如下:,drop table company.dbo.employee,,,5.2
56、.5 刪除表 2. 利用DROP TABLE語句刪除表,53,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ù),而那些不需要的或者無用的數(shù)據(jù)則不在視圖中顯示。,(2)視圖大大地簡(jiǎn)化了用戶對(duì)數(shù)據(jù)的操作。,(3)視圖可以讓不同的用戶以不同的方式看到不同或者相同的數(shù)據(jù)集。,(4)在某些情況下,由于表中數(shù)據(jù)量太大,因此在表的設(shè)計(jì)時(shí)常將表進(jìn)行水平或者垂直分割,但表的結(jié)構(gòu)的變化對(duì)應(yīng)用程序產(chǎn)生不良的影響。而使用視圖可以重新組織數(shù)據(jù),從而使外模式
57、保持不變,原有的應(yīng)用程序仍可以通過視圖來重載數(shù)據(jù)。,(5)視圖提供了一個(gè)簡(jiǎn)單而有效的安全機(jī)制。,,,5.3 視圖概述 視圖是個(gè)虛表,是從一個(gè)或者多個(gè)表,54,5.3.1創(chuàng)建視圖,,,SQL Server 2005提供了如下幾種創(chuàng)建視圖的方法:,(1)用SQL SERVER管理平臺(tái)創(chuàng)建視圖;,(2)用Transact-SQL語句中的CREATE VIEW命令創(chuàng)建視圖;,(3)利用SQL SERVER管理平臺(tái)的視圖模板來創(chuàng)建視圖。,,創(chuàng)建視圖時(shí)應(yīng)該注意以下情況:,(1)只能在當(dāng)前數(shù)據(jù)庫中創(chuàng)建視圖,在視圖中最多只能引用1024列,視圖中記錄的數(shù)目限制只由其基表中的記錄數(shù)決定。,(2)如果視
58、圖引用的基表或者視圖被刪除,則該視圖不能再被使用,直到創(chuàng)建新的基表或者視圖。,(3)如果視圖中某一列是函數(shù)、數(shù)學(xué)表達(dá)式、常量或者來自多個(gè)表的列名相同,則必須為列定義名稱。,(4)不能在視圖上創(chuàng)建索引,不能在規(guī)則、默認(rèn)、觸發(fā)器的定義中引用視圖。,(5)當(dāng)通過視圖查詢數(shù)據(jù)時(shí),SQL Server要檢查以確保語句中涉及的所有數(shù)據(jù)庫對(duì)象存在,每個(gè)數(shù)據(jù)庫對(duì)象在語句的上下文中有效,而且數(shù)據(jù)修改語句不能違反數(shù)據(jù)完整性規(guī)則。,(6)視圖的名稱必須遵循標(biāo)識(shí)符的規(guī)則,且對(duì)每個(gè)用戶必須是惟一的。此外,該名稱不得與該用戶擁有的任何表的名稱相同。,,,5.3.1創(chuàng)建視圖 SQL Server 2005提,55,
59、5.3.1.1 利用SQL SERVER管理平臺(tái)創(chuàng)建視圖,,,利用SQL SERVER管理平臺(tái)創(chuàng)建視圖的具體操作步驟如下:,(1)在SQL SERVER管理平臺(tái)中,展開指定的服務(wù)器,打開要?jiǎng)?chuàng)建視圖的數(shù)據(jù)庫文件夾,選擇指定的數(shù)據(jù)庫,右擊該數(shù)據(jù)庫圖標(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 利用SQL SERVER管理平臺(tái)創(chuàng)建視圖,56,5.3.1.1 利用SQL SERVER管理平臺(tái)創(chuàng)建視圖,,(2)選擇
60、好創(chuàng)建視圖所需的表、視圖、函數(shù)后,通過單擊字段左邊的復(fù)選框選擇需要的字段,如圖5-28所示。單擊工具欄中的“保存”按鈕,或者單擊鼠標(biāo)右鍵,從快捷菜單中選擇保存選項(xiàng)保存視圖,輸入視圖名,即可完成視圖的創(chuàng)建。,圖5-28 選擇視圖字段對(duì)話框,,,,5.3.1.1 利用SQL SERVER管理平臺(tái)創(chuàng)建視圖 (,57,5.3.1.2利用Transact-SQL語句中的CREATE VIEW命令創(chuàng)建視圖,,,使用Transact-SQL語句中的CREATE VIEW創(chuàng)建視圖,其語法形式如下:,CREATE VIEW [schema_name.] view_name [(column [,...n])
61、] [WITH [,,,...n]]AS select_statement [WITH CHECK OPTION] ::= {ENCRYPTION|SCHEMABINDING|VIEW_METADATA},,,5.3.1.2利用Transact-SQL語句中的CREAT,58,5.3.1.2利用Transact-SQL語句中的CREATE VIEW命令創(chuàng)建視圖,,例5-19,,選擇表s和sc中的部分字段和記錄來創(chuàng)建一個(gè)視圖,并且限制表s中的記錄只能是計(jì)算機(jī)系的記錄集合,視圖定義為view_s。,程序清單如下:,create view view_s,as,select s.na
62、me,s.age,s.sex,,o,sc.score from s,sc,where s.sno=sc.sno and s.dept=’計(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語句中的CREAT,59,5.3.1.2利用Transact-SQL語句中的CREATE
63、VIEW命令創(chuàng)建視圖,,例5-21,,創(chuàng)建一個(gè)視圖,使之包含字符串的運(yùn)算。,程序清單如下:,CREATE VIEW v_shyjl(shyxh, shj, xm, jglb, phr, bzh) AS,Select,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列是從基表中取出兩列并和一空字符串相加而得
64、到的。這些都為基表中字段間的靈活運(yùn)算提供了極大方便,從而使我們可以隨心所欲地定制符合自己要求的數(shù)據(jù)。,,,5.3.1.2利用Transact-SQL語句中的CREAT,60,5.3.1.3 利用模板創(chuàng)建視圖,,使用視圖模板可以很容易地創(chuàng)建視圖,其具體操作步驟如下;,(,1)在SQL SERVER管理平臺(tái)中,選擇view菜單中的“模板資源管理器 ”選項(xiàng),如圖5-29所示。,(2)在出現(xiàn)的“模板資源管理器”選項(xiàng)中選擇“創(chuàng)建視圖”選項(xiàng),如圖5-30所示。,(3)按照提示輸入視圖名稱,select語句后,執(zhí)行此語句,即可創(chuàng)建視圖。,,圖5-29 選擇工具菜單中的向?qū)?,圖5-30 創(chuàng)建視圖模板
65、,,,,5.3.1.3 利用模板創(chuàng)建視圖 使用視圖模板,61,5.3.2 修改、刪除和重命名視圖,,,5.3.2.1 修改視圖,,5.3.2.2 重命名視圖,,5.3.2.3 查看視圖信息、刪除視圖,,,,,5.3.2 修改、刪除和重命名視圖,62,5.3.2.1 修改視圖,,,修改視圖的方法有以下兩種方法:,(1)在SQL SERVER管理平臺(tái)中,右擊要修改的視圖,從彈出的快捷菜單中選擇“設(shè)計(jì)視圖”選項(xiàng),出現(xiàn)視圖修改對(duì)話框。該對(duì)話框與創(chuàng)建視圖時(shí)的對(duì)話框相同,可以按照創(chuàng)建視圖的方法修改視圖。,(2)使用ALTER VIEW語句修改視圖,但首先必須擁有使用視圖的權(quán)限,然后才能使用
66、ALTER VIEW語句,該語句的語法形式如下:,ALTER VIEW view_name,[,(,column[,,,...n],),],[WITH ENCRYPTION],AS,select_statement [WITH CHECK OPTION,,,5.3.2.1 修改視圖 修改視圖的方法有以下兩種方法:,63,5.3.2.1 修改視圖,,例5-23,,修改了視圖V_employees,在該視圖中增加了新的字段employees.salary,并且定義一個(gè)新的字段名稱e_salary。,,程序清單如下:,alter view dbo.employees(number,name,age,e_salary),as,select number,name,age,salary,from employees,where name=’張三’,,,5.3.2.1 修改視圖 例5-23 修改了視圖V_empl,64,5.3.2.2 重命名視圖,,,重命名視圖方法有以下兩種:,1. 在SQL SERVER管理平臺(tái)中,選擇要修改名稱的視圖,并右擊該視圖,從彈出的快捷菜
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 專題黨課講稿:以高質(zhì)量黨建保障國有企業(yè)高質(zhì)量發(fā)展
- 廉政黨課講稿材料:堅(jiān)決打好反腐敗斗爭(zhēng)攻堅(jiān)戰(zhàn)持久戰(zhàn)總體戰(zhàn)涵養(yǎng)風(fēng)清氣正的政治生態(tài)
- 在新錄用選調(diào)生公務(wù)員座談會(huì)上和基層單位調(diào)研座談會(huì)上的發(fā)言材料
- 總工會(huì)關(guān)于2025年維護(hù)勞動(dòng)領(lǐng)域政治安全的工作匯報(bào)材料
- 基層黨建工作交流研討會(huì)上的講話發(fā)言材料
- 糧食和物資儲(chǔ)備學(xué)習(xí)教育工作部署會(huì)上的講話發(fā)言材料
- 市工業(yè)園區(qū)、市直機(jī)關(guān)單位、市紀(jì)委監(jiān)委2025年工作計(jì)劃
- 檢察院政治部關(guān)于2025年工作計(jì)劃
- 辦公室主任2025年現(xiàn)實(shí)表現(xiàn)材料
- 2025年~村農(nóng)村保潔員規(guī)范管理工作方案
- 在深入貫徹中央8項(xiàng)規(guī)定精神學(xué)習(xí)教育工作部署會(huì)議上的講話發(fā)言材料4篇
- 開展深入貫徹規(guī)定精神學(xué)習(xí)教育動(dòng)員部署會(huì)上的講話發(fā)言材料3篇
- 在司法黨組中心學(xué)習(xí)組學(xué)習(xí)會(huì)上的發(fā)言材料
- 國企黨委關(guān)于推動(dòng)基層黨建與生產(chǎn)經(jīng)營(yíng)深度融合工作情況的報(bào)告材料
- 副書記在2025年工作務(wù)虛會(huì)上的發(fā)言材料2篇
相關(guān)資源
更多