

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