SQL2000數(shù)據(jù)庫管理與標準應用教程_第1頁
SQL2000數(shù)據(jù)庫管理與標準應用教程_第2頁
SQL2000數(shù)據(jù)庫管理與標準應用教程_第3頁
SQL2000數(shù)據(jù)庫管理與標準應用教程_第4頁
SQL2000數(shù)據(jù)庫管理與標準應用教程_第5頁
已閱讀5頁,還剩138頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1.1 數(shù)據(jù)庫系統(tǒng)的概念 HYPERLINK 2007-04-07 12:11 史創(chuàng)明、王俊偉 清華大學出版社 HYPERLINK /php/feedbackt.php?id=44772 我要評論(0)摘要:在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)庫的使用既可以在程序中實現(xiàn),也可以在獨立的數(shù)據(jù)操作界面中實現(xiàn),比如在SQL Server數(shù)據(jù)庫系統(tǒng)中,我們既可以使用T-SQL語言操作數(shù)據(jù)庫,也可以使用SQL Server企業(yè)管理器實現(xiàn)對數(shù)據(jù)庫的操作和管理。 標簽: HYPERLINK /php/search.php?keyword=SQL t _blank SQL HYPERLINK /php/search.php?

2、keyword=SQL2000 t _blank SQL2000 HYPERLINK /php/search.php?keyword=%CE%A2%C8%ED t _blank 微軟 HYPERLINK /php/search.php?keyword=%CA%FD%BE%DD%BF%E2 t _blank 數(shù)據(jù)庫 HYPERLINK /exp/oow2010/baoming/ t _blank 限時報名參加“甲骨文全球大會2010北京”及“JavaOne和甲骨文開發(fā)者大會2010”計算機從誕生開始,就面臨著處理大量數(shù)據(jù)的任務。使用計算機以后,數(shù)據(jù)處理的速度和規(guī)模無論相對于手工方式還是機械方式都

3、是無可比擬的。隨著數(shù)據(jù)處理量的增長,產(chǎn)生了數(shù)據(jù)管理技術(shù)。數(shù)據(jù)管理技術(shù)經(jīng)歷了人工管理、文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)三個階段。人工管理方式固然效率低下,就是對于文件系統(tǒng)而言,也存在著數(shù)據(jù)冗余、數(shù)據(jù)不一致性和數(shù)據(jù)聯(lián)系薄弱等缺點。而數(shù)據(jù)庫系統(tǒng)克服了文件系統(tǒng)的缺點,提供了對數(shù)據(jù)更高級、更有效的管理手段。數(shù)據(jù)庫系統(tǒng)階段的數(shù)據(jù)管理技術(shù)有以下特點:“采用數(shù)據(jù)模型表示復雜的數(shù)據(jù)結(jié)構(gòu)。“有較高的數(shù)據(jù)獨立性?!皵?shù)據(jù)庫系統(tǒng)為用戶提供了方便的用戶接口。在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)庫的使用既可以在程序中實現(xiàn),也可以在獨立的數(shù)據(jù)操作界面中實現(xiàn),比如在SQL Server數(shù)據(jù)庫系統(tǒng)中,我們既可以使用T-SQL語言操作數(shù)據(jù)庫,也可以使用SQL

4、 Server企業(yè)管理器實現(xiàn)對數(shù)據(jù)庫的操作和管理。“增加了系統(tǒng)靈活性“數(shù)據(jù)庫系統(tǒng)提供了四方面的數(shù)據(jù)控制功能數(shù)據(jù)庫的并發(fā)控制、數(shù)據(jù)庫的恢復、數(shù)據(jù)完整性和數(shù)據(jù)安全性。數(shù)據(jù)庫技術(shù)是在操作系統(tǒng)的文件系統(tǒng)基礎(chǔ)上發(fā)展起來的,而且數(shù)據(jù)庫管理系統(tǒng)本身要在操作系統(tǒng)支持下才能工作。數(shù)據(jù)庫與數(shù)據(jù)結(jié)構(gòu)之間的聯(lián)系也很密切。數(shù)據(jù)庫管理系統(tǒng)(DataBase Management System,簡稱DBMS)是指數(shù)據(jù)庫系統(tǒng)中對數(shù)據(jù)進行管理的軟件系統(tǒng),它是數(shù)據(jù)庫系統(tǒng)的核心組成部分,我們對數(shù)據(jù)庫系統(tǒng)的一切操作,包括定義、查詢、更新以及各種控制,都是通過數(shù)據(jù)庫管理系統(tǒng)進行的。DBMS由兩大部分組成:查詢處理器和存儲管理器。查詢處

5、理器有四個組成部分:DDL編譯器、DML編譯器、嵌入式DML的預編譯器以及查詢運行核心程序;存儲管理器有四個主要組成部分:權(quán)限和完整性管理器、事務管理器、文件管理器以及緩沖區(qū)管理器。DBMS的工作示意圖如圖1-1所示。 圖1-1 DBMS的工作模式DBMS總是基于某種數(shù)據(jù)模型,根據(jù)DBMS的不同,DBMS可以分成層次型、網(wǎng)狀型、關(guān)系型、面向?qū)ο笮偷?。DBMS的工作模式如下:“接受應用程序的數(shù)據(jù)請求和處理請求?!皩⒂脩舻臄?shù)據(jù)請求(高級指令)轉(zhuǎn)換成復雜的機器代碼(低層指令)?!皩崿F(xiàn)對數(shù)據(jù)庫的操作?!皬膶?shù)據(jù)庫的操作中接受查詢結(jié)果?!皩Σ樵兘Y(jié)果進行處理(格式轉(zhuǎn)換)?!疤幚斫Y(jié)果返回給用戶。DBMS的主

6、要功能有以下五個方面:“數(shù)據(jù)庫的定義功能 在DBMS中應該包括數(shù)據(jù)定義語言(DDL)的編譯程序?!皵?shù)據(jù)庫的操作功能 DBMS提供數(shù)據(jù)操作語言(DML)實現(xiàn)對數(shù)據(jù)的操作。其基本的數(shù)據(jù)操作有兩類:檢索(查詢)和更新(包括插入、刪除、更新)。因此,在DBMS中應包括DML的編譯程序或解釋程序。通常查詢語言是指數(shù)據(jù)操作語言中的檢索語句部分?!皵?shù)據(jù)庫的保護功能 包括數(shù)據(jù)庫的恢復、數(shù)據(jù)庫的并發(fā)控制、數(shù)據(jù)完整性控制和數(shù)據(jù)安全性控制。“數(shù)據(jù)庫的維護功能 包括數(shù)據(jù)庫的數(shù)據(jù)導入、轉(zhuǎn)換、存儲,數(shù)據(jù)庫性能監(jiān)控等功能?!皵?shù)據(jù)字典 數(shù)據(jù)庫系統(tǒng)中存放三級結(jié)構(gòu)定義的數(shù)據(jù)庫稱為數(shù)據(jù)字典。對數(shù)據(jù)庫的操作都要通過數(shù)據(jù)字典才能實現(xiàn)。

7、數(shù)據(jù)字典中還存放數(shù)據(jù)庫運行時的統(tǒng)計信息,例如記錄個數(shù)、訪問次數(shù)等。如圖1-2所示是數(shù)據(jù)庫管理系統(tǒng)的結(jié)構(gòu)圖。數(shù)據(jù)庫管理系統(tǒng)提供了許多不同的結(jié)構(gòu)以滿足在不同用途下的應用。例如,對于一般用途的普通用戶,可以通過數(shù)據(jù)庫管理系統(tǒng)的應用界面對數(shù)據(jù)庫進行簡單操作;而對于經(jīng)驗豐富的數(shù)據(jù)庫管理員,則可以使用DBMS提供的數(shù)據(jù)定義語言(DDL)來執(zhí)行高級管理操作。圖1-2 DBMS結(jié)構(gòu)圖1.2 關(guān)系數(shù)據(jù)模型 HYPERLINK 2007-04-07 13:31 史創(chuàng)明、王俊偉 清華大學出版社 HYPERLINK /php/feedbackt.php?id=44788 我要評論(0)摘要:在本章中,我們將系統(tǒng)地學習

8、數(shù)據(jù)庫系統(tǒng)的概念及數(shù)據(jù)庫管理系統(tǒng)的詳細內(nèi)容,還將詳細學習關(guān)系型數(shù)據(jù)庫的相關(guān)知識,以及關(guān)系數(shù)據(jù)庫的實體內(nèi)容,建立數(shù)據(jù)庫系統(tǒng)離不開數(shù)據(jù)模型。模型是對現(xiàn)實世界的抽象,在數(shù)據(jù)庫技術(shù)中,我們用模型的概念描述數(shù)據(jù)庫的結(jié)構(gòu)與語義,對現(xiàn)實世界進行抽象。能表示實體類型及實體間聯(lián)系的模型稱為“數(shù)據(jù)模型”。 標簽: HYPERLINK /php/search.php?keyword=SQL t _blank SQL HYPERLINK /php/search.php?keyword=SQL2000 t _blank SQL2000 HYPERLINK /php/search.php?keyword=%CE%A2%C

9、8%ED t _blank 微軟 HYPERLINK /php/search.php?keyword=%CA%FD%BE%DD%BF%E2 t _blank 數(shù)據(jù)庫 HYPERLINK /exp/oow2010/baoming/ t _blank 限時報名參加“甲骨文全球大會2010北京”及“JavaOne和甲骨文開發(fā)者大會2010”建立數(shù)據(jù)庫系統(tǒng)離不開數(shù)據(jù)模型。模型是對現(xiàn)實世界的抽象,在數(shù)據(jù)庫技術(shù)中,我們用模型的概念描述數(shù)據(jù)庫的結(jié)構(gòu)與語義,對現(xiàn)實世界進行抽象。能表示實體類型及實體間聯(lián)系的模型稱為“數(shù)據(jù)模型”。數(shù)據(jù)模型的種類很多,目前被廣泛使用的可分為兩種類型。一種是獨立于計算機系統(tǒng)的數(shù)據(jù)模型

10、,完全不涉及信息在計算機中的表示,只是用來描述某個特定組織所關(guān)心的信息結(jié)構(gòu),這種模型稱為“概念數(shù)據(jù)模型”。概念模型是按用戶的觀點對數(shù)據(jù)建模,強調(diào)其語義表達能力,概念應該簡單、清晰、易于用戶理解,它是對現(xiàn)實世界的第一層抽象,是用戶和數(shù)據(jù)庫設(shè)計人員之間進行交流的工具。其典型代表就是著名的“實體-關(guān)系模型”,我們將在1.4節(jié)詳細介紹實體-關(guān)系模型的知識。另一種數(shù)據(jù)模型是直接面向數(shù)據(jù)庫的邏輯結(jié)構(gòu),它是對現(xiàn)實世界的第二層抽象。這種模型直接與數(shù)據(jù)庫管理系統(tǒng)有關(guān),稱為“邏輯數(shù)據(jù)模型”,包括層次模型、網(wǎng)狀模型、關(guān)系模型和面向?qū)ο竽P?。邏輯?shù)據(jù)模型應該包含數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)完整性約束三個部分,通常有一組嚴

11、格定義的無二義性語法和語義的數(shù)據(jù)庫語言,人們可以用這種語言來定義、操作數(shù)據(jù)庫中的數(shù)據(jù)。在邏輯數(shù)據(jù)模型的四種模型中,層次模型和網(wǎng)狀模型已經(jīng)很少應用,而面向?qū)ο竽P捅容^復雜,尚未達到關(guān)系模型數(shù)據(jù)庫的普及程度。目前理論成熟、使用普及的模型就是關(guān)系模型。關(guān)系模型是由若干個關(guān)系模式組成的集合,關(guān)系模式的實例稱為關(guān)系,每個關(guān)系實際上是一張二維表格。關(guān)系模型用鍵導航數(shù)據(jù),其表格簡單,用戶只需用簡單的查詢語句就可以對數(shù)據(jù)庫進行操作,并不涉及存儲結(jié)構(gòu)、訪問技術(shù)等細節(jié)。SQL語言是關(guān)系數(shù)據(jù)庫的代表性語言,已經(jīng)得到了廣泛的應用。典型的關(guān)系數(shù)據(jù)庫產(chǎn)品有DB2、Oracle、Sybase、SQL Server等。1.2

12、.1 關(guān)系數(shù)據(jù)模型基本概念在關(guān)系數(shù)據(jù)模型中,關(guān)系可以看成由行和列交叉組成的二維表格,表中一行稱為一個元組,可以用來標識實體集中的一個實體。表中的列稱為屬性,給每一列起一個名稱即為屬性名,表中的屬性名不能相同。列的取值范圍稱為域,同列具有相同的域,不同的列也可以有相同的域。表中任意兩行(元組)不能相同。能唯一標識表中不同行的屬性或?qū)傩越M稱為主鍵。盡管關(guān)系與傳統(tǒng)的二維表格數(shù)據(jù)文件具有類似之處,但是它們又有區(qū)別,嚴格地說,關(guān)系是一種規(guī)范化的二維表格,具有如下性質(zhì):屬性值具有原子性,不可分解。沒有重復的元組。理論上沒有行序,但是有時使用時可以有行序。在關(guān)系數(shù)據(jù)庫中,關(guān)鍵碼(簡稱鍵)是關(guān)系模型的一個重要

13、概念,是用來標識行(元組)的一個或幾個列(屬性)。如果鍵是唯一的屬性,則稱為唯一鍵;反之由多個屬性組成,則稱為復合鍵。鍵的主要類型如下:超鍵 在一個關(guān)系中,能唯一標識元組的屬性或?qū)傩约Q為關(guān)系的超鍵。候選鍵 如果一個屬性集能唯一標識元組,且又不含有多余的屬性,那么這個屬性集稱為關(guān)系的候選鍵。主鍵 如果一個關(guān)系中有多個候選鍵,則選擇其中的一個鍵為關(guān)系的主鍵。用主鍵可以實現(xiàn)關(guān)系定義中“表中任意兩行(元組)不能相同”的約束。例如,在本書的示例數(shù)據(jù)庫圖書管理系統(tǒng)中,我們以圖書明細表為例。在該表中,我們假設(shè)圖書編號列是唯一的,因為圖書館管理員是通過該編號對圖書進行操作的。因此,把圖書編號作為主鍵是最佳的

14、選擇,而如果使用圖書名稱列作為主鍵則會存在問題。為此,最好創(chuàng)建一個單獨的鍵將其明確地指定為主鍵,這種唯一標識符在現(xiàn)實生話中很普遍,例如,身份證號、牌照號、訂單號、學生標識號和航班號等。外鍵 如果一個關(guān)系R中包含另一個關(guān)系S的主鍵所對應的屬性組F,則稱此屬性組F為關(guān)系R的外鍵,并稱關(guān)系S為參照關(guān)系,關(guān)系R是依賴關(guān)系。為了表示關(guān)聯(lián),可以將一個關(guān)系的主鍵作為屬性放入另外一個關(guān)系中,第二個關(guān)系中的那些屬性就稱為外鍵。例如,同樣是在圖書管理系統(tǒng)數(shù)據(jù)庫,有一個出版社表用來描述出版社的各種信息,像電話、地址和網(wǎng)址等,在該表中使用“出版社編號”作為主鍵。為了表示圖書與出版社之間的聯(lián)系,我們可以將出版社表中的主

15、鍵“出版社編號”作為新列添加到圖書明細表中。在這種情況下,圖書明細表中的“出版社編號”就被稱為外鍵,因為“出版社編號”是其所在表以外(出版社表)的一個主鍵。當出現(xiàn)外鍵時,主鍵與外鍵的列名稱可以是不同的。但必須要求它們的值集相同,即圖書明細表中出現(xiàn)的“出版社編號”一定要和出版社表中的值匹配。1.2.2 關(guān)系模型數(shù)據(jù)操作語言關(guān)系模型提供一組完備的高級關(guān)系運算,以支持對數(shù)據(jù)庫的各種操作。關(guān)系數(shù)據(jù)庫的數(shù)據(jù)操作語言(DML)的語句分為查詢語句和更新語句兩大類。查詢語句用于描述用戶的各類檢索要求;更新語句用于描述用戶的插入、修改和刪除等操作。關(guān)系數(shù)據(jù)操作語言建立在關(guān)系代數(shù)基礎(chǔ)上,具有以下特點:以關(guān)系為單位

16、進行數(shù)據(jù)操作,操作的結(jié)果也是關(guān)系。非過程性強。很多操作只需指出做什么,而勿需步步引導怎么去做。以關(guān)系代數(shù)為基礎(chǔ),借助于傳統(tǒng)的集合運算和專門的關(guān)系運算,使關(guān)系數(shù)據(jù)語言具有很強的數(shù)據(jù)操作能力。下面我們介紹在數(shù)據(jù)操作語言中對數(shù)據(jù)庫進行查詢和更新等操作的語句:SELECT語句 指定的條件在一個數(shù)據(jù)庫中查詢的結(jié)果,返回的結(jié)果被看作記錄的集合。SELECT.INTO語句 用于創(chuàng)建一個查詢表。INSERT INTO語句 用于向一個表添加一個或多個記錄。UPDATE語句 用于創(chuàng)建一個更新查詢,根據(jù)指定的條件更改指定表中的字段值。UPDATE語句不生成結(jié)果集,而且當使用更新查詢更新記錄之后,不能取消這次操作。D

17、ELETE語句 用于創(chuàng)建一個刪除查詢,可從列在 FROM 子句之中的一個或多個表中刪除記錄,且該子句滿足WHERE子句中的條件,可以使用DELETE刪除多個記錄。INNER JOIN操作 用于組合兩個表中的記錄,只要在公共字段之中有相符的值??梢栽谌魏蜦ROM子句中使用 INNER JOIN 運算。這是最普通的連接類型。只要在這兩個表的公共字段之中有相符的值,內(nèi)部連接將組合兩個表中的記錄。LEFT JOIN操作 用于在任何FROM子句中組合來源表的記錄。使用LEFT JOIN 運算來創(chuàng)建一個左邊外部連接。左邊外部連接將包含從第一個(左邊)開始的兩個表中的全部記錄,即使在第二個(右邊)表中并沒有

18、相符值的記錄。RIGHT JOIN操作 用于在任何FROM子句中組合來源表的記錄。使用 RIGHT JOIN 運算創(chuàng)建一個右邊外部連接。右邊外部連接將包含從第二個(右邊)表開始的兩個表中的全部記錄,即使在第一個(左邊)表中并沒有匹配值的記錄。PARAMETERS聲明 用于聲明在參數(shù)查詢中的每一個參數(shù)的名稱及數(shù)據(jù)類型。PARAMETERS 聲明是可選的,但是當使用時,需置于任何其他語句之前,包括 SELECT語句。UNION操作 用于創(chuàng)建一個聯(lián)合查詢,它組合了兩個或更多的獨立查詢或表的結(jié)果。所有在一個聯(lián)合運算中的查詢,都須請求相同數(shù)目的字段,但是,字段不必大小相同或數(shù)據(jù)類型相同。1.2.3 Co

19、dd準則和完整性規(guī)則根據(jù)關(guān)系數(shù)據(jù)理論和Codd準則的定義,一種語言必須能處理與數(shù)據(jù)庫的所有通信問題,這種語言有時也稱為“綜合數(shù)據(jù)專用語言”。該語言在關(guān)系型數(shù)據(jù)庫管理系統(tǒng)中就是SQL。SQL的使用主要通過數(shù)據(jù)操作、數(shù)據(jù)定義和數(shù)據(jù)管理三種操作實現(xiàn)。其中Codd提出了RDBMS的12項準則。信息準則 關(guān)系數(shù)據(jù)庫中的所有信息都應在邏輯一級上用一種方法,即表中的值,顯示的表示。保證訪問準則 依靠于表名、主鍵和列名,保證能以邏輯的方式訪問數(shù)據(jù)庫中的每個數(shù)據(jù)項??罩档南到y(tǒng)化處理 RDBMS支持空值(不同于空的字符串或空白字符串,并且不為0)系統(tǒng)化地表示缺少的信息,且與數(shù)據(jù)類型無關(guān)?;陉P(guān)系模型的聯(lián)機目錄 數(shù)

20、據(jù)庫的描述在邏輯上應該和普通數(shù)據(jù)采用同樣的方式,使得授權(quán)用戶可以使用查詢一般數(shù)據(jù)所用的關(guān)系語言來查詢數(shù)據(jù)庫的描述信息。統(tǒng)一的數(shù)據(jù)字語言準則 一個關(guān)系系統(tǒng)可以具有多種語言和多種終端使用方式(如表格填空方式、命令行方式等)。但是,必須有一種語言,它的語句可以表示為具有嚴格語法規(guī)定的字符串,并能全面地支持以下功能:數(shù)據(jù)定義、視圖定義、數(shù)據(jù)操作(交互式或程序式)、完整約束、授權(quán)、事務控制(事務開始、提交、撤銷)。視圖更新準則 所有理論上可更新的視圖也應該允許由系統(tǒng)更新。 高階的插入,更新和刪除 把一個基本關(guān)系或?qū)С鲫P(guān)系作為一個操作對象進行數(shù)據(jù)的檢索以及插入、更新和刪除。數(shù)據(jù)的物理獨立性 無論數(shù)據(jù)庫的數(shù)

21、據(jù)在存儲表示上或存取方法上做任何變化,應用程序和終端活動要都保持邏輯上的不變性。數(shù)據(jù)的邏輯獨立性 當基本表中進行理論上信息不受損害的任何變化時,應用程序和終端活動都要保持邏輯上的不變性。數(shù)據(jù)完整性的獨立性 關(guān)系數(shù)據(jù)庫的完整性約束必須是用數(shù)據(jù)子語言定義并存儲在目錄中的,而不是在應用程序中加以定義的。至少要支持以下兩種約束:實體完整性,即主鍵中的屬性不允許為NULL。參照完整性,即對于關(guān)系數(shù)據(jù)庫中每個不同的非空的外碼值,必須存在一個取自同一個域匹配的主鍵值。分布的獨立性 一個RDBMS應該具有分布獨立性。分布獨立性是指用戶不必了解數(shù)據(jù)庫是否是分布式的。無破壞準則 如果RDBMS有一個低級語言(一次

22、處理一個記錄),這一低級語 言不能違背或繞過完整性準則以及高級關(guān)系語言(一次處理若干記錄)表達的 約束。數(shù)據(jù)庫管理系統(tǒng)是對數(shù)據(jù)進行管理的大型系統(tǒng)軟件,它是數(shù)據(jù)庫系統(tǒng)的核心組成部分,用戶在數(shù)據(jù)庫系統(tǒng)中的一切操作,包括數(shù)據(jù)定義、查詢、更新及各種控制,都是通過DBMS進行的。關(guān)系模型的完整性規(guī)則是對數(shù)據(jù)的約束。關(guān)系模型提供了三類完整性規(guī)則:實體完整性規(guī)則、參照完整性規(guī)則和用戶定義的完整性規(guī)則。其中實體完整性規(guī)則和參照完整性規(guī)則是關(guān)系模型必須滿足的完整性的約束條件,稱為關(guān)系完整性規(guī)則。實體完整性 指關(guān)系的主屬性(主鍵的組成部分)不能是空值??罩?null)就是指不知道或是不能使用的值,它與數(shù)值0和空字

23、符串的意義都不一樣。參照完整性 如果關(guān)系的外鍵R1與關(guān)系R2中的主鍵相符,那么外鍵的每個值必須在關(guān)系R2中主鍵的值中找到或者是空值。用戶定義完整性 是針對某一具體的實際數(shù)據(jù)庫的約束條件。它由應用環(huán)境所決定,反映某一具體應用所涉及的數(shù)據(jù)必須滿足的要求。關(guān)系模型提供定義和檢驗這類完整性的機制,以便用統(tǒng)一的、系統(tǒng)的方法處理,而不必由應用程序承擔這一功能。1.3 關(guān)系規(guī)范化 HYPERLINK 2007-04-07 13:31 史創(chuàng)明、王俊偉 清華大學出版社 HYPERLINK /php/feedbackt.php?id=44789 我要評論(0)摘要:在數(shù)據(jù)庫中,數(shù)據(jù)之間存在著密切的聯(lián)系。關(guān)系數(shù)據(jù)庫

24、由相互聯(lián)系的一組關(guān)系所組成,每個關(guān)系包括關(guān)系模式和關(guān)系值兩個方面。關(guān)系模式是對關(guān)系的抽象定義,給出關(guān)系的具體結(jié)構(gòu);關(guān)系的值是關(guān)系的具體內(nèi)容,反映關(guān)系在某一時刻的狀態(tài)。 標簽: HYPERLINK /php/search.php?keyword=SQL t _blank SQL HYPERLINK /php/search.php?keyword=SQL2000 t _blank SQL2000 HYPERLINK /php/search.php?keyword=%CE%A2%C8%ED t _blank 微軟 HYPERLINK /php/search.php?keyword=%CA%FD%BE

25、%DD%BF%E2 t _blank 數(shù)據(jù)庫 HYPERLINK /exp/oow2010/baoming/ t _blank 限時報名參加“甲骨文全球大會2010北京”及“JavaOne和甲骨文開發(fā)者大會2010”在數(shù)據(jù)庫中,數(shù)據(jù)之間存在著密切的聯(lián)系。關(guān)系數(shù)據(jù)庫由相互聯(lián)系的一組關(guān)系所組成,每個關(guān)系包括關(guān)系模式和關(guān)系值兩個方面。關(guān)系模式是對關(guān)系的抽象定義,給出關(guān)系的具體結(jié)構(gòu);關(guān)系的值是關(guān)系的具體內(nèi)容,反映關(guān)系在某一時刻的狀態(tài)。一個關(guān)系包含許多元組,每個元組都是符合關(guān)系模式結(jié)構(gòu)的一個具體值,并且都分屬于相應的屬性。在關(guān)系數(shù)據(jù)庫中的每個關(guān)系都需要進行規(guī)范化,使之達到一定的規(guī)范化程度,從而提高數(shù)據(jù)的

26、結(jié)構(gòu)化、共享性、一致性和可操作性。關(guān)系模型原理的核心內(nèi)容就是規(guī)范化概念,規(guī)范化是把數(shù)據(jù)庫組織成在保持存儲數(shù)據(jù)完整性的同時最小化冗余數(shù)據(jù)的結(jié)構(gòu)的過程。規(guī)范化的數(shù)據(jù)庫必須符合關(guān)系模型的范式規(guī)則。范式可以防止在使用數(shù)據(jù)庫時出現(xiàn)不一致的數(shù)據(jù),并防止數(shù)據(jù)丟失。關(guān)系模型的范式有第一范式、第二范式、第三范式和BCNF范式等多種。在這些定義中,高級范式根據(jù)定義屬于所有低級的范式。第三范式中的關(guān)系屬于第二范式,第二范式中的關(guān)系屬于第一范式。下面我們介紹規(guī)范化的過程。1第一范式第一范式是第二和第三范式的基礎(chǔ),是最基本的范式。第一范式包括下列指導原則:數(shù)據(jù)組的每個屬性只可以包含一個值關(guān)系中的每個數(shù)組必須包含相同數(shù)量

27、的值關(guān)系中的每個數(shù)組一定不能相同如果關(guān)系模式R中的所有屬性值都是不可再分解的原子值,那么就稱此關(guān)系R是第一范式(First Normal Form,簡稱1NF)的關(guān)系模式。在關(guān)系型數(shù)據(jù)庫管理系統(tǒng)中,涉及到的研究對象都是滿足1NF的規(guī)范化關(guān)系,不是1NF的關(guān)系稱為非規(guī)范化的關(guān)系。 原始數(shù)據(jù)例如,在本書示例數(shù)據(jù)庫經(jīng)銷商中的關(guān)系,如圖1-3所示。其中的第四和第五行的2、3數(shù)組違反了第一范式,因為“商品編號”和“商品名稱”屬性每個都包含兩 個值。如果要將這些數(shù)據(jù)規(guī)范化,就必須創(chuàng)建允許分離數(shù)據(jù)的附加表,這樣才能使每個屬性只包含一個值,每個數(shù)組包含相同數(shù)量的值,并且每個數(shù)組各不相同,如圖1-4所示。這時的

28、數(shù)據(jù)才符合第一范式。 符合1NF的數(shù)據(jù)2第二范式第二范式(2NF)規(guī)定關(guān)系必須在第一范式中,并且關(guān)系中的所有屬性依賴于整個候選鍵。候選鍵是一個或多個唯一標識每個數(shù)據(jù)組的屬性集合。設(shè)置候選鍵后的數(shù)據(jù)例如,在圖1-5所示的關(guān)系中,可以將“商品名稱”和“供應商”名稱指定為候選鍵。這些值共同唯一標識每個數(shù)組。在該圖中,“庫存編號”屬性只依賴于“商品名稱”,而不依賴于“供應商名稱”屬性。3第三范式第三范式(3NF)同2NF一樣依賴于關(guān)系的候選鍵。為了遵循3NF的指導原則,關(guān)系必須在2NF中,非鍵屬性相互之間必須無關(guān),并且必須依賴于鍵。 理想的3NF數(shù)據(jù)例如,在圖1-6所示的關(guān)系中,候選鍵“供應商代號”是

29、屬性?!吧唐访Q”和“供應商名稱”的屬性都依賴于主鍵“庫存編號”,并且相互之間進行關(guān)聯(lián)?!肮檀枴睂傩砸蕾囉凇吧唐肪幪枴?,而不依賴于主鍵“庫存編號”。對于關(guān)系設(shè)計,理想的設(shè)計目標是按照規(guī)范化規(guī)則存儲數(shù)據(jù)。但是,在數(shù)據(jù)庫實現(xiàn)的現(xiàn)實世界中,將數(shù)據(jù)解規(guī)范化卻是通用的慣例,也就是要專門違反規(guī)范化規(guī)則,尤其是違反第二范式和第三范式。當過于規(guī)范化的結(jié)構(gòu)使實現(xiàn)方式復雜化時,解規(guī)范化主要用于提高性能或減少復雜性。盡管如此,規(guī)范化的目標仍然是確保數(shù)據(jù)的完整性,在解規(guī)范化時應該注意。1.4 實體-關(guān)系模型 HYPERLINK 2007-04-07 13:31 史創(chuàng)明、王俊偉 清華大學出版社 HYPERLINK

30、 /php/feedbackt.php?id=44790 我要評論(0)摘要:在1.2節(jié)中我們學習到,數(shù)據(jù)庫的數(shù)據(jù)模型有概念模型,其典型代表就是著名的“實體-關(guān)系模型”(E-R模型),是用戶和數(shù)據(jù)庫設(shè)計人員之間進行交流的工具,在設(shè)計數(shù)據(jù)庫系統(tǒng)之前,我們需要使用E-R圖將現(xiàn)實世界中的實體和實體之間的聯(lián)系轉(zhuǎn)換為概念模型。 標簽: HYPERLINK /php/search.php?keyword=SQL t _blank SQL HYPERLINK /php/search.php?keyword=SQL2000 t _blank SQL2000 HYPERLINK /php/search.php?

31、keyword=%CE%A2%C8%ED t _blank 微軟 HYPERLINK /php/search.php?keyword=%CA%FD%BE%DD%BF%E2 t _blank 數(shù)據(jù)庫 HYPERLINK /exp/oow2010/baoming/ t _blank 限時報名參加“甲骨文全球大會2010北京”及“JavaOne和甲骨文開發(fā)者大會2010”在1.2節(jié)中我們學習到,數(shù)據(jù)庫的數(shù)據(jù)模型有概念模型,其典型代表就是著名的“實體-關(guān)系模型”(E-R模型),是用戶和數(shù)據(jù)庫設(shè)計人員之間進行交流的工具,在設(shè)計數(shù)據(jù)庫系統(tǒng)之前,我們需要使用E-R圖將現(xiàn)實世界中的實體和實體之間的聯(lián)系轉(zhuǎn)換為概

32、念模型。E-R模型的基本元素是:實體、屬性和聯(lián)系。下面我們就分別介紹這些知識。1.4.1 實體實體(entity)是一個數(shù)據(jù)對象,指可以區(qū)別客觀存在的事物,如人、部門、表格、項目等。同一類實體的所有實例就構(gòu)成該對象的實體集(entity classes)。也就是說,實體集是實體的集合,由該集合中實體的結(jié)構(gòu)形式表示,而實例則是實體集中的某一個特例,例如,銷售訂單6380號是銷售實體集的一個實例,通過其屬性值表示。在E-R模型中,實體用方框表示,方框內(nèi)注明實體的命名。實體名常用以大寫字母開頭的有具體意義的英文名詞表示,聯(lián)系名和屬性名也采用這種方式。通常實體集中有多個實體實例。例如,數(shù)據(jù)庫中存儲的每

33、筆訂單都是銷售實體集的實例。圖1-7所示為一個實體集和它的兩個實例。 圖1-7 Sales實體及其兩個實例1.4.2 屬性屬性用來描述實體的特征。在圖書管理系統(tǒng)數(shù)據(jù)庫中屬性的例子包括:圖書名稱、出版社、出版日期、價格和圖書作者等。E-R模型中假定實體集的所有實例具有相同的屬性。同時,依據(jù)系統(tǒng)的需求,每個屬性都有它的數(shù)據(jù)類型及特性。特性包括指定該屬性在某些情況下是否必需、屬性是否有默認值、屬性的取值范圍、是否為主鍵或候選鍵等。如圖1-8所示描述了實體、實例和屬性的關(guān)系,其中使用黑體表示屬性為主鍵,斜體表示屬性為外鍵。 圖1-8 實體、實例和屬性5.1 數(shù)據(jù)庫表的創(chuàng)建、修改和刪除 HYPERLIN

34、K 2007-04-07 13:53 史創(chuàng)明、王俊偉 清華大學出版社 HYPERLINK /php/feedbackt.php?id=44824 我要評論(0)摘要:一個數(shù)據(jù)庫中包含一個或多個的表。表是數(shù)據(jù)的集合,按行和列排列。每個表都有一個特定的主題,例如,“圖書管理系統(tǒng)”數(shù)據(jù)庫中包含有“作者表”、“圖書明細表”以及“出版社表”等。本章介紹表的管理。 標簽: HYPERLINK /php/search.php?keyword=SQL t _blank SQL HYPERLINK /php/search.php?keyword=SQL2000 t _blank SQL2000 HYPERLIN

35、K /php/search.php?keyword=%CE%A2%C8%ED t _blank 微軟 HYPERLINK /php/search.php?keyword=%CA%FD%BE%DD%BF%E2 t _blank 數(shù)據(jù)庫 HYPERLINK /exp/oow2010/baoming/ t _blank 限時報名參加“甲骨文全球大會2010北京”及“JavaOne和甲骨文開發(fā)者大會2010”建立完數(shù)據(jù)庫后,就可以創(chuàng)建數(shù)據(jù)庫表。表屬于數(shù)據(jù)庫對象中的一種,是數(shù)據(jù)存儲的基本單位,它包含了所有的數(shù)據(jù)內(nèi)容。在SQL Server中,一個數(shù)據(jù)庫中可以創(chuàng)建多個表,而且每一個表內(nèi)可以包含多達1 02

36、4個列。列的數(shù)目及表的總大小僅受限于可用的硬盤存儲容量。另外,每一個列最多可以有8 092字節(jié)(不包括image、text或者ntext數(shù)據(jù))。下面我們開始創(chuàng)建表。5.1.1 表表是SQL Server中最主要的數(shù)據(jù)庫對象,它是用來存儲和操作數(shù)據(jù)的一種邏輯結(jié)構(gòu)。表由行和列組成,因此也稱之為二維表。1表結(jié)構(gòu)表是我們在工作和生活中經(jīng)常使用的一種表示數(shù)據(jù)及其關(guān)系的形式,如表5-1所示。 示意圖每個表都有一個名字,以標識該表。例如,表5-1的名稱為“作者表”,該表共有六列,每一列都有一個列名來描述該列的特性。每個表由若干行組成,表的第一行為各列標題,即“欄目信息”,其余各行都是數(shù)據(jù)。例如,表5-1中有

37、四行數(shù)據(jù),分別描述了四位作者的基本情況。用戶可以根據(jù)日常工作經(jīng)驗,結(jié)合集合理論,創(chuàng)建關(guān)系數(shù)據(jù)庫使用表(即關(guān)系)來表示實體及其聯(lián)系?!?表結(jié)構(gòu) 每個數(shù)據(jù)庫包含了若干個表。每個表具有一定的結(jié)構(gòu),稱之為“表型”。所謂表型是指組成表的各列的名稱及數(shù)據(jù)類型,也就是日常表格的“欄目信息”?!?記錄 每個表包含了若干行數(shù)據(jù),它們是表的“值”。表中的一行稱為一條記錄(record),因此,表是記錄的有限集合?!?字段(列) 每條記錄由若干個數(shù)據(jù)項構(gòu)成,將構(gòu)成記錄的每個數(shù)據(jù)項稱為字段(field)或者列。例如在“作者表”中,表結(jié)構(gòu)為(作者編號、作者姓名、性別、電話、家庭住址、籍貫),該表有四條記錄,每條記錄包括

38、六個字段?!?關(guān)鍵字 在“作者表”中,若不加以限制,每個記錄的“作者姓名”、“性別”、“電話”、“家庭住址”和“籍貫”字段的值有可能相同。但是“作者編號”字段的值對表中所有記錄來說一定不同,“作者編號”字段可將表中的不同記錄區(qū)分開來,也就是我們所說的侯選關(guān)鍵字(candidate key)。2設(shè)計表在為一個數(shù)據(jù)庫設(shè)計表之前,應考慮該數(shù)據(jù)庫中要存放的數(shù)據(jù)以及數(shù)據(jù)如何劃分到表中。例如,“圖書管理系統(tǒng)”數(shù)據(jù)庫需要存儲圖書信息、工作人員信息、學生信息等,而在“圖書信息表”中將存儲圖書的詳細信息(即“圖書明細表”)、借出信息(即“借出信息表”)、圖書類型信息(即“圖書類別表”)、出版社信息(即“出版社信

39、息表”)、作者信息(即“作者表”)。具體對于某一個表,在創(chuàng)建之前,最好先在紙上畫出其輪廓。此時要考慮每個表中的內(nèi)容有: “ 表中要存儲的數(shù)據(jù)類型“ 表中需要的列以及每一列的類型“ 列是否可以為空“ 列的長度“ 是否需要在列上使用約束、默認值和規(guī)則“ 需要使用什么樣的索引“ 哪些列作為主鍵5.1.2 創(chuàng)建表在紙上設(shè)計好表以后就可以開始創(chuàng)建表了。用戶可以使用T-SQL中的CREATE TABLE語句或者使用企業(yè)管理器來創(chuàng)建表。默認狀態(tài)下,只有系統(tǒng)管理員和數(shù)據(jù)庫擁有者(DBO)可以創(chuàng)建新表,但系統(tǒng)管理員和數(shù)據(jù)庫擁有者可以授權(quán)其他人來完成這一任務。在開始創(chuàng)建表之前,我們先來了解一下字段的屬性。1字段的

40、屬性表的字段名字在同一個表中具有唯一性,同一字段的數(shù)據(jù)屬于同一種數(shù)據(jù)類型。除了用字段名和數(shù)據(jù)類型來指定字段的屬性外,還可以定義其他屬性,如NULL或NOT NULL屬性和IDENTITY屬性?!?NULL或NOT NULL屬性NULL即空值,通常表示未知、不可用或?qū)⒃谝院筇砑拥臄?shù)據(jù)。如果表的某一字段被指定具有NULL屬性,那么就允許在輸入數(shù)據(jù)時省略該字段的值。反之,如果表的某一字段被指定具有NOT NULL屬性,那么輸入時必須給出具體值?!?IDENTITY屬性IDTENTITY即字段的標識屬性。對任何表都可創(chuàng)建包含系統(tǒng)自動生成序號值的一個標識字段,該序號值唯一標識表中的一行。每個表只能有一個

41、字段設(shè)置為標識屬性,且該字段只能是decimal、int、numeric,bigint或tinyint數(shù)據(jù)類型。指定了IDENTITY屬性的字段稱為IDENTITY字段。當用IDENTITY屬性定義一個字段時,可以指定一個初始值和一個增量,輸入數(shù)據(jù)到含有IDENTITY字段的表時,初始值在輸入第一行數(shù)據(jù)時使用,以后就由SQL Server根據(jù)上一次使用的IDENTITY值加上增量得到新的IDENTITY值。如果不指定初始值和增量值,則其默認值均為1。 示意圖2使用企業(yè)管理器創(chuàng)建表在“圖書管理系統(tǒng)”數(shù)據(jù)庫中創(chuàng)建一個數(shù)據(jù)表,其表名為“圖書明細表”,表結(jié)構(gòu)如表5-2所示。 示意圖操作步驟:啟動SQL

42、 Server企業(yè)管理器,依次打開樹型目錄選項,并在【圖書管理系統(tǒng)】目錄中右擊【表】項,選擇【新建表】命令,如圖5-1所示。彈出【“圖書管理系統(tǒng)”中的新表】(即表設(shè)計器)對話框。在該對話框中,用戶可以將自己所設(shè)計的表結(jié)構(gòu)輸入到【列名】文本框中,并設(shè)置該列的【數(shù)據(jù)類型】、【長度】以及【允許空】等信息,如圖5-2所示。 示意圖加 示意圖在【表設(shè)計器】對話框中,選擇【列名】中的第一個文本框,并輸入“圖書編號”文字,將鼠標指針右移到【數(shù)據(jù)類型】列中,將顯示出【數(shù)據(jù)類型】為char,【長度】為10,【允許空】為允許,如圖5-3所示。單擊【數(shù)據(jù)類型】列的下拉列表,選擇int項。此時,【長度】將改為4。單擊

43、【允許空】中的“”符號,將其改為不允許為空,如圖5-4所示。 示意圖選擇【列名】中的第二行文本框,在該文本框中輸入列名為“類別編號”。設(shè)置【數(shù)據(jù)類型】為smallint,【長度】為2,并且允許為空,如圖5-5所示。用戶可以根據(jù)表結(jié)構(gòu)圖,將其余字段填寫完整,并設(shè)置其字段的類型,如圖5-6所示。 示意圖右擊圖書名稱的行選擇器,選擇【設(shè)置主鍵】命令,如圖5-7所示。此時,將在行選擇器中顯示出主鍵標識 ,如圖5-8所示。單擊工具欄上的【保存】按鈕,在彈出的【選擇名稱】對話框的【輸入表名】文本框中,輸入表名稱為“圖書明細表”,單擊【確定】按鈕將其保存。 示意圖3使用T-SQL語句創(chuàng)建表在創(chuàng)建數(shù)據(jù)庫時,已

44、經(jīng)運用T-SQL語句創(chuàng)建過數(shù)據(jù)庫,同樣也可以運用T-SQL語句創(chuàng)建表。在使用T-SQL創(chuàng)建表之前,先了解一下T-SQL語句的語法結(jié)構(gòu)。通過T-SQL語句來創(chuàng)建表,其核心語句是CREATE TABLE,該語句的語法格式如下所示: CREATE TABLE database_name.owner.owner.table_name /*指定表名*/(column_definition /*字段的定義*/column_name AS computed_column_expression /*定義計算字段*/table_constrain /*指定表的約束*/)ONfilegroupDEFAULT /*

45、指定存儲表的文件組*/TEXTIMAGE_ONfilegroupDEFAULT /*指定存儲text,ntext和image類型數(shù)據(jù)的文件組*/下面說明主要參數(shù)與子句的含義?!?database_name 用來創(chuàng)建表所在的數(shù)據(jù)庫的名稱。當然,此數(shù)據(jù)庫必須存在,不能將一個不存在的數(shù)據(jù)庫名稱作為指定的數(shù)據(jù)庫名稱,否則會發(fā)生錯誤提示?!?owner 用來指定所創(chuàng)建的新表的所有者名?!?table_name 用來指定添加表的名稱。表名必須遵循T-SQL標識符命名規(guī)則?!?column_name 用來指定在新表中的字段名稱。“ computed_column_expression 用來定義計算字段值的表

46、達式。表達式可以是字段名、常量、變量、函數(shù)等或它們的組合。所謂計算字段是一個虛擬的字段,它的值并不實際存儲在表中,而是通過對同一個表中其他字段進行某種計算而得到的結(jié)果?!?ONfilegroupDEFAULT 用來指定存儲此新表的文件組名稱。當指定filegroup時,此新表將存儲在所指定的文件組中,并且此文件組必須存在于數(shù)據(jù)庫中。如果是指定DEFAULT或沒有指定時,則此新表將會存儲在默認的文件組中?!?TEXTIMAGE_ON 用來指定text、ntext和image字段的數(shù)據(jù)存儲的文件組。如果無此子句或指定了DEFAULT,這些類型的數(shù)據(jù)就和表一起存儲在相同的文件組中。接下來我們通過使用

47、CREATE TABLE語句來創(chuàng)建“圖書管理系統(tǒng)”數(shù)據(jù)庫中的“圖書明細表”。在“圖書明細表”中,各字段類型分別為:【圖書編號】類型為int;【類別編號】類型為smallint;【圖書名稱】類型為nvarchar(50);【作者編號】類型為char;【出版社編號】類型為char;【出版日期】類型為smalldatetime;【定價】類型為money;【是否借出】類型為bit;【封面】類型為image,其應用方法如下: USE 圖書管理系統(tǒng)CREATE TABLE 圖書明細表( 圖書編號 int not null,類別編號 smallint null,圖書名稱 nvarchar(50) null,

48、作者編號 char(10) null,出版社編號 char null,出版日期 smalldatetime null,定價 money null是否借出 bit not null,封面 image null,)5.1.3 修改表的結(jié)構(gòu)用戶在創(chuàng)建好表后,可能在使用一段時間后,需要對所創(chuàng)建的表結(jié)構(gòu)、約束或其他列的屬性進行修改,以符合目前使用的實際狀況。在SQL Server 2000中,創(chuàng)建表與修改表同樣簡單。一般我們可以使用SQL Server 2000企業(yè)管理器和T-SQL語言兩種方法來修改表。對一個已存在的表可以進行的修改操作包括:更改表名、增加列、刪除列、修改已有列的屬性(列名、數(shù)據(jù)類型、

49、是否為空值)。1使用企業(yè)管理器修改表(1)更改表名SQL Server中允許改變一個表的名字,但當表名改變后,與此相關(guān)的某些對象,以及通過表名與表相關(guān)的存儲過程將無效。因此,一般不要更改一個已有的表名,特別是該表已定義了視圖或建立了表關(guān)系。下面將前面所創(chuàng)建的“圖書明細表”的表名改為“圖書詳情表”。操作步驟:在SQL Server企業(yè)管理器中,展開所要更改表名的數(shù)據(jù)庫,右擊所要修改的表,選擇【重命名】命令。例如,重命名“圖書明細表”表,如圖5-9所示。此時,“圖書明細表”變成可更改狀態(tài),用戶可以輸入新的表名。例如,輸入“圖書詳情表”,如圖5-10所示,然后按回車鍵。系統(tǒng)將彈出一個【重命名】對話框

50、,在該對話框中,提示用戶如果更改了表名,將引起該表的存儲過程、視圖或觸發(fā)器無效,要求用戶對該操作予以確認。單擊【是】按鈕確認此操作。操作完成后,系統(tǒng)將提示“已成功重命名該對象”信息框,單擊【確定】按鈕,完成對表名的修改操作。 示意圖加 示意圖(2)增加列在日常工作中,我們經(jīng)常需要添加或者刪除某一項目,這樣我們需要為當前所使用的表增加列。例如,以向“圖書明細表”中添加一個“作者”列為例,來說明在企業(yè)管理器中向表中添加新列的操作過程,“作者”列為Unicode字符型,允許為空。 示意圖操作步驟:在SQL Server企業(yè)管理器中展開需進行操作的“圖書明細表”,右擊“圖書明細表”,選擇【設(shè)計表】命令

51、,如圖5-11所示。在彈出的【表設(shè)計器】對話框中,單擊第一個空白行,輸入新添加的列名“作者”,并選擇數(shù)據(jù)類型為nvarchar,長度為20,該列允許空,如圖5-12所示。當要向表中添加的列均輸入完畢后,單擊工具欄上的【保存】按鈕對新添加的列進行保存。(3)刪除列在SQL Server中,被刪除的列是不可恢復的,所以在刪除列之前需要慎重考慮。并且,在刪除一個列之前,必須保證基于該列的所有索引和約束都已被刪除。例如,我們將所創(chuàng)建的“作者”列刪除,其具體操作步驟如下:在SQL Server企業(yè)管理器中展開需要刪除列的表,右擊該表,選擇【設(shè)計表】命令,例如刪除“圖書明細表”中的列。在【表設(shè)計器】對話框

52、中,右擊要刪除的列,選擇【刪除列】命令,例如刪除“圖書明細表”中名為“作者”的列,如圖5-13所示,該列即被刪除。單擊工具欄上的【保存】按鈕,對修改的表進行保存。 示意圖(4)修改已有列的屬性在表中尚未有記錄時,可以修改表結(jié)構(gòu),如更改列名、列的數(shù)據(jù)類型、列的長度和是否允許空值等屬性。但當表中有了記錄時,建議不要輕易改變表結(jié)構(gòu),特別不要改變數(shù)據(jù)類型,以免產(chǎn)生錯誤造成數(shù)據(jù)丟失。用戶不能對以下特性的列進行修改: 具有text、ntext、image或timestamp數(shù)據(jù)類型的列 計算列 全局標識符列 復制列 用于索引的列(但若用于索引的列為varchar、nvarchar或varbinary數(shù)據(jù)類

53、型時,可以增加列的長度) 用于由CREATE STATISTICS生成統(tǒng)計的列,若需修改這樣的列,必須先用DROP STATISTICS語句刪除統(tǒng)計 用于主鍵或外鍵約束的列 用于check或unique約束的列 關(guān)聯(lián)有默認值的列但改變列的數(shù)據(jù)類型時,有下列要求: 原數(shù)據(jù)類型必須能夠轉(zhuǎn)換為新數(shù)據(jù)類型 新類型不能為timestamp類型 如果被修改的是identity列,則新數(shù)據(jù)類型必須是有效的identity數(shù)據(jù)類型?,F(xiàn)在來看如何修改已有列的屬性。在創(chuàng)建的“圖書明細表”中,因尚未輸入記錄值,所以可以改變表的結(jié)構(gòu)。下面我們在企業(yè)管理器中,將“圖書名稱”改為BOOK-NAME,數(shù)據(jù)長度由50改為60

54、;將“日期”改為DATE,數(shù)據(jù)類型由smalldatetime改為datetime。 示意圖操作步驟:在SQL Server企業(yè)管理器中,雙擊【圖書管理系統(tǒng)】選項中的【表】項,右擊【圖書明細表】表,選擇【設(shè)計表】命令。在【表設(shè)計器】對話框中,修改其字段的名稱,并設(shè)置相應的屬性,如圖5-14所示。對列的修改操作完畢后,單擊【保存】按鈕,對修改后的表進行確認并保存。2使用ALTER TABLE語句修改表前面我們學習了使用企業(yè)管理器來修改表,下面使用T-SQL中的ALTER TABLE語句來修改表。ALTER TABLE語句的語法格式如下所示: ALTER TABLE table_nameALTER

55、 COLUMN column_name /*修改已有列的屬性*/new_data_type(precision,scale)NULLNOT NULLADDcolumn_definition,n /*增加新列*/DROPCONSTRATINTconstraint_nameCOLUMN,n /*刪除列*/ 下面說明主要參數(shù)與子句的含義:“ table_name 用來指定要修改的表的名稱?!?ALTER COLUMN子句 用來指定要進行修改的表中的字段的屬性,要修改的字段名由column_name給出?!?new_data_type 用來指定被修改字段的新數(shù)據(jù)類型?!?Precision 用來指定新

56、數(shù)據(jù)類型的有效位數(shù)?!?Scale 用來指定新數(shù)據(jù)類型的小數(shù)位數(shù)?!?NULLNOT NULL 用來指定其字段是否可接受NULL?!?ADD子句 用來向表中增加新字段。新字段的定義方法與CREATE TABLE語句中定義字段的方法相同?!?DROP子句 用來從表中刪除字段或約束。COLUMN參數(shù)中指定的是被刪除的字段名,constraint_name是被刪除的約束名。下面通過實例說明ALTER TABLE語句的使用方法。例如,在用戶信息表中修改“圖書明細表”的屬性。將字段名為“圖書名稱”的列長度由原來的50改為60,將名為“日期”的列的數(shù)據(jù)類型由原來的smalldatetime改為dateti

57、me。 USE 圖書管理系統(tǒng)ALTER TABLE 圖書明細表ALTER COLUMN 圖書名稱 nvarchar(60)GOALTER TABLE 圖書明細表ALTER COLUMN 日期 datetimeGO下面通過T-SQL語句向“圖書明細表”表中添加一個“作者”字段,其語法如下: USE 圖書管理系統(tǒng)ALTER TABLE 圖書明細表ADD作者 NVARCHAR(30) NULLGO下面我們使用T-SQL中的DROP語句來刪除添加在“圖書明細表”表中的“作者”字段。在刪除該字段時,首先,我們打開“圖書管理系統(tǒng)”數(shù)據(jù)庫,然后明確所要修改的表名為“圖書明細表”,再刪除表中的“作者”字段。具

58、體語句如下:USE 圖書管理系統(tǒng) ALTER TABLE 圖書明細表DROP COLUMN 作者GO5.1.4 刪除表當一個表不再使用時,可以將該表刪除。刪除一個表同樣有兩種方法:一種是利用企業(yè)管理器,另一種是利用T-SQL語言。1利用企業(yè)管理器實現(xiàn)對表的刪除在前面我們創(chuàng)建了“圖書明細表”表,下面我們使用企業(yè)管理器來刪除該表。具體操作步驟如下: 示意圖在SQL Server 2000企業(yè)管理器中,展開所要刪除的表所在的數(shù)據(jù)庫,并右擊所要刪除的表,選擇【刪除】命令,如圖5-15所示。在彈出的【除去對象】對話框中,單擊【全部除去】按鈕即可完成對表的刪除,如圖5-16所示。2使用DROP TABLE

59、刪除表下面通過T-SQL語言中的DROP TABLE命令來刪除表。首先,我們來了解一下DROP TABLE語句的語法格式: DROP TABLE table_name在了解了DROP TABLE語句在語法后,下面我們以刪除“圖書明細表”為例,學習DROP TABLE語句的使用方法: 示意圖5.2 維護表中的數(shù)據(jù) HYPERLINK 2007-04-07 13:53 史創(chuàng)明、王俊偉 清華大學出版社 HYPERLINK /php/feedbackt.php?id=44825 我要評論(0)摘要:創(chuàng)建表的目的是為了利用表來存儲和管理業(yè)務數(shù)據(jù)。實現(xiàn)數(shù)據(jù)存儲的前提是向表中添加數(shù)據(jù);實現(xiàn)表的良好管理則經(jīng)常

60、需要修改、刪除表中的數(shù)據(jù)。下面我們來學習使用Transact-SQL添加、修改和刪除表數(shù)據(jù)的方法。 標簽: HYPERLINK /php/search.php?keyword=SQL t _blank SQL HYPERLINK /php/search.php?keyword=SQL2000 t _blank SQL2000 HYPERLINK /php/search.php?keyword=%CE%A2%C8%ED t _blank 微軟 HYPERLINK /php/search.php?keyword=%CA%FD%BE%DD%BF%E2 t _blank 數(shù)據(jù)庫 HYPERLINK /

溫馨提示

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

評論

0/150

提交評論