數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用.ppt_第1頁(yè)
數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用.ppt_第2頁(yè)
數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用.ppt_第3頁(yè)
數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用.ppt_第4頁(yè)
數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用.ppt_第5頁(yè)
已閱讀5頁(yè),還剩119頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用,課程負(fù)責(zé)人 黃崇本,編委會(huì)名單,編委會(huì)名單,主任:俞瑞釗 副主任:陳慶章 周必水 劉加海 委員 (以姓氏筆畫為序) 王 雷 王筱慧 方 程 方錦明 盧菊洪 代紹慶 呂何新 朱 煒 劉向榮 江愛(ài)民 江錦祥 孫光第 李天真 李永平 李良財(cái) 李明鈞 李益明 余根墀 汪志達(dá) 沈鳳池 沈安衢 張 元 張學(xué)輝 張錦祥 張德發(fā) 陳月波 陳曉燕 邵應(yīng)珍 范劍波 歐陽(yáng)江林 周國(guó)民 周建陽(yáng) 趙小明 胡海影 秦學(xué)禮 徐文杰 凌 彥 曹哲新 戚海燕 龔祥國(guó) 章劍林 蔣黎紅 董方武 魯俊生 謝 川 謝曉飛 樓 豐 樓程偉 鞠洪堯 秘書長(zhǎng):熊盛新,1.本軟件用PowerPoint制作而成,播放亦在其狀態(tài)

2、下進(jìn) 行,為了更好地使用該軟件,使用者需掌握PowerPoint的基本 操作原理和方法。 .本軟件內(nèi)容豐富、新穎,突破傳統(tǒng)教學(xué)模式,在多媒體教室使用時(shí),使用者應(yīng)注意這一變化,改變教學(xué)方法,充分發(fā)揮其功效。同時(shí)也應(yīng)注意本軟件仍是一教學(xué)輔助工具,授課時(shí)應(yīng)與講授相結(jié)合使其更好地為教學(xué)服務(wù)。 .本軟件內(nèi)容完整,自成體系,對(duì)于使用者的不同情況,用本軟件授課時(shí),可補(bǔ)充所需內(nèi)容,鏈入其它媒體信息,或同其它軟(如CS ChemDraw等)共同使用,以達(dá)到多媒體輔助教學(xué)的良好效果。 .多媒體教學(xué)信息量大,傳遞速度快,用本軟件授課時(shí),應(yīng) 熟悉播放程序,注意控制播放速度,要使觀看者有充足的思 考時(shí)間,注意事項(xiàng),數(shù)據(jù)

3、庫(kù)技術(shù)是計(jì)算機(jī)科學(xué)技術(shù)中發(fā)展最快的應(yīng)用之一,已經(jīng)成為計(jì)算機(jī)信息系統(tǒng)與應(yīng)用系統(tǒng)的核心技術(shù),它與網(wǎng)絡(luò)技術(shù)構(gòu)成計(jì)算機(jī)應(yīng)用的兩個(gè)平臺(tái)。數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用課程已成為高職高專院校計(jì)算機(jī)教學(xué)中的主干課程,是計(jì)算機(jī)應(yīng)用專業(yè)的必修基礎(chǔ)課程。 本著高職高專教學(xué)突出理論知識(shí)的應(yīng)用和實(shí)踐能力的培養(yǎng),基礎(chǔ)理論以必需、夠用為度,專業(yè)教學(xué)加強(qiáng)針對(duì)性和實(shí)用性等原則,將課程的相關(guān)內(nèi)容分為基礎(chǔ)篇、應(yīng)用篇和實(shí)訓(xùn)篇。課程中既安排了目前使用非常廣泛的桌面數(shù)據(jù)庫(kù)管理系統(tǒng)Access,讓學(xué)生學(xué)會(huì)使用Access數(shù)據(jù)庫(kù)的基本方法,也全面介紹了當(dāng)前主流大型網(wǎng)絡(luò)數(shù)據(jù)庫(kù)系統(tǒng)SQL Server ,同時(shí)還介紹了數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開發(fā)的基本方法,前 言,第

4、1章 數(shù)據(jù)庫(kù)技術(shù)概論,第2章 關(guān)系數(shù)據(jù)庫(kù),第3章 關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言SQL,第4章 數(shù)據(jù)庫(kù)設(shè)計(jì),數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用 之 基礎(chǔ)篇,第一章 數(shù)據(jù)庫(kù)技術(shù)概論,1.1 數(shù)據(jù)與數(shù)據(jù)管理,1什么是數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)是長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)有組織、可共享的數(shù)據(jù)集合。數(shù)據(jù)庫(kù)好比是存放數(shù)據(jù)的倉(cāng)庫(kù),里面存放各式各樣的相關(guān)數(shù)據(jù)。 圖書館可視作一個(gè)數(shù)據(jù)庫(kù),書架對(duì)應(yīng)表格,書籍對(duì)應(yīng)原始數(shù)據(jù),書名或作者名的目錄卡片對(duì)應(yīng)索引,2數(shù)據(jù)與信息,數(shù)據(jù)是指用符號(hào)記錄下來(lái)的可以區(qū)別的信息;信息是關(guān)于現(xiàn)實(shí)世界中事物的存在方式或運(yùn)動(dòng)形態(tài)的反映,是人們進(jìn)行各種活動(dòng)所需的知識(shí)。數(shù)據(jù)是信息的載體,信息是被人們消化的數(shù)據(jù),1.1數(shù)據(jù)與數(shù)據(jù)管理,3數(shù)據(jù)處理,數(shù)據(jù)

5、處理指將數(shù)據(jù)轉(zhuǎn)換成信息的過(guò)程 ,廣義也講,數(shù)據(jù)處理包括對(duì)數(shù)據(jù)的收集、存儲(chǔ)、傳播、檢索、分類、加工或計(jì)算、打印各類報(bào)表或輸出各種需要的圖形等一系列活動(dòng);狹義也講,數(shù)據(jù)是指對(duì)所輸入的數(shù)據(jù)進(jìn)行加工整理,4數(shù)據(jù)管理,在數(shù)據(jù)處理的一系列活動(dòng)中,數(shù)據(jù)收集、存儲(chǔ)、傳播、檢索、分類等操作是基本環(huán)節(jié),這些基本環(huán)節(jié)統(tǒng)稱為數(shù)據(jù)管理。 數(shù)據(jù)與信息之間的關(guān)系可以表示為: 信息 = 數(shù)據(jù) + 數(shù)據(jù)處理,1.2 數(shù)據(jù)管理技術(shù)的發(fā)展,數(shù)據(jù)管理技術(shù)發(fā)展的三個(gè)階段,計(jì)算機(jī)數(shù)據(jù)管理大致經(jīng)歷了三個(gè)階段: 人工管理方式階段 文件管理方式階段 數(shù)據(jù)庫(kù) 管理方式階段,1.2.1 人工管理方式階段,1基本情況,20世紀(jì)50年代中期以前,計(jì)算

6、機(jī)主要用于科學(xué)計(jì)算。硬件方面,外存儲(chǔ)器只有卡片、紙帶、磁帶,沒(méi)有像磁盤這樣的可以隨機(jī)訪問(wèn)、直接存取的外部存儲(chǔ)設(shè)備。軟件方面,沒(méi)有專門管理數(shù)據(jù)的軟件,數(shù)據(jù)由計(jì)算機(jī)或處理它的程序自行攜帶。數(shù)據(jù)處理方式基本是批處理,1.2.1 人工管理方式階段,2特點(diǎn),特點(diǎn)1:數(shù)據(jù)和程序不具有獨(dú)立性。一組數(shù)據(jù)對(duì)應(yīng)一組程序,這就使得程序依賴于數(shù)據(jù),如果數(shù)據(jù)的類型、格式或者數(shù)據(jù)量、存取方法、輸入輸出方式等改變了,程序必須做相應(yīng)的修改。 特點(diǎn)2:數(shù)據(jù)不能長(zhǎng)期保存。由于數(shù)據(jù)是面向應(yīng)用程序的,在一個(gè)程序中定義的數(shù)據(jù),無(wú)法被其它程序利用,因此,程序與程序之間存在大量的重復(fù)數(shù)據(jù)。 特點(diǎn)3:系統(tǒng)中沒(méi)有對(duì)數(shù)據(jù)進(jìn)行管理的軟件。數(shù)據(jù)管理

7、任務(wù),包括存儲(chǔ)結(jié)構(gòu)、存取方法、輸入輸出方式等完全由程序設(shè)計(jì)人員 自負(fù)其責(zé),這就給應(yīng)用程序設(shè)計(jì)人員增加了很大的負(fù)擔(dān),1.2.2 文件管理方式階段,1基本情況,20世紀(jì)50年代后期至60年代中后期,大量的數(shù)據(jù)存儲(chǔ)、檢索和維護(hù)成為緊迫的需求。數(shù)據(jù)處理方式有批處理,也有聯(lián)機(jī)實(shí)時(shí)處理。程序與數(shù)據(jù)有了一定的獨(dú)立性,程序與數(shù)據(jù)分開存儲(chǔ),有了程序文件和數(shù)據(jù)文件的區(qū)別。數(shù)據(jù)文件可以長(zhǎng)期保存在外存儲(chǔ)器上多次存取,如進(jìn)行查詢、修改、插入、刪除等操作。數(shù)據(jù)的存取以記錄為基本單位,并進(jìn)行了多種文件組織形式,如順序文件、索引文件、隨機(jī)文件等。在文件系統(tǒng)的支持下,數(shù)據(jù)的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)之間可以有一定的差別,邏輯結(jié)構(gòu)與物理

8、結(jié)構(gòu)之間的轉(zhuǎn)換由文件系統(tǒng)的趣取方法來(lái)實(shí)現(xiàn)。數(shù)據(jù)與程序之間有設(shè)備獨(dú)立性,程序只需用文件名訪問(wèn)數(shù)據(jù),不必關(guān)心數(shù)據(jù)的物理位置。這樣,程序員可以集中精力在數(shù)據(jù)處理的算法上,而不必考慮數(shù)據(jù)存儲(chǔ)的具體細(xì)節(jié),1.2.2 文件管理方式階段,2存在問(wèn)題,問(wèn)題1:據(jù)冗余大。數(shù)據(jù)冗余是指不必要的重復(fù)存儲(chǔ),同一數(shù)據(jù)項(xiàng)重復(fù)出現(xiàn)在多個(gè)文件中。 問(wèn)題2:缺乏數(shù)據(jù)獨(dú)立性。文件系統(tǒng)中的數(shù)據(jù)文件是為某一特定的應(yīng)用而設(shè)計(jì)的,數(shù)據(jù)與程序相互依賴,如果改變數(shù)據(jù)的邏輯結(jié)構(gòu)或文件的組織方法,必須修改相應(yīng)的應(yīng)用程序,反之也是。 問(wèn)題3:數(shù)據(jù)無(wú)集中管理。數(shù)據(jù)文件均由相應(yīng)的應(yīng)用程序管理和維護(hù),沒(méi)有統(tǒng)一的管理機(jī)制。造成數(shù)據(jù)文件之間無(wú)法進(jìn)行聯(lián)系,不

9、能反映現(xiàn)實(shí)世界事物之間的聯(lián)系,1.2.3 數(shù)據(jù)庫(kù)管理方式階段,1基本情況,從20世紀(jì)60年代后期開始,需要計(jì)算機(jī)管理的數(shù)據(jù)量急劇增長(zhǎng),并且對(duì)數(shù)據(jù)共享的需求日益增強(qiáng)。為了解決數(shù)據(jù)的獨(dú)立性問(wèn)題,實(shí)現(xiàn)數(shù)據(jù)的統(tǒng)一管理,達(dá)到數(shù)據(jù)共享的目的,出現(xiàn)了數(shù)據(jù)庫(kù)技術(shù)。數(shù)據(jù)庫(kù)是通用化的相關(guān)數(shù)據(jù)集合。它不僅包括數(shù)據(jù)本身,而且包括關(guān)于數(shù)據(jù)之間的聯(lián)系。為數(shù)據(jù)庫(kù)的建立、使用和維護(hù)而配置的軟件稱為數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)。它是在操作系統(tǒng)支持下運(yùn)行的。目前較為流行的數(shù)據(jù)庫(kù)管理系統(tǒng)包括:Oracle、Informix、SQL server及微機(jī)上DBMS(dDBASE、FoxBASE、FoxPro等)。 數(shù)據(jù)庫(kù)已成為各類信息系

10、統(tǒng)的核心基礎(chǔ),1.2.3 數(shù)據(jù)庫(kù)管理方式階段,2優(yōu)點(diǎn),實(shí)現(xiàn)數(shù)據(jù)共享,減少數(shù)據(jù)冗余。數(shù)據(jù)庫(kù)中存放通用化的綜合數(shù)據(jù),某一應(yīng)用通常僅使用總體數(shù)據(jù)的子集。 數(shù)據(jù)高度結(jié)構(gòu)化。數(shù)據(jù)庫(kù)中的數(shù)據(jù)是有結(jié)構(gòu)的,它是用某種數(shù)據(jù)模型表示出來(lái)的,這種結(jié)構(gòu)既反映文件內(nèi)數(shù)據(jù)之間的聯(lián)系,也反映文件之間的聯(lián)系。具有較高的數(shù)據(jù)獨(dú)立性。在數(shù)據(jù)庫(kù)系統(tǒng)中,DBMS提供映象功能,確保應(yīng)用程序?qū)?shù)據(jù)結(jié)構(gòu)和存取方法有較高的獨(dú)立性。數(shù)據(jù)的物理存儲(chǔ)結(jié)構(gòu)與用戶看到的邏輯結(jié)構(gòu)可以有很大的差別。用戶只以簡(jiǎn)單的邏輯結(jié)構(gòu)來(lái)操作數(shù)據(jù),無(wú)需考慮數(shù)據(jù)在存儲(chǔ)器上的物理位置與結(jié)構(gòu)。有統(tǒng)一的數(shù)據(jù)控制功能。數(shù)據(jù)庫(kù)作為用戶與應(yīng)用程序的共享資源,對(duì)數(shù)據(jù)的存取往往是并發(fā)的,

11、即多個(gè)用戶同時(shí)使用同一個(gè)數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)管理系統(tǒng)必須提供并發(fā)控制功能、數(shù)據(jù)的安全性控制功能和數(shù)據(jù)完整性控制功能,1.3 數(shù)據(jù)庫(kù)基本概念,1數(shù)據(jù)庫(kù)系統(tǒng)(DBS或DBAS,數(shù)據(jù)庫(kù)系統(tǒng)(DBS)也稱為數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)(DBAS),是指具有管理和控制數(shù)據(jù)庫(kù)功能的計(jì)算機(jī)應(yīng)用系統(tǒng)。 數(shù)據(jù)庫(kù)系統(tǒng)由5部分組成:硬件系統(tǒng)、數(shù)據(jù)庫(kù)集合、數(shù)據(jù)庫(kù)管理系統(tǒng)及相關(guān)軟件、數(shù)據(jù)庫(kù)管理員(DBA)和用戶。 硬件系統(tǒng)是整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的基礎(chǔ),數(shù)據(jù)庫(kù)集合是若干個(gè)設(shè)計(jì)合理、滿足應(yīng)用需求的數(shù)據(jù)庫(kù)。數(shù)據(jù)管理系統(tǒng)是為數(shù)據(jù)庫(kù)的建立、使用和維護(hù)而配置的軟件,是數(shù)據(jù)庫(kù)系統(tǒng)的核心組成部分;相關(guān)軟件是支持軟件,如操作系統(tǒng)等。數(shù)據(jù)庫(kù)管理員是全面負(fù)責(zé)建立、維

12、護(hù)和管理數(shù)據(jù)庫(kù)系統(tǒng)的人員。用戶是最終系統(tǒng)的使用和操作人員,1.3 數(shù)據(jù)庫(kù)基本概念,2DBA職責(zé),1.安裝和升級(jí)數(shù)據(jù)庫(kù)服務(wù)器(如ORACLE.、MICROSOFT SQL SERVER),以及應(yīng)用程序工具 2 數(shù)據(jù)庫(kù)設(shè)計(jì)系統(tǒng)存儲(chǔ)方案,并制定未來(lái)的存儲(chǔ)需求計(jì)劃 3 開發(fā)人員設(shè)計(jì)了一個(gè)應(yīng)用,就需要DBA來(lái)創(chuàng)建數(shù)據(jù)庫(kù)存儲(chǔ)結(jié)構(gòu)4 開發(fā)人員設(shè)計(jì)了一個(gè)應(yīng)用,就需要DBA來(lái)創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象 5 根據(jù)開發(fā)人員的反饋信息,必要的時(shí)候,修改數(shù)據(jù)庫(kù)的結(jié)構(gòu) 6 登記數(shù)據(jù)庫(kù)的用戶,維護(hù)數(shù)據(jù)庫(kù)的安全性7 保證數(shù)據(jù)庫(kù)的使用符合知識(shí)產(chǎn)權(quán)相關(guān)法規(guī)8 監(jiān)控和優(yōu)化數(shù)據(jù)庫(kù)的性能9 控制和監(jiān)控用戶對(duì)數(shù)據(jù)庫(kù)的存取訪問(wèn) 10 制定數(shù)據(jù)庫(kù)備份計(jì)

13、劃,災(zāi)難出現(xiàn)時(shí)對(duì)數(shù)據(jù)庫(kù)信息進(jìn)行恢復(fù) 11維護(hù)適當(dāng)介質(zhì)上的存檔或者備份數(shù)據(jù)12備份和恢復(fù)數(shù)據(jù)庫(kù)13. 聯(lián)系數(shù)據(jù)庫(kù)系統(tǒng)的生產(chǎn)廠商,跟蹤技術(shù)信息 。DBA的認(rèn)證 : IBM ORACLE MICROSOFT,1.3 數(shù)據(jù)庫(kù)基本概念,3數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS,數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)作為數(shù)據(jù)庫(kù)系統(tǒng)的核心軟件,其主要目標(biāo)是數(shù)據(jù)成為方便用戶使用的資源,易于為各類用戶所共享,并增加數(shù)據(jù)的安全性、完整性和可用性。 DBMS具有下列功能: 數(shù)據(jù)庫(kù)的定義功能 提供數(shù)據(jù)定義語(yǔ)言DDL或操作命令,以便對(duì)各級(jí)數(shù)據(jù)模式進(jìn)行精確的描述,1.3 數(shù)據(jù)庫(kù)基本概念,3數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS,數(shù)據(jù)操縱功能 為了對(duì)數(shù)據(jù)庫(kù)中的數(shù)

14、據(jù)進(jìn)行追加、插入、修改、刪除、檢索等操作命令,稱為數(shù)據(jù)操作語(yǔ)言DML??梢苑譃閮深悾阂活愂荄ML可以獨(dú)立交互式使用,不依賴于任何程序設(shè)計(jì)語(yǔ)言,稱為自含或自主型語(yǔ)言。另一類是宿主型DML,嵌入到宿主語(yǔ)言中使用。如嵌入到C程序設(shè)計(jì)語(yǔ)言中,在使用高級(jí)語(yǔ)言編寫的應(yīng)用程序中,需要調(diào)用數(shù)據(jù)庫(kù)中的數(shù)據(jù)時(shí),則要用宿主型DML語(yǔ)句來(lái)操縱數(shù)據(jù),1.3 數(shù)據(jù)庫(kù)基本概念,3數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS,數(shù)據(jù)庫(kù)運(yùn)行控制功能 數(shù)據(jù)庫(kù)中的數(shù)據(jù)是提供給多個(gè)用戶共享的,用戶對(duì)數(shù)據(jù)的存取可能是并發(fā)的,即多個(gè)用戶同時(shí)使用一個(gè)數(shù)據(jù)庫(kù)。DBMS必須提供以下3方面的數(shù)據(jù)控制功能:并發(fā)控制功能,數(shù)據(jù)的安全性控制。數(shù)據(jù)的完整性控制。 數(shù)據(jù)字典

15、數(shù)據(jù)字典DD中存放著對(duì)實(shí)際數(shù)據(jù)庫(kù)各級(jí)模式所做的定義,即對(duì)數(shù)據(jù)庫(kù)結(jié)構(gòu)的描述。這些數(shù)據(jù)是數(shù)據(jù)庫(kù)系統(tǒng)中有關(guān)數(shù)據(jù)的數(shù)據(jù),稱之為元數(shù)據(jù)。DD提供了對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)描述的集中管理手段,對(duì)數(shù)據(jù)庫(kù)的使用和操作都通過(guò)查閱數(shù)據(jù)字典來(lái)進(jìn)行,1.3 數(shù)據(jù)庫(kù)基本概念,4數(shù)據(jù)模型,數(shù)據(jù)模型是指數(shù)據(jù)以及數(shù)據(jù)之間的聯(lián)系的描述 數(shù)據(jù)庫(kù)管理系統(tǒng)所支持的數(shù)據(jù)模型有四種:層次模型、網(wǎng)狀模型、關(guān)系模型、面向?qū)ο竽P汀?層次模型用樹形結(jié)構(gòu)來(lái)表示各類實(shí)體以及實(shí)體間的聯(lián)系。每個(gè)結(jié)點(diǎn)表示一個(gè)記錄類型,結(jié)點(diǎn)之間的連線表示記錄類型間的聯(lián)系,這種聯(lián)系只能是父子聯(lián)系。網(wǎng)狀數(shù)據(jù)模型是一種比層次模型更具普遍性的結(jié)構(gòu),它去掉了層次模型的兩個(gè)限制,允許多個(gè)結(jié)點(diǎn)沒(méi)

16、有雙親結(jié)點(diǎn),允許結(jié)點(diǎn)有多個(gè)雙親結(jié)點(diǎn),此外它還允許兩個(gè)結(jié)點(diǎn)之間有多種聯(lián)系(稱之為復(fù)合聯(lián)系)。在用戶看來(lái),一個(gè)關(guān)系模型的邏輯結(jié)構(gòu)是一張二維表,它由行和列組成,1.4 數(shù)據(jù)庫(kù)系統(tǒng)的體系結(jié)構(gòu),1模式的概論,模式是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,它僅僅涉及模式的描述,不涉及具體的值,2數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)體系結(jié)構(gòu),用戶使用的數(shù)據(jù)視圖叫做外模式,又稱子模式,是一種局部的邏輯數(shù)據(jù)視圖,表示用戶所理解的實(shí)體、實(shí)體屬性和實(shí)體關(guān)系。 全局的邏輯數(shù)據(jù)視圖叫概念模式,簡(jiǎn)稱為模式,是數(shù)據(jù)庫(kù)管理員所看到的實(shí)體、實(shí)體屬性和實(shí)體之間的關(guān)系。 數(shù)據(jù)的物理存儲(chǔ)模式叫做內(nèi)模式,也稱物理模式。 子模式是模式的子集,可以從模式推導(dǎo)

17、出來(lái),1.4 數(shù)據(jù)庫(kù)系統(tǒng)的體系結(jié)構(gòu),數(shù)據(jù)庫(kù)三級(jí)模式結(jié)構(gòu),1.4 數(shù)據(jù)庫(kù)系統(tǒng)的體系結(jié)構(gòu),3數(shù)據(jù)庫(kù)的兩級(jí)映象,子模式與模式之間的映象:定義了各子模式與模式之間的映射關(guān)系。當(dāng)整個(gè)系統(tǒng)要求改模式時(shí),可以改變映射關(guān)系而保持子模式不變。這種用戶數(shù)據(jù)獨(dú)立于全局的邏輯數(shù)據(jù)的特性即為邏輯數(shù)據(jù)獨(dú)立性; 模式與物理模式之間映象:定義了模式與物理模式的映射關(guān)系。當(dāng)為了某種需要改變物理模式時(shí),可以同時(shí)改變兩者之間的映射而保持模式與子模式不變,這種全局的邏輯數(shù)據(jù)獨(dú)立于物理數(shù)據(jù)的特性即為物理數(shù)據(jù)獨(dú)立性,1.5 數(shù)據(jù)庫(kù)保護(hù),1安全性保護(hù),防止未被授權(quán)者非法存取數(shù)據(jù)??刹捎梅椒ǎ鸿b定用戶身份、口令、用密碼記載數(shù)據(jù)、控制用戶權(quán)限

18、,2完整性保護(hù),指數(shù)據(jù)正確性和一致性。完整性保護(hù)可以通過(guò)對(duì)數(shù)據(jù)及數(shù)據(jù)之間的邏輯關(guān)系施加約束條件來(lái)實(shí)現(xiàn),約束條件有:值約束、結(jié)構(gòu)約束、動(dòng)態(tài)約束,1.5 數(shù)據(jù)庫(kù)保護(hù),3故障恢復(fù)保護(hù),備份與恢復(fù),4并發(fā)控制保護(hù),多用戶共享數(shù)據(jù)時(shí),而造成數(shù)據(jù)不一致性。用加鎖的方法進(jìn)行保護(hù),第二章 關(guān)系數(shù)據(jù)庫(kù),2.1 關(guān)系的數(shù)學(xué)定義,1二維表與關(guān)系,學(xué)生信息表,2.1 關(guān)系的數(shù)學(xué)定義,上述二維表(或簡(jiǎn)稱表)表示了學(xué)生類型的一些實(shí)體,每個(gè)二維表又稱為關(guān)系。 學(xué)生信息表是表名,在關(guān)系數(shù)據(jù)庫(kù)中,表名對(duì)應(yīng)于數(shù)據(jù)庫(kù)名(或關(guān)系名)。 表頭由一些反映實(shí)體屬性的屬性名組成,它對(duì)應(yīng)于數(shù)據(jù)庫(kù)結(jié)構(gòu)描述,定義了實(shí)體的型,在表上屬性名必須是唯一

19、,不允許重名。 表體是由一些行(元組或稱記錄)組成,它是數(shù)據(jù)庫(kù)的內(nèi)容及數(shù)據(jù)庫(kù)操作對(duì)象。一個(gè)元組對(duì)應(yīng)于文件系統(tǒng)中的一個(gè)記錄,一個(gè)記錄含有若干個(gè)域用以存儲(chǔ)屬性值。一個(gè)元組對(duì)應(yīng)于一個(gè)學(xué)生實(shí)體。表體中的列反映實(shí)體的屬性,2.1 關(guān)系的數(shù)學(xué)定義,2關(guān)系的數(shù)據(jù)定義,域(Domain)是值(Value)的集合如:整數(shù)、實(shí)數(shù)、0,1,2,3、真、假、(杭州,0571)、(寧波,0574) 域,若是一個(gè)有限集,其元數(shù)的個(gè)數(shù)叫做域的基數(shù)。如1,2,3,4,5的基數(shù)為5。 給定一組域D1,D2,Dn, 這些域中有些域可以是相同的。D1,D2,Dn的笛卡爾乘積為D1D2Dn= d1,d2,dndiDi,i=1,2,n

20、,其中每一個(gè)元素( d1,d2,dn)叫做一個(gè)n元組,或簡(jiǎn)稱元組。 D1D2Dn的子集叫作域D1,D2,Dn上的關(guān)系,用R(D1,D2,Dn)表示,這里的R表示關(guān)系的名字,n是關(guān)系的度(或叫元數(shù),2.1 關(guān)系的數(shù)學(xué)定義,3關(guān)系的相關(guān)概念,關(guān)系是笛卡積的子集,所以關(guān)系也是一個(gè)二維表,表的每行對(duì)應(yīng)一個(gè)元組,表的每列對(duì)應(yīng)一個(gè)域。由于域可以相同,為了加以區(qū)分,必須對(duì)每列起一個(gè)名字,稱為屬性(Attribute)。n目關(guān)系必有n個(gè)屬性。 若關(guān)系中的某一屬性組的值能唯一地標(biāo)識(shí)一個(gè)元組,則稱該屬性組為候選碼(Candidate key)。 若一個(gè)關(guān)系有多個(gè)候選碼,則選定其中一個(gè)為主碼(Primary key

21、)。主碼的諸屬性稱為主屬性(Prime attribute)。 不包含在任何侯選碼中的屬性稱為非碼屬性(Non-key attribute)。 在最簡(jiǎn)單的情況下, 侯選碼只包含一個(gè)屬性。 在最極端的情況下,關(guān)系模式的所有屬性組是這個(gè)關(guān)系模式的侯選碼,稱為全碼 (All-key,2.1 關(guān)系的數(shù)學(xué)定義,4關(guān)系的三種類型,基本關(guān)系(通常又稱為基本表或基表)、查詢表和視圖表。基本表是實(shí)際存在的表,它是實(shí)際存儲(chǔ)數(shù)據(jù)的邏輯表示。查詢表是查詢結(jié)果對(duì)應(yīng)的表。視圖表是由基本表或其他視圖表導(dǎo)出的表,是虛表,不對(duì)應(yīng)實(shí)際存儲(chǔ)的數(shù)據(jù),2.1 關(guān)系的數(shù)學(xué)定義,5關(guān)系的性質(zhì),在關(guān)系數(shù)據(jù)庫(kù)中,要求關(guān)系中的每一個(gè)分量是不可再

22、分的數(shù)據(jù)項(xiàng), 關(guān)系數(shù)據(jù)庫(kù)中的關(guān)系應(yīng)具有以下性質(zhì): 列是同質(zhì)的,即每一列中的分量均是同類型的數(shù)據(jù),即均來(lái)自同一個(gè)域。 不同的列可以出自同一個(gè)域,每一列稱為一個(gè)屬性,要給予不同的列不同的屬性名。 列的順序是無(wú)所謂的,即列的次序可以變換。 任意兩個(gè)元組不能完全相同。 行的順序是無(wú)所謂的,即行的次序可以變換。 每一分量必須是不可再分的數(shù)據(jù)項(xiàng),2.2 關(guān)系數(shù)據(jù)庫(kù),1關(guān)系模型,關(guān)系模型是由三部分組成:數(shù)據(jù)結(jié)構(gòu)(即關(guān)系)、關(guān)系操作、關(guān)系完整性。 在關(guān)系模型中,無(wú)論是實(shí)體還是實(shí)體之間的聯(lián)系均由單一的類型結(jié)構(gòu)-關(guān)系來(lái)表示。 關(guān)系模式是指關(guān)系的描述,即對(duì)關(guān)系名、組成關(guān)系的各屬性名、屬性到域的映射、屬性間的數(shù)據(jù)依賴

23、關(guān)系等等。關(guān)系模式通常簡(jiǎn)記為R(A1,A2,An) 關(guān)系數(shù)據(jù)庫(kù)是指數(shù)據(jù)庫(kù)結(jié)構(gòu)的描述,它包括關(guān)系數(shù)據(jù)庫(kù)名,若干屬性的定義,以及這些屬性上的若干關(guān)系模式,2.2 關(guān)系數(shù)據(jù)庫(kù),2關(guān)系操作,關(guān)系模型規(guī)定了關(guān)系操作的功能和特點(diǎn),但不對(duì)DBMS語(yǔ)言的語(yǔ)法做出具體的規(guī)定。 關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言的主要優(yōu)點(diǎn)是其高度的非過(guò)程化,用戶只須知道語(yǔ)句做什么,而不須知道怎么做。 關(guān)系操作主要有:并、交、差、選擇、投影、連接等,其中選擇、投影及連接是最基本的關(guān)系操作。這些操作均對(duì)關(guān)系的內(nèi)容或表體實(shí)施操作的,得到的結(jié)果仍為關(guān)系。 關(guān)系操作的特點(diǎn)是集合操作,即操作對(duì)象和結(jié)果都是集合,2.2 關(guān)系數(shù)據(jù)庫(kù),3關(guān)系模型的完整性,關(guān)系模型的

24、三類完整性:實(shí)體完整性、參照完整性及用戶定義的完整性。 實(shí)體完整性和參照完整性是任何關(guān)系模型都有必須滿足的完整性約束條件,應(yīng)該由關(guān)系數(shù)據(jù)庫(kù)DBMS自動(dòng)支持。 用戶定義的完整性的支持是由DBMS提供完整性定義設(shè)施,可以隨DBMS商品軟件不同而有所變化,2.2 關(guān)系數(shù)據(jù)庫(kù),4實(shí)體完整性(Entity Integrity,一個(gè)基本關(guān)系通常對(duì)應(yīng)現(xiàn)實(shí)世界的一個(gè)實(shí)體集。例如學(xué)生關(guān)系對(duì)應(yīng)于學(xué)生的集合?,F(xiàn)實(shí)世界中的實(shí)體是可區(qū)分的,即它們具有某種唯一性標(biāo)識(shí)。相應(yīng)地,關(guān)系模型中以主碼作為唯一性標(biāo)識(shí)。主碼中的屬性即主屬性不能取空值。所謂空值就是“不知道”或“無(wú)意義”的值。如果主屬性取空值,就說(shuō)明存在某個(gè)不可標(biāo)識(shí)的實(shí)

25、體,即存在不可區(qū)分的實(shí)體,這與現(xiàn)實(shí)世界的應(yīng)用環(huán)境相矛盾,因此這個(gè)實(shí)體一定不是一個(gè)完整的實(shí)體。 規(guī)則: 實(shí)體完整性規(guī)則:若屬性A是基本關(guān)系R的主屬性,則屬性A不能取空值,2.2 關(guān)系數(shù)據(jù)庫(kù),4參照完整性(Referential integrity,定義 設(shè)F是基本關(guān)系R的一個(gè)或一組屬性,但不是關(guān)系R的碼,如果F與基本關(guān)系S的主碼Ks相對(duì)應(yīng),則稱F是基本關(guān)系R的外碼(Foreign key),并稱基本關(guān)系R為參照關(guān)系(Referencing relation),基本關(guān)系S為被參照關(guān)系(Referenced relation)或目標(biāo)關(guān)系(Target relation)。關(guān)系R和S不一定是不同的關(guān)系

26、。參照完整性規(guī)則就是定義外碼與主碼之間的引用規(guī)則。 規(guī)則2.2 參照完整性規(guī)則:若屬性(或?qū)傩越M)F是基本關(guān)系R的外碼,它與基本關(guān)系S的主碼Ks相對(duì)應(yīng)(基本關(guān)系R和S不一定是不同的關(guān)系),則對(duì)于R中每個(gè)元組在F上的值必須為: 或者取空值(F的每個(gè)屬性值均為空值); 或者等于S中某個(gè)元組的主碼值,2.2 關(guān)系數(shù)據(jù)庫(kù),5用戶定義完整性(User-defined integrity,實(shí)體完整性和參照性適用于任何關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)。除此之外,不同的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)根據(jù)其應(yīng)用環(huán)境的不同,往往還需要一些特殊的約束條件,用戶定義的完整性就是針對(duì)某一具體關(guān)系數(shù)據(jù)庫(kù)的約束條件,它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的

27、語(yǔ)義要求。關(guān)系模型應(yīng)提供定義和檢驗(yàn)這類完整性的機(jī)制,以便用統(tǒng)一的系統(tǒng)的方法處理它們,而不要由應(yīng)用程序承擔(dān)這一功能,2.2 關(guān)系數(shù)據(jù)庫(kù),6關(guān)系數(shù)據(jù)語(yǔ)言,關(guān)系數(shù)據(jù)語(yǔ)言可分為三類:數(shù)據(jù)描述語(yǔ)言DDL,數(shù)據(jù)操縱語(yǔ)言DML和數(shù)據(jù)控制語(yǔ)言DCL。 DDL負(fù)責(zé)數(shù)據(jù)庫(kù)的描述,提供一種數(shù)據(jù)描述機(jī)制,用來(lái)描述數(shù)據(jù)庫(kù)的特征或數(shù)據(jù)的邏輯結(jié)構(gòu)。 DML負(fù)責(zé)數(shù)據(jù)庫(kù)的操作,提供一種數(shù)據(jù)處理操作的機(jī)制。 DCL負(fù)責(zé)控制數(shù)據(jù)庫(kù)的完整性和安全性,提供一種檢驗(yàn)完整性和保證安全的機(jī)制,2.2 關(guān)系數(shù)據(jù)庫(kù),7DML語(yǔ)言,DML包括數(shù)據(jù)查詢和數(shù)據(jù)的增、刪、改等功能。其中查詢的表達(dá)方式是DML的主要部分。 關(guān)系數(shù)據(jù)庫(kù)的DML按照查詢方式可

28、以分為兩大類:用對(duì)關(guān)系的集合運(yùn)算來(lái)表示查詢方式,稱為關(guān)系代數(shù);用謂詞演算來(lái)表達(dá)查詢方式,稱為關(guān)系演算; 關(guān)系代數(shù)和關(guān)系演算均是抽象的查詢語(yǔ)言,是實(shí)際DBMS軟件產(chǎn)品中實(shí)現(xiàn)的具體查詢語(yǔ)言的理論基礎(chǔ)。 結(jié)構(gòu)化查詢語(yǔ)言SQL是介于關(guān)系代數(shù)和關(guān)系演算之間的一種語(yǔ)言,SQL是集DDL、DML、DCL為一體的標(biāo)準(zhǔn)的關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言,2.3 關(guān)系運(yùn)算,1傳統(tǒng)的集合運(yùn)算,傳統(tǒng)的集合運(yùn)算是二目運(yùn)算。設(shè)關(guān)系R和關(guān)系S具有相同的度,且相應(yīng)的屬性值取自同一個(gè)域,則它們之間能進(jìn)行并、交及差運(yùn)算 并運(yùn)算:兩個(gè)關(guān)系R與S的并記為RS,它是一個(gè)新的關(guān)系,由屬于R或?qū)儆赟的元組組成,可形式地定義為: RS=ttRtS其中t是元組

29、變量,表示關(guān)系中的元組。 交運(yùn)算:兩個(gè)關(guān)系R與S的交記為RS,它是由屬于R且屬于S的元組組成,可形式地定義為: RS=ttRtS 差運(yùn)算:兩個(gè)關(guān)系R與S的并記為R-S,它是由屬于R但不屬于S的 元組組成,可形式地定義為: R-S=ttRnot(tS,2.3 關(guān)系運(yùn)算,2專門的關(guān)系運(yùn)算選擇,選擇運(yùn)算是從某個(gè)給定的關(guān)系中篩選出滿足限定條件的元組子集,它是一元關(guān)系運(yùn)算??尚问蕉x為:F (R)=ttRF(t) 其中,F(xiàn)是篩選關(guān)系R中元組的限定條件的布爾表達(dá)式,它由邏輯運(yùn)算符、連接各算術(shù)表達(dá)式組成。 學(xué)生信息表 S如下: 例:查詢信息系 全體學(xué)生: SD信息(S,2.3 關(guān)系運(yùn)算,3專門的關(guān)系運(yùn)算投影

30、,選擇運(yùn)算是從某個(gè)關(guān)系中選取一個(gè)“行”的子集,而投影運(yùn)算實(shí)際上是生成一個(gè)關(guān)系的“列”的子集,它從給予定的關(guān)系中保留指定的屬性子集而刪去其余屬性。設(shè)某關(guān)系R(X),X是R的屬性集,A是X的一個(gè)子集,則R在A的投影可表示為:A(R)=tAtR其中,tA表示元組相應(yīng)A屬性中的分量。 例:查詢學(xué)生的姓名和所在系: SN,SD(S,2.3 關(guān)系運(yùn)算,4專門的關(guān)系運(yùn)算連接,連接也稱為連接。它是從兩個(gè)關(guān)系的笛卡爾積中選取屬性間滿足一定條件的元組,連接運(yùn)算中有兩種最為重要也最為常用的連接,一種是等值連接(equi-join),另一種是自然連接(Natural join)。 為“”的連接運(yùn)算稱為等值連接。它是從

31、關(guān)系R與S的笛卡爾積中選取A、B屬性值相等的那些元組 自然連接(Natural join)是一種特殊的等值連接,它要求兩個(gè)關(guān)系中進(jìn)行比較的分量必須是相同的屬性組,并且要在結(jié)果中把重復(fù)的屬性去掉。 一般的連接操作是從行的角度進(jìn)行運(yùn)算。但自然連接還 需要取消了重復(fù)列,所以是同時(shí)從行和列的 角度進(jìn)行運(yùn)算,2.3 關(guān)系運(yùn)算,5專門的關(guān)系運(yùn)算除,一個(gè)m元關(guān)系R除以一外n元關(guān)系S(其中mn,S非空關(guān)系并且R中存在n個(gè)屬性與S的n個(gè)屬性定義在相同的域)所得到的結(jié)果是一個(gè)(m-n)元的新的關(guān)系,它表示滿足以下條件的元組集合:RS=t(m-n)對(duì)任一t(n)S都有t(m-n)。t(n)R其中t(m-n)。t(n

32、) 表示一個(gè)(m-n)元的元組和一個(gè)n元的元組拼合成一個(gè)m元的新元組,2.3 關(guān)系運(yùn)算,6關(guān)系代數(shù)運(yùn)算舉例,學(xué)生關(guān)系S同前面的一樣,課程關(guān)系C(課程號(hào)C#,課程名CN,任課教師CT)和學(xué)生選課關(guān)系SC(學(xué)號(hào)S#,課程號(hào)C#,成績(jī)G) 例1:查詢年齡小于20歲的學(xué)生 sage20(Student) 例2:檢索學(xué)習(xí)課程C2的學(xué)生的學(xué)號(hào)與成績(jī) S#,G(C#=C2(SC) 例3:求出學(xué)習(xí)全部課程的的學(xué)生名單 SN(S(S#,C#(SC)C#(C,2.3 關(guān)系運(yùn)算,例4、將新開課程記錄(C6,Q,R)插入到關(guān)系C中 C(C6,Q,R) 例5、將學(xué)號(hào)為S3學(xué)生的C4課程的成績(jī)改為A ( SC(S3,C4

33、,?)(S3,C4,A) 例6、求同時(shí)選修課程C1和C2的學(xué)生姓名 C12=C# (C#=C1OR C#=C2(C) SC12= S#,C#(SC)C12 S12=SN(SSC12,第三章 關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言SQL,3.1 SQL數(shù)據(jù)定義,1SQL介紹,SQL是英文Structured Query Language的縮寫,意思為結(jié)構(gòu)化查詢語(yǔ)言。SQL語(yǔ)言的主要功能就是同各種數(shù)據(jù)庫(kù)建立聯(lián)系,進(jìn)行溝通。按照ANSI(美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì))的規(guī)定,SQL被作為關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)的標(biāo)準(zhǔn)語(yǔ)言。SQL語(yǔ)句可以用來(lái)執(zhí)行各種各樣的操作,例如更新數(shù)據(jù)庫(kù)中的數(shù)據(jù),從數(shù)據(jù)庫(kù)中提取數(shù)據(jù)等。目前,絕大多數(shù)流行的關(guān)系型數(shù)據(jù)庫(kù)管

34、理系統(tǒng),如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL語(yǔ)言標(biāo)準(zhǔn)。雖然很多數(shù)據(jù)庫(kù)都對(duì)SQL語(yǔ)句進(jìn)行了再開發(fā)和擴(kuò)展,但是包括Select, Insert, Update, Delete, Create, 以及Drop在內(nèi)的標(biāo)準(zhǔn)的SQL命令仍然可以被用來(lái)完成幾乎所有的數(shù)據(jù)庫(kù)操作 SQL語(yǔ)言的版本包括:SQL-89,SQL-92,SQL3,3.1 SQL數(shù)據(jù)定義,2SQL動(dòng)詞,數(shù)據(jù)查詢:SELECT 數(shù)據(jù)定義: CREAT, DROP, ALTER 數(shù)據(jù)操縱: INSERT, UPDATE, DELETE 數(shù)據(jù)控制: GRANT , REVO

35、KE,3.1 SQL數(shù)據(jù)定義,3示例數(shù)據(jù)庫(kù)結(jié)構(gòu),學(xué)生課程”數(shù)據(jù)庫(kù)中包括三個(gè)表: “學(xué)生”表Student由學(xué)號(hào)(Sno)、姓名(Sname)、性別(Ssex)、年齡(Sage)、所在系(Sdept)五個(gè)屬性組成,可記為: Student(Sno,Sname,Ssex,Sage,Sdept) 關(guān)鍵字Sno (2) “課程”表Course由課程號(hào)(Cno)、課程名(Cname)、先修課號(hào)(Cpno)、學(xué)分(Ccredit)四個(gè)屬性組成,可記為: Course(Cno,Cname,Cpno,Ccredit) 關(guān)鍵字 Cno (3) “學(xué)生選課”表SC由學(xué)號(hào)(Sno)、課程號(hào)(Cno)、成績(jī)(Grad

36、e)三個(gè)屬性組成,可記為: SC(Sno,Cno,Grade) 關(guān)鍵字(Sno, Cno,3.1 SQL數(shù)據(jù)定義,4創(chuàng)建基本表,一般格式如下: CREATE TABLE ( 列級(jí)完整性約束條件 , 列級(jí)完整性約束條件.) ,; 例1 建立一個(gè)“學(xué)生”表Student,它由學(xué)號(hào)Sno、姓名Sname、性別Ssex、年齡Sage、所在系Sdept五個(gè)屬性組成,其中學(xué)號(hào)屬性不能為空,并且其值是唯一的。 CREATE TABLE Student (Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20), Ssex CHAR(1), Sage INT, Sdept CHA

37、R(15,3.1 SQL數(shù)據(jù)定義,SQL提供的基本數(shù)據(jù)類型: 數(shù)值型:包括 integer、real、float,numeric等字符串型:char(n)、varchar(n),前者是定長(zhǎng),后者為 變長(zhǎng)串 位串型:bit(n),bit varying(n),同上。 時(shí)間型:date、time,3.1 SQL數(shù)據(jù)定義,5修改基本表,一般格式如下: ALTER TABLE ADD 完整性約束DROP MODIFY ; 其中指定需要修改的基本表,ADD子句用于增加新列和新的完整性約束條件,DROP子句用于刪除指定的完整性約束條件,MODIFY子句用于修改原有的列定義。 例2 向Student表增加“

38、入學(xué)時(shí)間”列,其數(shù)據(jù)類型為日期型 ALTER TABLE Student ADD Scome DATE; 不論基本表中原來(lái)是否已有數(shù)據(jù),新增加的列一律為空值,3.1 SQL數(shù)據(jù)定義,例3 將年齡的數(shù)據(jù)類型改為半字長(zhǎng)整數(shù) ALTER TABLE Student MODIFY Sage SMALLINT; 修改原有的列定義有可能會(huì)破壞已有數(shù)據(jù) 例4 刪除關(guān)于學(xué)號(hào)必須取唯一值的約束 ALTER TABLE Student DROP UNIQUE(Sno,3.1 SQL數(shù)據(jù)定義,5刪除基本表,一般格式如下: DROP TABLE 例5 刪除Student表 DROP TABLEStudent 基本表定

39、義一旦刪除,表中的數(shù)據(jù)、在此表上建立的索引都將自動(dòng)被刪除掉,而建立在此表上的視圖雖仍然保留,但已無(wú)法引用。因此執(zhí)行刪除操作一定要格外小心,3.1 SQL數(shù)據(jù)定義,6建立索引,一般格式如下: CREATE UNIQUE CLUSTER INDEX ON (,.); 其中,指定要建索引的基本表的名字。索引可以建在該表的一列或多列上,各列名之間用逗號(hào)分隔。每個(gè)后面還可以用指定索引值的排列次序,包括ASC(升序)和DESC(降序)兩種,缺省值為ASC。 UNIQUE表明此索引的每一個(gè)索引值只對(duì)應(yīng)唯一的數(shù)據(jù)記錄。 CLUSTER表示要建立的索引是聚簇索引。所謂聚簇索引是指索引項(xiàng)的順序與表中記錄的物理順序

40、一致的索引組織,3.1 SQL數(shù)據(jù)定義,例6 為學(xué)生-課程數(shù)據(jù)庫(kù)中的Student、Couse、SC三個(gè)表建立索引。其中Student表按學(xué)號(hào)升序建唯一索引,Couse表按課程號(hào)升序建唯一索引,Sno、Cno表按學(xué)號(hào)升序和課程號(hào)降序建唯一索引。 CREATE UNIQUE INDEX Stusno ON Student(Sno); CREATE UNIQUE INDEX Coucno ON Couse(Cno); CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC,3.1 SQL數(shù)據(jù)定義,7刪除索引,一般格式如下: DROP INDEX; 例7 刪除

41、Student表的Stusname索引 DROP INDEX Stusname; 索引一經(jīng)建立,就由系統(tǒng)使用和維護(hù)它,不需用戶干預(yù)。建立索引是為了減少查詢操作的時(shí)間,但如果數(shù)據(jù)增刪改頻繁,系統(tǒng)會(huì)花費(fèi)許多時(shí)間來(lái)維護(hù)索引。這時(shí),可以刪除一些不必要的索引。刪除索引時(shí),系統(tǒng)會(huì)同時(shí)從數(shù)據(jù)字典中刪去有關(guān)該索引的描述,3.2 SQL數(shù)據(jù)查詢,1查詢語(yǔ)句格式,一般格式為: SELECT ALL|DISTINCT,. FROM , . WHERE GROUP BY HAVING ORDER BY ASC|DESC; 整個(gè)SELECT語(yǔ)句的含義是,根據(jù)WHERE子句的條件表達(dá)式,從FROM子句指定的基本表或視圖中

42、找出滿足條件的元組,再按SELECT子句中的目標(biāo)列表達(dá)式,選出元組中的屬性值形成結(jié)果表。如果有GROUP子句,則將結(jié)果按的值進(jìn)行分組,該屬性列值相等的元組為一個(gè)組,每個(gè)組產(chǎn)生結(jié)果表中的一條記錄。通常會(huì)在每組中作用集函數(shù)。如果GROUP子句帶HAVING短語(yǔ),則只有滿足指定條件的組才予輸出。如果有ORDER子句,則結(jié)果表還要按的值的 升序或降序排序,3.2 SQL數(shù)據(jù)查詢,1單表查詢,一、選擇表中的若干列 例1 查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名 SELECT Sno,Sname FROM Student; 例2 查詢?nèi)w學(xué)生的姓名、學(xué)號(hào)、所在系 SELECT Sname, Sno, Sdept FROM

43、 Student; 例3 查詢?nèi)w學(xué)生的詳細(xì)記錄 SELECT * FROM Student,3.2 SQL數(shù)據(jù)查詢,例4 查全體學(xué)生的姓名及其出生年份 SELECT Sname, 2004-Sage FROM Student; 例5 查全體學(xué)生的姓名、出生年份和所有系,要求用小寫字 母表示所有系名 SELECT Sname, Year of Birth:, 1996-Sage, ISLOWER(Sdept) FROM Student,3.2 SQL數(shù)據(jù)查詢,二、選擇表中的若干元組 1、消除取值重復(fù)的行 例6 :查所有選修過(guò)課的學(xué)生的學(xué)號(hào) SELECT DISTINCT Sno FROM SC

44、; 2、查詢滿足條件的元組 查詢滿足指定條件的元組可以通過(guò)WHERE子句實(shí)現(xiàn)。WHERE子句常用的查詢條件如下頁(yè),3.2 SQL數(shù)據(jù)查詢,常用的查詢條件 (1)比較 :、 = 、 =、 != (2)確定范圍 :BETWEEN AND, NOT BETWEEN AND (3)確定集合 :IN, NOT IN (4)字符匹配 :LIKE, NOT LIKE (5)空值 :IS NULL, IS NOT NULL (6)多重條件 :AND, OR,3.2 SQL數(shù)據(jù)查詢,1) 比較,例7 :查計(jì)算機(jī)系全體學(xué)生的名單 SELECT Sname FROM Student WHERE Sdept = CS

45、; 例8 :查所有年齡在20歲以下的學(xué)生姓名及其年齡 SELECT Sname, Sage FROM Student WHERE Sage = 20 例9 :查考試成績(jī)有不及格的學(xué)生的學(xué)號(hào) SELECT DISTINCT Sno FROM Course WHERE Grade 60,3.2 SQL數(shù)據(jù)查詢,2) 確定范圍,例10 :查詢年齡在20至23歲之間的學(xué)生的姓名、系別、和年齡 SELECT Sname, Sdept, Sage FROM Student WHERE Sage BETWEEN 20 AND 23 ; 例11 :查詢年齡不在20至23歲之間的學(xué)生姓名、系別和年 齡 SELE

46、CT Sname, Sdept, Sage FROM Student WHERE Sage NOT BETWEEN 20 AND 23,3.2 SQL數(shù)據(jù)查詢,3) 確定集合,例12 :查信息系(IS)、數(shù)學(xué)系(MA)和計(jì)算機(jī)科學(xué)系(CS)的學(xué)生的姓名和性別 SELECT Sname, Ssex FROM Student WHERE Sdept IN (IS, MA, CS) ; 例13 :查既不是信息系、數(shù)學(xué)系,也不是計(jì)算機(jī)科學(xué)系的學(xué)生的姓名和性別 SELECT Sname, Ssex FROM Student WHERE Sdept NOT IN (IS, MA, CS,3.2 SQL數(shù)據(jù)

47、查詢,4) 字符匹配,謂詞LIKE可以用來(lái)進(jìn)行字符串的匹配。其一般語(yǔ)法格式如下: NOT LIKE ESCAPE 其含義是查找指定的屬性列值與相匹配的元組。可以是一個(gè)完整的字符串,也可以含有通配符%和_。 %(百分號(hào)) 代表任意長(zhǎng)度(長(zhǎng)度可以為0)的字符串。 _(下橫線) 代表任意單個(gè)字符。 例14 :查所有姓劉的學(xué)生的姓名、學(xué)號(hào)和性別 SELECT Sname, Sno, Ssex (not 表示不姓劉的同學(xué)) FROM Student WHERE Sname not LIKE 劉,3.2 SQL數(shù)據(jù)查詢,例15 :查姓“歐陽(yáng)”且全名為三個(gè)漢字的學(xué)生的姓名 SELECT Sname FROM

48、 Student WHERE Sname LIKE 歐陽(yáng)_ _ 例16 :查名字中第二字為“陽(yáng)”字的學(xué)生的姓名和學(xué)號(hào) SELECT Sname, Sno FROM Student WHERE Sname LIKE _ _陽(yáng)% 如果用戶要查詢的匹配字符串本身就含有%或_,比如要查名字為 DB_Design的課程的學(xué)分,應(yīng)如何實(shí)現(xiàn)呢?這時(shí)就要使用 ESCAPE 短語(yǔ)對(duì)通配符進(jìn)行轉(zhuǎn)義了,3.2 SQL數(shù)據(jù)查詢,例17 :查DB_Design課程的課程號(hào)和學(xué)分 SELECT Cno, Ccredit FROM Course WHERE Cname LIKE DB_Design ESCAPE ESCAP

49、E 短語(yǔ)表示為換碼字符,這樣匹配串中緊跟在后面的字符”_”不再具有通配符的含義,而是取其本身含義,被轉(zhuǎn)義為普通的”_”字符。 例18:查以”DB_”開頭,且倒數(shù)第三個(gè)字符為i的課程的詳細(xì)情況 SELECT * FROM Course WHERE Cname LIKE DB_%i_ ESCAPE,3.2 SQL數(shù)據(jù)查詢,5) 涉及空值的查詢,例19:某些學(xué)生選修某門課程后沒(méi)有參加考試,所以有選課記錄,但沒(méi)有考試成績(jī),下面我們來(lái)查一下缺少成績(jī)的學(xué)生的學(xué)號(hào)和相應(yīng)的課程號(hào) : SELECT Sno, Cno FROM SC WHERE Grade IS NULL 例20:查所有有成績(jī)的記錄的學(xué)生學(xué)號(hào)和

50、課程號(hào) SELECT Sno, Cno FROM SC WHERE Grade IS NOT NULL,3.2 SQL數(shù)據(jù)查詢,6) 多重條件查詢,邏輯運(yùn)算符AND和OR可用來(lái)聯(lián)結(jié)多個(gè)查詢條件。如果這兩個(gè)運(yùn)算符同時(shí)出現(xiàn)在同一個(gè)WHERE條件子句中,則AND的優(yōu)先級(jí)高于OR,但用戶可以用括號(hào)改變優(yōu)先級(jí)。 例21 :查CS系年齡在20歲以下的學(xué)生姓名 SELECT Sname FROM Student WHERE Sdept=CS AND Sage20,3.2 SQL數(shù)據(jù)查詢,三、 對(duì)查詢結(jié)果排序,如果沒(méi)有指定查詢結(jié)果的顯示順序,DBMS將按其最方便的順序(通常是元組在表中的先后順序)輸出查詢結(jié)果

51、。用戶也可以用ORDER BY子句指定按照一個(gè)或多個(gè)屬性列的升序(ASC)或降序(DESC)重新排列查詢結(jié)果,其中升序ASC為缺省值。 例22 :查詢選修了3號(hào)課程的學(xué)生的學(xué)號(hào)及其成績(jī),查詢結(jié)果按分?jǐn)?shù)的降序排列 SELECT Sno, Grade FROM SC WHERE Cno=1 GROUP BY Grade DESC,3.2 SQL數(shù)據(jù)查詢,四、 使用集函數(shù),為了進(jìn)一步方便用戶,增強(qiáng)檢索功能,SQL提供了許多集函數(shù),主要包括: COUNT(DISTINCT|ALL *) 統(tǒng)計(jì)元組個(gè)數(shù) COUNT(DISTINCT|ALL ) 統(tǒng)計(jì)一列中值的個(gè)數(shù) SUM(DISTINCT|ALL ) 計(jì)

52、算一列值的總和(此列必須是數(shù)值型) AVG(DISTINCT|ALL ) 計(jì)算一列值的平均值(此列必須是數(shù)值型) MAX(DISTINCT|ALL ) 求一列值中的最大值 MIN(DISTINCT|ALL ) 求一列值中的最小值,3.2 SQL數(shù)據(jù)查詢,例24 :查詢學(xué)生總?cè)藬?shù) SELECT COUNT(*) FROM Student 例25 :查詢選修了課程的學(xué)生人數(shù) SELECT COUNT(DISTINCT Sno) FROM SC 例26 :計(jì)算1號(hào)課程的學(xué)生平均成績(jī) SELECT AVG(Grade) FROM SC WHERE Cno=1 例27 :查詢學(xué)習(xí)1號(hào)課程的學(xué)生最高分?jǐn)?shù)

53、SELECT MAX(Grade) FROM SC WHERE Cno=1,3.2 SQL數(shù)據(jù)查詢,五、 對(duì)查詢結(jié)果分組,GROUP BY子句可以將查詢結(jié)果表的各行按一列或多列取值相等的原則進(jìn)行分組 。 對(duì)查詢結(jié)果分組的目的是為了細(xì)化集函數(shù)的作用對(duì)象。如果未對(duì)查詢結(jié)果分組,集函數(shù)將作用于整個(gè)查詢結(jié)果,即整個(gè)查詢結(jié)果只有一個(gè)函數(shù)值。否則,集函數(shù)將作用于每一個(gè)組,即每一組都有一個(gè)函數(shù)值 例28 :查詢各個(gè)課程號(hào)與相應(yīng)的選課人數(shù) SELECT Cno, COUNT(Sno) FROM SC GROUP BY Cno 該SELECT語(yǔ)句對(duì)SC表按Cno的取值進(jìn)行分組,所有具有相同Cno值的元組為一組,

54、然后對(duì)每一組作用集函數(shù)COUNT以 求得該組的學(xué)生人數(shù),3.2 SQL數(shù)據(jù)查詢,如果分組后還要求按一定的條件對(duì)這些組進(jìn)行篩選,最終只輸出滿足指定條件的組,則可以使用HAVING短語(yǔ)指定篩選條件 例29 :查詢信息系選修了3門以上課程的學(xué)生的學(xué)號(hào) SELECT Sno FROM SC WHERE Sdept=IS GROUP BY Sno HAVING COUNT(*)3 WHERE子句與HAVING短語(yǔ)的根本區(qū)別在于作用對(duì)象不同。WHERE子句作用于基本表或視圖,從中選擇滿足條件的元組。HAVING短語(yǔ)作用于組,從中選擇滿足條件的組,3.2 SQL數(shù)據(jù)查詢,2多表查詢,一、連接查詢 (1)、等

55、值與非等值連接查詢 例30 :查詢每個(gè)學(xué)生及其選修課程的情況 SELECT Student.*, SC.* FROM Student, SC WHERE Student.Sno=SC.Sno 如果是按照兩個(gè)表中的相同屬性進(jìn)行等值連接,且目標(biāo)列中去掉了重復(fù)的屬性列,但保留了所有不重復(fù)的屬性列,則稱之為自然連接 SELECT Student.Sno, Sname, Ssex, Sage, Sdept, Cno, Grade FROM Student, SC WHERE Student.Sno=SC.Sno,3.2 SQL數(shù)據(jù)查詢,2)、 復(fù)合連接,上面連接查詢中,WHERE子句中只有一個(gè)條件,即用

56、于連接兩個(gè)表的謂詞。WHERE子句中有多個(gè)條件的連接操作,稱為復(fù)合條件連接 : 例31 :查詢選修2號(hào)課程且成績(jī)?cè)?0分以上的所有學(xué)生 SELECT Student.Sno, Sname FROM Student, SC WHERE Student.Sno=SC.Sno AND SC.Cno=2 AND SC.Grade90,3.2 SQL數(shù)據(jù)查詢,二、 嵌套查詢,1)帶有IN謂詞的子查詢 例 32:查詢與“劉晨”在同一個(gè)系學(xué)習(xí)的學(xué)生 SELECT Sno, Sname, Sdept FROM Student WHERE Sdept IN SELECT Sdept FROM Student W

57、HERE Sname=劉晨,3.2 SQL數(shù)據(jù)查詢,2)、帶有比較運(yùn)算符的子查詢,帶有比較運(yùn)算符的子查詢是指父查詢與子查詢之間用比較運(yùn)算符進(jìn)行連接。當(dāng)用戶能確切知道內(nèi)層查詢返回的是單值時(shí),可以用、 =、等比較運(yùn)算符。 例33:查詢選修了課程名為信息系統(tǒng)的學(xué)生學(xué)號(hào)和姓名 SELECT Sno, Sname FROM Student WHERE Sno IN (SELECT Sno FROM SC WHERE Cno = (SELECT Cno FROM Course WHERE Cname=信息系統(tǒng),3.2 SQL數(shù)據(jù)查詢,3)、帶有ANY或ALL謂詞的子查詢,例34:查詢其他系中比IS系任一學(xué)

58、生年齡小的學(xué)生名單 SELECT Sname, Sage FROM Student WHERE Sage IS ORDER BY Sage DESC,3.2 SQL數(shù)據(jù)查詢,4)、帶有EXISTS謂詞的子查詢,EXISTS代表存在量詞彐。帶有EXISTS謂詞的子查詢不返回任何實(shí)際數(shù)據(jù),它只產(chǎn)生邏輯真值“true或邏輯假值“false。 例35、查詢所有選修了1號(hào)課程的學(xué)生姓名 SELECT Sname FROM Student WHERE EXISTS (SELECT * FROM SC WHERE Sno=Student.Sno AND Cno=1) 使用存在量詞EXISTS后,若內(nèi)層查詢結(jié)

59、果非空,則外層的WHERE子句返回真值,否則返回假值,3.2 SQL數(shù)據(jù)查詢,5)、集合查詢,每一個(gè)SELECT語(yǔ)句都能獲得一個(gè)或一組元組。若要把多個(gè)SELECT語(yǔ)句的結(jié)果合并為一個(gè)結(jié)果,可用集合操作來(lái)完成。集合操作主要包括并操作UNION、交操作INTERSECT和差操作MINUS。 使用UNION將多個(gè)查詢結(jié)果合并起來(lái),形成一個(gè)完整的查詢結(jié)果時(shí),系統(tǒng)會(huì)自動(dòng)去掉重復(fù)的元組。需要注意的是,參加UNION操作的各數(shù)據(jù)項(xiàng)數(shù)目必須相同;對(duì)應(yīng)項(xiàng)的數(shù)據(jù)類型也必須相同。 例36 查詢計(jì)算機(jī)科學(xué)系的學(xué)生及年齡不大于19歲的學(xué)生 SELECT * FROM Student WHERE Sdept=CS UNI

60、ON SELECT * FROM Student WHERE Sage=19,3.3 SQL數(shù)據(jù)更新,1插入數(shù)據(jù),一、插入單個(gè)元組 INSERT INTO (,.) VALUES ( ,.) 如果某些屬性列在INTO子句中沒(méi)有出現(xiàn),則新記錄在這些列上將取空值。但必須注意的是,在表定義時(shí)說(shuō)明了NOT NULL的屬性列不能取空值。否則會(huì)出錯(cuò)如果INTO子句中沒(méi)有指明任何列名,則新插入的記錄必須在每個(gè)屬性列上均有值 例1 插入一條選課記錄(95020,1) INSERT INTO SC(Sno, Cno) VALUES (95020, 1,3.3 SQL數(shù)據(jù)更新,二插入子查詢結(jié)果,INSERT IN

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論