關(guān)系數(shù)據(jù)庫基礎(chǔ)課件_第1頁
關(guān)系數(shù)據(jù)庫基礎(chǔ)課件_第2頁
關(guān)系數(shù)據(jù)庫基礎(chǔ)課件_第3頁
關(guān)系數(shù)據(jù)庫基礎(chǔ)課件_第4頁
關(guān)系數(shù)據(jù)庫基礎(chǔ)課件_第5頁
已閱讀5頁,還剩538頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

關(guān)系數(shù)據(jù)庫基礎(chǔ)

第一章

數(shù)據(jù)庫及SQLServer2005簡介主要內(nèi)容

數(shù)據(jù)庫、數(shù)據(jù)庫三種模型數(shù)據(jù)庫管理系統(tǒng)相關(guān)知識關(guān)系數(shù)據(jù)庫操作及規(guī)范。介紹了T-SQL語言。SQLSERVER2005的新特性SQLSERVER2005的安裝及配置1.1數(shù)據(jù)庫的發(fā)展1.1.1數(shù)據(jù)庫概念1.數(shù)據(jù)數(shù)據(jù):能夠在計算機(jī)中存貯的用于描述事物的記錄符號它包括兩個方面:一是描述事物特性的數(shù)據(jù)內(nèi)容二是存儲在某種媒體上的數(shù)據(jù)形式。數(shù)據(jù)處理是指將數(shù)據(jù)轉(zhuǎn)換成信息的過程。第一組概念數(shù)據(jù)與信息信息與數(shù)據(jù)信息是現(xiàn)實世界事物的存在方式或運動狀態(tài)的反映。數(shù)據(jù)是將現(xiàn)實世界中的各種信息記錄下的、可以識別的符號,是信息的載體,信息的具體表現(xiàn)形式。信息與數(shù)據(jù)的關(guān)系 數(shù)據(jù)是承載信息的物理符號或稱之為載體,而信息是數(shù)據(jù)的內(nèi)涵。數(shù)據(jù)與信息數(shù)據(jù):可以從中得出結(jié)論的原始資料??梢該?jù)此得出新事實的論據(jù)。信息:知識、才智、有特定意義或作用的一條特殊數(shù)據(jù)。信息通常是對數(shù)據(jù)進(jìn)行結(jié)合、比較與計算的結(jié)果。數(shù)據(jù)與信息以測試成績?yōu)槔喝绻粋€班級中的每名學(xué)生都收到一個數(shù)值分?jǐn)?shù),則通過這些分?jǐn)?shù)可以計算出班級平均分?jǐn)?shù)。然后通過班級平均分?jǐn)?shù)又可以計算出學(xué)校的平均分?jǐn)?shù)。數(shù)據(jù)庫軟件可以將記錄/存儲的數(shù)據(jù)和統(tǒng)計數(shù)據(jù)轉(zhuǎn)換成有用的信息。數(shù)據(jù):每名學(xué)生的測試分?jǐn)?shù)都是一條數(shù)據(jù)。信息:班級的平均分?jǐn)?shù)或?qū)W校的平均分?jǐn)?shù)。數(shù)據(jù)處理數(shù)據(jù)處理實際上就是利用計算機(jī)對各種形式的數(shù)據(jù)進(jìn)行處理。數(shù)據(jù)處理的目的是從大量的、原始的數(shù)據(jù)中抽象和推導(dǎo)出對人們有價值的信息以作為行動和決策的依據(jù)。數(shù)據(jù)處理信息1.1.1數(shù)據(jù)庫概念

2.數(shù)據(jù)庫數(shù)據(jù)庫(DataBase簡稱DB)是按一定組織結(jié)構(gòu)存貯在計算機(jī)中相關(guān)數(shù)據(jù)的集合。它不僅包括數(shù)據(jù)本身,而且還包括相關(guān)事物間的聯(lián)系。數(shù)據(jù)庫可以被多個用戶、多個應(yīng)用程序共享。對數(shù)據(jù)的增加、刪除、修改和檢索由系統(tǒng)軟件統(tǒng)一進(jìn)行。數(shù)據(jù)庫通常由數(shù)據(jù)庫管理員(DBA)進(jìn)行管理。數(shù)據(jù)庫1.1.1數(shù)據(jù)庫概念3.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(DataBaseManagementSystem,簡稱DBMS)是在操作系統(tǒng)的支持下為用戶提供數(shù)據(jù)庫建立、數(shù)據(jù)操縱、數(shù)據(jù)庫維護(hù)的管理軟件。它有以下幾個功能:1)數(shù)據(jù)定義2)數(shù)據(jù)操縱功能3)數(shù)據(jù)庫的運行管理4)數(shù)據(jù)庫的建立與維護(hù)功能1.1.1數(shù)據(jù)庫概念4.?dāng)?shù)據(jù)庫系統(tǒng)

數(shù)據(jù)庫用戶應(yīng)用系統(tǒng)應(yīng)用開發(fā)工具操作系統(tǒng)應(yīng)用程序員數(shù)據(jù)庫管理員DBA負(fù)責(zé)數(shù)據(jù)庫的規(guī)劃、設(shè)計、協(xié)調(diào)、維護(hù)和管理等工作DBMS管理數(shù)據(jù)庫的系統(tǒng)軟件;是數(shù)據(jù)庫系統(tǒng)的核心。指以數(shù)據(jù)庫為基礎(chǔ)的應(yīng)用程序數(shù)據(jù)庫系統(tǒng)的應(yīng)用Web服務(wù)和脫機(jī)/聯(lián)機(jī)支持設(shè)備適應(yīng)性智能客戶端依賴網(wǎng)絡(luò)貧乏的用戶體驗開發(fā)復(fù)雜瘦客戶端部署困難明顯痕跡DLL地獄胖客戶端豐富的用戶體驗開發(fā)效率高快速響應(yīng)廣泛覆蓋易于變更管理易于部署C/S模式vs.B/S模式數(shù)據(jù)庫的生命周期設(shè)計可用性維護(hù)部署分析信息收集試運行生命周期1.1.2數(shù)據(jù)庫理論發(fā)展人工管理無磁盤、操作系統(tǒng)和數(shù)據(jù)管理軟件數(shù)據(jù)不能長期保存,無獨立性,不能共享文件系統(tǒng)有磁盤、有專門的數(shù)據(jù)管理軟件數(shù)據(jù)可長期保存,有一定獨立性,冗余大數(shù)據(jù)庫系統(tǒng)

數(shù)據(jù)結(jié)構(gòu)化,實現(xiàn)數(shù)據(jù)共享,減少數(shù)據(jù)冗余數(shù)據(jù)獨立性高,有統(tǒng)一的數(shù)據(jù)控制功能1.2數(shù)據(jù)庫系統(tǒng)模型數(shù)據(jù)建模是數(shù)據(jù)庫開發(fā)過程中的第一步。概念模型(設(shè)計)數(shù)據(jù)模型(實現(xiàn))要求真實模擬現(xiàn)實世界容易理解便于在計算機(jī)上實現(xiàn)數(shù)據(jù)和數(shù)據(jù)模型

為了把現(xiàn)實世界中的具體事物抽象、組織為某一具體DBMS支持的數(shù)據(jù)模型,通常首先將現(xiàn)實世界抽象為信息世界,然后再將信息世界轉(zhuǎn)換為機(jī)器世界。即:首先把現(xiàn)實世界中的客觀對象抽象為某一種信息結(jié)構(gòu),然后再把概念級模型轉(zhuǎn)換為計算機(jī)上的DBMS支持的數(shù)據(jù)模型,也就是組織層數(shù)據(jù)模型。

現(xiàn)實世界人的認(rèn)識抽象信息世界:概念模型機(jī)器世界:具體的DBMS支持的組織模型1.2數(shù)據(jù)庫系統(tǒng)模型客觀存在并且可以相互區(qū)別的事物稱為實體通常為名詞實體具有實例,實例是實體的單一個體實體可以是:有形的,如人物或商品無形的,如技術(shù)級別事件,如音樂會實體與實例1.2數(shù)據(jù)庫系統(tǒng)模型描述實體的特性稱為屬性一個屬性就是一條特定的信息,它用來:描述一個實體量化一個實體限定一個實體為實體分類指定一個實體一個屬性只有一個值。屬性示例屬性具有值。屬性值可以是數(shù)字、字符串、日期、圖像、音頻等。這些被稱為“數(shù)據(jù)類型”或“格式”。每個屬性都有一種數(shù)據(jù)類型。屬性是單值的。對于實體的每個實例,每個屬性只有一個值屬性值時常變化,稱為易失屬性。屬性值幾乎不變?yōu)榉且资傩?。必須具有值的屬性稱為必需屬性??梢杂兄担部梢詾榭盏膶傩允强蛇x屬性1.2數(shù)據(jù)庫系統(tǒng)模型實體間的對應(yīng)關(guān)系稱為聯(lián)系實體間聯(lián)系的種類是指一類實體中可能出現(xiàn)的每一個實體與另一類實體中多少個具體實體存在聯(lián)系聯(lián)系可以歸結(jié)為三種類型:一對一聯(lián)系、一對多聯(lián)系、多對多聯(lián)系聯(lián)系三種類型的一對一關(guān)系(1:1)一對多關(guān)系(1:n)多對多關(guān)系(m:n)E-R模型E-R圖有三個要素:(1)實體:用矩形表示實體,矩形內(nèi)標(biāo)注實體名稱(2)屬性:用橢圓表示屬性,橢圓內(nèi)標(biāo)注屬性名稱。并用連線與實體連接起來。(3)實體之間的聯(lián)系:用菱形表示,菱形內(nèi)注明聯(lián)系名稱,并用連線將菱形框分別與相關(guān)實體相連,并在連線上注明聯(lián)系類型。

下面用E-R圖來表示的概念模型示例一對一聯(lián)系妻子與丈夫丈夫ID妻子姓名妻子ID丈夫姓名妻子ID11一對多聯(lián)系課程教教師教師ID教師姓名課程ID課程名稱課程ID多對多聯(lián)系

MN

1M

M1

課程學(xué)習(xí)學(xué)生課程課程名稱課程ID學(xué)生學(xué)習(xí)學(xué)生ID學(xué)生姓名課程ID學(xué)生IDE-R示例選修成績課程號課程名稱學(xué)分職工號姓名性別出生日期職稱學(xué)號姓名性別班級出生日期班級號班級名稱所屬專業(yè)組成時間系別課程學(xué)生講授教師組成班級1.2數(shù)據(jù)庫系統(tǒng)模型數(shù)據(jù)模型通常由數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性約束三部分組成。數(shù)據(jù)結(jié)構(gòu)是研究對象類型的集合。數(shù)據(jù)操作是指對數(shù)據(jù)庫中各種對象的實例允許執(zhí)行的操作的集合,包括操作及有關(guān)的操作規(guī)則。數(shù)據(jù)約束條件是一組完整性規(guī)則的集合。1.2數(shù)據(jù)庫系統(tǒng)模型無論系統(tǒng)最終建立在什么類型的數(shù)據(jù)庫上,一個出色的概念數(shù)據(jù)模型都會保持不變。即使根本不使用數(shù)據(jù)庫,數(shù)據(jù)模型也應(yīng)保持不變,例如數(shù)據(jù)最終會存儲在幾張紙上,被放進(jìn)檔案柜里。網(wǎng)絡(luò)模型124356abcdefgⅠⅡ地圖MMⅠⅡabcdefg1234561.2.1網(wǎng)狀模型網(wǎng)狀模型的基本特征是一個父結(jié)點允許有多個子結(jié)點,一個子結(jié)點也允許有多個父結(jié)點。有一個以上結(jié)點無父結(jié)點;至少有一個結(jié)點有多于一個的父結(jié)點。

用連接指令或指針來確定數(shù)據(jù)間的顯式連接關(guān)系,且具有多對多類型的數(shù)據(jù)組織方法優(yōu)點:明確而方便的表示數(shù)據(jù)間的復(fù)雜關(guān)系,數(shù)據(jù)冗余小。缺點:指針數(shù)據(jù)增加數(shù)據(jù)量,指針的建立和維護(hù)是非常大的任務(wù)。層次模型學(xué)校學(xué)生系老師課程1.2.2層次模型層次模型是以記錄型結(jié)點構(gòu)成的樹型結(jié)構(gòu)。它適合描述現(xiàn)實世界中主次分明的結(jié)構(gòu)關(guān)系有且只有一個結(jié)點沒有雙親結(jié)點,這個結(jié)點稱為根結(jié)點;根以外的其它結(jié)點有且只有一個雙親結(jié)點層次型模型數(shù)據(jù)之間是1:N的關(guān)系。優(yōu)點:存取方便、容易理解等。缺點:結(jié)構(gòu)呆板、要保留大量的索引文件、數(shù)據(jù)冗余1.2.3關(guān)系模型關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表,它由行和列組成編號姓名性別出生日期職稱001張三男1970-1-1副教授002李四女1978-10-5助教003王五男1974-9-8講師004趙六男1967-5-21副教授行(元組,記錄)列(字段,屬性)字段名表與表的關(guān)系編號姓名性別出生日期職稱部門編號001張三男1970-1-1副教授101002李四女1978-10-5助教101003王五男1974-9-8講師102004趙六男1967-5-21副教授101部門編號部門名稱101計算機(jī)系102教務(wù)處103辦公室雇員表部門表

主鍵主鍵外鍵父表子表②表和表之間是相互關(guān)聯(lián)的;Ⅰ.表與表之間通過公共字段(關(guān)鍵字)建立關(guān)系,分為主鍵和外鍵Ⅱ.主鍵指表中一列或多列的組合,其值唯一標(biāo)志表中的記錄,值非空。Ⅲ.外鍵指表B中含有與另一表A(父表)的主鍵相對應(yīng)的列,該列在表B(子表)

中稱為外鍵。1.2.3關(guān)系模型關(guān)系模型反映屬性間一對一關(guān)系,也可反映屬性間一對多的關(guān)系和多對多的關(guān)系關(guān)系的各種操作必須滿足完整性約束條件,關(guān)系的完整性約束條件包括三大類:實體完整性、參照完整性和用戶定義的完整性在關(guān)系數(shù)據(jù)模型中,實體及實體間的聯(lián)系都用表來表示,表以文件形式存儲。1.2.3關(guān)系模型優(yōu)點:關(guān)系模型數(shù)據(jù)結(jié)構(gòu)簡單、清晰,用戶易懂易用;關(guān)系模型具有更高的數(shù)據(jù)獨立性、更好的安全保密性。缺點:許多操作都要求在文件中順序查找滿足特定關(guān)系的數(shù)據(jù),可能花費很多時間。數(shù)據(jù)庫設(shè)計的任務(wù):對現(xiàn)實系統(tǒng)中的數(shù)據(jù)進(jìn)行抽象,得到符合現(xiàn)實系統(tǒng)要求的,能被DBMS支持的數(shù)據(jù)模型設(shè)計的原則:1)一個表描述一個實體或?qū)嶓w間的一種聯(lián)系2)避免表之間出現(xiàn)重復(fù)字段3)表中的字段應(yīng)是原始數(shù)據(jù)和基本數(shù)據(jù)元素4)表中應(yīng)有主鍵來唯一地標(biāo)識表中的記錄5)用外鍵保證表之間的關(guān)系關(guān)系數(shù)據(jù)庫的設(shè)計可區(qū)分的實在之體保證表之間關(guān)系的外鍵可重復(fù)不是通過計算得到設(shè)計的原則一個實體一個表,表有主鍵且唯一表表之間有關(guān)系,通過外鍵來連接字段數(shù)據(jù)要原始,除了外鍵無重復(fù)設(shè)計的步驟:1)需求分析--關(guān)鍵

信息要求:用戶要從數(shù)據(jù)庫中獲得的信息內(nèi)容 處理要求:用戶要完成什么處理功能以及處理方式 安全性與完整性要求:用戶要達(dá)到的數(shù)據(jù)安全和數(shù)據(jù)完整性約束2)數(shù)據(jù)庫的邏輯設(shè)計:實體,屬性,關(guān)系3)數(shù)據(jù)庫的物理設(shè)計4)數(shù)據(jù)庫性能的優(yōu)化5)重復(fù)以上步驟,反復(fù)求精,滿意為止關(guān)系數(shù)據(jù)庫的設(shè)計識別關(guān)鍵對象和實體數(shù)據(jù)庫的邏輯設(shè)計把每一個實體設(shè)計為一個表,根據(jù)實體的屬性設(shè)計表中的字段,對于通過計算得到的信息一般不作為字段出現(xiàn)在表中,比如總價(=單價×數(shù)量)把表與表的關(guān)系(聯(lián)系)體現(xiàn)在表中表A和表B是一對一關(guān)系:可以合并,或把表A的主鍵加到表B中當(dāng)外鍵,反之亦然表A和表B是一對多關(guān)系:必須把表A的主鍵加到表B中當(dāng)外鍵表A和表B是多對多關(guān)系:除了生成表A和表B外,還要生成一個關(guān)系表:表A主鍵+表B主鍵+關(guān)系自己的屬性數(shù)據(jù)庫設(shè)計舉例學(xué)生成績關(guān)系圖學(xué)號姓名性別01101李海男01102王鵬女課程編號課程名稱101計算機(jī)基礎(chǔ)102程序設(shè)計學(xué)號課程編號成績0110110180011011028701102101850110210288學(xué)生課程成績表課程表學(xué)生表邏輯結(jié)構(gòu)的物理實現(xiàn)根據(jù)設(shè)計的數(shù)據(jù)庫的結(jié)構(gòu)和以后的數(shù)據(jù)量、查詢和更新頻率決定選用的數(shù)據(jù)庫管理系統(tǒng)根據(jù)具體的數(shù)據(jù)庫管理系統(tǒng)來完成數(shù)據(jù)庫的物理實現(xiàn)采用數(shù)據(jù)定義語言(DDL)或圖形化工具來物理實現(xiàn)性能優(yōu)化改進(jìn)數(shù)據(jù)庫的讀寫性能數(shù)據(jù)庫設(shè)計舉例

1.2.4面向?qū)ο髷?shù)據(jù)模型面向?qū)ο髷?shù)據(jù)模型(OO模型)是用面向?qū)ο笥^點來描述現(xiàn)實世界實體或?qū)ο蟮倪壿嫿M織、對象間限制、聯(lián)系等的模型1.主要的核心概念1)對象對象是由一組數(shù)據(jù)結(jié)構(gòu)和在這組數(shù)據(jù)結(jié)構(gòu)上的操作的程序代碼封裝起來的基本單位一個對象包括屬性集合、方法集合和消息集合1.2.4面向?qū)ο髷?shù)據(jù)模型2)封裝封裝是對象的外部界面與內(nèi)部實行隔離的一種抽象,外部與對象的通信只能通過消息封裝隱藏了數(shù)據(jù)結(jié)構(gòu)與程序代碼等細(xì)節(jié),提高程序的可靠性3)類共享同樣屬性和方法集的所有對象的集合稱為對象類,簡稱類一個對象是某一類的一個實例1.2.4面向?qū)ο髷?shù)據(jù)模型4)類的層次結(jié)構(gòu)一組類可形成一個類層次子類可以具有父類的所有屬性、消息和方法,還可以有自己獨特的父類沒有的屬性和方法5)繼承子類具有父類特性的機(jī)制稱為繼承建模的工具,提供了對現(xiàn)實世界簡明而精確的描述提供信息重用機(jī)制,子類可以繼承父類的特性,避免許多重復(fù)定義工作1.2.4面向?qū)ο髷?shù)據(jù)模型2.面向?qū)ο髷?shù)據(jù)庫語言描述面向?qū)ο髷?shù)據(jù)庫模式,說明并定義對象實例功能:類的定義與操縱、方法的定義、對象的操縱3.模式演進(jìn)面向?qū)ο髷?shù)據(jù)模式為適應(yīng)需求的變化而發(fā)生變化過程稱為模式演進(jìn)。模式演進(jìn)必須保持模式的一致性。它由模式一致性約束來保證。1.2.4面向?qū)ο髷?shù)據(jù)模型4.對象-關(guān)系數(shù)據(jù)庫支持面向?qū)ο蟮臄?shù)據(jù)模型支持傳統(tǒng)數(shù)據(jù)庫系統(tǒng)所有的數(shù)據(jù)庫特征具有擴(kuò)充數(shù)據(jù)類型、支持復(fù)雜對象、支持繼承、提供通用的規(guī)則系統(tǒng)等功能1.3關(guān)系數(shù)據(jù)庫管理系統(tǒng)1.3.1關(guān)系數(shù)據(jù)庫規(guī)范化規(guī)范化的數(shù)據(jù)庫設(shè)計可以盡可能地避免系統(tǒng)在應(yīng)用過程中出現(xiàn)問題。不合理的關(guān)系模式可能會造成很多操作上問題:數(shù)據(jù)冗余更新異常插入異常刪除異常1.3.1關(guān)系數(shù)據(jù)庫規(guī)范化1.關(guān)系的性質(zhì)一個關(guān)系就是一張二維表。一個關(guān)系中要有一個關(guān)鍵字,稱為主鍵。關(guān)鍵字可以唯一地標(biāo)識一個元組。每一列上的數(shù)據(jù)屬于同一種屬性;沒有完全相同的行,兩行之間可以有重復(fù)的字段但不能所有字段都重復(fù);行與行間順序可互換;列與列間順序可互換;列的名稱在表中要唯一1.3.1關(guān)系數(shù)據(jù)庫規(guī)范化2.數(shù)據(jù)依賴數(shù)據(jù)依賴是元組間的相互關(guān)系函數(shù)依賴如果在關(guān)系R中,數(shù)據(jù)元素Y的取值依賴于數(shù)據(jù)元素X的取值,那么稱Y函數(shù)據(jù)依賴于X,或稱為X決定Y,記作X->Y傳遞依賴如果X,Y,Z分別是R中三個屬性,Z函數(shù)據(jù)依賴于Y,Y函數(shù)據(jù)依賴于X,那么Z也函數(shù)依賴于X,稱為Z傳遞依賴于X1.3.1關(guān)系數(shù)據(jù)庫規(guī)范化關(guān)系模式要滿足的條件稱為規(guī)范化形式,簡稱范式3.第一范式(1NF)元組中的每一個數(shù)據(jù)項都不可再分不能存在多值屬性,表中屬性都是單值1.3.1關(guān)系數(shù)據(jù)庫規(guī)范化4.第二規(guī)范化形式(2NF)如果一個關(guān)系符合第一范式,并且每一個非關(guān)鍵字屬性都完全依賴于主關(guān)鍵字,那么這個關(guān)系模式符合第二規(guī)范化形式簡記為2NF書名讀者姓名讀者部門借書日期無關(guān)分解為書名讀者姓名借書日期讀者姓名讀者部門1.3.1關(guān)系數(shù)據(jù)庫規(guī)范化5.第三規(guī)范化形式(3NF)如果一個關(guān)系符合第二范式,并且所有非關(guān)鍵字屬性間不存在函數(shù)依賴關(guān)系,那么稱這個關(guān)系符合第三規(guī)范化形式,簡記為3NF。3NF的實質(zhì)是從符合2NF的關(guān)系中除去傳遞依賴。1.3.1關(guān)系數(shù)據(jù)庫規(guī)范化6.規(guī)范化形式間的關(guān)系規(guī)范化的基本思想是逐步消除數(shù)據(jù)依賴中不合適的部分,即“一事一地”的模式設(shè)計原則。規(guī)范化的實質(zhì)是概念的單一化達(dá)到3NF即可滿足一般的應(yīng)用要求不一定規(guī)范化程度越高就一定越好1.3.2關(guān)系運算1、傳統(tǒng)的關(guān)系運算兩個關(guān)系必須具有相同的結(jié)構(gòu)并:關(guān)系R與關(guān)系S的并由屬于R或?qū)儆赟的元組組成。R

SR∪SABC367257723443RABC345723SABC367257723443345R∪S

1.3.2關(guān)系運算交:兩個關(guān)系R和S的交是由既屬于R又屬于S的元組組成的集合。R

SR

SABC367257723443RABC345723SABC723R∩S1.3.2關(guān)系運算差:關(guān)系R與關(guān)系S的差由屬于R而不屬于S的所有元組組成,即差運算是從R中去掉S中也有的元組。R

SR

SABC367257723443RABC345723SABC367257443R-SABC367S-R1.3.2關(guān)系運算2、專門的關(guān)系運算投影:用來選擇表中的列選擇:用來選擇表中的行1.3.2關(guān)系運算聯(lián)接:將兩個關(guān)系拼接成一個關(guān)系聯(lián)接是通過聯(lián)接條件來控制的,聯(lián)接條件為公共屬性,或者具有相同語義、可比的屬性。1.3.3T-SQL語言簡介SQL語言全稱為結(jié)構(gòu)化查詢語言(StructuredQueryLanguage)綜合統(tǒng)一高度非過程化面向集合的操作方式提供兩種使用方式語言簡潔,易學(xué)易用T-SQL概述T-SQL(Transact-SQL)語言是Microsoft公司在SQLServer數(shù)據(jù)庫管理系統(tǒng)中SQL的實現(xiàn)T-SQL語言由下面4個部分組成數(shù)據(jù)控制語言(DCL):進(jìn)行安全性管理數(shù)據(jù)定義語言(DDL):執(zhí)行數(shù)據(jù)庫任務(wù),創(chuàng)建數(shù)據(jù)庫及其對象數(shù)據(jù)操縱語言(DML):操縱數(shù)據(jù)庫中各對象附加的語言元素:包括變量、運算符、函數(shù)、流程控制語句和注釋等

T-SQL概述1.標(biāo)識符數(shù)據(jù)庫對象的名稱即為其標(biāo)識符標(biāo)識符在定義對象時創(chuàng)建,隨后用于引用該對象標(biāo)識符格式規(guī)則:第一個字符必須是下列字符之一:Unicode標(biāo)準(zhǔn)3.2所定義的字母不允許嵌入空格或其他特殊字符:必須用雙引號或括號分隔不符合規(guī)則的標(biāo)識符T-SQL概述2.對象的引用完整的對象名稱由四個標(biāo)識符組成,其格式如下:[[[server.][database].][schema_name].]object_name指定了所有四個部分的對象名稱稱為完全限定名稱每個對象必須具有唯一的完全限定名稱大多數(shù)對象引用使用由三個部分組成的名稱服務(wù)器名數(shù)據(jù)庫名架構(gòu)名對象名T-SQL概述3.批處理批處理是包含一個或多個Transact-SQL語句的組,SQLServer將批處理的語句編譯為一個可執(zhí)行單元,稱為執(zhí)行計劃。執(zhí)行計劃中的語句每次執(zhí)行一條編譯錯誤(如語法錯誤)可使執(zhí)行計劃無法編譯。運行時錯誤(如算術(shù)溢出或違反約束)會產(chǎn)生以下影響之一停止執(zhí)行批處理中當(dāng)前語句和它之后的語句僅停止執(zhí)行當(dāng)前語句,而繼續(xù)執(zhí)行批處理中其他所有語句T-SQL流程控制T-SQL提供了用于編程的代碼語法結(jié)構(gòu),可以用來進(jìn)行順序、選擇、循環(huán)等程序設(shè)計SET順序賦值語句IF…ELSE條件選擇語句BEGIN…END語句塊WHILE,CONTINUE,BREAK條件循環(huán)語句,重新開始下次循環(huán),結(jié)束循環(huán)RETURN無條件退出語句WAITFOR延遲語句GOTO無條件轉(zhuǎn)移語句TRY…CATCH異常錯誤處理語句GO程序段落標(biāo)識1.4SQLServer2005簡介1.4.1SQLServer發(fā)展SQLServer是微軟公司推出的關(guān)系數(shù)據(jù)庫管理系統(tǒng)用戶可以管理數(shù)據(jù)庫、設(shè)計開發(fā)應(yīng)用程序。C/S(客戶機(jī)/服務(wù)器)工作模式,它使用TransactSQL語言在服務(wù)器與客戶機(jī)間傳送請求和答復(fù)。B/S(瀏覽器/服務(wù)器)工作模式,SQLServer2005與XML結(jié)合下支持實現(xiàn)。5個版本,企業(yè)版(Enterprise)、開發(fā)版(Development)、工作組版(Workgroup)、標(biāo)準(zhǔn)版(Standard)、簡易版(Express)。1.4.2SQLServer2005新增功能企業(yè)數(shù)據(jù)管理數(shù)據(jù)庫開發(fā)商業(yè)智能第三方應(yīng)用程序MicrosoftSQLServer報表功能分析功能集成功能通知功能復(fù)制功能關(guān)系型數(shù)據(jù)庫管理工具綜合的、完整的數(shù)據(jù)平臺1.4.3安裝SQLServer20051.安裝SQLServer2005的系統(tǒng)要求了解SQLServer2005的版本版本描述Enterprise具備高擴(kuò)展性和性能優(yōu)異的企業(yè)級數(shù)據(jù)庫服務(wù)器Standard部門級應(yīng)用程序數(shù)據(jù)庫服務(wù)器Workgroup部門或者分公司辦公用的數(shù)據(jù)庫Express斷開的客戶端或者獨立的應(yīng)用程序的SQLServer版本Mobile智能設(shè)備的壓縮型數(shù)據(jù)庫Developer只有開發(fā)和測試許可的Enterprise版本SQLServer2005的硬件要求硬件要求處理器

IntelPentiumⅢ

相容或更高性能的處理器,運行速度在600MHz或更高水平

1GHz或更高性能的處理器

內(nèi)存Enterprise,Developer,Workgroup以及StandardEditions:

512MB(1GB或者更高)ExpressEdition:

192MB(512MB或者更高)硬盤數(shù)據(jù)庫組件:至少150MBAnalysisServices:至少35MBReportingServices:至少40MBSQLServer2005的軟件要求ExpressStandardWorkgroupEnterpriseDeveloperWindowsServer2003SP1(allPCeditions)üüüüüWindowsXPSP2(HomeEdition)üüWindowsXPSP2(Professional,MediaCenterandTabletEditions)üüüüWindows2000ProfessionalSP4üüüüWindows2000ServerSP4(alleditions)üüüüüSQLSetupMSI功能選擇以及安裝系統(tǒng)一致性檢查器安裝類型本地/遠(yuǎn)程組件升級2.安裝SQLServer2005系統(tǒng)一致性檢查器檢查安裝要求

軟件要求

硬件要求

安全性要求

系統(tǒng)狀態(tài)要求

安裝組件選項組件描述SQLServerDatabaseServices數(shù)據(jù)庫引擎、復(fù)制以及全文本搜索AnalysisServices為在線分析和數(shù)據(jù)挖掘準(zhǔn)備的服務(wù)和工具ReportingServices用于生成和分發(fā)報告NotificationServices用于開發(fā)和部署某種特殊應(yīng)用程序的平臺IntegrationServices用于傳輸數(shù)據(jù)的工具和組件工作站組件、聯(lián)機(jī)叢書和開發(fā)工具工具和文檔.安裝SQLServer實例默認(rèn)實例此實例由運行它的計算機(jī)的網(wǎng)絡(luò)名稱來標(biāo)識命名實例命名實例由計算機(jī)網(wǎng)絡(luò)名稱加實例名來標(biāo)識SQLServer服務(wù)服務(wù)使用域用戶賬戶指定一個使用Windows驗證的域用戶賬戶使用LocalService賬戶一種內(nèi)置的特殊賬戶,類似于授權(quán)用戶賬戶使用NetworkService賬戶使用計算機(jī)賬戶憑據(jù)來訪問網(wǎng)絡(luò)資源數(shù)據(jù)庫身份驗證簡介Windows驗證SQLServer驗證驗證模式排序規(guī)則注意事項Windows排序規(guī)則基于Windows相關(guān)區(qū)域設(shè)置規(guī)則SQL排序規(guī)則當(dāng)指定SQL排序規(guī)則時,SQLServer沿用了SQLServer早期版本中指定的代碼頁號和排序次序的常見組合屬性默認(rèn)排序規(guī)則和排序次序如果未指定排序規(guī)則或選擇排序次序,則SQLServer將應(yīng)用此默認(rèn)值3.升級到SQLServer2005版本SQLServer2000ServicePack3(SP3)或更新版本SQLServer7.0SP4或更新版本升級顧問分析安裝的SQLServer2000或者SQLServer7.0組件

1.4.4服務(wù)器的后臺服務(wù)

SQLServer2005安裝安畢后,其服務(wù)器端組件是以“服務(wù)”的形式在計算機(jī)系統(tǒng)中運行,“服務(wù)”是一種在后臺運行的應(yīng)用程序??梢栽诓僮飨到y(tǒng)【管理工具】的【服務(wù)】中查看。1.SQLServer數(shù)據(jù)引擎,是SQLServer2005的核心服務(wù)。2.SQLServerActiveDirectoryHelper支持與活動目錄ActiveDirectory的集成。3.SQLServerAgent代理服務(wù),按計劃自動執(zhí)行數(shù)據(jù)庫管理員安排的作業(yè)1.4.4服務(wù)器的后臺服務(wù)4.SQLServerAnalysisServices提供聯(lián)機(jī)分析處理(OLAP)和數(shù)據(jù)挖掘的服務(wù)。5.SQLServerBrowser提供連接信息6.SQLServerFullTextSearch快速創(chuàng)建結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)的全文索引7.SQLServerIntegrationServices執(zhí)行工作流功能的任務(wù)8.SQLServerReportingServices管理、執(zhí)行、呈現(xiàn)、計劃和傳遞報表。9.SQLServerVSSWriter它是SQLServer編寫服務(wù)器1.4.5客戶端上的管理工具1.SQLServerManagementStudio為以下內(nèi)容提供了管理控制臺:服務(wù)器網(wǎng)絡(luò)配置客戶端網(wǎng)絡(luò)配置SQLServerServicesSQLServerManagementStudio主要的數(shù)據(jù)庫管理工具:集成的管理和開發(fā)平臺集中管理所有的SQLServer組件圖形化和基于代碼的對象管理基于項目的腳本管理1.4.5客戶端上的管理工具2.ReportingServices配置它是用于報表服務(wù)配置,管理報表服務(wù)器。在【開始】|【所有程序】|【MicrosoftSQLServer2005】|【配置工具】菜單中。3.SQLServerConfigurationManagerSQLServer配置管理器,用于管理與SQLServer有關(guān)的連接服務(wù)。在【開始】|【所有程序】|【MicrosoftSQLServer2005】|【配置工具】菜單中。4.SQLServer錯誤和使用情況報告在【開始】|【所有程序】|【MicrosoftSQLServer2005】|【配置工具】菜單中。5.外圍應(yīng)用配置器工具通過最小化活動的功能減少潛在的安全威脅。配置SQLServerServices配置功能組件1.4.5客戶端上的管理工具6.SQLServerProfiler

它是SQLServer事件探查器,用于從服務(wù)器上捕獲SQLServer2005事件的工具??梢圆檎覍?dǎo)致SQLServer運行慢的查詢;捕獲導(dǎo)致某個問題的SQL語句;監(jiān)視SQLServer性能等。它在【開始】|【所有程序】|【MicrosoftSQLServer2005】|【性能工具】菜單中。7.?dāng)?shù)據(jù)庫引擎優(yōu)化顧問可以完成對數(shù)據(jù)庫的優(yōu)化。它在【開始】|【所有程序】|【MicrosoftSQLServer2005】|【性能工具】菜單中。8.VisualStudio2005

利用它可以創(chuàng)建與SQLServer2005相連的AnalysisServices項目、IntegrationServices項目、報表服務(wù)器項目和報表模型項目等。它在【開始】|【所有程序】|【MicrosoftVisualStudio2005】中。1.4.6啟動及配置SQLServer2005

1.連接到服務(wù)器通過客戶端管理工具SQLServerManagementStudio可以連接到服務(wù)器上。2.添加服務(wù)器注冊把常用的服務(wù)器進(jìn)行注冊可以方便以后的管理和使用。在SQLServerManagementStudio的【已注冊服務(wù)器】窗口里列出的是常用的服務(wù)器與實例名。但這里保存的只是服務(wù)器連接信息,并不是真正已連接到服務(wù)器上了,在連接時還要指定服務(wù)器類型、名稱、身份驗證信息。主要內(nèi)容

熟悉數(shù)據(jù)庫及其對象學(xué)習(xí)文件和文件組及事務(wù)日志熟練掌握創(chuàng)建和管理數(shù)據(jù)庫2024/1/1932.1SQLSERVER中數(shù)據(jù)庫概述

2.1.1數(shù)據(jù)庫及其對象

1.數(shù)據(jù)庫在SQLServer2005中數(shù)據(jù)庫是數(shù)據(jù)和數(shù)據(jù)庫對象的集合,以磁盤文件的方式存放在計算機(jī)里。2024/1/194數(shù)據(jù)庫數(shù)據(jù)庫描述master對用戶數(shù)據(jù)庫和SQLServer的操作進(jìn)行總體控制model提供創(chuàng)建新用戶數(shù)據(jù)庫所需的模板和原型tempdb提供臨時表和其他臨時工作存儲量所需的存儲區(qū)msdb提供調(diào)度信息和作業(yè)歷史記錄所需的存儲區(qū)distribution存儲在復(fù)制過程中使用的歷史記錄和事務(wù)數(shù)據(jù)AdventureWorks提供用作學(xué)習(xí)的樣本數(shù)據(jù)庫2024/1/1952.1.1數(shù)據(jù)庫及其對象2.常見的數(shù)據(jù)庫對象

表:是具體組織和存儲數(shù)據(jù)的對象,由列和行組成。記錄:在表的結(jié)構(gòu)建立完畢之后,表中的每一行數(shù)據(jù)就是一條記錄。索引:是某個表中一列或若干列值的集合和相應(yīng)的指向表中物理標(biāo)識這些值的數(shù)據(jù)頁的邏輯指針清單。約束:是SQLServer實施數(shù)據(jù)一致性和數(shù)據(jù)完整性的方法或者說是一套機(jī)制,它包括主鍵約束、外鍵約束、Unique約束、Check約束、缺省值和允許空等六種機(jī)制。2024/1/1962.1.2文件和文件組1.文件

文件是數(shù)據(jù)庫的操作系統(tǒng)文件,SQLServer2005中的每個數(shù)據(jù)庫都由多個文件組成,SQLServer2005數(shù)據(jù)庫有以下三種類型的文件。

1)主要數(shù)據(jù)文件 2)次要數(shù)據(jù)文件 3)日志文件2024/1/197存儲數(shù)據(jù)的方法日志文件:.ldf數(shù)據(jù)文件:

.mdfor.ndf區(qū):8個連續(xù)的8KB頁頁:8KB2024/1/1982.1.2文件和文件組2.文件組

出于方便對數(shù)據(jù)庫文件的管理的考慮,可以將數(shù)據(jù)庫文件分成不同的文件組。系統(tǒng)管理員可以為每個磁盤驅(qū)動器創(chuàng)建文件組,然后將特定的表、索引、或表中的text、ntext或image數(shù)據(jù)指派給特定的文件組。SQLServer2005提供了三種文件組類型:1)主要文件組2)用戶自定義文件組3)默認(rèn)文件組2024/1/199AdventureWorks數(shù)據(jù)庫

文件組默認(rèn)文件組OrderHistoryGroupE:\C:\D:\AdventureWorks_

Log.IdfAdventureWorks_

Data.mdfOrdHist2.ndfOrdHist1.ndfsys...

sys...

sysusers

sysobjects

...

SalesOrderHeader

Customer

Product

OrdHistYear2

OrdHistYear1

創(chuàng)建文件組的場合在單個文件組中使用多個文件使用多個文件組控制物理數(shù)據(jù)布局1012024/1/1

2.1.3事務(wù)日志

事務(wù)日志是存放恢復(fù)數(shù)據(jù)所需的所有信息,是數(shù)據(jù)庫中已發(fā)生的所有修改和執(zhí)行每次修改的事務(wù)的一連串記錄。當(dāng)數(shù)據(jù)庫損壞時,管理員可以使用事務(wù)日志還原數(shù)據(jù)庫。每一個數(shù)據(jù)庫必須至少擁有一個事務(wù)日志文件,允許擁有多個日志文件。事務(wù)日志是針對數(shù)據(jù)庫改變所做的記錄,它可以記錄針對數(shù)據(jù)庫的任何操作,并將記錄結(jié)果保存在獨立的文件中。對于任何事務(wù)過程,事務(wù)日志都有非常全面的記錄,根據(jù)這些記錄可以將數(shù)據(jù)文件恢復(fù)成事務(wù)前的狀態(tài)。2024/1/1102配置事務(wù)日志

數(shù)據(jù)頁被寫入緩沖區(qū)緩存2修改被記錄在磁盤上的事務(wù)日志文件中3檢查點將已完成的事務(wù)寫入到數(shù)據(jù)庫中4應(yīng)用程序發(fā)出數(shù)據(jù)修改操作1提示:為了提高性能,應(yīng)將日志文件放在單獨的驅(qū)動器上磁盤磁盤緩沖區(qū)緩存2024/1/11032.1.4數(shù)據(jù)庫設(shè)計過程

數(shù)據(jù)庫設(shè)計是建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng)的核心和基礎(chǔ),它要求對于指定的應(yīng)用環(huán)境,構(gòu)造出較優(yōu)的數(shù)據(jù)庫模式,建立起數(shù)據(jù)庫應(yīng)用系統(tǒng),并使系統(tǒng)能有效地存儲數(shù)據(jù),滿足用戶的各種應(yīng)用需求。階段:1.需求分析階段2.概念設(shè)計階段3.邏輯結(jié)構(gòu)設(shè)計階段4.物理結(jié)構(gòu)設(shè)計階段5.?dāng)?shù)據(jù)庫實施階段6.?dāng)?shù)據(jù)庫運行和維護(hù)階段2024/1/11042.2數(shù)據(jù)庫管理2.2.1數(shù)據(jù)庫創(chuàng)建創(chuàng)建數(shù)據(jù)庫的參數(shù)數(shù)據(jù)庫文件包括主文件、次要文件和事務(wù)日志文件數(shù)據(jù)庫大小的選項:數(shù)據(jù)文件初始大小日志文件初始大小文件增長2024/1/1105model數(shù)據(jù)庫主文件

事務(wù)日志

次要文件

2.2.1數(shù)據(jù)庫創(chuàng)建1.用SQLServerManagementStudio創(chuàng)建數(shù)據(jù)庫2024/1/1106數(shù)據(jù)庫選項通過使用下面的工具設(shè)置數(shù)據(jù)庫選項:SQLServerManagementStudioALTERDATABASE語句選項類別描述自動控制自動行為是否為統(tǒng)計表的,數(shù)據(jù)庫是關(guān)閉的還是收縮的狀態(tài)控制數(shù)據(jù)庫是否是在線的,哪些用戶可以連接到數(shù)據(jù)庫以及數(shù)據(jù)庫是否為只讀的游標(biāo)控制游標(biāo)行為和作用域恢復(fù)控制數(shù)據(jù)庫的恢復(fù)模型雜項控制ANSIcompliance選項,例如ANSI空值和遞歸觸發(fā)器2024/1/1107最佳實踐為了避免數(shù)據(jù)讀寫時對磁盤的爭搶,請不要將數(shù)據(jù)文件置于包含了操作系統(tǒng)文件的磁盤中。將數(shù)據(jù)文件和事務(wù)日志文件分開放置。由于減少了數(shù)據(jù)文件和事務(wù)日志文件對磁盤的爭搶,這種分隔將給數(shù)據(jù)庫帶來最佳的性能。如果可能,應(yīng)將tempdb數(shù)據(jù)庫放置在一個獨立的磁盤驅(qū)動器上,例如RAID10或者RAID5系統(tǒng)中。這樣,在tempdb數(shù)據(jù)庫被大量使用的時候,通過獨立的磁盤驅(qū)動器,數(shù)據(jù)庫可以并行地處理tempdb的操作,因此能獲得最佳性能。2024/1/1108課堂練習(xí):創(chuàng)建數(shù)據(jù)庫你需要為公司創(chuàng)建一個名為Sales的數(shù)據(jù)庫,請使用SSMS按照要求實現(xiàn)該目標(biāo)。請注意,將數(shù)據(jù)庫的不同文件放置于和操作系統(tǒng)不同的分區(qū)有助于提高數(shù)據(jù)庫的性能。2024/1/11092.2.1數(shù)據(jù)庫創(chuàng)建2.用T-SQL命令創(chuàng)建數(shù)據(jù)庫語法格式如下:2024/1/1110CREATEDATABASEdatabase_name[ON

[<filespec>[,...n]][,<filegroup>[,...n]]][LOGON{<filespec>[,...n]}]<filespec>::=[PRIMARY]([NAME=logical_file_name,]FILENAME='os_file_name‘[,SIZE=size][,MAXSIZE={max_size|UNLIMITED}][,FILEGROWTH=growth_increment])[,...n]<filegroup>::=FILEGROUPfilegroup_name<filespec>[,...n]新創(chuàng)建的數(shù)據(jù)庫的名稱指出用來存儲數(shù)據(jù)庫中數(shù)據(jù)部分的磁盤文件(數(shù)據(jù)文件)指定主文件組中的主文件指定用來存儲數(shù)據(jù)庫日志的磁盤文件指定數(shù)據(jù)文件或日志文件的邏輯名指定數(shù)據(jù)文件或日志文件的操作系統(tǒng)文件名,包括文件名和路徑指定數(shù)據(jù)文件或日志文件的初始大小,默認(rèn)單位為MB指定數(shù)據(jù)文件或日志文件可以增長到的最大容量,默認(rèn)單位為MB指定數(shù)據(jù)文件或日志文件的增長幅度,默認(rèn)單位為MB2024/1/1111使用Transact-SQL查詢工具可以使用SQL查詢分析器以圖表的方式查看查詢語句和結(jié)果,也可以使用它編寫、修改和保存T-SQL腳本。SQL查詢分析器還提供了一些工具,用于分析SQLServer如何解釋和執(zhí)行Transact-SQL語句。2024/1/1112用T-SQL命令創(chuàng)建數(shù)據(jù)庫SQL代碼:ch2.sql2024/1/1113--例2-1CREATEDATABASE本校教師數(shù)據(jù)庫--最簡單的創(chuàng)建數(shù)據(jù)庫的語句,所有設(shè)置都使用默認(rèn)值--例2-2CREATEDATABASE成績數(shù)據(jù)庫--只指定數(shù)據(jù)庫的數(shù)據(jù)文件的地址ON(NAME='成績數(shù)據(jù)庫',

FILENAME='C:\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data\成績數(shù)據(jù)庫.mdf')用T-SQL命令創(chuàng)建數(shù)據(jù)庫2024/1/1114--例2-3CREATEDATABASEstudentON--允許顯式定義用于存儲數(shù)據(jù)的文件--下面定義數(shù)據(jù)庫主文件(NAME='studentdata',--主文件邏輯名稱

FILENAME='C:\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data\studentdata.mdf',--操作系統(tǒng)文件名稱,包含路徑

SIZE=10MB,--主文件初始大小

MAXSIZE=50MB,--主文件最大大小

FILEGROWTH=25%--自動增長,0表示未啟用自動增長)--下面定義數(shù)據(jù)庫日志文件LOGON(NAME='studentlog',--日志文件邏輯名稱

FILENAME='C:\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data\studentlog.ldf',--包含路徑的操作系統(tǒng)文件名稱

SIZE=10MB,--日志文件初始大小

MAXSIZE=50MB,--日志文件最大大小

FILEGROWTH=2MB--自動增長,0表示未啟用自動增長)2.2.2修改數(shù)據(jù)庫配置1.用SQLServerManagementStudio修改數(shù)據(jù)庫配置1)啟動SQLServerManagementStudio,連接上數(shù)據(jù)庫實例,展開樹型目錄,定位到要修改的數(shù)據(jù)庫上。2)右擊要修改的數(shù)據(jù)庫,彈出快捷菜單,選擇【屬性】選項3)修改數(shù)據(jù)庫配置2024/1/1115用T-SQL命令修改數(shù)據(jù)庫配置ALTERDATABASEdatabase{ADDFILE<filespec>[,...n][TOFILEGROUPfilegroup_name]|ADDLOGFILE<filespec>[,...n]|REMOVEFILElogical_file_name

|ADDFILEGROUPfilegroup_name|REMOVEFILEGROUPfilegroup_name|MODIFYFILE<filespec>|MODIFYNAME=new_dbname|MODIFYFILEGROUPfilegroup_name{filegroup_property|NAME=new_filegroup_name}向指定的文件組添加新的數(shù)據(jù)文件添加新的事務(wù)日志文件刪除某一文件添加一個文件組刪除某一文件組修改某個文件的屬性修改數(shù)據(jù)庫的名字修改某一文件組的屬性:READONLY(只讀),READWRITE(讀寫),DEFAULT(默認(rèn))2024/1/1116用T-SQL命令修改數(shù)據(jù)庫配置SQL代碼:ch2.sql2024/1/1117--例2-5ALTERDATABASEstudentMODIFYNAME=學(xué)生數(shù)據(jù)庫--修改數(shù)據(jù)庫名(原數(shù)據(jù)庫必須存在)--例2-6ALTERDATABASE成績數(shù)據(jù)庫ADDFILE(NAME='新增的數(shù)據(jù)文件',

FILENAME='C:\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data\成績數(shù)據(jù)庫新增的數(shù)據(jù)文件.ldf')2.2.3分離與附加數(shù)據(jù)庫

分離數(shù)據(jù)庫1.用SQLServerManagementStudio分離數(shù)據(jù)庫展開樹形目錄,定位到要分離的數(shù)據(jù)庫上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中,選擇【任務(wù)】|【分離】命令。2024/1/11182.用T-SQL命令分離數(shù)據(jù)庫sp_detach_db[@dbname=]‘dbname’--例2-7sp_detach_db'成績數(shù)據(jù)庫'2024/1/1119要分離的數(shù)據(jù)庫名稱

附加數(shù)據(jù)庫1.用SQLServerManagementStudio附加數(shù)據(jù)庫1)在數(shù)據(jù)庫節(jié)點上單擊鼠標(biāo)右鍵,彈出快捷菜單,選擇【附加】命令。2)出現(xiàn)【附加數(shù)據(jù)庫】對話框,單擊【添加】按鈕,出現(xiàn)【定位數(shù)據(jù)庫文件】對話框,在這個對話框里,默認(rèn)只顯示數(shù)據(jù)庫的數(shù)據(jù)文件,即“mdf”文件。2024/1/11202.用T-SQL命令附加數(shù)據(jù)庫CREATEDATABASEdatabase_nameON<filespec>[,...n]FOR{ATTACH[WITH<service_broker_option>]|ATTACH_REBUILD_LOG}2024/1/1121這里必須給出正確的文件路徑表示附加,不能省略--例2-8CREATEDATABASE成績數(shù)據(jù)庫ON(FILENAME='C:\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data\成績數(shù)據(jù)庫.mdf')--必須給出正確的文件路徑FORATTACH--附加2.2.4脫機(jī)與聯(lián)機(jī)數(shù)據(jù)庫

脫機(jī)數(shù)據(jù)庫1.用SQLServerManagementStudio脫機(jī)數(shù)據(jù)庫1)展開樹形目錄,定位到要脫機(jī)的數(shù)據(jù)庫上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中,選擇【任務(wù)】|【脫機(jī)】命令。2)彈出【使數(shù)據(jù)庫脫機(jī)】對話框,單擊【關(guān)閉】按鈕即可完成操作。2024/1/11222.用T-SQL命令脫機(jī)數(shù)據(jù)庫ALTERDATABASEdatabase_namesetOFFLINE2024/1/1123設(shè)置為脫機(jī)--例2-9ALTERDATABASE成績數(shù)據(jù)庫setOFFLINE

聯(lián)機(jī)數(shù)據(jù)庫1.用SQLServerManagementStudio聯(lián)機(jī)數(shù)據(jù)庫1)展開樹形目錄,定位到要聯(lián)機(jī)的數(shù)據(jù)庫上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中,選擇【任務(wù)】|【聯(lián)機(jī)】命令。2)彈出【使數(shù)據(jù)庫聯(lián)機(jī)】對話框,單擊【關(guān)閉】按鈕即可完成操作2024/1/11242.用T-SQL命令聯(lián)機(jī)數(shù)據(jù)庫ALTERDATABASEdatabase_namesetONLINE2024/1/1125設(shè)置為聯(lián)機(jī)--例2-10ALTERDATABASE成績數(shù)據(jù)庫setONLINE2.2.5刪除數(shù)據(jù)庫1.用SQLServerManagementStudio刪除數(shù)據(jù)庫在【對象資源管理器】中,定位在目標(biāo)數(shù)據(jù)庫上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇【刪除】。2.用T-SQL命令刪除數(shù)據(jù)庫DROPDATABASEdatabase_name[,...n]2024/1/1126可同時刪除多個數(shù)據(jù)庫--例2-11DROPDATABASEBJGL2.2.6收縮數(shù)據(jù)庫1.用ManagementStudio收縮數(shù)據(jù)庫和文件1)在目標(biāo)數(shù)據(jù)庫上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇【任務(wù)】|【收縮】|【數(shù)據(jù)庫】。2)出現(xiàn)【收縮數(shù)據(jù)庫】對話框,選中并設(shè)置相應(yīng)的值,點擊【確認(rèn)】。3)如果想收縮數(shù)據(jù)庫的指定數(shù)據(jù)文件或日志文件,可右擊相應(yīng)的數(shù)據(jù)庫,彈出快捷菜單,選擇【任務(wù)】|【收縮】|【文件】4)出現(xiàn)【收縮文件】對話框,選中并設(shè)置相應(yīng)的值,點擊【確認(rèn)】。2024/1/11272.用T-SQL命令收縮數(shù)據(jù)庫和文件1)使用T-SQL收縮數(shù)據(jù)庫DBCCSHRINKDATABASE(database_name[,target_percent][,{NOTRUNCATE|TRUNCATEONLY}])2024/1/1128要收縮的數(shù)據(jù)庫名稱收縮數(shù)據(jù)庫的比例被釋放的文件空間依然保持在數(shù)據(jù)庫文件的范圍內(nèi)。如果未指定,則被釋放的文件空間將被操作系統(tǒng)回收利用將數(shù)據(jù)文件中的任何未使用的空間釋放給操作系統(tǒng),使用時忽略target_percent2.用T-SQL命令收縮數(shù)據(jù)庫和文件2)使用T-SQL收縮文件DBCCSHRINKFILE({file_name|file_id}{[,target_size]|[,{EMPTYFILE|NOTRUNCATE|TRUNCATEONLY}]})2024/1/1129收縮文件的邏輯文件名稱或者文件ID號將文件縮小到指定的長度,以MB為單位。如果缺省該項,文件將盡最大可能進(jìn)行縮小將指定文件上的數(shù)據(jù)全部遷移到本文件組的其它文件上,以后的操作將不會再在該文件上增加數(shù)據(jù)--例2-12USE成績數(shù)據(jù)庫goDBCCSHRINKFILE(成績數(shù)據(jù)庫,1)主要內(nèi)容了解SQLServer2005的數(shù)據(jù)類型掌握表的創(chuàng)建和表結(jié)構(gòu)的修改方法掌握表中數(shù)據(jù)的插入、刪除和修改操作掌握表中數(shù)據(jù)的檢索方法2024/1/1130三大知識塊創(chuàng)建與管理表創(chuàng)建表修改表刪除表管理表中的數(shù)據(jù)輸入數(shù)據(jù)刪除數(shù)據(jù)修改數(shù)據(jù)檢索表中的數(shù)據(jù)基本查詢高級查詢數(shù)據(jù)匯總2024/1/11313.1表的創(chuàng)建及修改3.1.1數(shù)據(jù)類型3.1.2創(chuàng)建表3.1.3修改表結(jié)構(gòu)3.1.4刪除表3.1.5臨時表2024/1/11323.1.1數(shù)據(jù)類型數(shù)據(jù)類型決定了數(shù)據(jù)在計算機(jī)中的存儲格式,代表不同的信息類型SQLServer2005定義了多種系統(tǒng)數(shù)據(jù)類型允許用戶自定義數(shù)據(jù)類型2024/1/1133系統(tǒng)提供的數(shù)據(jù)類型種類數(shù)據(jù)類型數(shù)字整數(shù)int,bigint,smallint,tinyint精確數(shù)值decimal,numeric近似數(shù)值float,real貨幣money,smallmoney日期和時間

datetime,smalldatetime字符Non-Unicodechar,varchar,varchar(max),textUnicodenchar,nvarchar,nvarchar(max),ntext二進(jìn)制binary,varbinary,varbinary(max)圖像image全局標(biāo)識符uniqueidentifierXMLxml特殊bit,cursor,timestamp,sysname,table,sql_variant2024/1/1134貨幣數(shù)據(jù)類型貨幣數(shù)據(jù)類型專門用于貨幣數(shù)據(jù)處理,包括:money:-263~263-1,精確到貨幣單位的10‰,2個4B整數(shù)構(gòu)成smallmoney:-214748.3648~214748.3647,精確到貨幣單位的10‰,2個2B整數(shù)構(gòu)成28.56第1個4字節(jié).第2個4字節(jié)第1個2字節(jié).第2個2字節(jié)貨幣值的整數(shù)部分貨幣值的小數(shù)部分2024/1/11351353.1.2創(chuàng)建表表是數(shù)據(jù)庫中最重要的對象,表的結(jié)構(gòu)決定了數(shù)據(jù)在數(shù)據(jù)庫中的存儲方式兩種創(chuàng)建表的方式:1.在SQLServerManagementStudio中創(chuàng)建表2.用T-SQL語句創(chuàng)建表2024/1/11362024/1/1137學(xué)號姓名性別出生年月家庭住址9910100201李婷女1980/1/20吉林省吉林市9910100202趙祝光男1980/12/4江蘇省南京市9910100203張艷波女1981/2/5江蘇省蘇州市9910100204姜建梅女1980/10/12內(nèi)蒙古包頭9910100205姜德進(jìn)男1981/5/6江蘇省揚州市9910100206李玉道男1982/4/9北京市東城區(qū)學(xué)生表SQLServerManagementStudioCREATETABLE學(xué)生(學(xué)號char(10)PRIMARYKEY,姓名varchar(8)NULL,性別char(2)NULL,出生年月datetimeNULL,家庭住址varchar(50)NULL,)T-SQL語句12取列名定義數(shù)據(jù)類型定義數(shù)據(jù)類型創(chuàng)建表用SQLServerManagementStudio創(chuàng)建表1)進(jìn)入SSMS,選擇表節(jié)點,單擊右鍵,在彈出的快捷菜單中選擇“新建表”2)打開表設(shè)計器2024/1/1138輸入列名①選擇數(shù)據(jù)類型②設(shè)置是否為NULL③用SQLServerManagementStudio創(chuàng)建表3)設(shè)置屬性和約束-保證數(shù)據(jù)完整性2024/1/11394.3.1數(shù)據(jù)完整性概念數(shù)據(jù)完整性是指數(shù)據(jù)庫中的數(shù)據(jù)在邏輯上的一致性和準(zhǔn)確性。

在關(guān)系數(shù)據(jù)庫系統(tǒng)中,重要的完整性有:實體完整性域完整性參照完整性用戶自定義的完整性4.3SQLSERVER數(shù)據(jù)完整性2024/1/11404.3.2域完整性域完整性又稱列完整性,是指給定列的輸入有效性。強(qiáng)制域有效性的方法有:限制類型(定義數(shù)據(jù)類型)取值范圍(通過CHECK約束、定義DEFAULT默認(rèn)值、定義NOTNULL/NULL來實現(xiàn))定義數(shù)據(jù)類型設(shè)置是否為NULL2024/1/1141用SQLServerManagementStudio創(chuàng)建表設(shè)置默認(rèn)值:沒有輸入時系統(tǒng)自動填入值2024/1/1142在這里直接輸入需要的值用SQLServerManagementStudio創(chuàng)建表設(shè)置檢查約束:定義列的取值范圍右擊列,彈出快捷菜單,選擇“CHECK約束”2024/1/1143點這里打開CHECK約束對話框,選擇“添加”2024/1/1144用SQLServerManagementStudio創(chuàng)建表點這里輸入正確的表達(dá)式:2024/1/1145用SQLServerManagementStudio創(chuàng)建表在這里直接輸入或點這個在彈出的對話框中輸入完成后點這里點關(guān)閉完成設(shè)置4.3.3實體完整性實體完整性又稱行完整性,是指將行定義為特定表的惟一實體。要求每一個表中都有一個主鍵,并且其值不能為空且不允許有重復(fù)的值與之對應(yīng)。實體完整性強(qiáng)制表的標(biāo)識符列或主鍵的完整性(通過UNIQUE約束、PRIMARYKEY約束或IDENTITY屬性來實現(xiàn))。2024/1/1146設(shè)置IDENTITY屬性-標(biāo)識規(guī)范,只能應(yīng)用于int型數(shù)據(jù),系統(tǒng)自動編號,不能手工輸入2024/1/1147用SQLServerManagementStudio創(chuàng)建表展開+設(shè)定標(biāo)識增量和標(biāo)識種子2024/1/1148用SQLServerManagementStudio創(chuàng)建表選擇是設(shè)定起始編號設(shè)定編號步長設(shè)定主鍵約束-每個表必須有主鍵約束!2024/1/1149用SQLServerManagementStudio創(chuàng)建表單列主鍵-選中該列點右鍵,在彈出的快捷菜單中選中設(shè)置主鍵組合主鍵-選中幾列后點右鍵,在彈出的快捷菜單中選中設(shè)置主鍵設(shè)置UNIQUE唯一性約束:該列不能輸入重復(fù)值右擊列,彈出快捷菜單,選擇“索引/鍵”2024/1/1150用SQLServerManagementStudio創(chuàng)建表點這里打開索引/鍵對話框,選擇“添加”2024/1/1151用SQLServerManagementStudio創(chuàng)建表點這里選擇“唯一鍵”2024/1/1152用SQLServerManagementStudio創(chuàng)建表選擇類型指定使用唯一鍵的列2024/1/1153用SQLServerManagementStudio創(chuàng)建表點這里彈出列選擇對話框選擇家庭地址,然后點確定點關(guān)閉完成設(shè)置4.3.4參照完整性參照完整性又稱引用完整性,是指主表中的數(shù)據(jù)與從表中的數(shù)據(jù)的一致性。在輸入或刪除其中一個表的記錄時,另一個表對應(yīng)的約束應(yīng)滿足,即參照完整性保持表之間已定義的關(guān)系。在SQLServer中,參照完整性基于外鍵與主鍵之間或外鍵與惟一鍵之間的關(guān)系(通過FOREIGNKEY約束)。確保鍵值在所有表中一致。這樣的一致性要求不能引用不存在的值,如果鍵值更改了,那么在整個數(shù)據(jù)庫中,對該鍵值的所有引用要進(jìn)行一致的更改。外鍵約束是保證關(guān)系數(shù)據(jù)庫數(shù)據(jù)完整性的最重要的約束,建立了表與表之間的聯(lián)系。2024/1/1154設(shè)置外鍵約束選中列點右鍵,在彈出的快捷菜單中選擇“關(guān)系”2024/1/1155用SQLServerManagementStudio創(chuàng)建表點這里打開外鍵關(guān)系對話框,選擇“添加”2024/1/1156用SQLServerManagementStudio創(chuàng)建表點這里指定主外鍵關(guān)系的列2024/1/1157用SQLServerManagementStudio創(chuàng)建表點這里彈出表和列選擇對話框選擇主鍵表和主鍵列,然后點確定點關(guān)閉完成設(shè)置使用FOREIGNKEY約束需要注意的問題1.一個表最多可以有可以建立一個或者多個FOREIGNKEY約束,最多可以建253個FOREIGNKEY約束。2.創(chuàng)建FOREIGNKEY約束的主表字段可以是主鍵約束也可以是UNIQUE約束。3.創(chuàng)建FOREIGNKEY約束的表可以和同數(shù)據(jù)庫中其他表間建立約束,也可以和它本身建立FOREIGNKEY約束。例如:總經(jīng)理也是公司成員中的一員,則可以將總經(jīng)理字段(zjl)和成員(cy)字段間建立FOREIGNKEY約束。4.建立FOREIGNKEY約束的主表和子表間兩個字段的數(shù)據(jù)類型和數(shù)據(jù)寬度必須相同。5.創(chuàng)建FOREIGNKEY約束前應(yīng)該確定那個表是主表,那個是子表。假如A表刪了一條記錄,表B也要刪一條對應(yīng)的記錄,這時候應(yīng)該在表B上設(shè)定關(guān)系,A是主表,B是子表(有的稱為從表)。2024/1/1158最后保存表,完成創(chuàng)建2024/1/1159用SQLServerManagementStudio創(chuàng)建表點擊保存輸入表名點擊確定課堂練習(xí):創(chuàng)建表在這個交互式多媒體中,你可以了解如何使用SQLServerManagementStudio創(chuàng)建表,請注意你需要為表指定一個自動增長的列作為ID,同時另外一列將擁有默認(rèn)值。2024/1/1160語法形式:

CREATETABLEtable_name (column_name1data_type [DEFAULTconstant_expression] [IDENTITY(SEED,INCREMENT)] [NULL|NOTNULL] [,…n] )[ON{filegroup|DEFAULT}]表的名字表中列的名字。列名在表中必須唯一,列的命名必須遵循數(shù)據(jù)庫對象的命名規(guī)則列的數(shù)據(jù)類型和寬度指定所定義的列的默認(rèn)值,默認(rèn)值由常量表達(dá)式確定定義該列是一個標(biāo)識列,必須同時定義起始值和增值標(biāo)識列的起始值,即插入表的第一行數(shù)據(jù)的標(biāo)識列的值標(biāo)識列的增值,即插入表的最近一行相對于前一行標(biāo)識列數(shù)據(jù)值的增量指出該列是否允許為空,默認(rèn)為NULL指定在哪個文件組上創(chuàng)建表。DEFAULT表示將表存儲在默認(rèn)文件組中用T-SQL語句創(chuàng)建表2024/1/1161用T-SQL語句創(chuàng)建表2024/1/1162--例3-1創(chuàng)建一個教師表USEEducate--在Educate數(shù)據(jù)庫中創(chuàng)建表GOCREATETABLE教師表(教師編號INTIDENTITY(1,1)NOTNULL,--設(shè)置標(biāo)識規(guī)范教師姓名CHAR(8)NOTNULL,職稱CHAR(6)DEFAULT'講師',--設(shè)置默認(rèn)值約束專業(yè)方向CHAR(20),系CHAR(10),聯(lián)系方式CHAR(30))

使用T-SQL語句也可以實現(xiàn)數(shù)據(jù)完整性實體完整性域完整性參照完整性定義數(shù)據(jù)類型:

定義NOTNULL/NULL:2024/1/1163用T-SQL語句創(chuàng)建表column_namedata_type列名列的數(shù)據(jù)類型column_namedata_typeNOTNULL定義該列不能為空,可以NULL為默認(rèn)情況,不需要定義定義DEFAULT默認(rèn)值約束例:給學(xué)生表的性別列添加默認(rèn)值約束2024/1/1164用T-SQL語句創(chuàng)建表column_namedata_typeDEFAULT常量表達(dá)式指定該列的默認(rèn)值,常量表達(dá)式可以是數(shù)值,字符串,函數(shù)等CREATETABLE學(xué)生(學(xué)號char(10)PRIMARYKEY,姓名varchar(8)NULL,性別char(2)NULLDEFAULT'男',出生年月datetimeNULL,家庭住址varchar(50)NULL)定義檢查約束方法一:方法二:在定義完所有的列之后,加上2024/1/1165用T-SQL語句創(chuàng)建表column_namedata_typeCHECK(expression)定義要檢查的條件,可以是任何規(guī)范的表達(dá)式[CONSTRAINTconstraint_name]CHECK(expression)[約束約束名]省略則系統(tǒng)自動為約束提供一個名字例:給學(xué)生表的性別列添加檢查約束2024/1/1166用T-SQL語句創(chuàng)建表CREATETABLE學(xué)生(學(xué)號char(10)PRIMARYKEY,姓名varchar(8)NULL,性別char(2)NULLDEFAULT'男'CHECK(性別='男'or性別='女'),--直接在列后面加檢查約束出生年月datetimeNULL,家庭住址varchar(50)NULL)--或者:CREATETABLE學(xué)生(學(xué)號char(10)PRIMARYKEY,姓名varchar(8)NULL,性別char(2)NULLDEFAULT'男',出生年月datetimeNULL,家庭住址varchar(50)NULL,

CONSTRAINTck_sexCHECK(性別='男'or性別='女')--在定義完所有列后,再加檢查約束)--約束與約束名可以省略設(shè)置IDENTITY屬性例:添加標(biāo)識列(簡單的例子)2024/1/1167用T-SQL語句創(chuàng)建表column_namedata_typeIDENTITY(SEED,INCREMENT)定義標(biāo)識列,包括2個參數(shù)起始值:插入表中的第一行數(shù)據(jù)的值增量值:隔多少開始編號只能是整型數(shù)據(jù)CREATETABLE學(xué)生(學(xué)號intidentity(1000,1)

溫馨提示

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

評論

0/150

提交評論