SQL2000數(shù)據(jù)庫(kù)管理與標(biāo)準(zhǔn)應(yīng)用教程(同名10441)_第1頁(yè)
SQL2000數(shù)據(jù)庫(kù)管理與標(biāo)準(zhǔn)應(yīng)用教程(同名10441)_第2頁(yè)
SQL2000數(shù)據(jù)庫(kù)管理與標(biāo)準(zhǔn)應(yīng)用教程(同名10441)_第3頁(yè)
SQL2000數(shù)據(jù)庫(kù)管理與標(biāo)準(zhǔn)應(yīng)用教程(同名10441)_第4頁(yè)
SQL2000數(shù)據(jù)庫(kù)管理與標(biāo)準(zhǔn)應(yīng)用教程(同名10441)_第5頁(yè)
已閱讀5頁(yè),還剩201頁(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、1.1 數(shù)據(jù)庫(kù)系統(tǒng)的概念 HYPERLINK 2007-04-07 12:11 史創(chuàng)明、王俊偉 清華大學(xué)出版社 HYPERLINK /php/feedbackt.php?id=44772 我要評(píng)論(0)摘要:在數(shù)據(jù)庫(kù)系統(tǒng)中,數(shù)據(jù)庫(kù)的使用既可以在程序中實(shí)現(xiàn),也可以在獨(dú)立的數(shù)據(jù)操作界面中實(shí)現(xiàn),比如在SQL Server數(shù)據(jù)庫(kù)系統(tǒng)中,我們既可以使用T-SQL語(yǔ)言操作數(shù)據(jù)庫(kù),也可以使用SQL Server企業(yè)管理器實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作和管理。 標(biāo)簽: 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ù)庫(kù) HYPERLINK /exp/oow2010/baoming/ t _blank 限時(shí)報(bào)名參加“甲骨文全球大會(huì)2010北京”及“JavaOne和甲骨文開發(fā)者大會(huì)2010”計(jì)算機(jī)從誕生開始,就面臨著處理大量數(shù)據(jù)的任務(wù)。使用計(jì)算機(jī)以后,數(shù)據(jù)處理的速度和規(guī)模無(wú)論相對(duì)于手工方式還是機(jī)械方式都

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

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

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

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

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

8、數(shù)據(jù)庫(kù)系統(tǒng)的概念及數(shù)據(jù)庫(kù)管理系統(tǒng)的詳細(xì)內(nèi)容,還將詳細(xì)學(xué)習(xí)關(guān)系型數(shù)據(jù)庫(kù)的相關(guān)知識(shí),以及關(guān)系數(shù)據(jù)庫(kù)的實(shí)體內(nèi)容,建立數(shù)據(jù)庫(kù)系統(tǒng)離不開數(shù)據(jù)模型。模型是對(duì)現(xiàn)實(shí)世界的抽象,在數(shù)據(jù)庫(kù)技術(shù)中,我們用模型的概念描述數(shù)據(jù)庫(kù)的結(jié)構(gòu)與語(yǔ)義,對(duì)現(xiàn)實(shí)世界進(jìn)行抽象。能表示實(shí)體類型及實(shí)體間聯(lián)系的模型稱為“數(shù)據(jù)模型”。 標(biāo)簽: 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ù)庫(kù) HYPERLINK /exp/oow2010/baoming/ t _blank 限時(shí)報(bào)名參加“甲骨文全球大會(huì)2010北京”及“JavaOne和甲骨文開發(fā)者大會(huì)2010”建立數(shù)據(jù)庫(kù)系統(tǒng)離不開數(shù)據(jù)模型。模型是對(duì)現(xiàn)實(shí)世界的抽象,在數(shù)據(jù)庫(kù)技術(shù)中,我們用模型的概念描述數(shù)據(jù)庫(kù)的結(jié)構(gòu)與語(yǔ)義,對(duì)現(xiàn)實(shí)世界進(jìn)行抽象。能表示實(shí)體類型及實(shí)體間聯(lián)系的模型稱為“數(shù)據(jù)模型”。數(shù)據(jù)模型的種類很多,目前被廣泛使用的可分為兩種類型。一種是獨(dú)立于計(jì)算機(jī)系統(tǒng)的數(shù)據(jù)模型

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

30、 /php/feedbackt.php?id=44790 我要評(píng)論(0)摘要:在1.2節(jié)中我們學(xué)習(xí)到,數(shù)據(jù)庫(kù)的數(shù)據(jù)模型有概念模型,其典型代表就是著名的“實(shí)體-關(guān)系模型”(E-R模型),是用戶和數(shù)據(jù)庫(kù)設(shè)計(jì)人員之間進(jìn)行交流的工具,在設(shè)計(jì)數(shù)據(jù)庫(kù)系統(tǒng)之前,我們需要使用E-R圖將現(xiàn)實(shí)世界中的實(shí)體和實(shí)體之間的聯(lián)系轉(zhuǎn)換為概念模型。 標(biāo)簽: 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ù)庫(kù) HYPERLINK /exp/oow2010/baoming/ t _blank 限時(shí)報(bào)名參加“甲骨文全球大會(huì)2010北京”及“JavaOne和甲骨文開發(fā)者大會(huì)2010”在1.2節(jié)中我們學(xué)習(xí)到,數(shù)據(jù)庫(kù)的數(shù)據(jù)模型有概念模型,其典型代表就是著名的“實(shí)體-關(guān)系模型”(E-R模型),是用戶和數(shù)據(jù)庫(kù)設(shè)計(jì)人員之間進(jìn)行交流的工具,在設(shè)計(jì)數(shù)據(jù)庫(kù)系統(tǒng)之前,我們需要使用E-R圖將現(xiàn)實(shí)世界中的實(shí)體和實(shí)體之間的聯(lián)系轉(zhuǎn)換為概

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

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

34、K 2007-04-07 13:53 史創(chuàng)明、王俊偉 清華大學(xué)出版社 HYPERLINK /php/feedbackt.php?id=44824 我要評(píng)論(0)摘要:一個(gè)數(shù)據(jù)庫(kù)中包含一個(gè)或多個(gè)的表。表是數(shù)據(jù)的集合,按行和列排列。每個(gè)表都有一個(gè)特定的主題,例如,“圖書管理系統(tǒng)”數(shù)據(jù)庫(kù)中包含有“作者表”、“圖書明細(xì)表”以及“出版社表”等。本章介紹表的管理。 標(biāo)簽: 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ù)庫(kù) HYPERLINK /exp/oow2010/baoming/ t _blank 限時(shí)報(bào)名參加“甲骨文全球大會(huì)2010北京”及“JavaOne和甲骨文開發(fā)者大會(huì)2010”建立完數(shù)據(jù)庫(kù)后,就可以創(chuàng)建數(shù)據(jù)庫(kù)表。表屬于數(shù)據(jù)庫(kù)對(duì)象中的一種,是數(shù)據(jù)存儲(chǔ)的基本單位,它包含了所有的數(shù)據(jù)內(nèi)容。在SQL Server中,一個(gè)數(shù)據(jù)庫(kù)中可以創(chuàng)建多個(gè)表,而且每一個(gè)表內(nèi)可以包含多達(dá)1 02

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

54、;將“日期”改為DATE,數(shù)據(jù)類型由smalldatetime改為datetime。 示意圖操作步驟:在SQL Server企業(yè)管理器中,雙擊【圖書管理系統(tǒng)】選項(xiàng)中的【表】項(xiàng),右擊【圖書明細(xì)表】表,選擇【設(shè)計(jì)表】命令。在【表設(shè)計(jì)器】對(duì)話框中,修改其字段的名稱,并設(shè)置相應(yīng)的屬性,如圖5-14所示。對(duì)列的修改操作完畢后,單擊【保存】按鈕,對(duì)修改后的表進(jìn)行確認(rèn)并保存。2使用ALTER TABLE語(yǔ)句修改表前面我們學(xué)習(xí)了使用企業(yè)管理器來修改表,下面使用T-SQL中的ALTER TABLE語(yǔ)句來修改表。ALTER TABLE語(yǔ)句的語(yǔ)法格式如下所示: 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子句 用來指定要進(jìn)行修改的表中的字段的屬性,要修改的字段名由column_name給出?!?new_data_type 用來指定被修改字段的新數(shù)據(jù)類型?!?Precision 用來指定新

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

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

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

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

60、需要修改、刪除表中的數(shù)據(jù)。下面我們來學(xué)習(xí)使用Transact-SQL添加、修改和刪除表數(shù)據(jù)的方法。 標(biāo)簽: 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ù)庫(kù) HYPERLINK /

溫馨提示

  • 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)論