版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、SQL Server數(shù)據(jù)庫(kù)應(yīng)用與開(kāi)發(fā)第1章 數(shù)據(jù)庫(kù)及SQL Server2005簡(jiǎn)介1.1 數(shù)據(jù)庫(kù)的發(fā)展 1.3關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng) 1.2數(shù)據(jù)庫(kù)系統(tǒng)模型 1.4 SQL Server 2005簡(jiǎn)介主要內(nèi)容 數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)三種模型數(shù)據(jù)庫(kù)管理系統(tǒng)相關(guān)知識(shí)關(guān)系數(shù)據(jù)庫(kù)操作及規(guī)范。SQL SERVER 2005的新特性SQL SERVER 2005的安裝及配置介紹了T-SQL語(yǔ)言。1.1 數(shù)據(jù)庫(kù)的發(fā)展 1.1.1 數(shù)據(jù)庫(kù)概念1.數(shù)據(jù)數(shù)據(jù)是能夠在計(jì)算機(jī)中存貯用于描述事物的記錄符號(hào)它包括兩個(gè)方面:一是描述事物特性的數(shù)據(jù)內(nèi)容;二是存儲(chǔ)在某種媒體上的數(shù)據(jù)形式。數(shù)據(jù)處理是指將數(shù)據(jù)轉(zhuǎn)換成信息的過(guò)程。 2.數(shù)據(jù)庫(kù)數(shù)據(jù)
2、庫(kù)(DataBase 簡(jiǎn)稱(chēng)DB)是按一定組織結(jié)構(gòu)存貯在計(jì)算機(jī)中相關(guān)數(shù)據(jù)的集合。它不僅包括數(shù)據(jù)本身,而且還包括相關(guān)事物間的聯(lián)系。它的特點(diǎn)是具有一定的組織結(jié)構(gòu),數(shù)據(jù)庫(kù)中的數(shù)據(jù)還是相關(guān)的。數(shù)據(jù)庫(kù)可以被多個(gè)用戶(hù)、多個(gè)應(yīng)用程序共享。其數(shù)據(jù)結(jié)構(gòu)獨(dú)立于使用數(shù)據(jù)的程序,對(duì)數(shù)據(jù)的增加、刪除、修改和檢索由系統(tǒng)軟件統(tǒng)一進(jìn)行。3. 數(shù)據(jù)庫(kù)管理系統(tǒng) 數(shù)據(jù)庫(kù)管理系統(tǒng)(DataBase Management System ,簡(jiǎn)稱(chēng)DBMS)是在操作系統(tǒng)的支持下為用戶(hù)提供數(shù)據(jù)庫(kù)建立、數(shù)據(jù)操縱、數(shù)據(jù)庫(kù)維護(hù)的管理軟件。它有以下幾個(gè)功能: 1)數(shù)據(jù)定義 2)數(shù)據(jù)操縱功能 3)數(shù)據(jù)庫(kù)的運(yùn)行管理 4)數(shù)據(jù)庫(kù)的建立與維護(hù)功能4數(shù)據(jù)庫(kù)系統(tǒng)
3、數(shù)據(jù)庫(kù)系統(tǒng)(DataBase System,簡(jiǎn)稱(chēng)DBS)由數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)、應(yīng)用系統(tǒng)、數(shù)據(jù)庫(kù)管理員和用戶(hù)五部分構(gòu)成。 1.1.2 數(shù)據(jù)庫(kù)理論發(fā)展人工管理階段 文件系統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng) 數(shù)據(jù)庫(kù)系統(tǒng)與人工管理和文件系統(tǒng)相比有如下特點(diǎn):1)數(shù)據(jù)結(jié)構(gòu)化,采用特定的數(shù)據(jù)模型2)數(shù)據(jù)共享性高,減少數(shù)據(jù)冗余3)數(shù)據(jù)獨(dú)立性高4)有統(tǒng)一的數(shù)據(jù)控制功能客觀存在并且可以相互區(qū)別的事物稱(chēng)為實(shí)體。描述實(shí)體的特性稱(chēng)為屬性。實(shí)體間的對(duì)應(yīng)關(guān)系稱(chēng)為聯(lián)系實(shí)體間聯(lián)系的種類(lèi)是指一類(lèi)實(shí)體中可能出現(xiàn)的每一個(gè)實(shí)體與另一類(lèi)實(shí)體中多少個(gè)具體實(shí)體存在聯(lián)系聯(lián)系可以歸結(jié)為三種類(lèi)型:一對(duì)一聯(lián)系、一對(duì)多聯(lián)系、多對(duì)多聯(lián)系1.2數(shù)據(jù)庫(kù)系統(tǒng)模型數(shù)據(jù)模型通常由
4、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整 性約束三部分組成。數(shù)據(jù)結(jié)構(gòu)是研究對(duì)象類(lèi)型的集合。數(shù)據(jù)操作是指對(duì)數(shù)據(jù)庫(kù)中各種對(duì)象的實(shí)例允許執(zhí)行的操作的集合,包括操作及有關(guān)的操作規(guī)則。數(shù)據(jù)約束條件是一組完整性規(guī)則的集合。1.2 數(shù)據(jù)庫(kù)系統(tǒng)模型網(wǎng)狀模型的基本特征是一個(gè)父結(jié)點(diǎn)允許有多個(gè)子結(jié)點(diǎn),一個(gè)子結(jié)點(diǎn)也允許有多個(gè)父結(jié)點(diǎn)。網(wǎng)狀模型有兩個(gè)特點(diǎn):有一個(gè)以上結(jié)點(diǎn)無(wú)父結(jié)點(diǎn);至少有一個(gè)結(jié)點(diǎn)有多于一個(gè)的父結(jié)點(diǎn)。 1.2.1 網(wǎng)狀模型 1.2.2 層次模型 層次模型是以記錄型結(jié)點(diǎn)構(gòu)成的樹(shù)型結(jié)構(gòu)。它適合描述現(xiàn)實(shí)世界中主次分明的結(jié)構(gòu)關(guān)系有且只有一個(gè)結(jié)點(diǎn)沒(méi)有雙親結(jié)點(diǎn),這個(gè)結(jié)點(diǎn)稱(chēng)為根結(jié)點(diǎn);根以外的其它結(jié)點(diǎn)有且只有一個(gè)雙親結(jié)點(diǎn) 層次型模型數(shù)據(jù)之間
5、是1:N的關(guān)系。 層次模型在進(jìn)行數(shù)據(jù)操縱過(guò)程中要注意完整性約束條件 層次數(shù)據(jù)庫(kù)中不僅要存儲(chǔ)數(shù)據(jù)本身,還要存儲(chǔ)數(shù)據(jù)之間的層次關(guān)系 1.2.3 關(guān)系模型關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表,它由行和列組成。關(guān)系模型反映屬性間一對(duì)一關(guān)系,也可反映屬性間一對(duì)多的關(guān)系和多對(duì)多的關(guān)系 關(guān)系的各種操作必須滿足完整性約束條件,關(guān)系的完整性約束條件包括三大類(lèi):實(shí)體完整性、參照完整性和用戶(hù)定義的完整性。在關(guān)系數(shù)據(jù)模型中,實(shí)體及實(shí)體間的聯(lián)系都用表來(lái)表示,表以文件形式存儲(chǔ)。關(guān)系數(shù)據(jù)模型有以下優(yōu)點(diǎn):關(guān)系模型數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單、清晰,用戶(hù)易懂易用;關(guān)系模型具有更高的數(shù)據(jù)獨(dú)立性、更好的安全保密性。 1.2.4 面向?qū)ο髷?shù)據(jù)模型面
6、向?qū)ο髷?shù)據(jù)模型(OO模型)是用面向?qū)ο笥^點(diǎn)來(lái)描述現(xiàn)實(shí)世界實(shí)體或?qū)ο蟮倪壿嫿M織、對(duì)象間限制、聯(lián)系等的模型。 1主要的核心概念1)對(duì)象對(duì)象是由一組數(shù)據(jù)結(jié)構(gòu)和在這組數(shù)據(jù)結(jié)構(gòu)上的操作的程序代碼封裝起來(lái)的基本單位?,F(xiàn)實(shí)世界中的任一實(shí)體都模型化為一個(gè)對(duì)象每個(gè)對(duì)象都有一個(gè)唯一不變的標(biāo)識(shí)稱(chēng)為對(duì)象標(biāo)識(shí)。一個(gè)對(duì)象包括屬性集合、方法集合和消息集合。屬性描述對(duì)象的狀態(tài)、組成和特性。方法描述了對(duì)象的行為特性2)封裝封裝是對(duì)象的外部界面與內(nèi)部實(shí)行隔離的一種抽象,外部與對(duì)象的通信只能通過(guò)消息。每一個(gè)對(duì)象是其狀態(tài)與行為的封裝。封裝的意義在于將對(duì)象的實(shí)現(xiàn)與對(duì)象應(yīng)用互相隔離,有利于提高數(shù)據(jù)獨(dú)立性。封裝隱藏了數(shù)據(jù)結(jié)構(gòu)與程序代碼等細(xì)
7、節(jié),提高程序的可靠性。 3)類(lèi)共享同樣屬性和方法集的所有對(duì)象的集合稱(chēng)為對(duì)象類(lèi),簡(jiǎn)稱(chēng)類(lèi)。一個(gè)對(duì)象是某一類(lèi)的一個(gè)實(shí)例。4)類(lèi)的層次結(jié)構(gòu)在面向?qū)ο髷?shù)據(jù)庫(kù)模式中,一組類(lèi)可形成一個(gè)類(lèi)層次。如果類(lèi)C1有一個(gè)子類(lèi)C2,則稱(chēng)類(lèi)C1為類(lèi)C2的超類(lèi)或父類(lèi)。子類(lèi)還可以定義子類(lèi),這樣一組類(lèi)形成一個(gè)有層次的結(jié)構(gòu),稱(chēng)為類(lèi)層次。子類(lèi)可以具有父類(lèi)的所有屬性、消息和方法,還可以有自己獨(dú)特的父類(lèi)沒(méi)有的屬性和方法。5)繼承子類(lèi)具有父類(lèi)特性的機(jī)制我們稱(chēng)之為繼承。繼承有兩個(gè)優(yōu)點(diǎn):一方面它是建模的工具,提供了對(duì)現(xiàn)實(shí)世界簡(jiǎn)明而精確的描述;另一方面它提供了信息重用機(jī)制,由于子類(lèi)可以繼承父類(lèi)的特性,這樣就可以避免許多重復(fù)定義工作。2面向?qū)ο髷?shù)
8、據(jù)庫(kù)語(yǔ)言在面向?qū)ο髷?shù)據(jù)庫(kù)(OODB)中,面向?qū)ο髷?shù)據(jù)庫(kù)語(yǔ)言(OODB語(yǔ)言)用于描述面向?qū)ο髷?shù)據(jù)庫(kù)模式,說(shuō)明并定義對(duì)象實(shí)例。OODB語(yǔ)言應(yīng)具有以下功能:類(lèi)的定義與操縱、方法的定義、對(duì)象的操縱。3模式演進(jìn)面向?qū)ο髷?shù)據(jù)模式為適應(yīng)需求的變化而發(fā)生變化過(guò)程稱(chēng)為模式演進(jìn)。模式演進(jìn)過(guò)程包括建新的類(lèi)、刪除舊的類(lèi)、修改類(lèi)的屬性和方法等。模式演進(jìn)必須保持模式的一致性。它由模式一致性約束來(lái)保證。模式一致性約束包括唯一性約束、存在性約束和子類(lèi)型約束等4對(duì)象-關(guān)系數(shù)據(jù)庫(kù)面向?qū)ο髷?shù)據(jù)庫(kù)必須滿足兩個(gè)條件:支持面向?qū)ο蟮臄?shù)據(jù)模型、支持傳統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)所有的數(shù)據(jù)庫(kù)特征。面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)必須保持傳統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)存取方式和數(shù)據(jù)
9、獨(dú)立性,即應(yīng)繼承第二代數(shù)據(jù)庫(kù)系統(tǒng)已有的技術(shù),對(duì)象-關(guān)系數(shù)據(jù)系統(tǒng)就是按這樣的目標(biāo)將關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)與面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)兩方面的特征相結(jié)合。對(duì)象-關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)除具有關(guān)系數(shù)據(jù)庫(kù)的各種特點(diǎn)外,還應(yīng)具有擴(kuò)充數(shù)據(jù)類(lèi)型、支持復(fù)雜對(duì)象、支持繼承、提供通用的規(guī)則系統(tǒng)等功能 1.3.1關(guān)系數(shù)據(jù)庫(kù)規(guī)范化規(guī)范化的數(shù)據(jù)庫(kù)設(shè)計(jì)可以盡可能地避免系統(tǒng)在應(yīng)用過(guò)程中出現(xiàn)問(wèn)題。不合理的關(guān)系模式可能會(huì)造成很多操作上問(wèn)題:數(shù)據(jù)冗余更新異常插入異常刪除異常1.3 關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)1. 關(guān)系的性質(zhì)一個(gè)關(guān)系就是一張二維表格。一列對(duì)應(yīng)一個(gè)字段,稱(chēng)為屬性;一行對(duì)應(yīng)一條記錄,稱(chēng)為元組。一個(gè)關(guān)系中要有一個(gè)關(guān)鍵字,稱(chēng)為主鍵。關(guān)鍵字可以唯一地標(biāo)識(shí)一個(gè)
10、元組。每一列上的數(shù)據(jù)屬于同一種屬性;沒(méi)有完全相同的行,兩行之間可以有重復(fù)的字段但不能所有字段都重復(fù);行與行間順序可互換;列與列間順序可互換;列的名稱(chēng)在表中要唯一 2. 數(shù)據(jù)依賴(lài)操作異常與數(shù)據(jù)依賴(lài)有關(guān),數(shù)據(jù)依賴(lài)是元組間相互關(guān)系。函數(shù)依賴(lài)如果在關(guān)系R中,數(shù)據(jù)元素Y的取值依賴(lài)于數(shù)據(jù)元素X的取值,那么稱(chēng)Y函數(shù)據(jù)依賴(lài)于X,或稱(chēng)為X決定Y,記作X-Y。傳遞依賴(lài)如果X,Y,Z分別是R中三個(gè)屬性,Z函數(shù)據(jù)依賴(lài)于Y,Y函數(shù)據(jù)依賴(lài)于X,那么Z也函數(shù)依賴(lài)于X,稱(chēng)為Z傳遞依賴(lài)于X。3. 第一規(guī)范化形式(1NF)關(guān)系模式要滿足的條件稱(chēng)為規(guī)范化形式,簡(jiǎn)稱(chēng)為范式。第一范式要求元組中的每一個(gè)數(shù)據(jù)項(xiàng)都不可再分,都是原子項(xiàng),記作
11、1NF。即要求二維表格中每一個(gè)屬性都是單一的不可再分的數(shù)據(jù)。4. 第二規(guī)范化形式(2NF) 如果一個(gè)關(guān)系符合第一范式,并且每一個(gè)非關(guān)鍵字屬性都完全依賴(lài)于主關(guān)鍵字,那么這個(gè)關(guān)系模式符合第二規(guī)范化形式簡(jiǎn)記為2NF。5. 第三規(guī)范化形式(3NF) 如果一個(gè)關(guān)系符合第二范式,并且所有非關(guān)鍵字屬性間不存在函數(shù)依賴(lài)關(guān)系,那么稱(chēng)這個(gè)關(guān)系符合第三規(guī)范化形式,簡(jiǎn)記為3NF。3NF的實(shí)質(zhì)是從符合2NF的關(guān)系中除去傳遞依賴(lài)。6. 規(guī)范化形式間的關(guān)系規(guī)范化的基本思想是逐步消除數(shù)據(jù)依賴(lài)中不合適的部分,使模式的各關(guān)系模式達(dá)到某種程序的“分離”,即“一事一地”的模式設(shè)計(jì)原則。任何一個(gè)高層的規(guī)范化形式總是能夠滿足低層的規(guī)范化
12、形式。為了提高規(guī)范化程度,必須對(duì)較低層的規(guī)范化形式的關(guān)系模式進(jìn)行分解,即將一個(gè)低層的的關(guān)系模式分解成幾個(gè)更小、更緊湊的關(guān)系模式。規(guī)范化程度低會(huì)造成數(shù)據(jù)冗余和操作異常,但是規(guī)范化程度低檢索直接,處理比較簡(jiǎn)單;規(guī)范化程度高可以消除操作異常和減少數(shù)據(jù)冗余,但是在檢索時(shí)要訪問(wèn)更多的關(guān)系表,需要做更多的關(guān)聯(lián)操作,比較復(fù)雜。1、傳統(tǒng)的關(guān)系運(yùn)算進(jìn)行傳統(tǒng)的關(guān)系運(yùn)算的兩個(gè)關(guān)系必須具有相同的結(jié)構(gòu)。并:兩個(gè)關(guān)系的并運(yùn)算是由這兩個(gè)關(guān)系的元組組成的集合。交:兩個(gè)關(guān)系R和S,它們的交是由既屬于R又屬于S的元組組成的集合。交運(yùn)算的結(jié)果是R和S 的共同元組。差:兩個(gè)關(guān)系R和S,R差S的結(jié)果是由屬于R但不屬于S的元組組成的集合
13、,即差運(yùn)算是從R中去掉S中也有的元組。 1.3.2 關(guān)系運(yùn)算 2、專(zhuān)門(mén)的關(guān)系運(yùn)算1)選擇:從關(guān)系中找出滿足條件元組的操作稱(chēng)為選擇。選擇是對(duì)關(guān)系表從行的角度水平方向抽取記錄,經(jīng)過(guò)運(yùn)算得到的結(jié)果可以形成新的關(guān)系,但其中的元組是原關(guān)系的一個(gè)子集。2)投影:從關(guān)系模式中指定若干個(gè)屬性組成新的關(guān)系稱(chēng)為投影。投影是從列的角度縱向?qū)﹃P(guān)系進(jìn)行分解,經(jīng)過(guò)投影運(yùn)算可以得到一個(gè)新的關(guān)系,其包含的屬性的個(gè)數(shù)小于等于原有關(guān)系,或者屬性的排列順序不同。3)聯(lián)接:聯(lián)接運(yùn)算是將兩個(gè)關(guān)系拼接成一個(gè)關(guān)系,生成的新的關(guān)系包含兩個(gè)關(guān)系滿足條件的元組。聯(lián)接是通過(guò)聯(lián)接條件來(lái)控制的,聯(lián)接條件中將出現(xiàn)兩個(gè)表中的公共屬性名,或者具有相同語(yǔ)義、
14、可比的屬性。SQL語(yǔ)言全稱(chēng)為結(jié)構(gòu)化查詢(xún)語(yǔ)言(Structured Query Language),SQL語(yǔ)言有如下的特點(diǎn)1)綜合統(tǒng)一:SQL集數(shù)據(jù)定義、操縱、控制功能與一體,語(yǔ)言風(fēng)格統(tǒng)一。數(shù)據(jù)操作符統(tǒng)一,每一種操作都只用一種操作符。2)高度非過(guò)程化:用SQL語(yǔ)言進(jìn)行數(shù)據(jù)操作,無(wú)需了解存取路徑,存取路徑的選擇及操作過(guò)程由系統(tǒng)自動(dòng)完成。3)面向集合的操作方式:SQL語(yǔ)言采用集合操作方式,不僅操作對(duì)象、查找結(jié)果可以是元組的集合,而且一次插入、刪除、更新操作的對(duì)象也可以是元組的集合。4)提供兩種使用方式:SQL語(yǔ)言既是自含式語(yǔ)言,能夠獨(dú)立地以聯(lián)機(jī)交互的方式使用,它又是嵌入式語(yǔ)言,能夠嵌入到高級(jí)語(yǔ)言中供
15、程序員設(shè)計(jì)程序時(shí)使用。5)語(yǔ)言簡(jiǎn)潔,易學(xué)易用:SQL核心功能只需要9個(gè)動(dòng)詞就可以完成數(shù)據(jù)查詢(xún)、定義、操縱和控制的功能。 1.3.3 T-SQL語(yǔ)言簡(jiǎn)介 T-SQL概述T-SQL(Transact-SQL)語(yǔ)言是Microsoft公司在SQL Server數(shù)據(jù)庫(kù)管理系統(tǒng)中SQL的實(shí)現(xiàn)。它遵守Entry Level ANSI SQL-92的標(biāo)準(zhǔn),用戶(hù)和研發(fā)人員能使用標(biāo)準(zhǔn)的關(guān)系語(yǔ)句對(duì)表進(jìn)行選擇、更新、插入和刪除記錄。T-SQL語(yǔ)言由下面4個(gè)部分組成:數(shù)據(jù)控制語(yǔ)言(DCL):進(jìn)行安全性管理。包括GRANT、DENY和REVOKE等。數(shù)據(jù)定義語(yǔ)言(DDL):執(zhí)行數(shù)據(jù)庫(kù)任務(wù),創(chuàng)建數(shù)據(jù)庫(kù)及其對(duì)象。包括CRE
16、ATE、ALTER和DROP等。數(shù)據(jù)操縱語(yǔ)言(DML):操縱數(shù)據(jù)庫(kù)中各對(duì)象。包括SELECT、INSERT、UPDATE和DELETE等。附加的語(yǔ)言元素:Transact-SQL語(yǔ)句的附加語(yǔ)言元素。包括變量、運(yùn)算符、函數(shù)、流程控制語(yǔ)句和注釋等 1標(biāo)識(shí)符 數(shù)據(jù)庫(kù)對(duì)象的名稱(chēng)即為其標(biāo)識(shí)符。對(duì)象標(biāo)識(shí)符是在定義對(duì)象時(shí)創(chuàng)建的。標(biāo)識(shí)符隨后用于引用該對(duì)象。常規(guī)標(biāo)識(shí)符格式規(guī)則:1)第一個(gè)字符必須是下列字符之一: Unicode 標(biāo)準(zhǔn) 3.2 所定義的字母。Unicode 中定義的字母包括拉丁字符 a-z 和 A-Z,以及來(lái)自其他語(yǔ)言的字母字符。下劃線 ( _ )、“at”符號(hào) () 或者數(shù)字符號(hào) (#)。 在
17、SQL Server 中,某些位于標(biāo)識(shí)符開(kāi)頭位置的符號(hào)具有特殊意義。以“at”符號(hào)“”開(kāi)頭的標(biāo)識(shí)符表示局部變量或參數(shù)。以一個(gè)數(shù)字符號(hào)“#”開(kāi)頭的標(biāo)識(shí)符表示臨時(shí)表或過(guò)程。以?xún)蓚€(gè)數(shù)字符號(hào) “#”開(kāi)頭的標(biāo)識(shí)符表示全局臨時(shí)對(duì)象。2)不允許嵌入空格或其他特殊字符。 在 Transact-SQL 語(yǔ)句中使用標(biāo)識(shí)符時(shí),必須用雙引號(hào)或括號(hào)分隔不符合規(guī)則的標(biāo)識(shí)符。 2對(duì)象的引用完整的對(duì)象名稱(chēng)由四個(gè)標(biāo)識(shí)符組成:服務(wù)器名稱(chēng)、數(shù)據(jù)庫(kù)名稱(chēng)、架構(gòu)名稱(chēng)和對(duì)象名稱(chēng)。其格式如下: server. database . schema_name . object_name指定了所有四個(gè)部分的對(duì)象名稱(chēng)稱(chēng)為完全限定名稱(chēng)。在 Micro
18、soft SQL Server 2005 中創(chuàng)建的每個(gè)對(duì)象必須具有唯一的完全限定名稱(chēng)。例如,如果所有者不同,同一個(gè)數(shù)據(jù)庫(kù)中可以有兩個(gè)名為 xyz 的表。大多數(shù)對(duì)象引用使用由三個(gè)部分組成的名稱(chēng)。默認(rèn)服務(wù)器為本地服務(wù)器。由四個(gè)部分組成的名稱(chēng)通常用于分布式查詢(xún)或遠(yuǎn)程存儲(chǔ)過(guò)程調(diào)用 3批處理批處理是包含一個(gè)或多個(gè) Transact-SQL 語(yǔ)句的組,SQL Server 將批處理的語(yǔ)句編譯為一個(gè)可執(zhí)行單元,稱(chēng)為執(zhí)行計(jì)劃。執(zhí)行計(jì)劃中的語(yǔ)句每次執(zhí)行一條。編譯錯(cuò)誤(如語(yǔ)法錯(cuò)誤)可使執(zhí)行計(jì)劃無(wú)法編譯。因此未執(zhí)行批處理中的任何語(yǔ)句。運(yùn)行時(shí)錯(cuò)誤(如算術(shù)溢出或違反約束)會(huì)產(chǎn)生以下影響之一: 大多數(shù)運(yùn)行時(shí)錯(cuò)誤將停止執(zhí)行
19、批處理中當(dāng)前語(yǔ)句和它之后的語(yǔ)句。某些運(yùn)行時(shí)錯(cuò)誤(如違反約束)僅停止執(zhí)行當(dāng)前語(yǔ)句,而繼續(xù)執(zhí)行批處理中其他所有語(yǔ)句。在運(yùn)行時(shí)發(fā)生錯(cuò)誤之前執(zhí)行的語(yǔ)句不受影響,唯一的例外是如果批處理在事務(wù)中而且錯(cuò)誤導(dǎo)致事務(wù)回滾,在這種情況下回滾運(yùn)行到錯(cuò)誤之前所進(jìn)行的未提交的數(shù)據(jù)修改。 T-SQL流程控制T-SQL提供了用于編程的代碼語(yǔ)法結(jié)構(gòu),可以用來(lái)進(jìn)行順序、選擇、循環(huán)等程序設(shè)計(jì)。1SET語(yǔ)句SET語(yǔ)句為聲明的變量賦值。其語(yǔ)法格式為:SET locl_variable=expression在使用賦值語(yǔ)句時(shí)要求指定的值與變量的數(shù)據(jù)類(lèi)型相符。例如下面的語(yǔ)句聲明了變量并進(jìn)行賦值。DECLARE A INTDECLARE B
20、 CHAR(10)SET A=365SET B= OlympicGO2IFELSE語(yǔ)句IFELSE的語(yǔ)句格式為:IF Boolean_expressionsql_statement|statement_blockELSEsql_statement|statement_blockIFELSE語(yǔ)句對(duì)條件表達(dá)式進(jìn)行判斷,如果表達(dá)式結(jié)果為T(mén)RUE,則執(zhí)行IF后面的語(yǔ)句;可選的ELSE引入另一個(gè)SQL語(yǔ)句,如果條件表達(dá)式結(jié)果為FALSE,則執(zhí)行ELSE后面的語(yǔ)句。3BEGINEND語(yǔ)句在程序設(shè)計(jì)中,往往要執(zhí)行的操作不是一個(gè)簡(jiǎn)單的SQL語(yǔ)句就能夠完成的,經(jīng)常需要多條語(yǔ)句來(lái)完成一個(gè)任務(wù)。使用BEGINEND
21、可以將一組語(yǔ)句封閉起來(lái)成為一個(gè)組,每次執(zhí)行都完成一組這樣的語(yǔ)句。語(yǔ)法格式為:BEGINsql_statement|statement_blockEND并且BEGINEND語(yǔ)句可以嵌套使用 4WHILE、BREAK、CONTINUE語(yǔ)句 WHILE語(yǔ)句用來(lái)設(shè)置需要重復(fù)執(zhí)行的語(yǔ)句塊,即循環(huán)執(zhí)行。在WHILE后面指定的條件表達(dá)式,只要其值為T(mén)RUE,指定的語(yǔ)句塊就執(zhí)行。在循環(huán)的語(yǔ)句塊中通過(guò)設(shè)置BREAK可以無(wú)條件地退出循環(huán),而執(zhí)行CONTINUE可以使循環(huán)重新開(kāi)始執(zhí)行。5RETURN語(yǔ)句 RETURN從查詢(xún)中無(wú)條件退出。當(dāng)程序執(zhí)行中遇到RETURN語(yǔ)句,立即從過(guò)程、批處理或語(yǔ)句塊中退出,RETURN
22、之后的語(yǔ)句不執(zhí)行。 6WAITFOR語(yǔ)句 WAITFOR稱(chēng)為延遲語(yǔ)句,設(shè)定在達(dá)到指定時(shí)間或時(shí)間間隔之前,或者指定語(yǔ)句至少修改或返回一行之前,阻止執(zhí)行批處理、存儲(chǔ)過(guò)程或事務(wù)。其語(yǔ)法格式為: WAITFOR DELAY time_to_pass /*設(shè)定等待時(shí)間*/ TIME time_to_execute /*設(shè)定等待到某一時(shí)刻*/ 7GOTO語(yǔ)句 GOTO語(yǔ)句將執(zhí)行語(yǔ)句無(wú)條件地跳轉(zhuǎn)到標(biāo)簽外,并從標(biāo)簽位置繼續(xù)執(zhí)行。8TRYCATCH語(yǔ)句 用于進(jìn)行內(nèi)部錯(cuò)誤測(cè)試9GO語(yǔ)句 GO是一個(gè)程序段落結(jié)束的標(biāo)識(shí),通常用在一段程序的結(jié)尾處,標(biāo)識(shí)此段程序至此結(jié)束。不參與程序的運(yùn)行。 1.4 SQL Server
23、2005簡(jiǎn)介 1.4.1 SQL Server發(fā)展 SQL Server是美國(guó)微軟公司推出的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),用戶(hù)可以更方便快捷地管理數(shù)據(jù)庫(kù)、設(shè)計(jì)開(kāi)發(fā)應(yīng)用程序。它有兩種工作模式:一種是C/S(客戶(hù)機(jī)/服務(wù)器)的工作模式,它使用Transact SQL語(yǔ)言在服務(wù)器與客戶(hù)機(jī)間傳送請(qǐng)求和答復(fù)。另一種是B/S(瀏覽器/服務(wù)器)工作模式,SQL Server 2005與XML結(jié)合下支持實(shí)現(xiàn)。SQL Server 2005共有5個(gè)版本,分別是企業(yè)版(Enterprise)、開(kāi)發(fā)版(Development)、工作組版(Workgroup)、標(biāo)準(zhǔn)版(Standard)、簡(jiǎn)易版(Express)。SQL Se
24、rver2005的不同版本用于滿足企業(yè)和個(gè)人的不同需求。1.4.2 SQL Server 2005新增功能1通過(guò)SQL Server Management Studio工具集成了所有SQL Server 2005服務(wù)。2增加了對(duì)用戶(hù)自定義數(shù)據(jù)進(jìn)行加密的功能,使安全性得到提高。3增加了對(duì)64位系統(tǒng)的支持,增強(qiáng)了復(fù)制的能力。4提供了故障轉(zhuǎn)移集群和數(shù)據(jù)庫(kù)鏡像技術(shù),使可用性更高。5引入了.NET規(guī)范語(yǔ)言,使之和VS.NET緊密結(jié)合在一起6對(duì)XML支持更強(qiáng)大,提供了新的XML數(shù)據(jù)類(lèi)型,可以在數(shù)據(jù)庫(kù)中存儲(chǔ)XML文件。7提供更強(qiáng)大的T-SQL語(yǔ)言。8能使用SMTP發(fā)送電子郵件。9數(shù)據(jù)轉(zhuǎn)換功能更強(qiáng)大。10可用
25、HTTP直接訪問(wèn)SQL Server。11引入了新了SQL Server應(yīng)用程序框架,包括Service Broker、Notification Services、SQL Server Mobile和SQL Server Express。12提供了基于服務(wù)器的企業(yè)級(jí)報(bào)表環(huán)境工具Reporting Services,可以通過(guò)Web Services進(jìn)行管理。1.4.3 安裝SQL Server 20051安裝SQL Server 2005的系統(tǒng)要求 CPU要求至少是P3處理器以下,主頻最低要求600MHz,建議使用1GHz以上。內(nèi)存最小要求512M,建議使用1G以上。硬盤(pán)需求大小取決于安裝組件的
26、多少,但至少要有1.66G的可用硬盤(pán)空間用來(lái)存放安裝過(guò)程中產(chǎn)生的臨時(shí)文件。 除此之外,還要求IE 6.0 SP1及以上版本,如果安裝報(bào)表服務(wù)器要求IIS 5.0以上版本,ASP.NET 2.0版本。MDAC要求Microsoft 數(shù)據(jù)訪問(wèn)組件2.8 SP1或更高版本。2安裝SQL Server 2005 在安裝SQL Server 2005時(shí)如果操作系統(tǒng)不是Windows 2003則需要單獨(dú)安裝三個(gè)組件:Microsoft Windows Installer 3.1或更高版本、MDAC 2.8 SP1或更高版本、Microsoft Windows .NET Framework 2.0。建議不要
27、使用已有其它作用的服務(wù)器用于安裝SQL Server 2005,以免服務(wù)器性能下降。1.4.4 服務(wù)器的后臺(tái)服務(wù) SQL Server 2005安裝安畢后,其服務(wù)器端組件是以“服務(wù)”的形式在計(jì)算機(jī)系統(tǒng)中運(yùn)行,“服務(wù)”是一種在后臺(tái)運(yùn)行的應(yīng)用程序。運(yùn)行的服務(wù)不在桌面上顯示,在后臺(tái)完成需要的操作??梢栽诓僮飨到y(tǒng)【管理工具】的【服務(wù)】中查看。1SQL ServerSQL Server服務(wù)就是SQL Server 2005的數(shù)據(jù)引擎,是SQL Server 2005的核心服務(wù)。2SQL Server Active Directory Helper這個(gè)服務(wù)用于支持與活動(dòng)目錄Active Directory
28、的集成,它由所有已安裝的實(shí)例共享,并且只能安裝一次。3SQL Server AgentSQL Server代理,它按計(jì)劃好的任務(wù)自動(dòng)執(zhí)行數(shù)據(jù)庫(kù)管理員安排的作業(yè)4SQL Server Analysis Services提供聯(lián)機(jī)分析處理(OLAP)和數(shù)據(jù)挖掘的服務(wù)。5SQL Server Browser它為所有SQL Server實(shí)例共享,它的功能是將SQL Server的連接信息6SQL Server FullText Search它的功能是是快速創(chuàng)建結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)的內(nèi)容和屬性的全文索引7SQL Server Integration Services執(zhí)行如FTP、SQL語(yǔ)句和電子郵件消息傳
29、遞等工作流功能的任務(wù)8SQL Server Reporting Services管理、執(zhí)行、呈現(xiàn)、計(jì)劃和傳遞報(bào)表。9SQL Server VSS Writer它是SQL Server編寫(xiě)服務(wù)器1.4.5 客戶(hù)端上的管理工具1SQL Server Management Studio 這是SQL Server 2005中最重要的用得最頻繁的工具,它集成了SQL Server 2000中的企業(yè)管理器、查詢(xún)分析器等功能為一體,還可以用它來(lái)編寫(xiě)XML語(yǔ)句。它在【開(kāi)始】|【所有程序】|【Microsoft SQL Server 2005】菜單中。2Reporting Services配置 它是用于報(bào)表服務(wù)
30、配置,管理報(bào)表服務(wù)器。在【開(kāi)始】|【所有程序】|【Microsoft SQL Server 2005】|【配置工具】菜單中。3SQL Server Configuration Manager SQL Server配置管理器,用于管理與SQL Server有關(guān)的連接服務(wù)。在【開(kāi)始】|【所有程序】|【Microsoft SQL Server 2005】|【配置工具】菜單中。4SQL Server錯(cuò)誤和使用情況報(bào)告 在【開(kāi)始】|【所有程序】|【Microsoft SQL Server 2005】|【配置工具】菜單中。 5SQL Server外圍應(yīng)用配置器 它可以啟用、禁用、SQL Server 20
31、05安裝的一些功能、服務(wù)和遠(yuǎn)程連接,以增加SQL Server的安全性。它在【開(kāi)始】|【所有程序】|【Microsoft SQL Server 2005】|【配置工具】菜單中。6SQL Server Profiler 它是SQL Server事件探查器,用于從服務(wù)器上捕獲SQL Server 2005事件的工具??梢圆檎覍?dǎo)致SQL Server運(yùn)行慢的查詢(xún);捕獲導(dǎo)致某個(gè)問(wèn)題的SQL語(yǔ)句;監(jiān)視SQL Server性能等。它在【開(kāi)始】|【所有程序】|【Microsoft SQL Server 2005】|【性能工具】菜單中。7數(shù)據(jù)庫(kù)引擎優(yōu)化顧問(wèn) 可以完成對(duì)數(shù)據(jù)庫(kù)的優(yōu)化。它在【開(kāi)始】|【所有程序】|
32、【Microsoft SQL Server 2005】|【性能工具】菜單中。8Visual Studio 2005 利用它可以創(chuàng)建與SQL Server 2005相連的Analysis Services項(xiàng)目、Integration Services項(xiàng)目、報(bào)表服務(wù)器項(xiàng)目和報(bào)表模型項(xiàng)目等。它在【開(kāi)始】|【所有程序】|【Microsoft Visual Studio 2005】中。 1.4.6 啟動(dòng)及配置SQL Server 2005 1連接到服務(wù)器 通過(guò)客戶(hù)端管理工具SQL Server Management Studio可以連接到服務(wù)器上。2添加服務(wù)器注冊(cè) 把常用的服務(wù)器進(jìn)行注冊(cè)可以方便以后的管
33、理和使用。在SQL Server Management Studio的【已注冊(cè)服務(wù)器】窗口里列出的是常用的服務(wù)器與實(shí)例名。但這里保存的只是服務(wù)器連接信息,并不是真正已連接到服務(wù)器上了,在連接時(shí)還要指定服務(wù)器類(lèi)型、名稱(chēng)、身份驗(yàn)證信息。3停止或暫停服務(wù) 單擊【開(kāi)始】|【所有程序】|【Microsoft SQL Server 2005】|【配置工具】,選擇【SQL Server Configuration Manager】 4配置服務(wù)啟動(dòng)模式 在SQL Server 2005的服務(wù)中,有些服務(wù)是默認(rèn)自動(dòng)啟動(dòng)的,如SQL Server 5配置服務(wù)器 在SQL Server Management Stu
34、dio中的【對(duì)象資源管理器】窗口里,右擊要配置的服務(wù)器名,在快捷菜單中選【屬性】 第2章 數(shù)據(jù)庫(kù)管理2.1 SQL SERVER中數(shù)據(jù)庫(kù)概述 2.2 數(shù)據(jù)庫(kù)管理 主要內(nèi)容 熟悉數(shù)據(jù)庫(kù)及其對(duì)象學(xué)習(xí)文件和文件組及事務(wù)日志了解創(chuàng)建數(shù)據(jù)庫(kù)系統(tǒng)的幾個(gè)階段和原則熟練掌握創(chuàng)建和管理數(shù)據(jù)庫(kù)2.1 SQL SERVER中數(shù)據(jù)庫(kù)概述 2.1.1 數(shù)據(jù)庫(kù)及其對(duì)象 1.數(shù)據(jù)庫(kù) 在SQL Server 2005中數(shù)據(jù)庫(kù)是數(shù)據(jù)和數(shù)據(jù)庫(kù)對(duì)象的集合,以磁盤(pán)文件的方式存放在計(jì)算機(jī)里。數(shù)據(jù)處理是指將數(shù)據(jù)轉(zhuǎn)換成信息的過(guò)程。2.常見(jiàn)的數(shù)據(jù)庫(kù)對(duì)象 表:是具體組織和存儲(chǔ)數(shù)據(jù)的對(duì)象,由列和行組成。其中每一列都代表一個(gè)相同類(lèi)型的數(shù)據(jù)。 記錄
35、:在表的結(jié)構(gòu)建立完畢之后,表中的每一行數(shù)據(jù)就是一條記錄。 主鍵:是表中的一列或多列的組合。它的值能唯一地確定一條記錄。外鍵:是這樣一列或多列的組合,它存在于A表中,但不是A表的主鍵;它同時(shí)也存在于B表中,且是B表的主鍵,那么稱(chēng)這一列或多列是A表相對(duì)于B表的外鍵。外鍵是用來(lái)實(shí)現(xiàn)表與表之間的關(guān)系的。索引:是某個(gè)表中一列或若干列值的集合和相應(yīng)的指向表中物理標(biāo)識(shí)這些值的數(shù)據(jù)頁(yè)的邏輯指針清單。它提供了數(shù)據(jù)庫(kù)中編排表中數(shù)據(jù)的內(nèi)部方法。約束:是SQL Server實(shí)施數(shù)據(jù)一致性和數(shù)據(jù)完整性的方法或者說(shuō)是一套機(jī)制,它包括主鍵約束、外鍵約束、Unique約束、Check約束、缺省值和允許空等六種機(jī)制。默認(rèn)值:功
36、能就是在數(shù)據(jù)表中插入數(shù)據(jù)時(shí),對(duì)沒(méi)有指定具體值的字段,數(shù)據(jù)庫(kù)會(huì)自動(dòng)提供默認(rèn)的數(shù)據(jù)。規(guī)則:是用來(lái)限制數(shù)據(jù)表中字段的有限范圍,以確保列中數(shù)據(jù)完整性的一種方式。存儲(chǔ)過(guò)程:是一組經(jīng)過(guò)編譯的可以重復(fù)使用的Transact-SQL代碼的組合。它是經(jīng)過(guò)編譯存儲(chǔ)到數(shù)據(jù)庫(kù)中的,所以運(yùn)行速度要比執(zhí)行相同的SQL語(yǔ)句要快。觸發(fā)器:是一種特殊的存儲(chǔ)過(guò)程,與表格相關(guān)聯(lián)。當(dāng)用戶(hù)對(duì)數(shù)據(jù)進(jìn)行插入、修改、刪除或數(shù)據(jù)庫(kù)(表)建立、修改、刪除時(shí)激活,并自動(dòng)執(zhí)行。2.1.2 文件和文件組1文件 文件是數(shù)據(jù)庫(kù)的操作系統(tǒng)文件,SQL Server 2005中的每個(gè)數(shù)據(jù)庫(kù)都由多個(gè)文件組成,SQL Server 2005 數(shù)據(jù)庫(kù)有以下三種類(lèi)型
37、的文件。 1)主要數(shù)據(jù)文件 2)次要數(shù)據(jù)文件 3)日志文件 2 文件組 出于方便對(duì)數(shù)據(jù)庫(kù)文件的管理的考慮,可以將數(shù)據(jù)庫(kù)文件分成不同的文件組。文件組可以對(duì)此進(jìn)程提供幫助。系統(tǒng)管理員可以為每個(gè)磁盤(pán)驅(qū)動(dòng)器創(chuàng)建文件組,然后將特定的表、索引、或表中的 text、ntext 或 image 數(shù)據(jù)指派給特定的文件組。SQL Server 2005提供了三種文件組類(lèi)型,它們分別是主要文件組,用戶(hù)自定義文件組和默認(rèn)文件組。1)主要文件組2)用戶(hù)自定義文件組3)默認(rèn)文件組事務(wù)日志是存放恢復(fù)數(shù)據(jù)所需的所有信息,是數(shù)據(jù)庫(kù)中已發(fā)生的所有修改和執(zhí)行每次修改的事務(wù)的一連串記錄。當(dāng)數(shù)據(jù)庫(kù)損壞時(shí),管理員可以使用事務(wù)日志還原數(shù)據(jù)
38、庫(kù)。每一個(gè)數(shù)據(jù)庫(kù)必須至少擁有一個(gè)事務(wù)日志文件,允許擁有多個(gè)日志文件。 事務(wù)日志是針對(duì)數(shù)據(jù)庫(kù)改變所做的記錄,它可以記錄針對(duì)數(shù)據(jù)庫(kù)的任何操作,并將記錄結(jié)果保存在獨(dú)立的文件中。對(duì)于任何事務(wù)過(guò)程,事務(wù)日志都有非常全面的記錄,根據(jù)這些記錄可以將數(shù)據(jù)文件恢復(fù)成事務(wù)前的狀態(tài)。2.1.3 事務(wù)日志 數(shù)據(jù)庫(kù)設(shè)計(jì)是建立數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng)的核心和基礎(chǔ),它要求對(duì)于指定的應(yīng)用環(huán)境,構(gòu)造出較優(yōu)的數(shù)據(jù)庫(kù)模式,建立起數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),并使系統(tǒng)能有效地存儲(chǔ)數(shù)據(jù),滿足用戶(hù)的各種應(yīng)用需求。一般按照規(guī)范化的設(shè)計(jì)方法,常將數(shù)據(jù)庫(kù)設(shè)計(jì)分為若干階段:1需求分析階段2概念設(shè)計(jì)階段3邏輯結(jié)構(gòu)設(shè)計(jì)階段4物理結(jié)構(gòu)設(shè)計(jì)階段5數(shù)據(jù)庫(kù)實(shí)施階段6數(shù)據(jù)庫(kù)運(yùn)行
39、和維護(hù)階段2.1.4 數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程1用 SQL Server Management Studio創(chuàng)建數(shù)據(jù)庫(kù)1)從桌面上依次選擇【開(kāi)始】|【所有程序】|【Microsoft SQL Server 2005】|【SQL Server Management Studio】,打開(kāi)SQL Server Management Studio窗口,設(shè)置好服務(wù)器類(lèi)型、服務(wù)器名稱(chēng)、身份驗(yàn)證、用戶(hù)名和密碼,并單擊【連接】按鈕。2)在【對(duì)象資源管理器】窗口里選擇【數(shù)據(jù)庫(kù)】節(jié)點(diǎn)并單擊鼠標(biāo)右鍵,彈出快捷菜單,選擇【新建數(shù)據(jù)庫(kù)】命令,如圖2.1所示。2.2 數(shù)據(jù)庫(kù)管理 2.2.1 數(shù)據(jù)庫(kù)創(chuàng)建3)出現(xiàn)新建數(shù)據(jù)庫(kù)窗口,窗口由
40、【常規(guī)】、【選項(xiàng)】和【文件組】三個(gè)選項(xiàng)組成。比如要?jiǎng)?chuàng)建“BJGL”班級(jí)管理數(shù)據(jù)庫(kù),可在【常規(guī)】項(xiàng)的【數(shù)據(jù)庫(kù)名稱(chēng)】文本框中輸入BJGL。4)在各個(gè)選項(xiàng)中可以設(shè)置它們的參數(shù)值,比如在【數(shù)據(jù)庫(kù)名稱(chēng)】文本框中輸入要?jiǎng)?chuàng)建的數(shù)據(jù)庫(kù)名稱(chēng);在【所有者】文本框里輸入數(shù)據(jù)庫(kù)的擁有者;在【數(shù)據(jù)庫(kù)文件】編輯框內(nèi)的【邏輯名稱(chēng)】列輸入文件名;在【初始大小】列設(shè)置初始值大小,在【自動(dòng)增長(zhǎng)】列設(shè)置自動(dòng)增長(zhǎng)的大小等。5)然后單擊【確定】按鈕,在【數(shù)據(jù)庫(kù)】的樹(shù)形結(jié)構(gòu)中,就可看到剛創(chuàng)建的BJGL數(shù)據(jù)庫(kù),如圖2.2所示。 2 用 T-SQL 命令創(chuàng)建數(shù)據(jù)庫(kù)CREATE DATABASE database_nameON ,.n , ,
41、.n LOG ON ,.n COLLATE collation_name進(jìn)一步把定義為:PRIMARY(NAME=logical_file_name,FILENAME=OS_file_name,SIZE=size,MAXSIZE=max_size|UNLIMITED,FILEGROWTH=growth_increment) ,.n把定義為:FILEGROUP filegroup_name,.n對(duì)以上語(yǔ)法中的符號(hào)及參數(shù)作如下說(shuō)明: :表示可選語(yǔ)法項(xiàng),省略時(shí)各參數(shù)取默認(rèn)值。,.n:表示前面的內(nèi)容可以重復(fù)多次。 :表示必選項(xiàng),有相應(yīng)參數(shù)時(shí), 中的內(nèi)容是必選的。:表示在實(shí)際的語(yǔ)句中要用相應(yīng)的內(nèi)容替代。
42、文字大寫(xiě):說(shuō)明該文字是T-SQL的關(guān)鍵字。文字小寫(xiě):說(shuō)明該文字是用戶(hù)提供的T-SQL語(yǔ)法的參數(shù)。database_name:是用戶(hù)所要?jiǎng)?chuàng)建的數(shù)據(jù)庫(kù)名稱(chēng),最長(zhǎng)不能超過(guò)128個(gè)字符,在一個(gè)SQL Server實(shí)例中,數(shù)據(jù)庫(kù)名稱(chēng)是唯一的。ON:指定存放數(shù)據(jù)庫(kù)的數(shù)據(jù)文件信息,說(shuō)明數(shù)據(jù)庫(kù)是根據(jù)后面的參數(shù)創(chuàng)建的。LOG ON:指定日志文件的明確定義。如沒(méi)有它,系統(tǒng)會(huì)自動(dòng)創(chuàng)建一個(gè)為所有數(shù)據(jù)文件總和1/4大小或512K大小的日志文件。COLLATE collation_name:指定數(shù)據(jù)庫(kù)默認(rèn)排序規(guī)則。規(guī)則名稱(chēng)可以是Windows排序規(guī)則名稱(chēng),也可以是SQL排序規(guī)則名稱(chēng)。:指定文件的屬性。NAME logic
43、al_file_name:定義數(shù)據(jù)文件的邏輯名稱(chēng),此名稱(chēng)在數(shù)據(jù)庫(kù)中必須唯一。ILENAME OS_file_name:定義數(shù)據(jù)文件的物理名稱(chēng),包括物理文件使用的路徑名和文件名。SIZE size:文件屬性中定義文件的初始值,指定為整數(shù)。MAXSIZE max_size:文件屬性中定義文件可以增長(zhǎng)到的最大值,可以使用KB、MB、GB或TG后綴,默認(rèn)值是MB。指定為整數(shù)。如果沒(méi)有指定或?qū)憉nlimited,那么文件將增長(zhǎng)到磁盤(pán)變滿為止。FILEGROWTH growth_increment:定義文件的自動(dòng)增長(zhǎng),growth_increment定義每次增長(zhǎng)的大小。filegroup:定義對(duì)文件組的控
44、制。2.2.2 修改數(shù)據(jù)庫(kù)配置1用 SQL Server Management Studio修改數(shù)據(jù)庫(kù)配置1)啟動(dòng)SQL Server Management Studio,連接上數(shù)據(jù)庫(kù)實(shí)例,展開(kāi)【對(duì)象資源管理器】里的樹(shù)型目錄,定位到要修改的數(shù)據(jù)庫(kù)上。2)右擊要修改的數(shù)據(jù)庫(kù),例如我們選擇“學(xué)生數(shù)據(jù)庫(kù)”,彈出快捷菜單,選擇【屬性】選項(xiàng)。圖 2.3 數(shù)據(jù)庫(kù)屬性窗口2 用 T-SQL 命令修改數(shù)據(jù)庫(kù)配置ALTER DATABASE database_nameADD FILE ,.n TO FILEGROUP filegroup_name|ADD LOG FILE ,.n|REMOVE FILE log
45、ical_file_name|ADD FILEGROUP filegroup_name|REMOVE FILEGROUP filegroup_name|MODIFY FILE |MODIFY NAME=new_database_name|MODIFYFILEGROUP filegroup_namefilegroup_property|NAME=new_filegroup_name對(duì)各子句說(shuō)明如下:ADD FILE ,.nTO FILEGROUP filegroup_name:向指定的文件組中添加新的數(shù)據(jù)文件。ADD LOG FILE ,.n:增加新的日志文件。REMOVE FILE logic
46、al_file_name:從數(shù)據(jù)庫(kù)系統(tǒng)表中刪除文件描述和物理文件。ADD FILEGROUP filegroup_name:增加一個(gè)文件組。REMOVE FILEGROUP filegroup_name: 刪除指定的文件組。MODIFY FILE :修改物理文件。MODIFY NAME=new_database_name:重命名數(shù)據(jù)庫(kù)。MODIFYFILEGROUP filegroup_name:修改指定文件組的屬性。例2-1:用T-SQL命令把“學(xué)生數(shù)據(jù)庫(kù)”重命名為“教師數(shù)據(jù)庫(kù)”,可用如下命令。ALTER DATABASE 學(xué)生數(shù)據(jù)庫(kù)MODIFY NAME=教師數(shù)據(jù)庫(kù)執(zhí)行后會(huì)得到“數(shù)據(jù)庫(kù)名稱(chēng)
47、教師數(shù)據(jù)庫(kù) 已設(shè)置”這樣的提示消息。例2-2:為“成績(jī)數(shù)據(jù)庫(kù)”增加一個(gè)數(shù)據(jù)庫(kù)文件,可運(yùn)用如下語(yǔ)句。ALTER DATABASE 成績(jī)數(shù)據(jù)庫(kù) ADD FILE (NAME=新增的數(shù)據(jù)文件, FILENAME=D: SCORE成績(jī)數(shù)據(jù)庫(kù)新增的數(shù)據(jù)文件.ndf)注意:需要保證“學(xué)生數(shù)據(jù)庫(kù)”和“成績(jī)數(shù)據(jù)庫(kù)”存在。2.2.3 分離與附加數(shù)據(jù)庫(kù) 分離數(shù)據(jù)庫(kù)1用 SQL Server Management Studio分離數(shù)據(jù)庫(kù)用 SQL Server Management Studio分離數(shù)據(jù)庫(kù)的具體步驟如下。1)在【對(duì)象資源管理器】窗口里,展開(kāi)樹(shù)形目錄,定位到要分離的數(shù)據(jù)庫(kù)如“BJGL”上單擊鼠標(biāo)右鍵,
48、在彈出的快捷菜單中,選擇【任務(wù)】|【分離】命令。2用 T-SQL命令分離數(shù)據(jù)庫(kù)用T-SQL語(yǔ)句可以分離數(shù)據(jù)庫(kù),語(yǔ)法格式如下。sp_detach_dbdbname= dbname, skipchecks= skipchecks ,keepFulltextIndexFile= keepFulltextIndexFile 參數(shù)說(shuō)明如下。dbname= dbname:要分離的數(shù)據(jù)庫(kù)名稱(chēng)。skipchecks= skipchecks:定義是否運(yùn)行更新統(tǒng)計(jì)信息的操作。keepFulltextIndexFile= keepFulltextIndexFile :與數(shù)據(jù)庫(kù)有關(guān)的full-text文件是否要分離,
49、默認(rèn)值為true。例2-3:用T-SQL語(yǔ)句分離“xsgl”數(shù)據(jù)庫(kù),使用的命令如下。SP_detach_db dbname=xsgl注意:需要保證“xsgl”數(shù)據(jù)庫(kù)”存在。 附加數(shù)據(jù)庫(kù)1. 用 SQL Server Management Studio附加數(shù)據(jù)庫(kù)用 SQL Server Management Studio附加數(shù)據(jù)庫(kù)的具體步驟如下。1)在【對(duì)象資源管理器】窗口中,在【數(shù)據(jù)庫(kù)】節(jié)點(diǎn)上單擊鼠標(biāo)右鍵,彈出快捷菜單,選擇【附加】命令。2)出現(xiàn)【附加數(shù)據(jù)庫(kù)】對(duì)話框,單擊【添加】按鈕,出現(xiàn)【定位數(shù)據(jù)庫(kù)文件】對(duì)話框,在這個(gè)對(duì)話框里,默認(rèn)只顯示數(shù)據(jù)庫(kù)的數(shù)據(jù)文件,即“mdf”文件。2用 T-SQL命
50、令附加數(shù)據(jù)庫(kù)用T-SQL語(yǔ)句也可以附加數(shù)據(jù)庫(kù),語(yǔ)法格式如下。CREATE DATABASE database_name ON ,.n FOR ATTACH WITH |ATTACH_REBUILD_LOG對(duì)以上各參數(shù)簡(jiǎn)要說(shuō)明如下。database_name:要附加的數(shù)據(jù)庫(kù)名稱(chēng)。ATTACH_REBUILD_LOG:重建日志文件。2.2.4 脫機(jī)與聯(lián)機(jī)數(shù)據(jù)庫(kù) 脫機(jī)數(shù)據(jù)庫(kù) 1. 用 SQL Server Management Studio脫機(jī)數(shù)據(jù)庫(kù)用 SQL Server Management Studio脫機(jī)數(shù)據(jù)庫(kù)的具體步驟如下。1)啟動(dòng)SQL Server Management Studio,
51、連接到本地?cái)?shù)據(jù)庫(kù)默認(rèn)實(shí)例。2)在【對(duì)象資源管理器】窗口里,展開(kāi)樹(shù)形目錄,定位到要脫機(jī)的數(shù)據(jù)庫(kù)如“BJGL”上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中,選擇【任務(wù)】|【脫機(jī)】命令。3)彈出如圖2.6所示的【使數(shù)據(jù)庫(kù)脫機(jī)】對(duì)話框,單擊【關(guān)閉】按鈕即可完成操作。2. 用 T-SQL 命令脫機(jī)數(shù)據(jù)庫(kù)用T-SQL語(yǔ)句也可以脫機(jī)數(shù)據(jù)庫(kù),語(yǔ)法格式比較簡(jiǎn)單。 ALTER DATABASE database_name set OFFLINE 例2-4:用T-SQL語(yǔ)句使“xsgl”脫機(jī),命令如下。ALTER DATABASE xsgl set OFFLINE圖 2.6 脫機(jī)數(shù)據(jù)庫(kù)成功窗口 聯(lián)機(jī)數(shù)據(jù)庫(kù)1. 用 SQL S
52、erver Management Studio聯(lián)機(jī)數(shù)據(jù)庫(kù)用 SQL Server Management Studio聯(lián)機(jī)數(shù)據(jù)庫(kù)的具體步驟如下。1)啟動(dòng)SQL Server Management Studio,連接到本地?cái)?shù)據(jù)庫(kù)默認(rèn)實(shí)例。2)在【對(duì)象資源管理器】窗口里,展開(kāi)樹(shù)形目錄,定位到“BJGL”上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中,選擇【任務(wù)】|【聯(lián)機(jī)】命令。2. 用 T-SQL 命令聯(lián)機(jī)數(shù)據(jù)庫(kù)用T-SQL語(yǔ)句亦可聯(lián)機(jī)數(shù)據(jù)庫(kù),語(yǔ)法格式如下:ALTER DATABASE database_name set ONLINE 例2-5:用T-SQL語(yǔ)句使“xsgl”聯(lián)機(jī),命令如下。ALTER DATA
53、BASE xsgl set ONLINE 2.2.5 刪除數(shù)據(jù)庫(kù)1 用 SQL Server Management Studio刪除數(shù)據(jù)庫(kù)1)在【對(duì)象資源管理器】中,定位在目標(biāo)數(shù)據(jù)庫(kù)上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇【刪除】。2用 T-SQL 命令刪除數(shù)據(jù)庫(kù)該命令的語(yǔ)法如下。DROP DATABASE database_name,.n其中database_name是要?jiǎng)h除的數(shù)據(jù)庫(kù)名稱(chēng),可以同時(shí)刪除多個(gè)數(shù)據(jù)庫(kù)。例2-6:要?jiǎng)h除“BJGL”數(shù)據(jù)庫(kù),可使用如下命令:DROP DATABASE BJGL2.2.6 收縮數(shù)據(jù)庫(kù)1 用 SQL Server Management Studio收縮數(shù)據(jù)庫(kù)
54、和文件用 SQL Server Management Studio收縮數(shù)據(jù)庫(kù)和文件的具體步驟如下:1)在【對(duì)象資源管理器】中,定位在目標(biāo)數(shù)據(jù)庫(kù)上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇【任務(wù)】|【收縮】|【數(shù)據(jù)庫(kù)】。2)出現(xiàn)【收縮數(shù)據(jù)庫(kù)】對(duì)話框,選中并設(shè)置相應(yīng)的值,點(diǎn)擊【確認(rèn)】。3)如果想收縮數(shù)據(jù)庫(kù)的指定數(shù)據(jù)文件或日志文件,可右擊相應(yīng)的數(shù)據(jù)庫(kù),彈出快捷菜單,選擇【任務(wù)】|【收縮】|【文件 圖 2.10 收縮數(shù)據(jù)庫(kù)窗口 圖 2.12 收縮文件窗口2 用 T-SQL命令收縮數(shù)據(jù)庫(kù)和文件1)使用T-SQL收縮數(shù)據(jù)庫(kù)使用T-SQL語(yǔ)言可以縮小整個(gè)數(shù)據(jù)庫(kù)的所有數(shù)據(jù)文件和日志文件,或只縮小指定的某個(gè)(某些)文
55、件。縮小整個(gè)數(shù)據(jù)庫(kù)的語(yǔ)法結(jié)構(gòu)如下:DBCC SHRINKDATABASE(database_name , target_percent , NOTRUNCATE|TRUNCATEONLY )參數(shù)說(shuō)明如下:database_name:要縮小的數(shù)據(jù)庫(kù)的名稱(chēng)。target_percent:指收縮數(shù)據(jù)庫(kù)的比例。NOTRUNCATE:指在數(shù)據(jù)庫(kù)文件中保留收縮數(shù)據(jù)庫(kù)時(shí)釋放出來(lái)的空間。如沒(méi)有定義參數(shù),縮小的空閑空間將歸還給操作系統(tǒng)。TRUNCATEONLY:將數(shù)據(jù)文件中未使用的空間釋放給操作系統(tǒng),以減少數(shù)據(jù)庫(kù)文件的大小。2)使用T-SQL收縮文件,其語(yǔ)法格式如下:DBCC SHRINKFILE(file_n
56、ame|file_id ,target_size |,EMPTYFILE|NOTRUNCATE|TRUNCATEONLY )參數(shù)說(shuō)明如下:file_name|file_id:要收縮文件的邏輯文件名稱(chēng)或者文件ID號(hào)。target_size:縮小文件的目標(biāo)空間大小,單位為MB,用整數(shù)表示。例2-7:使用DBCC SHRINKFILE命令將xsgl數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)文件的大小縮小到1MB.在查詢(xún)編輯器中輸入如下命令。USE xsglgoDBCC SHRINKFILE( xsgl,1)第3章 數(shù)據(jù)表的管理3.1表的創(chuàng)建及修改 3.3 表中數(shù)據(jù)的檢索3.2表中數(shù)據(jù)的修改主要內(nèi)容 了解SQL Server 2
57、005的數(shù)據(jù)類(lèi)型掌握表的創(chuàng)建和表結(jié)構(gòu)的修改方法掌握表中數(shù)據(jù)的插入、刪除和修改操作掌握表中數(shù)據(jù)的檢索方法3.1表的創(chuàng)建及修改 3.1.1 數(shù)據(jù)類(lèi)型 數(shù)據(jù)類(lèi)型是數(shù)據(jù)庫(kù)的重要特性之一,SQL Server提供了多種系統(tǒng)數(shù)據(jù)類(lèi)型,也可以由用戶(hù)自定義數(shù)據(jù)類(lèi)型。邏輯類(lèi)型整數(shù)類(lèi)型浮點(diǎn)類(lèi)型字符類(lèi)型二進(jìn)制類(lèi)型時(shí)間數(shù)據(jù)類(lèi)型貨幣數(shù)據(jù)類(lèi)型3.1.2 創(chuàng)建表在SQL Server 2005中提供兩種創(chuàng)建表的方式:一種是在SQL Server Management Studio中創(chuàng)建表,另一種方式是通過(guò)執(zhí)行T-SQL語(yǔ)句創(chuàng)建表。1在SQL Server Management Studio中創(chuàng)建表2用T-SQL語(yǔ)句創(chuàng)建表例
58、 3-1創(chuàng)建一個(gè)教師表CREAT TABLE 教師表(教師編號(hào) INT IDENTITY(1,1) NOT NULL, /*設(shè)置標(biāo)識(shí)規(guī)范*/教師姓名 CHAR(8) NOT NULL,職稱(chēng) CHAR(6) DEFAULT 講師, /*設(shè)置默認(rèn)值約束*/專(zhuān)業(yè)方向 CHAR(20),系 CHAR(10),聯(lián)系方式 CHAR(30)GO3.1.3 修改表結(jié)構(gòu)1在SQL Server Management Studio中修改表2用T-SQL語(yǔ)句修改表:ALTER TABLE例 3-2 要修改教師表的教師編號(hào)為6位字符,刪除職稱(chēng)列:ALTER TABLE 教師表ALTER COLUMN 教師編號(hào) cha
59、r(6)GOALTER TABLE 教師表DROP COLUMN 職稱(chēng)GO 3.1.4 刪除表 將表從數(shù)據(jù)庫(kù)中刪除,不僅刪除了表的結(jié)構(gòu),還包括表中的所有對(duì)象,該表的結(jié)構(gòu)定義、數(shù)據(jù)、全文索引、約束和索引都從數(shù)據(jù)庫(kù)中永久刪除。 如果要?jiǎng)h除通過(guò) FOREIGN KEY 和 UNIQUE 或 PRIMARY KEY 約束相關(guān)聯(lián)的表,則必須先刪除具有 FOREIGN KEY 約束的表。如果要?jiǎng)h除 FOREIGN KEY 約束中引用的表但不能刪除整個(gè)外鍵表,則必須刪除 FOREIGN KEY 約束。 3.1.4 刪除表1在SQL Server Management Studio中刪除表2用T-SQL語(yǔ)句刪
60、除表刪除表的T-SQL語(yǔ)句是:DROP TABLE table_name例 3-3 刪除數(shù)據(jù)庫(kù)“教務(wù)管理”中的“成績(jī)”表DROP TABLE 成績(jī)3.1.5 臨時(shí)表臨時(shí)表存儲(chǔ)在系統(tǒng)數(shù)據(jù)庫(kù) tempdb 中,當(dāng)不再使用時(shí)會(huì)自動(dòng)刪除。臨時(shí)表有兩種類(lèi)型:本地的和全局的。本地臨時(shí)表的名稱(chēng)以單個(gè)數(shù)字符號(hào) “#”打頭,它們僅對(duì)當(dāng)前的用戶(hù)連接是可見(jiàn)的,當(dāng)用戶(hù)從 SQL Server 實(shí)例斷開(kāi)連接時(shí)被刪除。全局臨時(shí)表的名稱(chēng)以?xún)蓚€(gè)數(shù)字符號(hào)“#”打頭,創(chuàng)建后對(duì)任何用戶(hù)都是可見(jiàn)的,當(dāng)所有引用該表的用戶(hù)從 SQL Server 斷開(kāi)連接時(shí)被刪除。3.2表中數(shù)據(jù)的修改3.2.1 表中數(shù)據(jù)的插入INSERT 語(yǔ)句可向表中
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024實(shí)習(xí)合同書(shū)范本參考
- 2024裝修工程協(xié)議合同
- 個(gè)人借款合同法律解讀
- 2024個(gè)人門(mén)面房屋租賃合同書(shū)常用版
- 經(jīng)典代理合同參考
- 企業(yè)租車(chē)協(xié)議書(shū)樣式
- 2024年度環(huán)保工程設(shè)計(jì)與施工合同
- 2024房屋抵款合同書(shū)
- 2024解除勞動(dòng)合同的賠償
- 成都市古建筑工程施工合同
- 集團(tuán)內(nèi)部資金調(diào)撥管理辦法
- 期刊編輯的學(xué)術(shù)期刊內(nèi)容營(yíng)銷(xiāo)策略考核試卷
- 2024年反假貨幣知識(shí)線上答題考試題庫(kù)(含答案)
- 高中歷史選擇性必修2知識(shí)點(diǎn)總結(jié)歸納
- 黑臭河道整治工程施工組織設(shè)計(jì)
- 《地名、人名的拼寫(xiě)》教學(xué)設(shè)計(jì)
- 貿(mào)易居間費(fèi)合同范本
- 五年級(jí)上冊(cè)道德與法治第7課《中華民族一家親》第2課時(shí)說(shuō)課稿
- 部編版道德與法治七年級(jí)上冊(cè)每課教學(xué)反思
- 人教版二年級(jí)數(shù)學(xué)上冊(cè)第六單元《表內(nèi)乘法(二)》說(shuō)課稿(含14課時(shí))
- CJT 482-2015 城市軌道交通橋梁球型鋼支座
評(píng)論
0/150
提交評(píng)論