第3章表的創(chuàng)建_第1頁(yè)
第3章表的創(chuàng)建_第2頁(yè)
第3章表的創(chuàng)建_第3頁(yè)
第3章表的創(chuàng)建_第4頁(yè)
第3章表的創(chuàng)建_第5頁(yè)
已閱讀5頁(yè),還剩73頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、南昌工程學(xué)院計(jì)算機(jī)系第第3章章 表的創(chuàng)建表的創(chuàng)建報(bào)告報(bào)告 人:譚德坤人:譚德坤Email:3.1 主要內(nèi)容主要內(nèi)容表的概念SQL Server 2000數(shù)據(jù)類型創(chuàng)建表修改表刪除表查看和編輯表中的數(shù)據(jù)3.2 表的概念表的概念 數(shù)據(jù)庫(kù)中包含一個(gè)或多個(gè)表。數(shù)據(jù)庫(kù)中包含一個(gè)或多個(gè)表。表是數(shù)據(jù)的集合,是用來存儲(chǔ)數(shù)據(jù)和操作數(shù)據(jù)的邏表是數(shù)據(jù)的集合,是用來存儲(chǔ)數(shù)據(jù)和操作數(shù)據(jù)的邏輯結(jié)構(gòu)。輯結(jié)構(gòu)。表是由行和列組成的,行被稱為記錄,是組織數(shù)據(jù)表是由行和列組成的,行被稱為記錄,是組織數(shù)據(jù)的單位;列被稱為字段,每一列表示記錄的一個(gè)屬的單位;列被稱為字段,每一列表示記錄的一個(gè)屬性。性。在特定表中,列名必須是唯一的,但相同

2、的列名可在特定表中,列名必須是唯一的,但相同的列名可以在數(shù)據(jù)庫(kù)中的不同表中使用。以在數(shù)據(jù)庫(kù)中的不同表中使用。SQL ServerSQL Server中的每個(gè)表中最多允許有中的每個(gè)表中最多允許有10241024列,每行列,每行最多允許有最多允許有80608060字節(jié)的用戶數(shù)據(jù)。行和列的次序是字節(jié)的用戶數(shù)據(jù)。行和列的次序是任意的。任意的。3.2.1 表的概念表的概念表是數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)的主要對(duì)象。SQL Server數(shù)據(jù)庫(kù)的表由行和列組成。 永久表和臨時(shí)表永久表和臨時(shí)表u 在SQL Server中,表分為永久表和臨時(shí)表兩種。數(shù)據(jù)通常存儲(chǔ)在永久表中,如果用戶不手動(dòng)刪除,永久表和其中的數(shù)據(jù)將永久存在。臨

3、時(shí)表存儲(chǔ)在tempdb數(shù)據(jù)庫(kù)中,當(dāng)不再使用時(shí)系統(tǒng)會(huì)自動(dòng)刪除臨時(shí)表。u 臨時(shí)表可以分為本地臨時(shí)表和全局臨時(shí)表。u 本地臨時(shí)表以#符號(hào)開頭,例如#tmptable1。u 本地臨時(shí)表僅對(duì)當(dāng)前連接數(shù)據(jù)庫(kù)的用戶有效,而其他用戶則看不到本地臨時(shí)表,當(dāng)用戶斷開與數(shù)據(jù)庫(kù)的連接時(shí),本地臨時(shí)表被自動(dòng)刪除。全局曖昧表以#符號(hào)開頭,例如#tmptable2。全局臨時(shí)表對(duì)所有連接數(shù)據(jù)庫(kù)的用戶都有效,當(dāng)所有引用該表的用戶從SQL Server斷開連接時(shí)全局臨時(shí)表被刪除。3.2.2 SQL Server 2000數(shù)據(jù)類型數(shù)據(jù)類型1二進(jìn)制數(shù)據(jù)數(shù)據(jù)類型數(shù)據(jù)類型描述描述binary固定長(zhǎng)度的二進(jìn)制數(shù)據(jù)類型,固定長(zhǎng)度的二進(jìn)制數(shù)據(jù)類

4、型,binary ( n ) 表示固表示固定長(zhǎng)度的定長(zhǎng)度的n個(gè)字節(jié)二進(jìn)制數(shù)據(jù)。個(gè)字節(jié)二進(jìn)制數(shù)據(jù)。n必須從必須從18 000,存,存儲(chǔ)空間大小為儲(chǔ)空間大小為n+4字節(jié)字節(jié)varbinary變長(zhǎng)的二進(jìn)制數(shù)據(jù)類型,變長(zhǎng)的二進(jìn)制數(shù)據(jù)類型,varbinary ( n ) 表示表示n個(gè)個(gè)字節(jié)變長(zhǎng)二進(jìn)制數(shù)據(jù)。字節(jié)變長(zhǎng)二進(jìn)制數(shù)據(jù)。n必須從必須從18 000。存儲(chǔ)空間大。存儲(chǔ)空間大小為實(shí)際輸入數(shù)據(jù)長(zhǎng)度小為實(shí)際輸入數(shù)據(jù)長(zhǎng)度+4個(gè)字節(jié),而不是個(gè)字節(jié),而不是n個(gè)字節(jié)。個(gè)字節(jié)。輸入的數(shù)據(jù)長(zhǎng)度可能為輸入的數(shù)據(jù)長(zhǎng)度可能為 0 字節(jié)字節(jié)image可以用來存儲(chǔ)超過可以用來存儲(chǔ)超過8 KB的可變長(zhǎng)度的二進(jìn)制數(shù)據(jù),的可變長(zhǎng)度的二進(jìn)

5、制數(shù)據(jù),如如Microsoft Word文檔、文檔、Microsoft Excel電子表格、電子表格、包含位圖的圖像、包含位圖的圖像、GIF文件和文件和JPEG文件文件SQL Server 2000數(shù)據(jù)類型數(shù)據(jù)類型2字符數(shù)據(jù)數(shù)據(jù)類型數(shù)據(jù)類型描述描述char固定長(zhǎng)度的字符數(shù)據(jù)類型。固定長(zhǎng)度的字符數(shù)據(jù)類型。char(n)表示長(zhǎng)度為表示長(zhǎng)度為n個(gè)字節(jié)的固定長(zhǎng)度且非個(gè)字節(jié)的固定長(zhǎng)度且非Unicode 的字符數(shù)據(jù)。的字符數(shù)據(jù)。n必須必須是一個(gè)介于是一個(gè)介于18 000之間的數(shù)值。存儲(chǔ)大小為之間的數(shù)值。存儲(chǔ)大小為n個(gè)字節(jié)個(gè)字節(jié)varchar是非固定長(zhǎng)度的字符數(shù)據(jù)類型。是非固定長(zhǎng)度的字符數(shù)據(jù)類型。varch

6、ar(n)表示表示長(zhǎng)度為長(zhǎng)度為n個(gè)字節(jié)的可變長(zhǎng)度且非個(gè)字節(jié)的可變長(zhǎng)度且非Unicode的字符數(shù)據(jù)。的字符數(shù)據(jù)。n必須是一個(gè)介于必須是一個(gè)介于18 000之間的數(shù)值。存儲(chǔ)大小為輸之間的數(shù)值。存儲(chǔ)大小為輸入數(shù)據(jù)的字節(jié)的實(shí)際長(zhǎng)度,而不是入數(shù)據(jù)的字節(jié)的實(shí)際長(zhǎng)度,而不是n個(gè)字節(jié)。所輸入個(gè)字節(jié)。所輸入的數(shù)據(jù)字符長(zhǎng)度可以為的數(shù)據(jù)字符長(zhǎng)度可以為0text數(shù)據(jù)類型的列可用于存儲(chǔ)大于數(shù)據(jù)類型的列可用于存儲(chǔ)大于8KB的的ASCII字符。字符。例如,由于例如,由于HTML文檔均由文檔均由ASCII字符組成且一般長(zhǎng)字符組成且一般長(zhǎng)于于8KB,所以用瀏覽器查看之前應(yīng)在,所以用瀏覽器查看之前應(yīng)在SQL Server中存中存

7、儲(chǔ)在儲(chǔ)在text列中列中SQL Server 2000數(shù)據(jù)類型數(shù)據(jù)類型3Unicode 數(shù)據(jù) 數(shù)據(jù)類型數(shù)據(jù)類型描述描述ncharnchar是固定長(zhǎng)度是固定長(zhǎng)度Unicode數(shù)據(jù)的數(shù)據(jù)類型,數(shù)據(jù)的數(shù)據(jù)類型,nchar(n)表示包含表示包含n個(gè)字符的固定長(zhǎng)度個(gè)字符的固定長(zhǎng)度Unicode字符數(shù)據(jù)。字符數(shù)據(jù)。n的值的值必須介于必須介于14 000之間。存儲(chǔ)大小為之間。存儲(chǔ)大小為n字節(jié)的兩倍字節(jié)的兩倍nvarcharnvarchar是可變長(zhǎng)度是可變長(zhǎng)度 Unicode 數(shù)據(jù)的數(shù)據(jù)類型,數(shù)據(jù)的數(shù)據(jù)類型,nvarchar(n)表示包含表示包含n個(gè)字符的可變長(zhǎng)度個(gè)字符的可變長(zhǎng)度Unicode字符數(shù)字符數(shù)據(jù)。

8、據(jù)。n的值必須介于的值必須介于14 000之間。字節(jié)的存儲(chǔ)大小是所之間。字節(jié)的存儲(chǔ)大小是所輸入字符個(gè)數(shù)的兩倍。所輸入的數(shù)據(jù)字符長(zhǎng)度可以為零輸入字符個(gè)數(shù)的兩倍。所輸入的數(shù)據(jù)字符長(zhǎng)度可以為零ntext可變長(zhǎng)度可變長(zhǎng)度Unicode數(shù)據(jù)的最大長(zhǎng)度為數(shù)據(jù)的最大長(zhǎng)度為230 - 1 (1 073 741 823) 個(gè)字符。存儲(chǔ)大小是所輸入字符個(gè)數(shù)的兩倍(以字個(gè)字符。存儲(chǔ)大小是所輸入字符個(gè)數(shù)的兩倍(以字節(jié)為單位)節(jié)為單位)SQL Server 2000數(shù)據(jù)類型數(shù)據(jù)類型4日期和時(shí)間數(shù)據(jù)數(shù)據(jù)類型數(shù)據(jù)類型描述描述datetime從從 1753 年年 1 月月 1 日到日到 9999 年年 12 月月 31 日的

9、日期和日的日期和時(shí)間數(shù)據(jù),精確度為百分之三秒(等于時(shí)間數(shù)據(jù),精確度為百分之三秒(等于 3.33 毫秒或毫秒或 0.00333 秒)秒)smalldatetime從從 1900 年年 1 月月 1 日到日到 2079 年年 6 月月 6 日的日期和時(shí)日的日期和時(shí)間數(shù)據(jù)精確到分鐘。間數(shù)據(jù)精確到分鐘。29.998 秒或更低的秒或更低的 smalldatetime 值向下舍入為最接近的分鐘,值向下舍入為最接近的分鐘,29.999 秒或更高的秒或更高的 smalldatetime 值向上舍入為最接近的分鐘值向上舍入為最接近的分鐘SQL Server 2000數(shù)據(jù)類型數(shù)據(jù)類型5數(shù)字?jǐn)?shù)據(jù)數(shù)據(jù)類型數(shù)據(jù)類型描述

10、描述整整型 數(shù)型 數(shù)據(jù)據(jù)bigint從從 -263 (-9 223 372 036 854 775 808) 263-1(9 223 372 036 854 775 807)的整型數(shù)據(jù)(所有數(shù)字)。存儲(chǔ)大小為)的整型數(shù)據(jù)(所有數(shù)字)。存儲(chǔ)大小為 8 個(gè)字節(jié)個(gè)字節(jié)int從從 -231 (-2 147 483 648) 231 - 1(2,147,483,647)的整型數(shù)據(jù))的整型數(shù)據(jù)(所有數(shù)字)。存儲(chǔ)大小為(所有數(shù)字)。存儲(chǔ)大小為 4 個(gè)字節(jié)個(gè)字節(jié)smallint從從 -215 (-32 768) 215 - 1 (32 767)的整型數(shù)據(jù)。存儲(chǔ)大小為)的整型數(shù)據(jù)。存儲(chǔ)大小為 2 個(gè)字節(jié)。個(gè)字節(jié)

11、。tinyint從從 0 255 的整型數(shù)據(jù)。存儲(chǔ)大小為的整型數(shù)據(jù)。存儲(chǔ)大小為 1 字節(jié)字節(jié)小小數(shù) 數(shù)數(shù) 數(shù)據(jù)據(jù)Decimal和和numeric帶定點(diǎn)精度和小數(shù)位數(shù)的帶定點(diǎn)精度和小數(shù)位數(shù)的numeric數(shù)據(jù)類型。數(shù)據(jù)類型。decimal(p, s) 和和 numeric(p, s) 表示定點(diǎn)精度和小數(shù)位數(shù)。使用最大精度時(shí),有效表示定點(diǎn)精度和小數(shù)位數(shù)。使用最大精度時(shí),有效值從值從 - 1038 +1 1038 - 1。p表示精度,指定小數(shù)點(diǎn)左邊和右邊可以存表示精度,指定小數(shù)點(diǎn)左邊和右邊可以存儲(chǔ)的十進(jìn)制數(shù)字的最大個(gè)數(shù)。精度必須是從儲(chǔ)的十進(jìn)制數(shù)字的最大個(gè)數(shù)。精度必須是從 1 到最大精度之間的值。到最

12、大精度之間的值。最大精度為最大精度為38。s表示小數(shù)位數(shù),指定小數(shù)點(diǎn)右邊可以存儲(chǔ)的十進(jìn)制表示小數(shù)位數(shù),指定小數(shù)點(diǎn)右邊可以存儲(chǔ)的十進(jìn)制數(shù)字的最大個(gè)數(shù)。小數(shù)位數(shù)必須是從數(shù)字的最大個(gè)數(shù)。小數(shù)位數(shù)必須是從0 p之間的值。默認(rèn)小數(shù)位數(shù)之間的值。默認(rèn)小數(shù)位數(shù)是是0,因而,因而 0 s p。最大存儲(chǔ)大小基于精度而變化。最大存儲(chǔ)大小基于精度而變化。近近似 數(shù)似 數(shù)字 數(shù)字 數(shù)據(jù)據(jù)float ( n ) 從從 - 1.79E + 308 1.79E + 308 之間的浮點(diǎn)數(shù)字?jǐn)?shù)據(jù)。之間的浮點(diǎn)數(shù)字?jǐn)?shù)據(jù)。n 為用于存為用于存儲(chǔ)科學(xué)記數(shù)法儲(chǔ)科學(xué)記數(shù)法float數(shù)尾數(shù)的位數(shù),同時(shí)指示其精度和存儲(chǔ)大小。數(shù)尾數(shù)的位數(shù),同時(shí)

13、指示其精度和存儲(chǔ)大小。n 必須為從必須為從 1 53 之間的值。之間的值。real從從 -3.40E + 38 3.40E + 38 之間的浮點(diǎn)數(shù)字?jǐn)?shù)據(jù)。存儲(chǔ)大小為之間的浮點(diǎn)數(shù)字?jǐn)?shù)據(jù)。存儲(chǔ)大小為 4 字節(jié)字節(jié)SQL Server 2000數(shù)據(jù)類型數(shù)據(jù)類型6貨幣數(shù)據(jù)數(shù)據(jù)類型數(shù)據(jù)類型描述描述Money貨幣數(shù)據(jù)值介于貨幣數(shù)據(jù)值介于 -263 (-922 337 203 685 477.5808) 263 1 (+922 337 203 685 477.5807) 之間,精確到貨幣之間,精確到貨幣單位的千分之十。存儲(chǔ)大小為單位的千分之十。存儲(chǔ)大小為 8 個(gè)字節(jié)個(gè)字節(jié)smallmoney貨幣數(shù)據(jù)值介于貨

14、幣數(shù)據(jù)值介于 -214 748.3648 +214 748.3647 之之間,精確到貨幣單位的千分之十。存儲(chǔ)大小為間,精確到貨幣單位的千分之十。存儲(chǔ)大小為 4 個(gè)個(gè)字節(jié)字節(jié)SQL Server 2000數(shù)據(jù)類型數(shù)據(jù)類型7特殊數(shù)據(jù) 數(shù)據(jù)類型數(shù)據(jù)類型描述描述table一種特殊的數(shù)據(jù)類型,存儲(chǔ)供以后處理的結(jié)果集。一種特殊的數(shù)據(jù)類型,存儲(chǔ)供以后處理的結(jié)果集。table數(shù)據(jù)類型只能用數(shù)據(jù)類型只能用于定義于定義table類型的局部變量或用戶定義函數(shù)的返回值類型的局部變量或用戶定義函數(shù)的返回值bitbit 數(shù)據(jù)類型只能包括數(shù)據(jù)類型只能包括 0 或或 1。可以用。可以用bit數(shù)據(jù)類型代表數(shù)據(jù)類型代表TRUE或

15、或FALSE、YES或或NO。例如,詢問客戶是否為初次訪問的問題可存儲(chǔ)在。例如,詢問客戶是否為初次訪問的問題可存儲(chǔ)在bit列中,類似列中,類似于其他數(shù)據(jù)類型中的布爾型于其他數(shù)據(jù)類型中的布爾型timestamp用于表示用于表示SQL Server在一行上的活動(dòng)順序,按二進(jìn)制格式以遞增的數(shù)字在一行上的活動(dòng)順序,按二進(jìn)制格式以遞增的數(shù)字來表示。當(dāng)表中的行發(fā)生變動(dòng)時(shí),用從來表示。當(dāng)表中的行發(fā)生變動(dòng)時(shí),用從DBTS函數(shù)獲得的當(dāng)前數(shù)據(jù)庫(kù)的函數(shù)獲得的當(dāng)前數(shù)據(jù)庫(kù)的時(shí)間戮值來更新時(shí)間戮。時(shí)間戮值來更新時(shí)間戮。timestamp數(shù)據(jù)與插入或修改數(shù)據(jù)的日期和時(shí)間無(wú)數(shù)據(jù)與插入或修改數(shù)據(jù)的日期和時(shí)間無(wú)關(guān)。若要自動(dòng)記錄表

16、中數(shù)據(jù)更改的時(shí)間,使用關(guān)。若要自動(dòng)記錄表中數(shù)據(jù)更改的時(shí)間,使用datetime或或smalldatetime數(shù)據(jù)數(shù)據(jù)類型記錄事件或觸發(fā)器類型記錄事件或觸發(fā)器uniqueidentifier以一個(gè)以一個(gè)16位的十六進(jìn)制數(shù)表示全局唯一標(biāo)識(shí)符位的十六進(jìn)制數(shù)表示全局唯一標(biāo)識(shí)符 (GUID)。當(dāng)需要在多)。當(dāng)需要在多行中唯一標(biāo)識(shí)某一行時(shí)可使用行中唯一標(biāo)識(shí)某一行時(shí)可使用GUID。例如,可使用。例如,可使用uniqueidentifier 數(shù)據(jù)類數(shù)據(jù)類型定義一個(gè)客戶標(biāo)識(shí)代碼列,以編輯公司來自多個(gè)國(guó)家型定義一個(gè)客戶標(biāo)識(shí)代碼列,以編輯公司來自多個(gè)國(guó)家/地區(qū)的總的客戶名地區(qū)的總的客戶名錄錄sql_variant一

17、種存儲(chǔ)一種存儲(chǔ)SQL Server所支持的各種數(shù)據(jù)類型所支持的各種數(shù)據(jù)類型 (text、ntext、timestamp和和sql_variant除外)值的數(shù)據(jù)類型除外)值的數(shù)據(jù)類型用戶定義的數(shù)據(jù)類型用戶定義的數(shù)據(jù)類型 創(chuàng)建用戶定義的數(shù)據(jù)類型時(shí)必須提供以下三個(gè)參數(shù): (1)名稱。(2)新數(shù)據(jù)類型所依據(jù)的系統(tǒng)數(shù)據(jù)類型。(3)為空性(數(shù)據(jù)類型是否允許空值)。【例例3.1】按照以下步驟創(chuàng)建用戶自定義數(shù)據(jù)類型postcode,用于表示郵政編碼。(1)在)在SQL Server 2000企業(yè)管理器中,展開服務(wù)器組,然后展開服務(wù)器實(shí)例。企業(yè)管理器中,展開服務(wù)器組,然后展開服務(wù)器實(shí)例。(2)展開)展開“數(shù)據(jù)庫(kù)

18、數(shù)據(jù)庫(kù)”文件夾,再展開要在其中創(chuàng)建用戶定義的數(shù)據(jù)類型的數(shù)據(jù)文件夾,再展開要在其中創(chuàng)建用戶定義的數(shù)據(jù)類型的數(shù)據(jù)庫(kù),例如庫(kù),例如HrSystem。(3)右擊)右擊“用戶定義數(shù)據(jù)類型用戶定義數(shù)據(jù)類型”,然后單擊,然后單擊“新建用戶定義數(shù)據(jù)類型新建用戶定義數(shù)據(jù)類型”命令,命令,打開打開“用戶定義的數(shù)據(jù)類型屬性用戶定義的數(shù)據(jù)類型屬性”對(duì)話框,如圖對(duì)話框,如圖3.11所示。所示。(4)輸入新建數(shù)據(jù)類型的名稱)輸入新建數(shù)據(jù)類型的名稱postcode。(5)在)在“數(shù)據(jù)類型數(shù)據(jù)類型”列表中,選擇基數(shù)據(jù)類型,列表中,選擇基數(shù)據(jù)類型,postcode的基數(shù)據(jù)類型為的基數(shù)據(jù)類型為char。(6)如果)如果“長(zhǎng)度長(zhǎng)度

19、”字段處于活動(dòng)狀態(tài),可以在此處輸入此數(shù)據(jù)類型可存儲(chǔ)的最字段處于活動(dòng)狀態(tài),可以在此處輸入此數(shù)據(jù)類型可存儲(chǔ)的最大數(shù)據(jù)長(zhǎng)度。可以設(shè)置可變長(zhǎng)度的數(shù)據(jù)類型包括大數(shù)據(jù)長(zhǎng)度。可以設(shè)置可變長(zhǎng)度的數(shù)據(jù)類型包括binary、char、nchar、nvarchar、varbinary和和varchar。這里設(shè)置。這里設(shè)置postal code的最大長(zhǎng)度為的最大長(zhǎng)度為6。(7)若要允許此數(shù)據(jù)類型接受空值,請(qǐng)選擇)若要允許此數(shù)據(jù)類型接受空值,請(qǐng)選擇“允許空值允許空值”命令。命令。(8)在)在“規(guī)則規(guī)則”和和“默認(rèn)值默認(rèn)值”列表中選擇一個(gè)規(guī)則或默認(rèn)值,以將其綁定到用列表中選擇一個(gè)規(guī)則或默認(rèn)值,以將其綁定到用戶定義數(shù)據(jù)類型

20、上。戶定義數(shù)據(jù)類型上。(9)單擊)單擊“確定確定”按鈕,完成設(shè)置。按鈕,完成設(shè)置。3.3 表結(jié)構(gòu)的創(chuàng)建、修改和刪除表結(jié)構(gòu)的創(chuàng)建、修改和刪除3.3.1 3.3.1 表結(jié)構(gòu)的創(chuàng)建表結(jié)構(gòu)的創(chuàng)建 1用企業(yè)管理器用企業(yè)管理器表結(jié)構(gòu)表結(jié)構(gòu) 2 2使用使用T-SQLT-SQL語(yǔ)句創(chuàng)建表結(jié)構(gòu)語(yǔ)句創(chuàng)建表結(jié)構(gòu)3.2.2 表的創(chuàng)建、修改和刪除表的創(chuàng)建、修改和刪除 第第1步步 啟動(dòng)SQL Server 企業(yè)管理器,用鼠標(biāo)右鍵單擊選擇數(shù)據(jù)庫(kù)(這里是數(shù)據(jù)庫(kù)XSCJ),將出現(xiàn)如圖3.25所示的快捷菜單,選擇“新建(N)”“表(T)”。圖圖3.25新建表新建表3.2.2 表的創(chuàng)建、修改和刪除表的創(chuàng)建、修改和刪除 第第2步步

21、在所彈出的編輯窗口中分別輸入或選擇各列的名稱、數(shù)據(jù)類型、是否允許為空值等屬性,在“學(xué)號(hào)”列上單擊鼠標(biāo)右鍵,選擇“設(shè)置主鍵”菜單項(xiàng),將學(xué)號(hào)列設(shè)置為主鍵,將“性別”列的缺省值設(shè)置為1。如圖3.26所示。 第第3步步 在表的各列的屬性均編輯完成后,單擊“保存”圖形按鈕,出現(xiàn)如圖2.27所示的“選擇表名”對(duì)話框。 第第4步步 在“選擇表名”對(duì)話框中輸入表名XS,單擊“確定”,XS表就創(chuàng)建好了,如圖3.28所示。圖圖3.26創(chuàng)建創(chuàng)建XS表的各列表的各列3.2.2 表的創(chuàng)建、修改和刪除表的創(chuàng)建、修改和刪除圖圖2.27選擇表名對(duì)話框選擇表名對(duì)話框圖圖3.28新創(chuàng)建的表新創(chuàng)建的表XS3.2.2 表的創(chuàng)建、修改

22、和刪除表的創(chuàng)建、修改和刪除 同樣,創(chuàng)建課程表,名稱為KC, 表結(jié)構(gòu)如表2.4所示。KC表創(chuàng)建后的界面,如圖3.29所示。表表2.4 課程表課程表(表名表名KC)結(jié)構(gòu)結(jié)構(gòu)列列 名名數(shù)據(jù)類型數(shù)據(jù)類型長(zhǎng)度長(zhǎng)度是否允許為空是否允許為空值值默認(rèn)值默認(rèn)值說明說明課程號(hào)定長(zhǎng)字符型(char)3無(wú)主鍵課程名定長(zhǎng)字符型(char)16無(wú)開課學(xué)期整數(shù)型(tinyint)11只能為18學(xué)時(shí)整數(shù)型(tinyint)1無(wú)學(xué)分整數(shù)型(tinyint)1無(wú)3.2.2 表的創(chuàng)建、修改和刪除表的創(chuàng)建、修改和刪除圖圖3.29創(chuàng)建表創(chuàng)建表KC3.2.2 表的創(chuàng)建、修改和刪除表的創(chuàng)建、修改和刪除創(chuàng)建成績(jī)表,名稱為XS_KC, 表結(jié)構(gòu)

23、如表2.5所示。KC表創(chuàng)建后的界面,如圖3.30所示。表表2.5成績(jī)表成績(jī)表(表名表名XS_KC)結(jié)構(gòu)結(jié)構(gòu)列名列名數(shù)據(jù)類型數(shù)據(jù)類型長(zhǎng)度長(zhǎng)度是否允許為空值是否允許為空值默認(rèn)默認(rèn)值值說明說明學(xué)號(hào)定長(zhǎng)字符型(char)6無(wú)主鍵課程號(hào)定長(zhǎng)字符型(char)3無(wú)主鍵成績(jī)整數(shù)型(tinyint)1無(wú) 學(xué)分整數(shù)型(tinyint)1無(wú)圖圖3.30創(chuàng)建表創(chuàng)建表XS_KC3.2.2 表的創(chuàng)建、修改和刪除表的創(chuàng)建、修改和刪除 3. 修改表修改表 在創(chuàng)建了一個(gè)表之后,使用過程中可能對(duì)表結(jié)構(gòu)、約束或其它列的屬性需要進(jìn)行修改。表的修改與表的創(chuàng)建一樣,也可以通過SQL Server企業(yè)管理器和T-SQL兩種方法來進(jìn)行,本

24、節(jié)討論在企業(yè)管理器中修改表的方法。 對(duì)一個(gè)已存在的表可以進(jìn)行的修改操作包括: 更改表名 增加列 刪除列 修改已有列的屬性(列名、數(shù)據(jù)類型、是否為空值) (1) 更改表名 更改表名的操作步驟: 第第1步步 在SQL Server企業(yè)管理器中展開需更名的表,在其上單擊鼠標(biāo)右鍵,在彈出的快捷菜單上選擇“重命名”,如圖3.31所示。圖圖3.31 修改表名修改表名第第2步步 在表名位置上輸入新的表名,如圖3.32所示,按下回車鍵。圖圖3.32 輸入新表名輸入新表名在此輸入新表名 第第3步步 系統(tǒng)彈出對(duì)話框,提示用戶若更改了表名,那么將引起引用該表的存儲(chǔ)過程、視圖或觸發(fā)器無(wú)效,要求用戶對(duì)更名操作予以確認(rèn)。

25、點(diǎn)擊“是”按鈕確認(rèn)該操作。 第第4步步 第3步操作完成后,系統(tǒng)彈出完成對(duì)話框,提示用戶表更名操作已經(jīng)完成。點(diǎn)擊“確定”。 (2) 增加列 當(dāng)原來所創(chuàng)建的表中需要增加項(xiàng)目時(shí),就要向表中增加列。例如若在表中需要登記其籍貫、獲獎(jiǎng)情況等,就要用到增加列的操作。 在SQL Server企業(yè)管理器中展開需進(jìn)行操作的表XS,在其上單擊鼠標(biāo)右鍵,在彈出的快捷菜單上選擇“設(shè)計(jì)表”,如圖3.34所示。圖圖3.34設(shè)計(jì)表設(shè)計(jì)表3.2.2 表的創(chuàng)建、修改和刪除表的創(chuàng)建、修改和刪除 在SQL Server Enterprise Manager的設(shè)計(jì)表“XS ”窗口中點(diǎn)擊第一個(gè)空白行,輸入列名“獎(jiǎng)學(xué)金等級(jí)”,選擇數(shù)據(jù)類型

26、“tinyint”,如圖3.35所示。 當(dāng)需向表中添加的列均輸入完畢后,點(diǎn)擊關(guān)閉設(shè)計(jì)表“XS”窗口按鈕,此時(shí)將彈出確認(rèn)對(duì)話框,單擊“是”,保存修改后的表。圖圖3.35增加新列增加新列3.2.2 表的創(chuàng)建、修改和刪除表的創(chuàng)建、修改和刪除 在SQL Server Enterprise Manager的設(shè)計(jì)表“XS ”窗口中點(diǎn)擊第一個(gè)空白行,輸入列名“獎(jiǎng)學(xué)金等級(jí)”,選擇數(shù)據(jù)類型“tinyint”,如圖3.35所示。 當(dāng)需向表中添加的列均輸入完畢后,點(diǎn)擊關(guān)閉設(shè)計(jì)表“XS”窗口按鈕,此時(shí)將彈出確認(rèn)對(duì)話框,單擊“是”,保存修改后的表。圖圖3.35增加新列增加新列3.2.2 表的創(chuàng)建、修改和刪除表的創(chuàng)建、修

27、改和刪除 (3) 刪除列 在SQL Server企業(yè)管理器中展開需進(jìn)行操作的表XS,在其上單擊鼠標(biāo)右鍵,在彈出的快捷菜單上選擇“設(shè)計(jì)表”。在SQL Server企業(yè)管理器的設(shè)計(jì)表“XS ”窗口中點(diǎn)擊需刪除的列(例如XS表中刪除“獎(jiǎng)學(xué)金等級(jí)”列),此時(shí)箭頭指在該列上,點(diǎn)擊鼠標(biāo)右鍵,在彈 出的快捷菜單上選擇“刪除列”,如圖3.36所示,該列即被刪除。圖圖3.36刪除列刪除列3.2.2 表的創(chuàng)建、修改和刪除表的創(chuàng)建、修改和刪除 (4) 修改已有列的屬性 在表中尚未有記錄值時(shí),可以修改表結(jié)構(gòu),如更改列名、列的數(shù)據(jù)類型、長(zhǎng)度和是否允許空值等屬性。但當(dāng)表中有了記錄后,建議不要輕易改變表結(jié)構(gòu),特別不要改變數(shù)

28、據(jù)類型,以免產(chǎn)生錯(cuò)誤。 具有以下特性的列不能被修改: 具有text、ntext、image或timestamp數(shù)據(jù)類型的列 計(jì)算列 全局標(biāo)識(shí)符列 復(fù)制列 用于索引的列(但若用于索引的列為varchar、nvarchar或varbinary數(shù)據(jù)類型時(shí),可以增加列的長(zhǎng)度) 用于由CREATE STATISTICS生成統(tǒng)計(jì)的列。若需修改這樣的列,必須先用DROP STATISTICS語(yǔ)句刪除統(tǒng)計(jì) 用于主鍵或外鍵約束的列 用于CHECK或UNIQUE約束的列 關(guān)聯(lián)有默認(rèn)值的列3.2.2 表的創(chuàng)建、修改和刪除表的創(chuàng)建、修改和刪除 10,允許為空值;將“出生時(shí)間”列的列名改為“birthday”,數(shù)據(jù)類型

29、由“smalldatetime”改為“datetime”。 因尚未輸入記錄值,所以可以改變XS表的結(jié)構(gòu),在“企業(yè)管理器”中修改表中已有列的屬性的操作步驟是: 第第1步步 在SQL Server企業(yè)管理器中展開需進(jìn)行操作的表XS,在其上單擊鼠標(biāo)右鍵,在彈出的快捷菜單上選擇“設(shè)計(jì)表”。 第第2步步 在SQL Server 企業(yè)管理器的設(shè)計(jì)表“XS ”窗口中點(diǎn)擊需修改的列(本例中是“姓名”和“出生時(shí)間”),修改相應(yīng)的屬性,如圖3.36所示。圖圖3.36修改列的屬性修改列的屬性2.2.2 表的創(chuàng)建、修改和刪除表的創(chuàng)建、修改和刪除 第第3步步 當(dāng)需修改的列均修改完畢后,點(diǎn)擊關(guān)閉設(shè)計(jì)表“XS”窗口按鈕,此

30、時(shí)將彈出對(duì)話框,單擊“是”保存修改后的表。 4. 表的刪除表的刪除 刪除一個(gè)表時(shí),表的定義、表中的所有數(shù)據(jù)以及表的索引、觸發(fā)器、約束等均被刪除。注意,不能刪除系統(tǒng)表和有外鍵約束所參照的表。 設(shè)需將XSCJ數(shù)據(jù)庫(kù)中的表test刪除,操作過程為: 第第1步步 在“企業(yè)管理器”中展開數(shù)據(jù)庫(kù)XSCJ,再展開表,在表test上點(diǎn)擊鼠標(biāo)右鍵,在彈出的快捷菜單上選擇“刪除”,如圖3.37所示。圖圖3.37刪除表刪除表3.2.2 表的創(chuàng)建、修改和刪除表的創(chuàng)建、修改和刪除 第第2步步 上一步操作結(jié)束后,系統(tǒng)彈出如圖3.38所示的“除去對(duì)象”對(duì)話框,點(diǎn)擊“全部除去”按鈕,即可刪除選擇的表。圖圖3.38確定需刪除表

31、確定需刪除表3.3 表結(jié)構(gòu)的創(chuàng)建、修改和刪除表結(jié)構(gòu)的創(chuàng)建、修改和刪除CREATE TABLE table_nameCREATE TABLE table_name( column_name1 data_type( column_name1 data_type DEFAULTconstant_expressionDEFAULTconstant_expression IDENTITY ( SEED, INCREMENT ) IDENTITY ( SEED, INCREMENT ) NULL | NOT NULL NULL | NOT NULL ,n ,n)ON )ON filegroupfilegr

32、oup | DEFAULT | DEFAULT table_name:是表的名字。是表的名字。column_name1:表中列的名字。列名在表中必須唯一,表中列的名字。列名在表中必須唯一,列的命名必須遵循數(shù)據(jù)庫(kù)對(duì)象的命名規(guī)則。列的命名必須遵循數(shù)據(jù)庫(kù)對(duì)象的命名規(guī)則。data_type:列的數(shù)據(jù)類型和寬度。列的數(shù)據(jù)類型和寬度。DEFAULT constant_expression:指定所定義的列的指定所定義的列的默認(rèn)值,默認(rèn)值由常量表達(dá)式確定。默認(rèn)值,默認(rèn)值由常量表達(dá)式確定。IDENTITY:定義該列是一個(gè)標(biāo)識(shí)列。定義該列是一個(gè)標(biāo)識(shí)列。SEED:標(biāo)識(shí)列的起始值,即插入表的第一行數(shù)據(jù)的標(biāo)標(biāo)識(shí)列的起始

33、值,即插入表的第一行數(shù)據(jù)的標(biāo)識(shí)列的值。識(shí)列的值。INCREMENT:標(biāo)識(shí)列的增值,即插入表的最近一行相標(biāo)識(shí)列的增值,即插入表的最近一行相對(duì)于前一行標(biāo)識(shí)列數(shù)據(jù)值的增量。對(duì)于前一行標(biāo)識(shí)列數(shù)據(jù)值的增量。NULL | NOT NULL:指出該列是否允許為空,指出該列是否允許為空,默認(rèn)為默認(rèn)為NULL。ON filegroup | DEFAULT:指定在哪個(gè)文指定在哪個(gè)文件組上創(chuàng)建表。件組上創(chuàng)建表。DEFAULT表示將表存儲(chǔ)在表示將表存儲(chǔ)在默認(rèn)文件組中。默認(rèn)文件組中。例3-4 為sales數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)銷售人員表Salers,它包含SaleID、姓名、性別、出生日期、雇用日期、地址、電話和備注字段,其中

34、SaleID、姓名這兩列不允許為空。CREATE TABLE salers(SaleID char(3) NOT NULL, SaleName char(8) NOT NULL, Sex char(2), Birthday datetime, HireDate datetime, Address char(60), Telephone char(13), Note char(200)例3-5 為sales數(shù)據(jù)庫(kù)創(chuàng)建訂單表Orders,包括OrderID、CustomerID、SaleID和OrderDate字段,其中OrderID為標(biāo)識(shí)列,起始值為10248,增值為1;CustomerID和S

35、aleID字段不允許為空值;OrderDate字段的默認(rèn)值為當(dāng)前日期。 CREATE TABLE Orders(OrderID int IDENTITY(10248,1), CustomerID char(3) NOT NULL, SaleID char(3) NOT NULL, OrderDate datetime DEFAULT getdate()例例3-6 為為sales數(shù)據(jù)庫(kù)在文件組數(shù)據(jù)庫(kù)在文件組USER1上創(chuàng)建類上創(chuàng)建類別別Categories表。表。CREATE TABLE Categories(CategoryID int NOT NULL, CategoryName nvarc

36、har(15), Description nvarchar(200) )ON USER1注意:文件組USER1必須已經(jīng)定義。在例3-4和例3-5中,沒有使用ON關(guān)鍵字指出文件組,則表存儲(chǔ)在缺省的文件組中。 3.3.2 表結(jié)構(gòu)的修改 修改的操作包括:增加或刪除列、修改列的名稱、修改的操作包括:增加或刪除列、修改列的名稱、數(shù)據(jù)類型、數(shù)據(jù)長(zhǎng)度、改變表的名稱等。數(shù)據(jù)類型、數(shù)據(jù)長(zhǎng)度、改變表的名稱等。 1使用企業(yè)管理器修改表結(jié)構(gòu)使用企業(yè)管理器修改表結(jié)構(gòu) 2使用使用T-SQL語(yǔ)句修改表結(jié)構(gòu)語(yǔ)句修改表結(jié)構(gòu) 語(yǔ)法形式為:語(yǔ)法形式為:ALTER TABLE table_name ADD column_ n a m

37、 e d a t e _ t y p e D E F A U L T contant_expression IDENTITY(SEED,INCREMENT)NULL | NOT NULL| DROP COLUMN column_name| ALTER COLUMN column_name new_datetype NULL | NOT NULL 例例3-7 sales數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)中的Customers表包含表包含CustomerID、ConpanyName和和ConnectName三三個(gè)字段,現(xiàn)為該表添加地址、郵政編碼和電話號(hào)碼字個(gè)字段,現(xiàn)為該表添加地址、郵政編碼和電話號(hào)碼字段。段。EXE

38、C sp_addtype telephone_code,varchar(15),NULLEXEC sp_addtype zip,char(6),NOT NULLGOALTER TABLE CustomersADD Address char(40),ZipCode zip,Telephone telephone_code在該列中,添加的在該列中,添加的ZipCode和和Telephone字段的數(shù)據(jù)字段的數(shù)據(jù)類型為用戶自定義數(shù)據(jù)類型。類型為用戶自定義數(shù)據(jù)類型。 例例3-8 將表將表salers中的中的Sex列刪除列刪除ALTER TABLE salersDROP COLUMN Sex例例3-9 將

39、將salers表中的表中的Address字段的長(zhǎng)度改為字段的長(zhǎng)度改為30,并且不能為空。,并且不能為空。ALTER TABLE salersALTER COLUMN Address varchar(30) NOT NULL注意:只能修改列的數(shù)據(jù)類型,以及列值是否為空。3.3.3 表結(jié)構(gòu)的刪除 1 1使用企業(yè)管理器刪除表格使用企業(yè)管理器刪除表格 2 2使用的使用的DROP TABLEDROP TABLE命令刪除表格命令刪除表格其語(yǔ)法形式為:其語(yǔ)法形式為:DROP TABLE table_name1,nDROP TABLE table_name1,n例例3-10 3-10 刪除當(dāng)前數(shù)據(jù)庫(kù)中一個(gè)名為

40、刪除當(dāng)前數(shù)據(jù)庫(kù)中一個(gè)名為example1example1的的表表DROP TABLE example1DROP TABLE example13.4 向表中插入、修改和刪除數(shù)據(jù)向表中插入、修改和刪除數(shù)據(jù)3.4.1 插入數(shù)據(jù) 向表中插入數(shù)據(jù)使用的向表中插入數(shù)據(jù)使用的T-SQL語(yǔ)句是語(yǔ)句是INSERT INTO語(yǔ)句,其語(yǔ)法形式為:語(yǔ)句,其語(yǔ)法形式為:INSERT INTO table_name ( column_name ,n ) VALUES ( expression | NULL | DEFAULT ,n ) table_name:要插入數(shù)據(jù)的表名。要插入數(shù)據(jù)的表名。 column_name:要

41、插入數(shù)據(jù)的列名。要插入數(shù)據(jù)的列名。 expression:與:與column_name相對(duì)應(yīng)的字段的值,相對(duì)應(yīng)的字段的值,字符型和日期型值插入時(shí)要加單引號(hào)。字符型和日期型值插入時(shí)要加單引號(hào)。 例例3-11 向向categories表中添加三行數(shù)據(jù)。表中添加三行數(shù)據(jù)。INSERT INTO Categories(CategoryID,CategoryName,Description)VALUES(1,飲料飲料,軟飲料、咖啡、茶、啤酒和淡啤酒軟飲料、咖啡、茶、啤酒和淡啤酒)INSERT INTO Categories(CategoryID,CategoryName,Description)VALU

42、ES(2,調(diào)味品調(diào)味品,香甜可口的果醬、調(diào)料、醬汁和調(diào)味香甜可口的果醬、調(diào)料、醬汁和調(diào)味品品)INSERT INTO Categories(CategoryID,CategoryName,Description)VALUES(3,點(diǎn)心點(diǎn)心,甜點(diǎn)、糖和面包甜點(diǎn)、糖和面包) 例例3-12 向向Salers表中插入一行數(shù)據(jù),其中表中插入一行數(shù)據(jù),其中Sex字段字段使用默認(rèn)值為使用默認(rèn)值為男男,HireDate等字段均取空值。等字段均取空值。在插入數(shù)據(jù)時(shí),對(duì)于允許為空的列可使用NULL插入空值;對(duì)于具有默認(rèn)值的列可使用DEFAULT插入默認(rèn)值 。INSERT INTO Salers(SaleID,Sa

43、leName,Sex,Birthday,HireDate,Address,Telephone,Notes)VALUES(s11,趙宇飛,DEFAULT,1974-07-25,NULL,NULL,NULL,NULL)或INSERT INTO Salers(SaleID,SaleName,Birthday)VALUES(s11,趙宇飛,1974-07-25) 例例3-13 在例在例3-11和例和例3-12中,由于是對(duì)表中所中,由于是對(duì)表中所有列插入數(shù)據(jù),則可省略列名表,寫成如下形式:有列插入數(shù)據(jù),則可省略列名表,寫成如下形式:INSERT INTO CategoriesVALUES(1,飲料飲料,

44、軟飲料、咖啡、茶、啤酒和淡軟飲料、咖啡、茶、啤酒和淡啤酒啤酒) INSERT INTO SalersVALUES(s11,趙宇飛趙宇飛,DEFAULT,1974-07-25,NULL,NULL,NULL,NULL) 注意:當(dāng)向表中所有列都插入新數(shù)據(jù)時(shí),可以省略列名表,但必須保證VALUES后的各數(shù)據(jù)項(xiàng)位置同表定義時(shí)的順序一致,否則系統(tǒng)會(huì)報(bào)錯(cuò)。 例例3-14 向向OrderDetails表中插入一行數(shù)據(jù)。表中插入一行數(shù)據(jù)。INSERT INTO OrderDetailsVALUES(10254,P01003)OrderDetails表中有三列數(shù)據(jù),而插入的數(shù)據(jù)只有兩表中有三列數(shù)據(jù),而插入的數(shù)據(jù)只

45、有兩列,這是列,這是系統(tǒng)會(huì)報(bào)錯(cuò)系統(tǒng)會(huì)報(bào)錯(cuò)。正確形式為:正確形式為:INSERT INTO OrderDetails VALUES(10254,P01003,NULL)或或 INSERT INTO OrderDetails (OrderID,ProductID) VALUES(10254,P01003)在后一種形式中,系統(tǒng)將在后一種形式中,系統(tǒng)將Quantity字段的值自動(dòng)設(shè)為字段的值自動(dòng)設(shè)為空值。空值。 例例3-15 3-15 向向OrdersOrders表中插入一行數(shù)據(jù)。表中插入一行數(shù)據(jù)。OrdersOrders表表的定義如例的定義如例3-53-5。INSERT INTO Orders (I

46、NSERT INTO Orders (CustomerID,SaleIDCustomerID,SaleID) )Values(c01,s11)Values(c01,s11) 在例在例3-53-5的定義中的定義中OrdersOrders包括四個(gè)字段,其包括四個(gè)字段,其中中OrderIDOrderID是標(biāo)識(shí)列,是標(biāo)識(shí)列,OrderDateOrderDate是帶有默認(rèn)值的是帶有默認(rèn)值的列,因此用戶在插入數(shù)據(jù)時(shí)不必提供這兩列的值,列,因此用戶在插入數(shù)據(jù)時(shí)不必提供這兩列的值,SQL ServerSQL Server自動(dòng)填充。自動(dòng)填充。 注意:具有IDENTITY屬性的列,其值由系統(tǒng)給出,用戶不必向表中插

47、入數(shù)據(jù)。 使用使用INSERT INTO語(yǔ)句一次只能插入一行數(shù)據(jù),語(yǔ)句一次只能插入一行數(shù)據(jù),若想一次插入多行數(shù)據(jù),則需在若想一次插入多行數(shù)據(jù),則需在INSERT INTO語(yǔ)句語(yǔ)句中加入查詢子句中加入查詢子句SELECT,通過通過SELECT子句從其子句從其它表中選出符合條件的數(shù)據(jù),再將其插入到指定的它表中選出符合條件的數(shù)據(jù),再將其插入到指定的表中。語(yǔ)法形式如下:表中。語(yǔ)法形式如下:I N S E R T I N T O d e s t _ t a b l e _ n a m e ( column_name ,n ) SELECT column_name ,nFROM source_table_

48、name WHERE search_conditions 功能:先從功能:先從source_table_name表中找出符合條表中找出符合條件的所有數(shù)據(jù),從中選擇所需要的列,將其插入到件的所有數(shù)據(jù),從中選擇所需要的列,將其插入到dest_table_name中。中。例例3-16 創(chuàng)建創(chuàng)建employee表,包含三個(gè)字段表,包含三個(gè)字段EmployeeID、EmployeeName和和Address。將。將Salers表中的女銷售人員的數(shù)據(jù)插入到表中的女銷售人員的數(shù)據(jù)插入到employee表中。表中。 注意:v要插入數(shù)據(jù)的表dest_table_name必須是已經(jīng)存在的,不能向不存在的表中插入數(shù)

49、據(jù)。v要插入數(shù)據(jù)的表dest_table_name中的列和SELECT子句中的列的數(shù)量、順序必須相同,列的數(shù)據(jù)類型也要相同。 CREATE TABLE Employee(EmployeeID char(3),EmployeeName char(8),Address char(60)GO INSERT INTO EmployeeSELECT SaleID,SaleName,AddressFROM SalersWHERE Sex=女3.4.2 修改數(shù)據(jù)其語(yǔ)法形式為:其語(yǔ)法形式為:UPDATE table_nameSET column_name=expression ,n WHERE search_

50、conditions table_name:要更新數(shù)據(jù)的表名。要更新數(shù)據(jù)的表名。 column_name:要更新數(shù)據(jù)的列名。要更新數(shù)據(jù)的列名。 expression:更新后的數(shù)據(jù)值。更新后的數(shù)據(jù)值。 search_conditions:更新條件,只對(duì)表中滿更新條件,只對(duì)表中滿足該條件的記錄進(jìn)行更新。足該條件的記錄進(jìn)行更新。例例3-17 將將Products表中表中啤酒啤酒的價(jià)格改為的價(jià)格改為4元。元。UPDATE ProductsSET Price=4WHERE ProductName=啤酒啤酒例例3-18 將例將例3-12插入的一行數(shù)據(jù)中趙宇飛的地插入的一行數(shù)據(jù)中趙宇飛的地址改為址改為東直門

51、外大街東直門外大街108號(hào)號(hào),電話改為,電話改為(010)60486658。UPDATE SalersS E T A d d r e s s = 東 直 門 外 大 街東 直 門 外 大 街 1 0 8 號(hào)號(hào),Telephone=(010)60486658WHERE SaleID=s11例例3-19 將將Products表中表中CategoryID為為2的所有的所有產(chǎn)品的價(jià)格下調(diào)產(chǎn)品的價(jià)格下調(diào)10。UPDATE ProductsSET Price=Price*(1-0.1)WHERE CategoryID=2注意:使用UPDATE語(yǔ)句可以一次修改一行數(shù)據(jù),也可以一次修改多行數(shù)據(jù),甚至?xí)r整張表的

52、數(shù)據(jù)。但是無(wú)論那種修改,都要求修改前后的數(shù)據(jù)類型和數(shù)據(jù)個(gè)數(shù)相同。3.4.3 刪除數(shù)據(jù)刪除表中數(shù)據(jù)使用的是刪除表中數(shù)據(jù)使用的是DELETE語(yǔ)句,其語(yǔ)法形語(yǔ)句,其語(yǔ)法形式為:式為:DELETE FROM table_name WHERE search_conditions功能:刪除表中符合功能:刪除表中符合search_conditions的數(shù)據(jù);的數(shù)據(jù);缺省缺省WHERE子句時(shí),表示刪除表中所有數(shù)據(jù)。子句時(shí),表示刪除表中所有數(shù)據(jù)。例例3-20 將例將例3-12插入的數(shù)據(jù)從插入的數(shù)據(jù)從salers表中刪除。表中刪除。DELETE FROM SalersWHERE SaleID=s113.4.4 在

53、企業(yè)管理器下插入、更新、刪除表中數(shù)據(jù) 在企業(yè)管理器下同樣可以完成插入、更新和刪除在企業(yè)管理器下同樣可以完成插入、更新和刪除數(shù)據(jù)的操作。數(shù)據(jù)的操作。 只需進(jìn)入企業(yè)管理器,選中要進(jìn)行插入、更新只需進(jìn)入企業(yè)管理器,選中要進(jìn)行插入、更新或刪除數(shù)據(jù)操作的表,單擊右鍵,彈出的快捷菜單,或刪除數(shù)據(jù)操作的表,單擊右鍵,彈出的快捷菜單,將鼠標(biāo)指向?qū)⑹髽?biāo)指向“打開表打開表”命令,選擇級(jí)聯(lián)子菜單中的命令,選擇級(jí)聯(lián)子菜單中的“所有行所有行”命令,系統(tǒng)會(huì)彈出數(shù)據(jù)記錄窗口命令,系統(tǒng)會(huì)彈出數(shù)據(jù)記錄窗口,在該,在該窗口中就可完成插入、更新和刪除操作。窗口中就可完成插入、更新和刪除操作。3.5 約束約束 約束定義了必須遵循的用

54、于維護(hù)數(shù)據(jù)一致性和約束定義了必須遵循的用于維護(hù)數(shù)據(jù)一致性和正確性的規(guī)則,是強(qiáng)制實(shí)現(xiàn)數(shù)據(jù)完整性的主要途徑。正確性的規(guī)則,是強(qiáng)制實(shí)現(xiàn)數(shù)據(jù)完整性的主要途徑。約束有約束有5種類型,包括:主鍵約束、唯一性約束、種類型,包括:主鍵約束、唯一性約束、檢查約束、默認(rèn)約束、外鍵約束(參照約束)。檢查約束、默認(rèn)約束、外鍵約束(參照約束)。 約束可以在兩個(gè)層次上實(shí)施:約束可以在兩個(gè)層次上實(shí)施: 列級(jí):用戶定義的約束只對(duì)表中的一列起作用;表級(jí):用戶定義的約束對(duì)表中的多列起作用。 1 1約束的創(chuàng)建、修改約束的創(chuàng)建、修改 (1)使用)使用CREATE TABLE語(yǔ)句創(chuàng)建約束語(yǔ)句創(chuàng)建約束 使用使用CREATE TABLE語(yǔ)

55、句創(chuàng)建約束是在創(chuàng)語(yǔ)句創(chuàng)建約束是在創(chuàng)建表時(shí)定義約束,約束是表格定義的一部分。其建表時(shí)定義約束,約束是表格定義的一部分。其語(yǔ)法形式為:語(yǔ)法形式為:CREATE TABLE table_name( column_name data_type CONSTRAINT constraint_name constraint_type ,n ) constraint_name:要?jiǎng)?chuàng)建的約束的名字。若要?jiǎng)?chuàng)建的約束的名字。若缺省約束名,則缺省約束名,則SQL Server會(huì)自動(dòng)為約束提供一會(huì)自動(dòng)為約束提供一個(gè)名字。個(gè)名字。 constraint_type:要?jiǎng)?chuàng)建的約束類型。要?jiǎng)?chuàng)建的約束類型。 (2)使用)使用AL

56、TER TABLE語(yǔ)句創(chuàng)建約束語(yǔ)句創(chuàng)建約束 在已有的表上創(chuàng)建、修改約束可以使用在已有的表上創(chuàng)建、修改約束可以使用ALTER TABLE命令。其語(yǔ)法形式為:命令。其語(yǔ)法形式為:ALTER TABLE table_name WITH CHECK | WITH NOCHECK ADD CONSTRAINT constraint_name constraint_type WITH CHECK | WITH NOCHECK:新加入的約束對(duì)新加入的約束對(duì)表中現(xiàn)有的數(shù)據(jù)是否進(jìn)行檢查。表中現(xiàn)有的數(shù)據(jù)是否進(jìn)行檢查。 2 2約束的刪除約束的刪除 語(yǔ)法形式為:語(yǔ)法形式為:ALTER TABLE table_name

57、 DROP CONSTRAINT constraint_name3.5.1 主鍵約束(PRIMARY KEY) 主鍵用于唯一地標(biāo)識(shí)表中每一條記錄。我們主鍵用于唯一地標(biāo)識(shí)表中每一條記錄。我們可以定義表中的一列或多列為主鍵,則主鍵列上可以定義表中的一列或多列為主鍵,則主鍵列上沒有兩行具有相同值,也不能為空值。沒有兩行具有相同值,也不能為空值。 1 1使用使用T-SQLT-SQL語(yǔ)句創(chuàng)建主鍵約束語(yǔ)句創(chuàng)建主鍵約束 創(chuàng)建主鍵約束的語(yǔ)法形式:創(chuàng)建主鍵約束的語(yǔ)法形式: CONSTRAINT constraint_name PRIMARY KEY CLUSTERED | NONCLUSTERED ( col_

58、name ,n)例例3-21 創(chuàng)建創(chuàng)建Orders表,包括表,包括OrderID、CustomerID、SaleID和和OrderDate四個(gè)字段,其中四個(gè)字段,其中OrderID字段設(shè)為主鍵。字段設(shè)為主鍵。CREATE TABLE Orders(OrderID int CONSTRAINT pk_orderid PRIMARY KEY, CustomerID char(3), SaleID char(3), OrderDate datetime)或或 CREATE TABLE Orders ( OrderID int PRIMARY KEY, CustomerID char(3), Sale

59、ID char(3), OrderDate datetime) 例例3-21 已有已有Salers表,包含表,包含SaleID、SaleName、Sex等字段,將該表中等字段,將該表中SaleID字段字段設(shè)為主鍵。設(shè)為主鍵。注意:即使在創(chuàng)建主鍵約束時(shí)帶有WITH NOCHECK選項(xiàng),系統(tǒng)總要對(duì)現(xiàn)存數(shù)據(jù)進(jìn)行檢查,若現(xiàn)有數(shù)據(jù)在該列上出現(xiàn)重復(fù)或空值,SQL Server會(huì)提示錯(cuò)誤信息,并拒絕執(zhí)行創(chuàng)建主鍵約束操作。 ALTER TABLE Salers ADD CONSTRAINT pk_saleid PRIMARY KEY(Saleid)例3-22 OrderDetails表包含OrderID、Pr

60、oductID和Quantity三個(gè)字段,在OrderID和ProductID上創(chuàng)建主鍵。ALTER TABLE OrderDetailsADD CONSTRAINT pk_order_product PRIMARY KEY(orderid,productid) 主鍵約束定義在不止一列上時(shí),一列中的值可以重復(fù),但主鍵約束定義中的所有列的組合值必須唯一。 例例3-23 刪除例刪除例3-21中創(chuàng)建的主鍵約束。中創(chuàng)建的主鍵約束。ALTER TABLE SalersDROP CONSTRAINT pk_saleid 2使用企業(yè)管理器創(chuàng)建主鍵約束使用企業(yè)管理器創(chuàng)建主鍵約束 在企業(yè)管理器下也可創(chuàng)建、修改、

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論