第4章 數(shù)據(jù)表的管理_第1頁(yè)
第4章 數(shù)據(jù)表的管理_第2頁(yè)
第4章 數(shù)據(jù)表的管理_第3頁(yè)
第4章 數(shù)據(jù)表的管理_第4頁(yè)
第4章 數(shù)據(jù)表的管理_第5頁(yè)
已閱讀5頁(yè),還剩56頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、An Introduction to Database Systems1/80第第4章章 數(shù)據(jù)表的管理數(shù)據(jù)表的管理 4.1 SQL Server 表概述表概述 4.2 數(shù)據(jù)表的創(chuàng)建數(shù)據(jù)表的創(chuàng)建 4.3 數(shù)據(jù)表的修改數(shù)據(jù)表的修改 4.5 數(shù)據(jù)表的刪除數(shù)據(jù)表的刪除 4.5 管理表中數(shù)據(jù)管理表中數(shù)據(jù) 4.6 C# 操作數(shù)據(jù)表操作數(shù)據(jù)表 An Introduction to Database Systems2/674.1 SQL Server 表概述表概述 4.1.1 數(shù)據(jù)表的基本概念 數(shù)據(jù)庫(kù)是保存數(shù)據(jù)的集合,其目的在于存儲(chǔ)和返回?cái)?shù)據(jù)。如果沒(méi)有數(shù)據(jù)庫(kù)的表所提供的結(jié)構(gòu),這些任務(wù)是不可能完成的。數(shù)據(jù)庫(kù)中包

2、含一個(gè)或多個(gè)表,表是數(shù)據(jù)庫(kù)的基本構(gòu)造塊。同時(shí),表是數(shù)據(jù)的集合,是用來(lái)存儲(chǔ)數(shù)據(jù)和操作數(shù)據(jù)的邏輯結(jié)構(gòu)。表是由行和列所構(gòu)成,行被稱為記錄,是組織數(shù)據(jù)的單位;列被稱為字段,每一列表示記錄的一個(gè)屬性。在SQL Server 2008中,數(shù)據(jù)表分為普通表、分區(qū)表、臨時(shí)表和系統(tǒng)表四種,分別介紹如下。An Introduction to Database Systems3/674.1 SQL Server 表概述表概述 4.1.2數(shù)據(jù)類(lèi)型 在數(shù)據(jù)表中的每一個(gè)數(shù)據(jù)列都會(huì)有特定的屬性,而這些屬性中最重要的就是數(shù)據(jù)類(lèi)型(Data Type),數(shù)據(jù)類(lèi)型是用來(lái)定義儲(chǔ)存在數(shù)據(jù)列中的數(shù)據(jù),其限制了一個(gè)列中可以存儲(chǔ)的數(shù)據(jù)的類(lèi)

3、型,在某些情況下甚至限制了該列中的可能值的取值范圍。在SQL Server中,數(shù)據(jù)類(lèi)型可以是系統(tǒng)提供的數(shù)據(jù)類(lèi)型,也可以是用戶自定義的數(shù)據(jù)類(lèi)型 An Introduction to Database Systems4/674.1 SQL Server 表概述表概述 1系統(tǒng)數(shù)據(jù)類(lèi)型 SQL Server系統(tǒng)數(shù)據(jù)類(lèi)型有7類(lèi),如表4.1所示。表 4.1 SQL Server系統(tǒng)數(shù)據(jù)類(lèi)型 An Introduction to Database Systems5/67 4.1 SQL Server 表概述表概述 An Introduction to Database Systems6/67 在表中創(chuàng)建列時(shí)

4、,必須為其指定數(shù)據(jù)類(lèi)型,列的數(shù)據(jù)類(lèi)型決定了數(shù)據(jù)的取值、范圍和存儲(chǔ)格式。列的數(shù)據(jù)類(lèi)型可以是SQL Server提供的系統(tǒng)數(shù)據(jù)類(lèi)型,也可以是用戶定義數(shù)據(jù)類(lèi)型。SQL Server 提供了豐富的系統(tǒng)數(shù)據(jù)類(lèi)型,如表4.2所示 4.1 SQL Server 表概述表概述 An Introduction to Database Systems7/674.1 SQL Server 表概述表概述 An Introduction to Database Systems8/67簡(jiǎn)要說(shuō)明系統(tǒng)數(shù)據(jù)類(lèi)型(1)整數(shù)型。整數(shù)型數(shù)據(jù)包括bigint ,int,smallint,tinyint和bit,它們的表示數(shù)據(jù)范圍依次逐

5、漸縮小。 bigint :大整數(shù),范圍為-263 (-9,223,372,036,854,775,808) 到 263-1 (9,223,372,036,854,775,807) ,精度為19,小數(shù)位數(shù)為0,長(zhǎng)度為8字節(jié)。 int:整數(shù),范圍為:-231 (-2,147,483,648) 到 231-1 (2,147,483,647) ,精度為10,小數(shù)位數(shù)為0,長(zhǎng)度為4字節(jié)。 smallint:短整數(shù),范圍為:-215 (-32,768) 到 215-1 (32,767) ,精度為5,小數(shù)位數(shù)為0,長(zhǎng)度為2字節(jié)。 tinyint:微短整數(shù),范圍為:0到255,精度為3,小數(shù)位數(shù)為0,長(zhǎng)度為1

6、字節(jié)。 bit:位型,相當(dāng)于其他語(yǔ)言中的邏輯型數(shù)據(jù),長(zhǎng)度為1字節(jié)。bit 可以取值為 1、0 或 NULL 的整數(shù)數(shù)據(jù)類(lèi)型。字符串值 TRUE 和 FALSE 可以轉(zhuǎn)換為以下 bit 值:TRUE 轉(zhuǎn)換為 1,F(xiàn)ALSE 轉(zhuǎn)換為 0。 4.1 SQL Server 表概述表概述 An Introduction to Database Systems9/67(2)精確數(shù)值型。 decimal (p , s ) 和 numeric (p , s ) 兩者都是固定精度和小數(shù)位數(shù)。使用最大精度時(shí),有效值從 - 1038 +1 到 1038 - 1。numeric 在功能上等價(jià)于 decimal。p(精

7、度)最多可以存儲(chǔ)的十進(jìn)制數(shù)字的總位數(shù),包括小數(shù)點(diǎn)左邊和右邊的位數(shù)。該精度必須是從 1 到最大精度 38 之間的值。默認(rèn)精度為18。s(小數(shù)位數(shù))小數(shù)點(diǎn)右邊可以存儲(chǔ)的十進(jìn)制數(shù)字的最大位數(shù)。 money和smallmoney,兩者代表貨幣或貨幣值的數(shù)據(jù)類(lèi)型。數(shù)據(jù)類(lèi)型范圍分別為-922,337,203,685,477.5808到922,337,203,685,477.5807和-214,748.3648到 214,748.3647 ,存儲(chǔ)字節(jié)為8字節(jié)和4 字節(jié)。money 和 smallmoney 數(shù)據(jù)類(lèi)型精確到它們所代表的貨幣單位的萬(wàn)分之一。4.1 SQL Server 表概述表概述 An Int

8、roduction to Database Systems10/67(3)浮點(diǎn)型。float 和 real,兩者用于表示浮點(diǎn)數(shù)值數(shù)據(jù)的大致數(shù)值數(shù)據(jù)類(lèi)型。浮點(diǎn)數(shù)據(jù)為近似值;因此,并非數(shù)據(jù)類(lèi)型范圍內(nèi)的所有值都能精確地表示。 float ( n ) ,其中 n 為用于存儲(chǔ) float 數(shù)值尾數(shù)的位數(shù),以科學(xué)記數(shù)法表示,因此可以確定精度和存儲(chǔ)大小。如果指定了 n,則它必須是介于 1 和 53 之間的某個(gè)值。n 的默認(rèn)值為 53。float數(shù)據(jù)類(lèi)型范圍為:-1.79E + 308 至 -2.23E - 308、0 以及 2.23E - 308 至 1.79E + 308 ,具體取決于 n 的值。floa

9、t 存儲(chǔ)長(zhǎng)度為4字節(jié)。 real數(shù)據(jù)類(lèi)型范圍為:-3.40E + 38 至 -1.18E - 38、0 以及 1.18E - 38 至 3.40E + 38 ,存儲(chǔ)精度為7位有效數(shù)字,存儲(chǔ)長(zhǎng)度為4字節(jié)。4.1 SQL Server 表概述表概述 An Introduction to Database Systems11/67(4)日期和時(shí)間型。datetime 和 smalldatetime 兩者用于表示某天的日期和時(shí)間的數(shù)據(jù)類(lèi)型。 datetime 類(lèi)型可以表示的日期范圍從1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和時(shí)間數(shù)據(jù),精確度為3%s(3.33ms 或0.0

10、0333s)。datetime用兩個(gè) 4 字節(jié)的整數(shù)存儲(chǔ),第一個(gè) 4 字節(jié)存儲(chǔ)“基礎(chǔ)日期”(即 1900 年 1 月 1 日)之前或之后的天數(shù)?;A(chǔ)日期是系統(tǒng)參照日期。另外一個(gè) 4 字節(jié)存儲(chǔ)天的時(shí)間 smalldatetime類(lèi)型可以表示的日期范圍從 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和時(shí)間數(shù)據(jù),數(shù)據(jù)精確到分鐘。smalldatetime 數(shù)據(jù)類(lèi)型存儲(chǔ)天的日期和時(shí)間,但精確度低于 datetime。數(shù)據(jù)庫(kù)引擎將smalldatetime值存儲(chǔ)為兩個(gè)2字節(jié)的整數(shù)。第一個(gè)2字節(jié)存儲(chǔ)1900年1月 1 日后的天數(shù)。另外一個(gè) 2 字節(jié)存儲(chǔ)午夜后經(jīng)過(guò)的分鐘數(shù)。4.1 SQ

11、L Server 表概述表概述 An Introduction to Database Systems12/67(5)字符串型。 char ( n ) 可以存儲(chǔ)字母數(shù)字值,固定長(zhǎng)度,非 Unicode 字符數(shù)據(jù),長(zhǎng)度為 n 個(gè)字節(jié)。n 的取值范圍為 1 至 8,000,存儲(chǔ)大小是 n 個(gè)字節(jié)。如果未在數(shù)據(jù)定義或變量聲明語(yǔ)句中指定 n,則默認(rèn)長(zhǎng)度為 1。如果在使用 CAST 和 CONVERT 函數(shù)時(shí)未指定 n,則默認(rèn)長(zhǎng)度為 30。 varchar ( n | max ) 可以存儲(chǔ)字母數(shù)字值,可變長(zhǎng)度,非 Unicode 字符數(shù)據(jù)。n 的取值范圍為 1 至 8,000。max 指示最大存儲(chǔ)大小是

12、 231-1 個(gè)字節(jié)。存儲(chǔ)大小是輸入數(shù)據(jù)的實(shí)際長(zhǎng)度加 2 個(gè)字節(jié)。所輸入數(shù)據(jù)的長(zhǎng)度可以為 0 個(gè)字符。如果未在數(shù)據(jù)定義或變量聲明語(yǔ)句中指定 n,則默認(rèn)長(zhǎng)度為 1。如果在使用 CAST 和 CONVERT 函數(shù)時(shí)未指定 n,則默認(rèn)長(zhǎng)度為 30。 text服務(wù)器代碼頁(yè)中長(zhǎng)度可變的非 Unicode 數(shù)據(jù),最大長(zhǎng)度為 231-1 (2,147,483,647) 個(gè)字符。當(dāng)服務(wù)器代碼頁(yè)使用雙字節(jié)字符時(shí),存儲(chǔ)仍是 2,147,483,647 字節(jié)。根據(jù)字符串,存儲(chǔ)大小可能小于 2,147,483,647 字節(jié)。 4.1 SQL Server 表概述表概述 An Introduction to Datab

13、ase Systems13/67(6)Unicode字符串型 nchar ( n ) ,n 個(gè)字符的固定長(zhǎng)度的 Unicode 字符數(shù)據(jù)。n 值必須在 1 到 4,000 之間(含)。存儲(chǔ)大小為兩倍 n 字節(jié)。如果沒(méi)有在數(shù)據(jù)定義或變量聲明語(yǔ)句中指定 n,則默認(rèn)長(zhǎng)度為 1。如果沒(méi)有使用 CAST 函數(shù)指定 n,則默認(rèn)長(zhǎng)度為 30。 nvarchar ( n | max ) ,可變長(zhǎng)度 Unicode 字符數(shù)據(jù)。n 值在 1 到 4,000 之間(含)。max 指示最大存儲(chǔ)大小為 231-1 字節(jié)。存儲(chǔ)大小是所輸入字符個(gè)數(shù)的兩倍 + 2 個(gè)字節(jié)。所輸入數(shù)據(jù)的長(zhǎng)度可以為 0 個(gè)字符。如果沒(méi)有在數(shù)據(jù)定

14、義或變量聲明語(yǔ)句中指定 n,則默認(rèn)長(zhǎng)度為 1。如果沒(méi)有使用 CAST 函數(shù)指定 n,則默認(rèn)長(zhǎng)度為 30。 ntext是長(zhǎng)度可變的 Unicode 數(shù)據(jù),最大長(zhǎng)度為 230 - 1 (1,073,741,823) 個(gè)字符。存儲(chǔ)大小是所輸入字符個(gè)數(shù)的兩倍(以字節(jié)為單位)。 4.1 SQL Server 表概述表概述 An Introduction to Database Systems14/67(7)二進(jìn)制字符串型。 binary ( n ) ,是固定長(zhǎng)度的 Binary 數(shù)據(jù)類(lèi)型。長(zhǎng)度為 n 字節(jié)的固定長(zhǎng)度二進(jìn)制數(shù)據(jù),其中 n 是從 1 到 8,000 的值。存儲(chǔ)大小為 n 字節(jié)。如果未在數(shù)據(jù)定

15、義或變量聲明語(yǔ)句中指定 n,則默認(rèn)長(zhǎng)度為 1。 varbinary ( n | max ) ,是可變長(zhǎng)度的 Binary 數(shù)據(jù)類(lèi)型。varbinary ( n | max ) 可變長(zhǎng)度二進(jìn)制數(shù)據(jù)。n 可以取從 1 到 8,000 的值。max 指示最大的存儲(chǔ)大小為 231-1 字節(jié)。存儲(chǔ)大小為所輸入數(shù)據(jù)的實(shí)際長(zhǎng)度 + 2 個(gè)字節(jié)。所輸入數(shù)據(jù)的長(zhǎng)度可以是 0 字節(jié)。如果未在數(shù)據(jù)定義或變量聲明語(yǔ)句中指定 n,則默認(rèn)長(zhǎng)度為 1。 image長(zhǎng)度可變的二進(jìn)制數(shù)據(jù),從 0 到 231-1 (2,147,483,647) 個(gè)字節(jié)。 4.1 SQL Server 表概述表概述 An Introduction

16、 to Database Systems15/67(8)時(shí)間戳型。若創(chuàng)建表時(shí)定義一個(gè)列的數(shù)據(jù)類(lèi)型為時(shí)間戳類(lèi)型,那么每當(dāng)對(duì)該表加入新行或修改已有行時(shí),都由系統(tǒng)將一個(gè)計(jì)數(shù)器值加到該列,即將原來(lái)的時(shí)間戳值加上一個(gè)增量。記錄timestamp列的值實(shí)際上反映了系統(tǒng)對(duì)該記錄修改的相對(duì)(相對(duì)于其他記錄)順序。一個(gè)表只能有一個(gè)timestamp列。Timestamp類(lèi)型數(shù)據(jù)的值實(shí)際上是二進(jìn)制格式數(shù)據(jù),其長(zhǎng)度為8字節(jié)。 (9)其他數(shù)據(jù)類(lèi)型。 4.1 SQL Server 表概述表概述 An Introduction to Database Systems16/67 2用戶自定義數(shù)據(jù)類(lèi)型 在系統(tǒng)數(shù)據(jù)類(lèi)型的基礎(chǔ)上

17、,用戶可以根據(jù)需要定制數(shù)據(jù),稱之為用戶自定義數(shù)據(jù)類(lèi)型。當(dāng)用戶自定義數(shù)據(jù)類(lèi)型時(shí),需要指定該類(lèi)型的名稱、建立在其上的系統(tǒng)數(shù)據(jù)類(lèi)型以及是否允許空值(NULL)等特性。這里的用戶自定義數(shù)據(jù)類(lèi)型并不是指用戶真正創(chuàng)建了一個(gè)系統(tǒng)未有全新類(lèi)型,而是相當(dāng)于為某個(gè)系統(tǒng)數(shù)據(jù)類(lèi)型起一個(gè)別名。 4.1 SQL Server 表概述表概述 An Introduction to Database Systems17/67(1)利用對(duì)象資源管理器創(chuàng)建用戶自定義數(shù)據(jù)類(lèi)型 使用“Windows身份驗(yàn)證”連接到數(shù)據(jù)庫(kù)實(shí)例。 展開(kāi)需要?jiǎng)?chuàng)建用戶自定義數(shù)據(jù)類(lèi)型的數(shù)據(jù)庫(kù),選擇“可編程性”|“類(lèi)型”,單擊鼠標(biāo)右鍵,然后從彈出的快捷菜單中選擇

18、“新建”|“用戶定義數(shù)據(jù)類(lèi)型”命令,打開(kāi)“新建用戶定義數(shù)據(jù)類(lèi)型”對(duì)話框,如圖4-1所示。 在“新建用戶定義數(shù)據(jù)類(lèi)型”對(duì)話框中,可以定義類(lèi)型的架構(gòu)、名稱、數(shù)據(jù)類(lèi)型、精度、允許為空值等。 完成設(shè)置后,單擊“確定”按鈕,創(chuàng)建用戶自定義數(shù)據(jù)類(lèi)型。4.1 SQL Server 表概述表概述 An Introduction to Database Systems18/67(2)T-SQL語(yǔ)句創(chuàng)建用戶自定義數(shù)據(jù)類(lèi)型 使用CREATE TYPE來(lái)執(zhí)行創(chuàng)建用戶自定義數(shù)據(jù)類(lèi)型的操作,其語(yǔ)法格式如下: CREATE TYPE type_name FROM base_type ( precision , scale

19、) NULL | NOT NULL ; 4.1 SQL Server 表概述表概述 An Introduction to Database Systems19/674.2 數(shù)據(jù)表的創(chuàng)建數(shù)據(jù)表的創(chuàng)建 4.2.1利用表設(shè)計(jì)器創(chuàng)建數(shù)據(jù)表利用表設(shè)計(jì)器創(chuàng)建數(shù)據(jù)表 具體操作步驟如下:(1)打開(kāi)SQL Server Management Studio窗口,打開(kāi)“數(shù)據(jù)庫(kù)”文件夾。(2)在打開(kāi)的“教學(xué)管理數(shù)據(jù)庫(kù)”文件夾中“表”選項(xiàng)上面右擊鼠標(biāo),選擇“新建表”命令,打開(kāi)表設(shè)計(jì)窗口。(3)在“列名”欄中依次輸入表的字段名,并設(shè)置每個(gè)字段的數(shù)據(jù)類(lèi)型和長(zhǎng)度等屬性。輸入完成后的“教師任課信息表”如圖4-2所示。 An I

20、ntroduction to Database Systems20/67圖4-2 創(chuàng)建表 4.2 數(shù)據(jù)表的創(chuàng)建數(shù)據(jù)表的創(chuàng)建 An Introduction to Database Systems21/67(4)設(shè)置主鍵。例如“教師任課信息表”的主鍵應(yīng)該為“序號(hào)”字段。在“序號(hào)”字段上右擊鼠標(biāo),然后選擇“設(shè)置主鍵”命令,即可將“序號(hào)”字段設(shè)置為主鍵。此時(shí),該字段前面會(huì)出現(xiàn)一個(gè)鑰匙圖標(biāo),如圖4-3所示。讀者實(shí)際操作過(guò)程中,應(yīng)養(yǎng)成為每個(gè)表創(chuàng)建主鍵的良好習(xí)慣。 注意:如果要將多個(gè)字段設(shè)置為主鍵,可按住Ctrl鍵,單擊每個(gè)字段前面的按鈕來(lái)選擇多個(gè)字段,然后再依照上述方法設(shè)置主鍵。4.2 數(shù)據(jù)表的創(chuàng)建數(shù)據(jù)

21、表的創(chuàng)建 An Introduction to Database Systems22/67圖4-3 設(shè)置主鍵 4.2 數(shù)據(jù)表的創(chuàng)建數(shù)據(jù)表的創(chuàng)建 An Introduction to Database Systems23/67(5)由于“序號(hào)”列為自動(dòng)編號(hào),所以需要設(shè)置列屬性中的“標(biāo)識(shí)規(guī)范”,將“是標(biāo)識(shí)”設(shè)置為“是”(默認(rèn)為“否”),“標(biāo)識(shí)增量”保持不變(標(biāo)識(shí)增量的含義為每次自動(dòng)增長(zhǎng)的步長(zhǎng)大?。?,其他屬性保持默認(rèn)。(6)表字段設(shè)置完成后,單擊工具欄上的“保存”按鈕,打開(kāi)“選擇名稱”對(duì)話框,輸入“教師任課信息表”,如圖4-4所示。(7)單擊“確定”按鈕,即可創(chuàng)建該表。 4.2 數(shù)據(jù)表的創(chuàng)建數(shù)據(jù)表的

22、創(chuàng)建 An Introduction to Database Systems24/67圖4-4 保存“教師任課信息表” 4.2 數(shù)據(jù)表的創(chuàng)建數(shù)據(jù)表的創(chuàng)建 An Introduction to Database Systems25/67 4.2.2利用T-SQL語(yǔ)句創(chuàng)建數(shù)據(jù)表 SQL Server提供了CREATE TABLE語(yǔ)法創(chuàng)建表,相比使用SQL Server Management Studio建立表而言,這種方式更加靈活。CREATE TABLE語(yǔ)句的語(yǔ)法格式如下:4.2 數(shù)據(jù)表的創(chuàng)建數(shù)據(jù)表的創(chuàng)建 An Introduction to Database Systems26/67CREAT

23、E TABLE database_name . schema_name . | schema_name . table_name ( /*列的定義*/| /*定義計(jì)算列,該列由同一表中的其他列通過(guò)表達(dá)式計(jì) 算得到*/ ,.n /*指定表的約束*/) ON filegroup |“default” /*指定存儲(chǔ)表的文件組*/ TEXTIMAGE_ON filegroup |“default” ; := column_name NULL | NOT NULL /*指定列名,類(lèi)型*/ CONSTRAINT constraint_name DEFAULT constant_expression /*指

24、定列的約束*/ | IDENTITY ( seed ,increment ) NOT FOR REPLICATION /*指示新列是標(biāo)識(shí)列*/ ROWGUIDCOL .n /*指示新列是全局標(biāo)識(shí)符列*/4.2 數(shù)據(jù)表的創(chuàng)建數(shù)據(jù)表的創(chuàng)建 An Introduction to Database Systems27/67【例題4-3】用Transact-SQL語(yǔ)句創(chuàng)建“教師任課信息表”。 USE 教學(xué)管理數(shù)據(jù)庫(kù)CREATE TABLE 教師任課信息表 (序號(hào) INT IDENTITY(1,1) PRIMARY KEY,課程號(hào) NVARCHAR(3) NOT NULL,職工號(hào) NVARCHAR(10)

25、 NOT NULL )An Introduction to Database Systems28/67【例題4-4】創(chuàng)建“學(xué)生基本信息表”,并為表指定文件組。 USE 教學(xué)管理數(shù)據(jù)庫(kù) CREATE TABLE 學(xué)生基本信息表 ( 學(xué)號(hào) NVARCHAR(10) PRIMARY KEY, 姓名 NVARCHAR(8) NOT NULL, 性別 NVARCHAR(1) NOT NULL, 年齡 INT NOT NULL, 出生地點(diǎn) NVARCHAR(20) , 專(zhuān)業(yè) NVARCHAR(20) ) ON PRIMARYAn Introduction to Database Systems29/67

26、ON PRIMARY表示表建立在主文件組上,如果沒(méi)有指定默認(rèn)文件組,則主文件組就是默認(rèn)文件組,ON PRIMARY也可以省略。SQL Server數(shù)據(jù)庫(kù)允許將多個(gè)數(shù)據(jù)庫(kù)文件組成一個(gè)文件組進(jìn)行整體管理,文件組能夠控制各個(gè)文件的存放位置,其中每個(gè)文件常建立在不同驅(qū)動(dòng)器上,這樣可以減輕每個(gè)磁盤(pán)驅(qū)動(dòng)器的存儲(chǔ)壓力,提高數(shù)據(jù)庫(kù)的存儲(chǔ)效率,從而達(dá)到提高系統(tǒng)性能的目的。 An Introduction to Database Systems30/67【例題4-5】創(chuàng)建具有約束規(guī)則和默認(rèn)值字段的“教師基本信息表”數(shù)據(jù)表。 USE 教學(xué)管理數(shù)據(jù)庫(kù) CREATE TABLE 教師基本信息表 (職工號(hào) NVARCHA

27、R(10) PRIMARY KEY,姓名 NVARCHAR(8) NOT NULL,性別 NVARCHAR(1) CHECK(性別 IN(男, 女) DEFAULT 男,年齡 INT NOT NULL,工作日期 DATETIME NOT NULL,職稱 NVARCHAR(10),電子信箱 NVARCHAR(50),婚姻狀況 BIT )An Introduction to Database Systems31/67【例題4-6】在“教學(xué)管理數(shù)據(jù)庫(kù)”中創(chuàng)建臨時(shí)表“students”。 USE 教學(xué)管理數(shù)據(jù)庫(kù) CREATE TABLE #students ( 學(xué)號(hào) NVARCHAR(10), 姓名

28、NVARCHAR(8), 性別 BIT, 班級(jí) NVARCHAR(20) )An Introduction to Database Systems32/674.3 數(shù)據(jù)表的修改數(shù)據(jù)表的修改 4.3.1利用表設(shè)計(jì)器修改數(shù)據(jù)表 表的修改和表的創(chuàng)建一樣,可以通過(guò)SQL Server Management Studio中的表設(shè)計(jì)器對(duì)數(shù)據(jù)表進(jìn)行修改。對(duì)已存在的表可以進(jìn)行如下方式的修改: 1更改表名 2增加、刪除列 3修改已有列的屬性 An Introduction to Database Systems33/674.3.2利用T-SQL語(yǔ)句修改數(shù)據(jù)表 修改數(shù)據(jù)表的語(yǔ)法格式如下:ALTER TABLE t

29、able_name ALTER COLUMN column_name /*修改已有列的屬 性*/ new data type ( precision ,scale ) NULL | NOT NULL /*表示指定字段是否允許為空值*/| ADD /*增加新列*/ ,n | DROP /* 刪除列*/ CONSTRAINT constraint_name | COLUMN column_name ,n 4.3 數(shù)據(jù)表的修改數(shù)據(jù)表的修改 An Introduction to Database Systems34/67【例題4-9】修改“學(xué)生課程信息表”,在原有基礎(chǔ)上添加一個(gè)“授課地點(diǎn)”字段。 US

30、E 教學(xué)管理數(shù)據(jù)庫(kù) ALTER TABLE 學(xué)生課程信息表 ADD 授課地點(diǎn) varchar(20) NULL 代碼執(zhí)行以后,在“學(xué)生課程信息表”中成功添加一個(gè)“授課地點(diǎn)”字段。在SQL Server Management Studio中查看“學(xué)生課程信息表”的結(jié)構(gòu),如圖4-10所示。 An Introduction to Database Systems35/67圖4-10 添加到數(shù)據(jù)表結(jié)構(gòu)中的新字段 4.3 數(shù)據(jù)表的修改數(shù)據(jù)表的修改 An Introduction to Database Systems36/67【例題4-10】刪除“學(xué)生課程信息表”中的“授課地點(diǎn)”字段。 USE 教學(xué)管理

31、數(shù)據(jù)庫(kù) ALTER TABLE 學(xué)生課程信息表 DROP COLUMN 授課地點(diǎn) 注意:在刪除一個(gè)字段之前,必須先刪除基于該字段的所有索引和約束。數(shù)據(jù)表中的字段被刪除后,將不能再恢復(fù)。因此,在刪除數(shù)據(jù)表中的字段時(shí)一定要慎重。 An Introduction to Database Systems37/67【例題4-11】將“學(xué)生課程信息表”的列“課程名稱”改為nvarchar(50)數(shù)據(jù)類(lèi)型,并且不允許為空。 USE 教學(xué)管理數(shù)據(jù)庫(kù) ALTER TABLE 學(xué)生課程信息表 ALTER COLUMN 課程名稱 nvarchar(50) NOT NULL An Introduction to Da

32、tabase Systems38/674.4 數(shù)據(jù)表的刪除數(shù)據(jù)表的刪除 4.4.1利用對(duì)象資源管理器刪除數(shù)據(jù)表利用對(duì)象資源管理器刪除數(shù)據(jù)表具體操作步驟如下:(1)啟動(dòng)SQL Server Management Studio。(2)展開(kāi)SQL Server實(shí)例,選擇“教學(xué)管理數(shù)據(jù)庫(kù)”,打開(kāi)“表”對(duì)話框,右擊“教師基本信息表”,在彈出的快捷菜單中選擇“刪除”命令。 (3)在“刪除對(duì)象”對(duì)話框中,顯示出刪除對(duì)象的屬性信息,單擊“確定”按鈕。則選中的數(shù)據(jù)表將被刪除。 An Introduction to Database Systems39/674.4.2利用T-SQL語(yǔ)句刪除數(shù)據(jù)表 刪除數(shù)據(jù)表的語(yǔ)法

33、格式如下:DROP TABLE table_name ,n 其中,table_name為所要?jiǎng)h除的表的名稱。 【例題4-12】刪除學(xué)生成績(jī)表。 USE 教學(xué)管理數(shù)據(jù)庫(kù) DROP TABLE 學(xué)生成績(jī)表 注意:由于系統(tǒng)表保存著數(shù)據(jù)庫(kù)、數(shù)據(jù)表、數(shù)據(jù)表字段和屬性等重要信息,因此刪除表只能夠刪除用戶表,不能夠刪除系統(tǒng)表。刪除表一旦操作完成,表中數(shù)據(jù)也一并被刪除,而且是無(wú)法恢復(fù)的。 4.4 數(shù)據(jù)表的刪除數(shù)據(jù)表的刪除 An Introduction to Database Systems40/674.5 管理表中數(shù)據(jù)管理表中數(shù)據(jù) 創(chuàng)建表的目的在于利用表進(jìn)行數(shù)據(jù)的存儲(chǔ)和管理。對(duì)數(shù)據(jù)進(jìn)行管理的前提是數(shù)據(jù)的存儲(chǔ)

34、,即向表中添加數(shù)據(jù),沒(méi)有數(shù)據(jù)的表是沒(méi)有任何實(shí)際意義的;添加完成后,用戶也可以根據(jù)自己的需要對(duì)表中數(shù)據(jù)進(jìn)行修改和刪除。An Introduction to Database Systems41/674.5.1向表中插入數(shù)據(jù) 1利用對(duì)象資源管理器插入表數(shù)據(jù)(1) 啟動(dòng)SQL Server Management Studio。(2) 展開(kāi)SQL Server實(shí)例,選擇“表”(這里以“學(xué)生課程信息表”為例),單擊鼠標(biāo)右鍵,然后從彈出的快捷菜單中選擇“編輯前200行”命令。(3) 此時(shí)將顯示向數(shù)據(jù)表中插入數(shù)據(jù)記錄的數(shù)據(jù)編輯窗口。在該編輯窗口的編輯行中可以輸入數(shù)據(jù)信息 注意:在數(shù)據(jù)編輯窗口中編輯數(shù)據(jù)信息時(shí)

35、,SQL Server會(huì)自動(dòng)增加一個(gè)空行。在插入點(diǎn)沒(méi)有離開(kāi)本行的情況下,可以通過(guò)按Esc鍵取消插入數(shù)據(jù)的操作。 4.5 管理表中數(shù)據(jù)管理表中數(shù)據(jù) An Introduction to Database Systems42/674.5 管理表中數(shù)據(jù)管理表中數(shù)據(jù) 2利用T-SQL語(yǔ)句插入表數(shù)據(jù) 對(duì)表數(shù)據(jù)的插入還可以通過(guò)T-SQL語(yǔ)句來(lái)進(jìn)行,與界面操作表數(shù)據(jù)相比,通過(guò)T-SQL語(yǔ)句操作表數(shù)據(jù)更為靈活,功能更為強(qiáng)大 An Introduction to Database Systems43/67插入數(shù)據(jù)語(yǔ)法格式如下 INSERT INTO table_name | view_name /*表名或視圖名

36、*/ ( column_list ) /*列表*/ VALUES /*指定列值的子句*/ ( DEFAULT|NULL|expression,n ) /*列值的構(gòu)成形式*/ | derived_table /*結(jié)果集*/ | execute_statement /*有效的execute語(yǔ)句*/ | DEFAULT VALUES /*所有列均取默認(rèn)值*/4.5 管理表中數(shù)據(jù)管理表中數(shù)據(jù) An Introduction to Database Systems44/67參數(shù)說(shuō)明如下(1)view_name:視圖名。該視圖必須是可以更新的。(2)column_list:列表。該列表包含了新插入數(shù)據(jù)行的

37、各列的名稱。如果只對(duì)表的部分列插入數(shù)據(jù)時(shí),需要用column_list指出這些列。當(dāng)加入到表中的記錄的某些列為空值或?yàn)槟J(rèn)值時(shí),可以在INSERT語(yǔ)句中給出列表的省略。沒(méi)有在column_list中指出的列值,系統(tǒng)根據(jù)默認(rèn)值或列屬性自動(dòng)確定。 具有IDENTITY屬性的列,其值由系統(tǒng)根據(jù)seed和increment值自動(dòng)計(jì)算得到; 具有默認(rèn)值的列,其值為默認(rèn)值; 沒(méi)有默認(rèn)值的列,若允許為空值,則其值為空值;若不允許為空值,則提示出錯(cuò)。4.5 管理表中數(shù)據(jù)管理表中數(shù)據(jù) An Introduction to Database Systems45/67(3)VALUES子句:為column_list

38、列表中的各列指定值。若省略column_list,則VALUES子句給出每一列的值。VALUES子句中的值可以有以下三種。 DEFAULT:指定為該列的默認(rèn)值。這要求定義表時(shí)必須指定該列的默認(rèn)值; NULL:指定該列為空值; expression:可以是一個(gè)常量、變量或一個(gè)表達(dá)式,其值的數(shù)據(jù)類(lèi)型要與列的數(shù)據(jù)類(lèi)型一致。(4)derived_table:是一個(gè)由SELECT語(yǔ)句查詢所得到的結(jié)果集。利用該參數(shù),可以把一個(gè)表中的部分?jǐn)?shù)據(jù)插入到另一個(gè)表中。(5)DEFAULT VALUES:說(shuō)明向當(dāng)前表中所有列均插入其默認(rèn)值。此時(shí),要求所有列均定義了默認(rèn)值。4.5 管理表中數(shù)據(jù)管理表中數(shù)據(jù) An Int

39、roduction to Database Systems46/67【例題4-13】將一個(gè)新學(xué)生信息(學(xué)號(hào):D01;姓名:張梅;性別:女;年齡:18;出生地點(diǎn):河南鄭州;專(zhuān)業(yè):信息管理)插入到“學(xué)生基本信息表”中。 USE 教學(xué)管理數(shù)據(jù)庫(kù) INSERT INTO 學(xué)生基本信息表(學(xué)號(hào),姓名,性別,年齡,出生地點(diǎn),專(zhuān)業(yè)) VALUES(D01,張梅,女,18,河南鄭州,信息管理) 在INTO子句中指出了新增加的元組在哪些屬性上要賦值,屬性的順序可以與CREATE TABLE中的順序不一樣 。An Introduction to Database Systems47/67【例題4-14】將新學(xué)生信

40、息(學(xué)號(hào):D02;姓名:黃小鳴;性別:男;年齡:20;出生地點(diǎn):山東青島;專(zhuān)業(yè):信息管理)插入到“學(xué)生基本信息表”中。USE 教學(xué)管理數(shù)據(jù)庫(kù)INSERT INTO 學(xué)生基本信息表VALUES(D02,黃小鳴,男,20,山東青島,信息管理) 與例4-13不同的是在INTO子句中只指出了表名,并沒(méi)有指出列表名(屬性名),這表示新插入的元組要在表的所有列表上都指定值,列表的次序與CREATE TABLE中的次序相同。An Introduction to Database Systems48/67【例題4-15】插入一條張梅的選課記錄(D01, 101) USE 教學(xué)管理數(shù)據(jù)庫(kù) INSERT INTO

41、 學(xué)生成績(jī)表(學(xué)號(hào),課程號(hào)) VALUES(D01,101)SQL Server 將在新插入記錄的“成績(jī)”列上自動(dòng)賦空值。由于“學(xué)生成績(jī)表”中的“序號(hào)”列具有自動(dòng)增長(zhǎng)屬性,所以在插入數(shù)據(jù)時(shí)不需要賦值。還可以寫(xiě)成如下形式: USE 教學(xué)管理數(shù)據(jù)庫(kù) INSERT INTO 學(xué)生成績(jī)表 VALUES(D01,101,NULL) 因?yàn)闆](méi)有指出“學(xué)生成績(jī)表”的列表名,所以插入數(shù)據(jù)時(shí)在“成績(jī)”列上要明確給出空值。 An Introduction to Database Systems49/67【例題4-16】插入子查詢的結(jié)果。求學(xué)生選修課程的平均成績(jī),并存入數(shù)據(jù)庫(kù)中。結(jié)果如圖4-16所示。(1)在數(shù)據(jù)庫(kù)中

42、新建一個(gè)表,其中一列存放課程號(hào),另一列存放相應(yīng)的平均成績(jī)。 USE 教學(xué)管理數(shù)據(jù)庫(kù) CREATE TABLE 課程平均成績(jī) ( 課程號(hào) nvarchar(3), 平均成績(jī) float )An Introduction to Database Systems50/67(2)然后對(duì)學(xué)生成績(jī)表按“課程號(hào)”分組求平均成績(jī),再把課程號(hào)和平均成績(jī)插入新表中。USE 教學(xué)管理數(shù)據(jù)庫(kù)INSERT INTO課程平均成績(jī)(課程號(hào),平均成績(jī))SELECT 課程號(hào),AVG(成績(jī))FROM 學(xué)生成績(jī)表GROUP BY 課程號(hào)An Introduction to Database Systems51/674.5.2修改表中的數(shù)據(jù) 1利用對(duì)象資源管理器修改表數(shù)據(jù) 利用對(duì)象資源管理器修改表數(shù)據(jù),與插入表數(shù)據(jù)操作類(lèi)似。 4.5 管理表中數(shù)據(jù)管理表中數(shù)據(jù) An Introduction to Database Systems52/672利用T-SQL語(yǔ)句修改表數(shù)據(jù)修改表數(shù)據(jù)語(yǔ)法格式如下:UPDATE table_name|view_name SET /*賦予新值*/ column_name=expression|DEFAULT|NULL /*為列重新指定值*/ |

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論