版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)據(jù)庫原理與設(shè)計(jì)方法,參考書: 1.王能斌。數(shù)據(jù)庫系統(tǒng)。電子工業(yè)出版社。1995年。 2.王能斌編。數(shù)據(jù)庫系統(tǒng)原理。電子工業(yè)出版社。2000年。 3.王珊 陳紅。數(shù)據(jù)庫系統(tǒng)原理教程。 4.[美]J·D·厄爾曼。數(shù)據(jù)庫系統(tǒng)原理。,第一章 Introduction1.1 Concepts 1.1
2、.1 Data、DataBase、DataBase System、DataBase Management System 1. Data(李明,男,1972,江蘇,計(jì)算機(jī)系,1990)數(shù)據(jù)、信息、知識(shí)三者之間的關(guān)系:數(shù)據(jù)的語義即為信息,信息在計(jì)算機(jī)中的存儲(chǔ)(表示形式)即為數(shù)據(jù)。從信息中提升、推理、推導(dǎo)出的新的信息即為知識(shí)。
3、例如:40(數(shù)據(jù))—40℃(信息)—發(fā)燒(知識(shí)),2. Database——DB 3. Database Management System——DBMS 4. database system——DBS數(shù)據(jù)庫管理員(
4、database administrator,簡(jiǎn)稱DBA)。,,5. Data Model數(shù)據(jù)模型是用來描述數(shù)據(jù)的一組概念和定義。一般來說,數(shù)據(jù)的描述包括兩個(gè)方面:(1)數(shù)據(jù)的靜態(tài)特性它包括數(shù)據(jù)的基本結(jié)構(gòu)、數(shù)據(jù)間的聯(lián)系和數(shù)據(jù)中的約束。(2)數(shù)據(jù)的動(dòng)態(tài)特性它指定義在數(shù)據(jù)上的操作。如文件系統(tǒng)。數(shù)據(jù)模型要面向現(xiàn)實(shí)世界,面向用戶。,數(shù)據(jù)模型要面向?qū)崿F(xiàn),面向計(jì)算
5、機(jī)。 1) conceptual data model如ER模型、面向?qū)ο髷?shù)據(jù)模型等。 2) logical data model如關(guān)系數(shù)據(jù)模型、層次模型、網(wǎng)狀模型等。 3) physical data model概念數(shù)據(jù)模型只用于數(shù)據(jù)庫的設(shè)
6、計(jì),邏輯數(shù)據(jù)模型和物理數(shù)據(jù)模型用于DBMS的實(shí)現(xiàn)。,6. Data Schematype: 型是該數(shù)據(jù)所屬數(shù)據(jù)類型的說明。value: 值是型的一個(gè)實(shí)例(instance或occurrence)。對(duì)某一類數(shù)據(jù)的結(jié)構(gòu)、聯(lián)系和約束的描述是型的描述,型的描述稱為數(shù)據(jù)模式(Data Schema)。在同一數(shù)據(jù)模式下,可以有很多的值,即實(shí)例。例如,學(xué)生記錄可以定義為圖
7、1-3(a)的形式,這是數(shù)據(jù)模式。而圖1-3(b)是其一個(gè)實(shí)例。,,數(shù)據(jù)模型是描述數(shù)據(jù)的手段.而數(shù)據(jù)模式是用給定數(shù)據(jù)模型對(duì)具體數(shù)據(jù)的描述。美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)(ANSI)的ANSI/X3/SPARC報(bào)告把數(shù)據(jù)模式分為三級(jí)(見圖1-4)。,,1) conceptual schema/logical schema 2)
8、external schema 3) internal schema 7. Database Instance數(shù)據(jù)模式是相對(duì)穩(wěn)定的,而實(shí)例是相對(duì)變動(dòng)的。數(shù)據(jù)模式反映一個(gè)單位的各種事物的結(jié)構(gòu)、屬性、聯(lián)系和約束,實(shí)質(zhì)上是用數(shù)據(jù)模型對(duì)一個(gè)單位的模擬。而實(shí)例反映數(shù)據(jù)庫的某一時(shí)刻的狀態(tài),也就是這一單位在此時(shí)
9、的狀態(tài)。,1.1.2 數(shù)據(jù)庫技術(shù)的產(chǎn)生與發(fā)展 1. 人工管理階段 人工管理數(shù)據(jù)具有如下特點(diǎn): 1) 數(shù)據(jù)不保存。 2) 數(shù)據(jù)需要由應(yīng)用程序自己管理,沒有相應(yīng)的軟件系統(tǒng)負(fù)責(zé)數(shù)據(jù)的管理工作。
10、3) 數(shù)據(jù)不共享。 4) 數(shù)據(jù)不具有獨(dú)立性。人工管理階段應(yīng)用程序與數(shù)據(jù)之間的對(duì)應(yīng)關(guān)系可用圖l-3表示。,2. 文件系統(tǒng)階段 用文件系統(tǒng)管理數(shù)據(jù)具有如下特點(diǎn): 1)
11、 數(shù)據(jù)可以長(zhǎng)期保存。 2) 由專門的軟件即文件系統(tǒng)進(jìn)行數(shù)據(jù)管理。 3) 數(shù)據(jù)共享性差。 4) 數(shù)據(jù)獨(dú)立性低。,文件系統(tǒng)階段應(yīng)用程序與數(shù)據(jù)之間的關(guān)系如圖1-4所示。,3. 數(shù)據(jù)庫系統(tǒng)階段用
12、數(shù)據(jù)庫系統(tǒng)來管理數(shù)據(jù)具有如下特點(diǎn):,1) 數(shù)據(jù)結(jié)構(gòu)化學(xué)生人事記錄,圖1-5,,,2) 數(shù)據(jù)的共享性好,冗余度低 3) 數(shù)據(jù)獨(dú)立性高 4) 數(shù)據(jù)由DBMS統(tǒng)一管理和控制 l
13、160; 數(shù)據(jù)的安全性(security) l 數(shù)據(jù)的完整性(integrity) l 并發(fā)(concurrency)控制 l 數(shù)據(jù)庫恢復(fù)(recovery),量大 持久 共享,1.1.3
14、 數(shù)據(jù)庫技術(shù)的研究領(lǐng)域 1. 數(shù)據(jù)庫管理系統(tǒng)軟件的研制 2. 數(shù)據(jù)庫設(shè)計(jì) 3. 數(shù)據(jù)庫理論1.2 數(shù)據(jù)庫工程與應(yīng)用 1.2.1
15、; 數(shù)據(jù)庫設(shè)計(jì)的目標(biāo)與特點(diǎn),圖 1-10,1.2.2 數(shù)據(jù)庫設(shè)計(jì)方法新奧爾良方法:需求分析(分析用戶要求)、概念設(shè)計(jì)(信息分析和定義)、邏輯設(shè)計(jì)(設(shè)計(jì)實(shí)現(xiàn))和物理設(shè)計(jì)(物理數(shù)據(jù)庫設(shè)計(jì))。S.B.Yao:需求分析、模式構(gòu)成、模式匯總、模式重構(gòu)、模式分析和物理數(shù)據(jù)庫設(shè)計(jì)。I.R.Palmer則主張把數(shù)據(jù)庫設(shè)計(jì)當(dāng)成一步接一步的過程,并采用一些輔助手段實(shí)現(xiàn)每一過程。此外,基于E—R模型的數(shù)據(jù)庫設(shè)計(jì)方
16、法,基于3NF(第三范式)的設(shè)計(jì)方法,基于抽象語法規(guī)范的設(shè)計(jì)方法等。,規(guī)范設(shè)計(jì)法在具體使用中又可以分為兩類:手工設(shè)計(jì)和計(jì)算機(jī)輔助數(shù)據(jù)庫設(shè)計(jì)。ORACLE Designer 20001.2.3 數(shù)據(jù)庫設(shè)計(jì)步驟,1. 需求分析2. 概念結(jié)構(gòu)設(shè)計(jì)3.
17、0; 邏輯結(jié)構(gòu)設(shè)計(jì),圖1-11,4. 數(shù)據(jù)庫物理設(shè)計(jì)5. 數(shù)據(jù)庫實(shí)施6. 數(shù)據(jù)庫運(yùn)行和維護(hù),在數(shù)據(jù)庫設(shè)計(jì)過程中必須注意以下問題。1. &
18、#160; 數(shù)據(jù)庫設(shè)計(jì)過程中要注意充分調(diào)動(dòng)用戶的積極性。2. 應(yīng)用環(huán)境的改變、新技術(shù)的出現(xiàn)等都會(huì)導(dǎo)致應(yīng)用需求的變化,因此設(shè)計(jì)人員在設(shè)計(jì)數(shù)據(jù)庫時(shí)必須充分考慮到系統(tǒng)的可擴(kuò)充性,使設(shè)計(jì)易于變動(dòng)。3. 系統(tǒng)的可擴(kuò)充性最終都是有一定限度的。1.2.4 D
19、atabase Application,各種用戶的數(shù)據(jù)視圖,DBA主要職責(zé)包括:1. 設(shè)計(jì)與定義數(shù)據(jù)庫系統(tǒng)2. 幫助最終用戶使用數(shù)據(jù)庫系統(tǒng)3. 監(jiān)督與控制數(shù)據(jù)庫系統(tǒng)的使用和運(yùn)行4.
20、 改進(jìn)和重組數(shù)據(jù)庫系統(tǒng),調(diào)優(yōu)數(shù)據(jù)庫系統(tǒng)的性能5. 轉(zhuǎn)儲(chǔ)與恢復(fù)數(shù)據(jù)庫6. 重構(gòu)數(shù)據(jù)庫,第二章 Data Model數(shù)據(jù)模型應(yīng)滿足三方面要求:一是能比較真實(shí)地模擬現(xiàn)實(shí)世界;二是容易為人所理解;三是便
21、于在計(jì)算機(jī)上實(shí)現(xiàn)。兩類:概念模型也稱信息模型,數(shù)據(jù)模型包括網(wǎng)狀模型、層次模型、關(guān)系模型。2.1 數(shù)據(jù)模型的要素 2.1.1 數(shù)據(jù)結(jié)構(gòu) 2.1.2 數(shù)據(jù)操作 2.1.3 數(shù)據(jù)的約束條件,2.2 概念模型——E-R Data Model,2.2.1
22、 ConceptsE-R數(shù)據(jù)模型(Entity-Relationship Data Model)EER數(shù)據(jù)模型(Extended Entity-Relationship Data Model)1.實(shí)體(entity)、實(shí)體集(entity set)entity set與entity是型(type)與值(value)的關(guān)系(類似于前述data schema與database instance)2.屬性(attribute)值集
23、(value set) 實(shí)體鍵(entity key)實(shí)體主鍵(entity primary key),3. 聯(lián)系(relationship)基數(shù)比約束(cardinality ratio constraint)參與約束(participation constraint):部分參與、全參與 結(jié)構(gòu)約束(structural constraint) 兩個(gè)實(shí)體之間的聯(lián)系可以分為三類:l &
24、#160; 一對(duì)一聯(lián)系(1:1)l 一對(duì)多聯(lián)系(1:m)l 多對(duì)多聯(lián)系(m:n)所有(ownership)關(guān)系——弱實(shí)體(weak entity),2.2.2 E-R diagram用E-R數(shù)據(jù)模型對(duì)某一單位進(jìn)行模擬,可以得到E
25、R數(shù)據(jù)模式,ER數(shù)據(jù)模式可以ER圖來直觀地表示。entity: weak entity:relationship:attribute:示例:,,,,,說明:,1.學(xué)位類型:碩士/博士2.導(dǎo)師類型:主要指導(dǎo)老師、協(xié)助指導(dǎo)3.研究生可能換導(dǎo)師,換專業(yè)、方向4.選課性質(zhì):學(xué)位課/非學(xué)位課5.任課類型:主講/輔講6.可擔(dān)任描述有哪些老師可以上哪些課7.任課是指目前該課程的任課老師8.開課學(xué)期:春/秋季9.上課
26、地點(diǎn):目前該課程的上課教室,問題:1.課性質(zhì)屬性為什么不屬于課程實(shí)體,而屬于選課聯(lián)系?2.專業(yè)、方向可不可以屬于研究生?2.2.3 EER data model1.特殊化(specialization)和普遍化(generalization)全特殊化(total specialization)/部分特殊化(partial specialization)不相交特殊化(disjoint specializ
27、ation)/重疊特殊化(overlapping specialization),2. 聚集(aggregation)3. 范疇(category),2.3 Hierarchy Data Model 2.3.1 層次數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu) 1.層次模型的基本結(jié)構(gòu),圖 TS數(shù)據(jù)模式,圖 TS數(shù)據(jù)模式的一個(gè)值,2.多對(duì)多聯(lián)系在層次模型中的表
28、示2.3.2 層次數(shù)據(jù)模型的操縱與完整性約束2.3.3 層次數(shù)據(jù)模型的存儲(chǔ)結(jié)構(gòu)2.3.4 層次數(shù)據(jù)模型的優(yōu)缺點(diǎn)層次數(shù)據(jù)模型的優(yōu)點(diǎn)主要有:l 層次數(shù)據(jù)模型本身比較簡(jiǎn)單,只需很少幾條命令就能操縱數(shù)據(jù)庫,比較容易使用。l 對(duì)于實(shí)體間聯(lián)系是固定的,且預(yù)先定義好的應(yīng)用系統(tǒng),采用層次模型來實(shí)現(xiàn),其性能優(yōu)于關(guān)系模型,不次于網(wǎng)狀模型。l
29、層次數(shù)據(jù)模型提供了良好的完整性支持。,層次數(shù)據(jù)模型的缺點(diǎn)主要有:l 現(xiàn)實(shí)世界中很多聯(lián)系是非層次性的,如多對(duì)多聯(lián)系、一個(gè)結(jié)點(diǎn)具有多個(gè)雙親等,層次模型表示這類聯(lián)系的方法很笨拙,只能通過引入冗余數(shù)據(jù)(易產(chǎn)生不一致性)或創(chuàng)建非自然的數(shù)據(jù)組織(引入虛擬結(jié)點(diǎn))來解決。l 對(duì)插入和刪除操作的限制比較多。l 查詢子女結(jié)點(diǎn)必須通過雙親結(jié)點(diǎn)。l 由于結(jié)構(gòu)嚴(yán)密,層次命令趨于程
30、序化。2.4 網(wǎng)狀數(shù)據(jù)模型 2.4.1 網(wǎng)狀數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu),,2.4.2 網(wǎng)狀數(shù)據(jù)模型的操縱與完整性約束2.4.3 網(wǎng)狀數(shù)據(jù)模型的存儲(chǔ)結(jié)構(gòu)2.4.4 網(wǎng)狀數(shù)據(jù)模型的優(yōu)缺點(diǎn),網(wǎng)狀數(shù)據(jù)模型的優(yōu)點(diǎn)主要有:l 能夠更為直接地描述現(xiàn)實(shí)世界,如一個(gè)結(jié)點(diǎn)可以有多個(gè)雙親、允許結(jié)點(diǎn)之間為多
31、對(duì)多的聯(lián)系等。l 具有良好的性能,存取效率較高。網(wǎng)狀數(shù)據(jù)模型的缺點(diǎn)主要有:l 其DDL語言極其復(fù)雜。l 數(shù)據(jù)獨(dú)立性較差。由于實(shí)體問的聯(lián)系本質(zhì)上是通過存取路徑指示的,因此應(yīng)用程序在訪問數(shù)據(jù)時(shí)要指定存取路徑。,2.5 Relation Data Model 2.5.1 Concepts 1.
32、Attribute and DomainDomain: 第一范式1NF(first nomal form) atomic data非第一范式(Non-First Nomal Form)NF2空值:NULL 2. relation and tuple設(shè)有一命名為R的關(guān)系,它有屬性A1、A2、…、An,其對(duì)應(yīng)的城分別為Dl、D2、…、Dn則關(guān)系
33、R可表示為:,R=(D1/Al,D2/A2,…,Dn/An)或 R=(A1,A2,…,An)或 R=(A1A2…An)R.A1表示關(guān)系R的屬性A1。degree(arity):nR的值:r r(R)r={t1,t2,…,tm}t=, vi∈Di,1≤i≤n笛卡爾乘積×,A B A×B,關(guān)系模式:SUDENT(姓名,學(xué)號(hào)
34、,性別,出生年份.籍貫,系別,入學(xué)年份)投影:R[X] t[X] STUDENT[姓名,性別]3. key定義:如果關(guān)系的某一屬性或?qū)傩越M的值唯一地決定其他所有屬性的值,也就是唯一地決定一個(gè)元組,而其任何真子集無此性質(zhì),則這個(gè)屬性或?qū)傩越M稱為該關(guān)系的候選鍵(candidate key),或簡(jiǎn)稱為鍵。superkey primary key
35、 alternate key all key (SUPPLY(供應(yīng)商,零件名,工程名)),prime attribute non-prime attributeforeign keyCOURSE(課程名,課程號(hào),學(xué)分,開課時(shí)間,先修課程號(hào))GRADE(學(xué)號(hào),課程號(hào),成績(jī))2.5.2 ConstraintR=(D1/Al,D2/A2,…,Dn/An)1.
36、0; Domain integrity constraint2. Entity integrity constraint3. Referential integrity constraint4.
37、 General integrity constraint,2.5.3 Operationrelational algebra operations1. Select operationσ(),2. Project operationΠ()Π性別,籍
38、貫、出生年份(STUDENT)若包含則:Π(Π(R))=Π(R),Π姓名(σ性別=‘女’(STUDENT))3. Set operationA∩B≡A-(A-B)union compatibilityΠ課程號(hào)(COURSE)-Π先修課程號(hào)(COURSE)σ系別=‘計(jì)算機(jī)系’(STUDENT)∪σ系別=‘電子系’(STUDENT)R×S={|
39、t∈R AND g∈S}4 Join operationR S=σ(R×S)連接條件:ANDAND……AND θ連接:AiθBj,,等連接(equijoin) 自然連接(natural join)例:GRADE GRADE.課程號(hào)=COURSE.課程號(hào)(Π課程名,課程號(hào),學(xué)分(COURSE))關(guān)系代數(shù)操作集{σ,Π,∪
40、,-,×}是完備的操作集。{σ,Π,∪,-, }relationally complete5. Outer join operation6. Outer union operation,,,2.5.4 Relational Calculus1.
41、160; Tuple Relational Calculus2. Domain Relational Calculus,第三章 Database Language SQL結(jié)構(gòu)化查詢語言(structured query language,簡(jiǎn)稱SQL) 3.1
42、; IntroductionSQL語言是1974年由Boyce和Chamberlin提出的。1975年至1979年IBM System R實(shí)現(xiàn)了這種語言。1986年10月 美國(guó)國(guó)家標(biāo)準(zhǔn)局(簡(jiǎn)稱ANSI) SQL-861987年國(guó)際標(biāo)準(zhǔn)化組織(簡(jiǎn)稱ISO)也通過了這一標(biāo)準(zhǔn)。ANSI 1989年第二次公布SQL標(biāo)準(zhǔn)(SQL-89)1992年 SQL-92標(biāo)準(zhǔn),目前ANSI正在醞釀新的SQL標(biāo)準(zhǔn):SQL3?,F(xiàn)在SQL已被重新解
43、釋成為:Standard Query LanguageSQL按其功能可分為四大部分:1. 數(shù)據(jù)定義語言(Data Definition Language,簡(jiǎn)稱DDL)2. 查詢語言(Query Language,簡(jiǎn)稱QL) 3. 數(shù)據(jù)操縱語言(Data Manipulation Language,簡(jiǎn)稱DML)4. 數(shù)據(jù)控制語言(Data Control Langu
44、age,簡(jiǎn)稱DCL),3.1.1 SQL的特點(diǎn)1. 綜合統(tǒng)一2. 高度非過程化3. 面向集合的操作方式4. 以同一種語法結(jié)構(gòu)提供兩種使用方式5. 語言簡(jiǎn)潔,易學(xué)易用表3-1 SQL語言的動(dòng)詞,3.1.2 SQL語言的基本概念,3.2 數(shù)據(jù)定義表3
45、-2 SQL的數(shù)據(jù)定義語句,3.2.1 定義、刪除與修改基表 1. 定義基表,CREATE TABLE <表名> (<列名><數(shù)據(jù)類型>[列級(jí)完整件約束條件][,<列名><數(shù)據(jù)類型>[列級(jí)完整性約束條件]……] [<表級(jí)完整性約束條件>]);列級(jí)完整性約束條件格式:[NOT NULL [UNIQUE]] [DEFAULT 字值|USER|NULL]表級(jí)完整性約束條件有三個(gè)任選項(xiàng)。用于定義
46、主鍵的PRIMARY KEY子句,用于定義外鍵的FOREIGN KEY子句和用于定義列值限制條件的CHECK子句。格式:,[,PRIMARY KEY (…)][,F(xiàn)OREIGN KEY [外鍵名] (…)REFERENCES [ON DELETE RESTRICT |CASCADE|SET NULL]][,CHECK (條件)……]IBM DB2 SQL主要支持以下數(shù)據(jù)類型:SMALLINT 半字長(zhǎng)二進(jìn)制整數(shù)。INTEG
47、ER或INT 全字長(zhǎng)二進(jìn)制整數(shù)。DECIMAL(p[,q])或DEC(p[,q]) 壓縮十進(jìn)制數(shù),共p位,其中小數(shù)點(diǎn)后有q位。0≤q≤p≤15,q=0時(shí)可以省略。FLOAT 雙字長(zhǎng)浮點(diǎn)數(shù)。CHARTER(n)或CHAR(n) 長(zhǎng)度為n的定長(zhǎng)字符串。VARCHAR(n) 最大長(zhǎng)度為n的變長(zhǎng)字符串。,GRAPHIC(n) 長(zhǎng)度為n的定長(zhǎng)圖形字符串。VARGRAPHIC(n) 最大長(zhǎng)度為n的變長(zhǎng)圖形字符串。DA
48、TE 日期型,格式為YYYY—MM—DD。TIME 時(shí)間型,格式為HH.MM.SS。TIMESTAMP 日期加時(shí)間。例1 建立Student(學(xué)生)、Course(課程)、SC(選課)表。1.“學(xué)生”表student由學(xué)號(hào)(Sno)、姓名(Sname)、性別(Ssex)、年齡〔Sage〕、所在系(Sdept)5個(gè)屬性組成,可記為Student(Sno,Sname,Ssex,Sage,Sdept)其中sno為
49、主鍵。,2. “課程”表course由課程號(hào)(Cno)、課程名(Cname)、先修課號(hào)(Cpno)、學(xué)分(Ccredit)4個(gè)屬性組成,可記為:Course(Cno,Cname,Cpno,Ccredit)其中Cno為主鍵。3.“學(xué)生選課”表SC由學(xué)號(hào)(Sno)、課程號(hào)(Cno)、成績(jī)(Grade)3個(gè)屬性組成,其中(Sno,Cno)為主鍵。CREATE TABLE Student (Sno CHAR(5) NOT
50、 NULL UNIQUE, Sname VARCHAR(20) NOT NULL, Ssex CHAR(1), Sage INT, Sdept CHAR(15),PRIMARY KEY(Sno));,CREATE TABLE Course (Cno CHAR(1) NOT NULL,Cname VARCHAR(20),Cpno CHAR(1)Ccredit D
51、EC(2,1),PRIMARY KEY(Cno),FOREIGN KEY (Cpno) REFERENCES Course ON DELETE RESTRICT);,CREATE TABLE SC (Sno CHAR(5) NOT NULL, Cno CHAR(1) NOT NULL, Grade DEC(4,1) DEFAULT NULL,PRIMARY KEY(Sno,Cno),FOREI
52、GN KEY (Sno) REFERENCES Student ON DELETE CASCADE,FOREIGN KEY (Cno) REFERENCES Course ON DELETE RESTRICT);,2. 修改基表 ALTER TABLE<表名> [ADD<新列名><數(shù)據(jù)類型>[完整性約束]] [DROP<完整性約束名>] [MODIFY<列名><數(shù)據(jù)類型>];例
53、2 向student表增加“入學(xué)時(shí)間”列,其數(shù)據(jù)類型為日期型。 ALTER TABLE Student ADD Scome DATE;例3 將年齡的數(shù)據(jù)類型改為半字長(zhǎng)整數(shù)。ALTER TABLE Student MODIFY Sage SMALLINT;例4 刪除(撤消)Student表主鍵定義。ALTER TABLE Student DROP PRIMARY KEY;,3. 刪除基表D
54、ROP TABLE <表名>;例5刪除Student表。DROP TABLE Student; 3.2.2 建立與刪除索引 1. 建立索引CREATE [UNIQUE] [CLUSTER] INDEX ON ( [次序] [, [次序]]…);排列次序,包括ASC(升序)和DESC(降序)兩種,缺省值為ASC。CREATE CLUSTER INDEX Stusname ON Stu
55、dent(Sname);,例6 為學(xué)生—課程數(shù)據(jù)庫中的Student,Course,SC 3個(gè)表建立索引。其中Student表按學(xué)號(hào)升序建立唯一索引,course表按課程號(hào)升序建立唯一索引,SC表按學(xué)號(hào)升序和課程號(hào)降序建唯一索引。CREATE UNIQUE INDEX Stusno ON Student(Sno);CREATE UNIQUE INDEX Coucno ON Course(Cno);CREATE UNIQUE IN
56、DEX SCno ON SC(Sno ASC,Cno DESC); 2. 刪除索引DROP INDEX<索引名>;例7 刪除Student表的Stusname索引。DROP INDEX Stusname;,3.3 查詢SELECT [ALL| DISTINCT] <目標(biāo)列表達(dá)式>[,<目標(biāo)列表達(dá)式>]…FROM <表名或視圖名>[,<表名或視圖名>]…[WHERE<條件表
57、達(dá)式>][GROUP BY<列名1>[HAVING<條件表達(dá)式>]][ORDER BY<列名2>[ASC | DESC]];,3.3.1 單表查詢1. 選擇表中的若干列1) 查詢指定列例1 查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名。SELECT Sno,SnameFROM Student;例2 查詢?nèi)w學(xué)生的姓名、學(xué)號(hào)、所在系
58、。SELECT Sname,Sno,SdeptFROM Student;2) 查詢?nèi)苛欣? 查詢?nèi)w學(xué)生的詳細(xì)記錄SELECT *FROM Student;,3) 查詢經(jīng)過計(jì)算的值例4 查詢?nèi)w學(xué)生的姓名及其出生年份。SELECT Sname,2004-SageFROM Student;例5 查詢?nèi)w學(xué)生的姓名、出
59、生年份和所在系,要求用小寫字母表示所在系名SELECT Sname,‘Year of Birth:’,2004-Sage,ISLOWER(Sdept)FROM Student; SELECT Sname NAME,‘Year of Birth:’ BIRTH,2004-Sagc BIRTHDAY, ISLOWER(Sdept) DEPARTMENTFROM Student;,結(jié)果為:NAME BIRTH
60、 BIRTHDAY DEPARTMENT 李勇 Year of Birth: 1976 cs 劉晨 Year of Birth: 1977 if 王名 Year of Birth: 1978 ma 張立 Year of Birth: 1978 if 2.
61、 選擇表中的若干元組 1) 消除取值重復(fù)的行例6 查詢所有選修過課的學(xué)生的學(xué)號(hào)。SELECT SnoFROM SC;,假設(shè)SC表中有下列數(shù)據(jù):Sno Cno Grade95001 1 9295001 2 8595001 3 8895002 2 9095002 3 80執(zhí)行上面的SELECT語句后,結(jié)果為:Sno950019500195001
62、9500295002,SELECT DISTINCT SnoFROM SC;執(zhí)行結(jié)果為:Sno9500195002 SELECT SnoFROM SC;與SELECT ALL SnoFROM SC;完全等價(jià)。,2) 查詢滿足條件的元組表3-5 常用的查詢條件,①比較大小= 等于> 大于< 小于,>= 大于等于<= 小于等于!=或<> 不等
63、于有些產(chǎn)品中還包括:?。?不大于!< 不小于邏輯運(yùn)算符NOT可與比較運(yùn)算符同用,對(duì)條件求非。例7 查計(jì)算機(jī)系全體學(xué)生的名單。SELECT SnameFROM StudentWHERE Sdept=‘CS’;,例8 查所有年齡在20歲以下的學(xué)生姓名及其年齡。SELECT Sname,SageFROM studentWHERE Sage<20;或SELECT Sname,SageFROM stud
64、entWHERE NOT Sage>=20;例9 查考試成績(jī)有不及格的學(xué)生的學(xué)號(hào)。SELECT DISTINCT SnoFROM SCWHERE Grade<60;,②確定范圍謂詞BETWEEN...AND...和NOT BETWEEN...AND...可以用來查找屬性值在(或不在)指定范圍內(nèi)的元組,其中BETWEEN后是范圍的下限(即低值),AND后是范圍的上限(即高值)。例10 查詢年齡在20至23歲之間的學(xué)
65、生的姓名、系別和年齡。SELECT Sname,Sdept,SageFROM StudentWHERE Sage BETWEEN 20 AND 23;與BETWEEN...AND...相對(duì)的謂詞是NOT BETWEEN...AND...。,例11 查詢年齡不在20至23歲之間的學(xué)生姓名、系別和年齡。SELECT Sname,Sdept,SageFROM StudentWHERE Sage NOT BETWEEN 20 A
66、ND 23;③確定集合謂詞IN可以用來查找屬性值屬于指定集合的元組。例12 查信息系(IS)、數(shù)學(xué)系(MA)和計(jì)算機(jī)科學(xué)系(CS)的學(xué)生的姓名和性別。SELECT Sname.SsexFROM StudentWHERE Sdept IN(‘IS’,‘MA’,‘CS’);與IN相對(duì)的謂詞是NOT IN,用于查找屬性值不屬于指定集合的元組。,例13 查既不是信息系、數(shù)學(xué)系,也不是計(jì)算機(jī)科學(xué)系的學(xué)生的姓名和性別。SELEC
67、T Sname.SsexFROM StudentWHERE Sdept NOT IN(‘IS’,‘MA’,‘CS’);④字符匹配謂詞LIKE可以用來進(jìn)行字符串的匹配。其一般語法格式如下:[NOT] LIKE ‘<匹配串>’其含義是查找指定的屬性列值與<匹配串>相匹配的元組,<匹配串>可以是一個(gè)完整的字符串,也可以含有通配符%和_。其中:%(百分號(hào)) 代表任意長(zhǎng)度(長(zhǎng)度可以為0)的字符串。,例如a%b表示以a開頭,以b結(jié)尾
68、的任意長(zhǎng)度的字符串,acb,adefb,ab等都滿足該匹配串。_(下劃線) 代表任意單個(gè)寧符。例如a_b表示以a開頭,以b結(jié)尾,長(zhǎng)度為3的字符串,acb,adb等都滿足該匹配串。例14 查詢學(xué)號(hào)為95001的學(xué)生的詳細(xì)情況SELECT *FROM StudentWHERE Sno LIKE ‘9500l’;該語句實(shí)際上與下面的語句完全等價(jià):SELECT *FROM StudentWHERE Sno=‘9500l
69、’;,例15 查所有姓劉的學(xué)生的姓名、學(xué)號(hào)和性別。SELECT Sname,Sno,SsexFROM StudentWHERE Sname LIKE ‘劉%’;例16 查姓“歐陽”且全名為3個(gè)漢字的學(xué)生的姓名。SELECT SnameFROM StudentWHERE Sname LIKE ‘歐陽__’;例17 查名字中第二字為“陽”字的學(xué)生的姓名和學(xué)號(hào)。SELECT Sname,SnoFROM Student
70、WHERE Sname LIKE ’__陽%’;,例18查所有不姓劉的學(xué)生姓名。SELECT Snamc,Sno,SsexFROM StudentWHERE Sname NOT LIKE ‘劉%’;⑤涉及空值的查詢謂詞IS NULL和IS NOT NULL可用來查詢空值和非空值。例19 某些學(xué)生選修某門課程后沒有參加考試,所以有選課記錄,但沒有考試成績(jī),下面來查一下缺少成績(jī)的學(xué)生的學(xué)號(hào)和相應(yīng)的課程號(hào)。SELECT Sn
71、o,CnoFROM SCWHERE Grade IS NULL;,例20 查所有有成績(jī)的記錄的學(xué)生學(xué)號(hào)和課程號(hào)。SELECT Sno,CnoFROM SCWHERE Grade IS NOT NULL;⑥多重條件查詢例21 查CS系年齡在20歲以下的學(xué)生姓名SELECT SnameFROM StudentWHERE Sdept=‘CS’AND Sage<20;例12中的IN謂詞實(shí)際上是多個(gè)OR運(yùn)算符的縮
72、寫,因此,例l2中的查詢也可以用OR運(yùn)算符寫成如下等價(jià)形式:,SELECT Sname.SsexFROM StudentWHERE Sdept=‘IS’OR Sdept=‘MA’OR Sdept=‘CS’; 3. 對(duì)查詢結(jié)果排序例22 查詢選修了3號(hào)課程的學(xué)生的學(xué)號(hào)及其成績(jī),查詢結(jié)果按分?jǐn)?shù)的降序排列。SELECT Sno,GradeFROM SCWHERE Cno=‘3’ORDER BY Gra
73、de DESC;例23 查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系升序排列,對(duì)同一系中的學(xué)生按年齡降序排列。,SELECT * FROM StudentORDER BY Sdept, Sage DESC; 4. 使用集函數(shù)COUNT([DISTINCT | ALL ] *) 統(tǒng)計(jì)元組個(gè)數(shù)COUNT([DISTINCT | ALL]<列名>) 統(tǒng)計(jì)一列中值的個(gè)數(shù)SUM([DISTINCT | ALL] <列
74、名>) 計(jì)算一列值的總和(此列必須是數(shù)值型)AVG([DISTINCT | ALL] <列名>) 計(jì)算一列值的平均值(此列必須是數(shù)值型)MAX([DISTINCT | ALL] <列名>) 求一列值中的最大值MIN([DISTINCT | ALL] <列名>) 求一列值中的最小值,例24 查詢學(xué)生總?cè)藬?shù)。SELECT COUNT(*)FROM Student;例25 查詢選修了課程的學(xué)生人數(shù)。S
75、ELECT COUNT(DISTINCT Sno)FROM SC;例26 計(jì)算1號(hào)課程的學(xué)生平均成績(jī)。SELECT AVG(Grade)FROM SCWHERE Cno=‘l’;例27 查詢學(xué)習(xí)l號(hào)課程的學(xué)生最高分?jǐn)?shù)。SELECT MAX(Grade)FROM SCWHERE Cno=‘1’;,5. 對(duì)查詢結(jié)果分組例28 查詢各個(gè)課程號(hào)與相應(yīng)的選課人數(shù)。SELECT Cno,COUNT(Sno)
76、FROM SCGROUP BY Cno;例29 查詢信息系選修了3門以上課程的學(xué)生的學(xué)號(hào),為簡(jiǎn)單起見,假設(shè)SC表中有一列Dept,它記錄了學(xué)生所在系。SELECT SnoFROM SCWHERE Dept=‘IS’GROUP BY SnoHAVING COUNT(*)>3;,3.3.2 連接查詢1. 等值與非等值連接查詢 [<表名1>.]<列名1><比較運(yùn)算符>[<表名2>.]<列
77、名2>其中比較運(yùn)算符主要有:=、>、<、>=、<=、?。?。此外,連接謂詞還可以使用下面形式:[<表名1>.]<列名1>BETWEEN[<表名2.]當(dāng)連接運(yùn)算符為=時(shí),稱為等值連接。使用其它運(yùn)算符稱為非等值連接。,例30 查詢每個(gè)學(xué)生及其選修課程的情況。SELECT Student.*,SC.*FROM Student,SCWHERE Student.Sno=SC.Sno;例31 Student表和SC表的笛卡爾積。
78、SELECT Student.*,SC.*FROM Student,SC 例32 自然連接Student表和SC表。SELECT Student.Sno,Sname, Ssex, Sage, Sdept, Cno, GradeFROM Student,SCWHERE Student.Sno=SC.Sno;,或SELECT Student.*,Cno, GradeFROM Student,SCWHERE S
79、tudent.Sno=SC.Sno; 2. 自身連接例33 查詢每一門課的間接先修課(即先修課的先修課)。,SELECT FIRST.Cno,SECOND.CpnoFROM Course FIRST,Course SECONDWHERE FIRST.Cpno=SECOND.Cno; Cno Cpno 1 7 3 5 5 63
80、. 外連接例34SELECT Student.Sno,Sname, Ssex, Sage, Sdept, Cno, GradeFROM Student,SCWHERE Student.Sno=SC.Sno(*);,Student.Sno,Sname, Ssex, Sage, Sdept, Cno, Grade 9500l 李勇 男 20 CS
81、 1 92 9500l 李勇 男 20 CS 2 85 9500l 李勇 男 20 CS 3 88 95002 劉晨 女 19 IS 2 90 95002
82、 劉晨 女 19 IS 3 80 95003 王名 女 18 MA 95004 張立 男 18 IS 4. 復(fù)合條件連接 例35 查詢選修2號(hào)課程且成績(jī)?cè)?0分以上的所有學(xué)生。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫原理與設(shè)計(jì)題庫
- 數(shù)據(jù)庫原理與應(yīng)用課程設(shè)計(jì)---bbs論壇數(shù)據(jù)庫設(shè)計(jì)
- 《數(shù)據(jù)庫原理》
- 數(shù)據(jù)庫課程設(shè)計(jì)--數(shù)據(jù)庫系統(tǒng)原理
- 數(shù)據(jù)庫原理
- 數(shù)據(jù)庫原理與應(yīng)用a實(shí)驗(yàn)管理-數(shù)據(jù)庫安全管理
- 數(shù)據(jù)庫原理課程設(shè)計(jì)---教室管理系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)
- 數(shù)據(jù)庫原理與應(yīng)用a實(shí)驗(yàn)管理-數(shù)據(jù)庫安全管理
- 數(shù)據(jù)庫原理課程設(shè)計(jì)
- 數(shù)據(jù)庫原理課程設(shè)計(jì)---圖書管理系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)--數(shù)據(jù)庫原理及應(yīng)用課程設(shè)計(jì)
- 《數(shù)據(jù)庫原理》課程設(shè)計(jì)
- 數(shù)據(jù)庫原理與技術(shù)基礎(chǔ)
- 數(shù)據(jù)庫原理與應(yīng)用試題-
- 《數(shù)據(jù)庫原理》教案
- 數(shù)據(jù)庫系統(tǒng)原理課程設(shè)計(jì)--銀行儲(chǔ)蓄系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)
- 數(shù)據(jù)庫原理課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)庫原理課程設(shè)計(jì)報(bào)告
- 超市管理數(shù)據(jù)庫設(shè)計(jì)-《數(shù)據(jù)庫原理及應(yīng)用》課程大作業(yè)
- 數(shù)據(jù)庫原理與應(yīng)用教程答案
評(píng)論
0/150
提交評(píng)論