数据库复习笔记(全覆盖,包括往年部分真题)(常用的数据网站汇总)
PS:大學(xué)開始寫博客,寫了三年了,雖然大二太忙了,專業(yè)知識(shí)學(xué)的潦草,也沒寫太多博客。大三開始寫專業(yè)課的復(fù)習(xí)筆記,沒想到這一篇博文瀏覽和點(diǎn)贊這么高,心里還是挺高興的。當(dāng)時(shí)寫的時(shí)候也沒注意,加上好久沒寫了,結(jié)果用了富文本,本來一直用的Markdown,寫到一半才發(fā)現(xiàn),所以這一篇的排本就很丑,如果大家看著不舒服可以留言,我可以修改一下格式,當(dāng)然,好好學(xué)習(xí),學(xué)習(xí)的知識(shí)才是最重要的!
## 1、數(shù)據(jù)庫(kù)系統(tǒng)概述
**1.1 數(shù)據(jù)庫(kù)的基本概念**
數(shù)據(jù)庫(kù):
長(zhǎng)期儲(chǔ)存在計(jì)算機(jī)內(nèi)、有組織的、可共享的大量數(shù)據(jù)的集合。
*基本特征:*
數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和儲(chǔ)存
可為各種用戶共享、冗余度較小、易擴(kuò)展
數(shù)據(jù)獨(dú)立性較高
數(shù)據(jù) :
描述事物的符號(hào)記錄
數(shù)據(jù)有結(jié)構(gòu)的:記錄是計(jì)算機(jī)存儲(chǔ)數(shù)據(jù)的一種格式或一種方法
數(shù)據(jù)庫(kù)管理系統(tǒng)及其功能:
位于用戶應(yīng)用與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件 ,是基礎(chǔ)軟件,是一個(gè)大型復(fù)雜的軟件系統(tǒng)
用途: 科學(xué)地組織和存儲(chǔ)數(shù)據(jù)、高效地獲取和維護(hù)數(shù)據(jù)
數(shù)據(jù)庫(kù)系統(tǒng)
是指在計(jì)算機(jī)系統(tǒng)中引入數(shù)據(jù)庫(kù)后的系統(tǒng)構(gòu)成。
在不引起混淆的情況下常常把數(shù)據(jù)庫(kù)系統(tǒng)簡(jiǎn)稱為數(shù)據(jù)庫(kù)。
元數(shù)據(jù)
用來描述數(shù)據(jù)的數(shù)據(jù)。
**1.2 數(shù)據(jù)管理技術(shù)的產(chǎn)生和發(fā)展,以及每個(gè)階段的特點(diǎn)**
## 2、數(shù)據(jù)模型
**2.1數(shù)據(jù)模型的基本概念**
是對(duì)現(xiàn)實(shí)世界數(shù)據(jù)特征的模擬和抽象,用來描述數(shù)據(jù)是如何組織、存儲(chǔ)和操作的。
**2.2數(shù)據(jù)模型的分類及每類常用的數(shù)據(jù)模型**
對(duì)應(yīng)不同的應(yīng)用層次分成三種類型:分別是概念模型,邏輯模型和物理模型;
概念模型:
信息世界的基本概念:
實(shí)體(Entity)
客觀存在并可相互區(qū)別的事物稱為實(shí)體。
可以是具體的人、事、物或抽象的概念。
屬性(Attribute)
實(shí)體所具有的某一特性稱為屬性。一個(gè)實(shí)體可以由若干個(gè)屬性來刻畫。
碼(Key)
唯一標(biāo)識(shí)實(shí)體的屬性集稱為碼。
實(shí)體型(Entity Type)
用實(shí)體名及其屬性名集合來抽象和刻畫同類實(shí)體稱為實(shí)體型
實(shí)體集(Entity Set)
同一類型實(shí)體的集合稱為實(shí)體集
聯(lián)系(Relationship)
1.實(shí)體內(nèi)部的聯(lián)系:組成實(shí)體的各屬性之間的聯(lián)系
2.實(shí)體之間的聯(lián)系: 通常是指不同實(shí)體集之間的聯(lián)系
實(shí)體之間的聯(lián)系有一對(duì)一(1:1)、一對(duì)多(1:n)和多對(duì)多(m:n)等多種類型
**2.3數(shù)據(jù)模型的組成要素**
數(shù)據(jù)模型是嚴(yán)格定義的一組概念的集合, 精確地描述了系統(tǒng)的靜態(tài)特性、動(dòng)態(tài)特性和完整性約束條件。
數(shù)據(jù)模型由三部分組成:
數(shù)據(jù)結(jié)構(gòu)–描述系統(tǒng)的靜態(tài)特性 數(shù)據(jù)結(jié)構(gòu)的類型來命名數(shù)據(jù)模型
數(shù)據(jù)操作–描述系統(tǒng)的動(dòng)態(tài)特性 對(duì)數(shù)據(jù)庫(kù)中各種對(duì)象的實(shí)例允許執(zhí)行的操作的集合
完整性約束
一組完整性規(guī)則的集合
完整性規(guī)則:
給定的數(shù)據(jù)模型中數(shù)據(jù)及其聯(lián)系所具有的制約和依存規(guī)則。
用以限定符合數(shù)據(jù)模型的數(shù)據(jù)庫(kù)狀態(tài)以及狀態(tài)的變化,以保證數(shù)據(jù)的正確、有效和相容。
數(shù)據(jù)模型對(duì)完整性約束條件的定義
反映和規(guī)定必須遵守的基本的通用的完整性約束條件。
提供定義完整性約束條件的機(jī)制,以反映具體應(yīng)用所涉及的數(shù)據(jù)必須遵守的特定的語義約束條件。
理解
完整性約束使用一些規(guī)則,規(guī)范數(shù)據(jù)的操作,來保證數(shù)據(jù)的正確、有效和相容。
ER圖
ER圖分為實(shí)體、屬性、關(guān)系三個(gè)核心部分。實(shí)體是長(zhǎng)方形是實(shí)體,屬性是橢圓形,關(guān)系為菱形。
## 3、數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu)
**3.1數(shù)據(jù)庫(kù)模式和實(shí)例的概念以及區(qū)別**
*模式(Schema)*
是對(duì)數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)和特征的描述
是型的描述,不涉及具體值
模式是相對(duì)穩(wěn)定的
*實(shí)例(Instance)*
數(shù)據(jù)庫(kù)某一時(shí)刻的狀態(tài)——模式的一個(gè)具體值
同一個(gè)模式可能有很多實(shí)例
實(shí)力隨數(shù)據(jù)庫(kù)中數(shù)據(jù)的更新而變動(dòng)
**3.2數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式結(jié)構(gòu)**
*模式(Schema)*
模式(也稱概念模式):
數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述
所有用戶的公共數(shù)據(jù)視圖
一般,某個(gè)應(yīng)用的數(shù)據(jù)庫(kù)有一個(gè)模式
模式是數(shù)據(jù)庫(kù)系統(tǒng)模式結(jié)構(gòu)的中心:
與數(shù)據(jù)的物理存儲(chǔ)細(xì)節(jié)和硬件環(huán)境無關(guān)
與具體的應(yīng)用程序、開發(fā)工具及高級(jí)程序設(shè)計(jì)語言無關(guān)
定義模式:
DDL定義數(shù)據(jù)的邏輯結(jié)構(gòu),以某種數(shù)據(jù)模型為基礎(chǔ)
數(shù)據(jù)記錄由哪些數(shù)據(jù)項(xiàng)構(gòu)成,數(shù)據(jù)項(xiàng)的名字、類型、取值范圍等
定義數(shù)據(jù)之間的聯(lián)系
定義與數(shù)據(jù)有關(guān)的安全性、完整性要求
*外模式 (External Schema)*
外模式(也稱子模式或用戶模式):
數(shù)據(jù)庫(kù)用戶使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述
數(shù)據(jù)庫(kù)用戶的數(shù)據(jù)視窗,是與某一應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示
外模式與模式的關(guān)系:
外模式通常是模式的自己、一個(gè)模式可以有多個(gè)外模式,反映了不同的用戶的應(yīng)用需求、看待數(shù)據(jù)的方式、對(duì)數(shù)據(jù)保密的要求
對(duì)模式中某一數(shù)據(jù),在不同的外模式種結(jié)構(gòu)、類型、長(zhǎng)度、保密級(jí)別等都可以不同
外模式與應(yīng)用的關(guān)系:
一個(gè)外模式可以為多個(gè)應(yīng)用系統(tǒng)所使用,一個(gè)應(yīng)用程序只能使用一個(gè)外模式
外模式的用途:
每個(gè)用戶只能看見和訪問所對(duì)應(yīng)的外模式中的數(shù)據(jù),簡(jiǎn)化用戶視圖
保證數(shù)據(jù)庫(kù)安全性的一個(gè)有力措施
*內(nèi)模式 (Internal Schema)*
內(nèi)模式(也稱為存儲(chǔ)模式):
是數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述
是數(shù)據(jù)再數(shù)據(jù)庫(kù)內(nèi)部的表示方式
記錄的存儲(chǔ)方式(例如,順序存儲(chǔ),堆存儲(chǔ),Cluste按hash方法存儲(chǔ)等)
索引的組織方式(B+樹,Bitmap,Hash)
數(shù)據(jù)是否壓縮存儲(chǔ)
數(shù)據(jù)是否加密
數(shù)據(jù)存儲(chǔ)記錄結(jié)構(gòu)的規(guī)定——如定長(zhǎng)/變長(zhǎng),記錄是否可以跨頁存放等
一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)內(nèi)模式
三級(jí)模式是對(duì)于數(shù)據(jù)的三個(gè)抽象級(jí)別
數(shù)據(jù)庫(kù)管理系統(tǒng)內(nèi)部提供二級(jí)映像
外模式/模式映像:
對(duì)每一個(gè)外模式,有一個(gè)外模式/模式映像 定義外模式與模式之間的對(duì)應(yīng)關(guān)系 映像定義通常包含在各外模式的描述中
保證數(shù)據(jù)的邏輯獨(dú)立性
當(dāng)模式改變時(shí),數(shù)據(jù)庫(kù)管理員堆外模式/模式映像做相應(yīng)改變,使外模式保持不變
應(yīng)用程序是依據(jù)數(shù)據(jù)的外模式編寫的,應(yīng)用程序不必修改,保證了數(shù)據(jù)與程序的邏輯獨(dú)立性,簡(jiǎn)稱數(shù)據(jù)的邏輯獨(dú)立性
模式/內(nèi)模式映像:
定義了數(shù)據(jù)全局邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)之間的對(duì)應(yīng)關(guān)系。如,說明某個(gè)邏輯記錄對(duì)應(yīng)何種存儲(chǔ)結(jié)構(gòu)
數(shù)據(jù)庫(kù)中模式/內(nèi)模式映像是唯一的
該映像定義通常包含在模式描述中
保證數(shù)據(jù)的物理獨(dú)立性
當(dāng)數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)改變了(例如選用了另一種存儲(chǔ)結(jié)構(gòu)) ,數(shù)據(jù)庫(kù)管理員修改模式/內(nèi)模式映像,使模式保持不變
模式不變,則應(yīng)用程序不變。保證了數(shù)據(jù)與程序的物理獨(dú)立性,簡(jiǎn)稱數(shù)據(jù)的物理獨(dú)立性
**3.3數(shù)據(jù)庫(kù)系統(tǒng)的兩級(jí)映像功能與數(shù)據(jù)獨(dú)立性**
保證了應(yīng)用程序的穩(wěn)定性
除非應(yīng)用需求本身發(fā)生變化,否則應(yīng)用程序一般不需要修改
從程序?yàn)橹行摹l(fā)展為以數(shù)據(jù)為中心
具有了數(shù)據(jù)與程序之間的獨(dú)立性,使得數(shù)據(jù)的定義和描述可以從應(yīng)用程序中分離出去
數(shù)據(jù)的存取由數(shù)據(jù)庫(kù)管理系統(tǒng)管理
簡(jiǎn)化了應(yīng)用程序的編制
大大減少了應(yīng)用程序的維護(hù)和修改
**3.4SQL SERVER數(shù)據(jù)庫(kù)種類及文件(參考教材8.6節(jié))**
個(gè)別題目:
## 4、關(guān)系數(shù)據(jù)庫(kù)基礎(chǔ)
**4.1關(guān)系模型的基本概念**
域
屬性取值范圍
關(guān)系模式
1.最早由E.F.Codd在1970年提出。
2.是從表(Table)及表的處理方式中抽象出來的,是在對(duì)傳統(tǒng)表及其操作進(jìn)行數(shù)學(xué)化嚴(yán)格定義的基礎(chǔ)上,引入集合理論與邏輯學(xué)理論提出的。
3.是數(shù)據(jù)庫(kù)的三大經(jīng)典模型之一,現(xiàn)在大多數(shù)數(shù)據(jù)庫(kù)系統(tǒng)仍然使用關(guān)系數(shù)據(jù)模型。
4.標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)語言(SQL語言)是建立在關(guān)系模型基礎(chǔ)之上的,數(shù)據(jù)庫(kù)領(lǐng)域的眾多理論也都是建立在關(guān)系模型基礎(chǔ)之上的。
關(guān)系的前兩種定義:
笛卡爾乘積的子集就是一個(gè)關(guān)系
關(guān)系是滿足特定規(guī)范的二維表
關(guān)系與關(guān)系模式的區(qū)別:
1.同一關(guān)系模式下,可有很多的關(guān)系
2.關(guān)系模式是關(guān)系的結(jié)構(gòu),關(guān)系是關(guān)系模式在某一時(shí)刻的數(shù)據(jù)
3.關(guān)系模式是穩(wěn)定的:而關(guān)系是某一時(shí)刻的值,是隨時(shí)間可能變化的
碼:也稱作鍵,指的是取值具有唯一性的屬性,可以唯一的確定表中的一個(gè)元組,他可以由一個(gè)屬性組成,也可以由多個(gè)屬性共同構(gòu)成;
候選碼:某一屬性組的值能唯一地標(biāo)識(shí)一個(gè)元組,而其子集不能的屬性組
主碼:若一個(gè)關(guān)系有多個(gè)候選碼,則選定一個(gè)作為主碼
外碼:必須與其所參照的主碼具有相同的域,且外碼的取值只能引用參照表中主碼的值或者使用空值。
4.2關(guān)系的類型
基本關(guān)系
實(shí)際存在的表,是 實(shí)際存儲(chǔ)數(shù)據(jù)的邏輯表示
查詢表
查詢結(jié)果對(duì)應(yīng)的表
視圖表
由基本表或者其他視圖表導(dǎo)出的表
4.3關(guān)系的性質(zhì)
列是同質(zhì)的,即每一列中的分量是同一類型的數(shù)據(jù),來自同一個(gè)域
關(guān)系中的元組(行)無先后順序
關(guān)系中的屬性(列)無先后順序
在關(guān)系中的所有元組必須是獨(dú)一無二的
在元組中的每個(gè)值是一個(gè)原子值
4.4什么是復(fù)合屬性、多值屬性
4.5關(guān)系數(shù)據(jù)庫(kù)和關(guān)系數(shù)據(jù)庫(kù)模式
*4.6什么是完整性約束,五種約束的概念*
1、關(guān)系的完整性約束
完整性通常包括域完整性、實(shí)體完整性、參照完整性和用戶自定義完整性;其中域完整性、實(shí)體完整性和參照完整性是關(guān)系模型必須滿足的完整性的約束條件
2、域完整性約束
指屬性的值域的完整性
3、實(shí)體完整性規(guī)則
關(guān)系中的主碼值不可以為空值
意義:關(guān)系中的元組都是通過主碼來識(shí)別的,若主碼為空,則會(huì)出現(xiàn)不可識(shí)別的個(gè)體,這是不允許的。
4、參照完整性規(guī)則
如果關(guān)系R1的外碼Fk與關(guān)系R2的主碼Pk相對(duì)應(yīng)時(shí)。那么R1的每一個(gè)元組的Fk值都等于R2的某個(gè)元組的Pk值或者為空。
意義:如果關(guān)系R1的某個(gè)元組t1參照R2的某個(gè)元組t2,則必須要求t2存在。
5、用戶定義的完整性規(guī)則
用戶根據(jù)具體應(yīng)用的環(huán)境來定義的完整性約束。
*五種約束*
域約束
鍵約束
非空約束
實(shí)體完整性約束
參照完整性約束
4.7關(guān)系代數(shù)八種運(yùn)算的符號(hào)、意義及表示方法。在這八種運(yùn)算中哪些屬于基本運(yùn)算?
基本運(yùn)算
選擇(σ)
設(shè)R是一個(gè)n元關(guān)系,F(xiàn)是一個(gè)形如riθc的公式,其中θ∈{=,≠,>,<,≤,≥},R的選擇操作定義為?F(R)={(r1,…,ri ,…,rn )|(r1,…,ri ,…,rn )∈R∧riθc }。
白話: 把符合條件的拿出來
投影(Π)
設(shè)R是一個(gè)n元關(guān)系,R的投影操作定義為∏i1,i2,…,im(R) = {(ri1, …,rim)|(r1 ,…,ri1,…,rim,…,rn)∈R}。
白話: 看橫行, 如果有兩個(gè)橫行相同, 只寫一個(gè). 因此若是S關(guān)系投影操作的話, 也就是有b和a
并(∪)
設(shè)R和S是n元關(guān)系,而且兩者各對(duì)應(yīng)屬性的數(shù)據(jù)類型也相同。R和S的并操作定義為 R∪S = { t | t∈R∨t∈S }。
白話: R和S關(guān)系合一起, 相同的不寫
交(∩)
設(shè)R和S是n元關(guān)系,而且兩者各對(duì)應(yīng)屬性的數(shù)據(jù)類型也相同。R和S的交操作定義為 R ? S = { t | t∈R∧t∈S }= R-(R-S)。
白話: 相同的拿出來
差(-)
設(shè)R和S是n元關(guān)系,而且兩者各對(duì)應(yīng)屬性的數(shù)據(jù)類型也相同。R和S的差定義為 R-S ={ t | t∈R∧t?S}。
白話: 因?yàn)槭荝-S, 找R在S關(guān)系中沒有的
笛卡爾積(X)
設(shè)R是n元關(guān)系,S是m元關(guān)系,R和S的的笛卡爾積定義為R×S={(r1,…,rn,s1,…,sm)|(r1,…, rn )∈R∧(s1, …,sm )∈S}。
白話: 和普通的笛卡爾乘機(jī)差不多, 自己看看, 規(guī)律很好找
連接()
設(shè)R是n元關(guān)系,S是m元關(guān)系,A是R的屬性,B是S的屬性,A和B的值域具有相同的數(shù)據(jù)類型,θ∈{=, ≠, >, <, ≤, ≥}。R和S的連接操作定義為這里寫圖片描述
其中,r[A]表示元組r在屬性A上的值,s[B]表示元組s在屬性B上的值。我們稱A和B是連接屬性。
除(/)
4.8什么叫“并兼容”的兩個(gè)關(guān)系?哪些關(guān)系代數(shù)運(yùn)算要求兩個(gè)關(guān)系必須是“并兼容”的?什么叫“重復(fù)消除”?
兩個(gè)關(guān)系有相同數(shù)量的屬性,每對(duì)對(duì)應(yīng)的屬性有同樣的值域; 并,交,差。
個(gè)別習(xí)題:
選D
選B
## 5、SQL語言
**5.1SQL語言的功能組成**
數(shù)據(jù)查詢,數(shù)據(jù)操縱,數(shù)據(jù)定義,數(shù)據(jù)控制;
**5.2單表查詢,主要掌握以下SQL語句用法,并復(fù)習(xí)實(shí)驗(yàn)2相關(guān)部分**
(1)不帶元組篩選條件的單表查詢
檢索所有行和列:**SELECT * FROM Student**
(2)重命名查詢結(jié)果關(guān)系列名(友好列標(biāo)題)
在原始字段之后跟上As再指定標(biāo)題即可:**SELECT Sno As 學(xué)號(hào),Sname As 姓名……**
(3)TOP關(guān)鍵字
TOP n語法只說明顯示前n條數(shù)據(jù):**SELECT TOP 3 * FROM Student**
(4)篩選元組:IN、BETWEEN、DISTINCT、LIKE的用法
1.可以在BETWEEN…AND語法前使用NOT取反
檢索年齡不在19-21歲的學(xué)生信息,顯示學(xué)號(hào),姓名:**SELECT Sno,Sname FROM Student WHERE Sage NOT BETWEEN 19 AND 21**
2.要檢索的信息是一系列取值列表,可以使用IN
從Teacher表中檢索職稱為教授或者副教授的信息:**SELECT * FROM Teacher WHERE Tport IN(‘教授’,’副教授’)**
3.使用DISTINCT關(guān)鍵字,表示檢索時(shí)顯示不重復(fù)信息
顯示Teacher表中有哪些職稱,要求信息不重復(fù):**SELECT DISTINCT Tprot FROM Teacher**
4.使用LIKE關(guān)鍵字進(jìn)行模糊查詢
查詢Student表中姓劉的同學(xué):**SELECT * FROM Student WHERE Sname LIKE ‘劉%’**
(5)空值檢查
檢索Master數(shù)據(jù)庫(kù)中spt_values表里low字段為空的數(shù)據(jù)行:**SELECT * FROM spt_values WHERE low IS NULL**
(6)查詢結(jié)果排序
使用ORDER BY對(duì)顯示的數(shù)據(jù)進(jìn)行排序,升序時(shí)ASC可以省略
顯示Course表的所有行,要求按照課程名稱降序顯示:**SELECT * FROM Course ORDER BY Cname DESC**
顯示Course表的所有行,要求按照課程學(xué)分降序,學(xué)分相同再按照課程號(hào)升序排列:**SELECT * FROM Course ORDER BY Ccredit DESC,Cno ESC**
(7)返回“計(jì)算列”
對(duì)Course表,顯示課程號(hào)、課程名、學(xué)分,另外額外增加一列“學(xué)時(shí)”,學(xué)時(shí)等于學(xué)分*16:**SELECT Cno,Cname,Ccredit, Ccredit*16 AS 學(xué)時(shí) FROM Course**
(8)五個(gè)匯總函數(shù)的用法
COUNT(統(tǒng)計(jì)Teacher表中教授的數(shù)量):**SELECT COUNT(*) FROM Teacher WHERE Tprot = ‘教授’** (COUBT()函數(shù)返回匹配指定條件的行數(shù),COUNT(*)函數(shù)返回表中的記錄數(shù))
SUM(求和):對(duì)Course表中必修課的學(xué)分進(jìn)行求和:**SELECT SUM(Ccredit) FROM Course WHERE XKLB=’必修’**
MAX
MIN
AVG:分別用來計(jì)算最大值,最小值,平均值,顯示Teacher表中教師年齡最大,最小,平均年齡:**SELECT MAX(Tage),MIN(Tage),AVG(Tage) FROM Teacher**
(9)分組及對(duì)分組的篩選
對(duì)Course表,按照必修和選修進(jìn)行分類,統(tǒng)計(jì)每種類別的課程數(shù)量:**SELECT XKLB As 類別,COUNT(Cname) AS 數(shù)量 FROM Course GROUP BY XKLB**
對(duì)Student表按照專業(yè)和性別進(jìn)行分組,顯示每個(gè)專業(yè),每種性別的學(xué)生數(shù)量,按照學(xué)生數(shù)量降序排列:**SELECT Smajar,Ssex,COUNT(Sno) FROM Student GROUP BY Smajor,Ssex,ORDER BY COUNT(Sno) DESC**
**5.3多表連接查詢,主要掌握以下SQL語句用法,并復(fù)習(xí)實(shí)驗(yàn)2相關(guān)部分**
(1)內(nèi)聯(lián)接
對(duì)SC和Student表進(jìn)行內(nèi)連接,顯示學(xué)生的學(xué)號(hào),姓名,課程號(hào),分?jǐn)?shù):
語法一:**SELECT Student.Sno,Student.Sname,SC.Cno,SC.Grade FROM SC JOIN Studet ON SC.Sno=Student.Sno**
語法二:**SELECT Student.Sno,Student.Sname,SC.Cno,SC.Grade FROM SC,Student WHERE SC.Sno=Studet,Sno**
(2)外聯(lián)接
讓Student表和SC表進(jìn)行左外連接,即不管學(xué)生是否選課,該學(xué)生的信息都會(huì)顯示出來:
**SELECT Student.Sno,Student.Sname,SC.Sno,SC.Grade FROM Student LEFT OUTER JOIN SC ON Student.Sno= SC.Sno**
讓SC表和Teacher表進(jìn)行完全外連接,顯示教師編號(hào),教師姓名,教師講授的課程號(hào):
**SELECT Teacher.Tno,Teacher.Tname.SC.Cno FROM SC FULL OUTER JOIN Teacher ON SC.Tno=Teacher.Tno**
(3)交叉聯(lián)接
對(duì)學(xué)生和課程兩張表進(jìn)行交叉連接:**SELECT * FROM Student CROSS JOIN Course**
(4)自聯(lián)接
(5)補(bǔ)充:一個(gè)查詢優(yōu)化的例子(參考課件第7講)
**5.4子查詢,主要掌握以下SQL語句用法,并復(fù)習(xí)實(shí)驗(yàn)2相關(guān)部分**
(1)帶有IN謂詞的子查詢
查詢?cè)赟C表中選修了課程的學(xué)生信息:**SELECT * FROM Student WHERE Sno IN (SELECT DISTINCT Sno FROM SC)**
(2)帶有比較運(yùn)算符的子查詢
(3)帶有ANY或ALL謂詞的子查詢
在教室表中,檢索比任何一個(gè)女教師年齡都大的男教師的信息:**SELECT * FROM Teacher WHERE Tsex=’男’ AND Tage > ALL(SELECT Tage FROM Teacher WHERE Tsex=’女’)**
(4)帶有EXISTS謂詞的子查詢(只需掌握一層EXISTS)
查詢和王國(guó)在同一專業(yè)學(xué)習(xí)的所有學(xué)生的基本信息:**SELECT Sno,Sname,Smajar FROM Student S1 WHERE EXISTS(SELECT * FROM Student S2 WHERE S2 WHERE S1.Smajor=S2.Smajor AND S2.Sname=’王國(guó)’)**
**5.5集合查詢,主要掌握以下SQL語句用法,并復(fù)習(xí)實(shí)驗(yàn)2相關(guān)部分**
(1)并
將學(xué)生的學(xué)號(hào)、姓名和教師的教工號(hào),姓名,在一個(gè)檢索結(jié)果中顯示出來:**SELECT Sno,Sname FROM Student UNION SELECT Tno,Tname FROM Teacher**
(2)交
對(duì)專業(yè)名以計(jì)算機(jī)開頭的學(xué)生及年齡是21歲的學(xué)生,用交運(yùn)算求兩者的交集:**SELECT Sno,Sname,Sage,Smajor FROM Student WHERE Smajor LIKE ‘計(jì)算機(jī)%’ INTERSECT SELECT Sno,Sname,Sage,Smajor FROM Student WHERE Sage=21**
(3)差
查詢專業(yè)名以計(jì)算機(jī)開頭,但不包括年齡是21歲的學(xué)生:**SELECT Sno,Sname,Sage,Smajor FROM Student WHERE Smajor LIKE ‘計(jì)算機(jī)%’ EXCEPT SELECT Sno,Sname,Sage, Smajor FROM Student WHERE Sage=21**
**5.6數(shù)據(jù)的增、刪、改(利用SQL語言),并復(fù)習(xí)實(shí)驗(yàn)3相關(guān)部分**
將學(xué)生表中的學(xué)號(hào),姓名,性別,院系,年齡,電話,郵箱抽取出來,插入Teacher表,所有新插入的數(shù)據(jù),職稱為講師:
**INSERT INTO Teacher(Tno,Tname,Tsex,Tdept,Tage,Tport,Tel,EMAIL)SELECT Sno,Sname,Ssex,Sdept,Sage,’講師’,Tel,EMAIL FROM Student**
將Course表中的編號(hào)是B002的課程,學(xué)分修改為3分:
**UPDATE Course SET Ccredit=3 WHERE Cno=’B002’**
刪除Course表中編號(hào)為B009的記錄
**DELETE FROM Course WHERE Cno=’B009’**
字符截取函數(shù)SUBSTRING
查詢姓名中第二個(gè)漢字和第三個(gè)漢字相同的學(xué)生:**Select * from Student Where SUBSTRING(Sname,2,1)=SUBSTRING(Sname,3,1)**
**5.7DDL數(shù)據(jù)定義語言,主要掌握以下SQL語句用法,并復(fù)習(xí)實(shí)驗(yàn)3相關(guān)部分**
(1)創(chuàng)建數(shù)據(jù)庫(kù)(簡(jiǎn)易版)
CREATE DATABASE 數(shù)據(jù)庫(kù)名字
(2)刪除數(shù)據(jù)庫(kù)
DROP DATABASE 數(shù)據(jù)庫(kù)名字
(3)創(chuàng)建數(shù)據(jù)庫(kù)表:指定數(shù)據(jù)類型、是否允許為空、標(biāo)識(shí)列
(4)修改數(shù)據(jù)庫(kù)表:增加列、修改列、刪除列
Alter table 表名 add 字段名 類型 是否為空
Alter table 表名 alter column 字段名 類型 是否為空
Alter table 表名 drop column 字段名 類型 是否為空
(5)刪除數(shù)據(jù)庫(kù)表
DROP table 表名
(6)完整性約束條件
①完整性約束條件的分類:按作用對(duì)象、按狀態(tài)
②默認(rèn)值約束
③對(duì)數(shù)據(jù)格式的約束
④對(duì)取值范圍或取值集合的約束
⑤元組級(jí)約束
⑥主鍵約束
⑦唯一性約束
⑧外鍵約束
⑨刪除約束
(7)視圖的概念(復(fù)習(xí)實(shí)驗(yàn)3相關(guān)部分)
(8)視圖的優(yōu)點(diǎn)
(9)視圖的創(chuàng)建
創(chuàng)建一個(gè)名為vwSCs的視圖,將學(xué)生表中院系是計(jì)算機(jī)科學(xué)學(xué)院的學(xué)生學(xué)號(hào)、姓名、性別、專業(yè)四個(gè)字段顯示出來:
**CREATE VIEW vwScs AS SELECT Sno,Sname,Ssex,Tel,EMAIL FROM Student WHERE Sdept=’計(jì)算機(jī)科學(xué)學(xué)院’**
(10)視圖的修改
通過對(duì)視圖進(jìn)行數(shù)據(jù)更新,將楊華的電話修改為66666666:**UPDATE vwScs SET TEL=’66666666′ WHERE Sname =’楊華’**
(11)刪除視圖
(12)視圖的更新
①視圖可更新性的基本判斷原則
(1)視圖中的每一列都必須和一個(gè)基本表中的一個(gè)源列對(duì)應(yīng)
(2)視圖中的每一行都必須和一個(gè)基本表中的一個(gè)源行對(duì)應(yīng)
②視圖可更新性的具體判斷標(biāo)準(zhǔn)
只要修改只影響與視圖相關(guān)的一個(gè)基礎(chǔ)表,視圖就可以修改,
包含聚合函數(shù)的視圖不可更新
存在計(jì)算列或者導(dǎo)出列的視圖不可更改
(14)索引的概念和作用(參考教材4.7節(jié))
(15)索引的創(chuàng)建和管理(復(fù)習(xí)實(shí)驗(yàn)3相關(guān)部分)
**5.8DCL數(shù)據(jù)控制語言,主要掌握以下相關(guān)概念及SQL語句用法,并復(fù)習(xí)實(shí)驗(yàn)4相關(guān)部分**
(1)SQL SERVER的安全控制過程、安全控制模型
(2)SQL SERVER的身份驗(yàn)證模式
(3)SQL SERVER登錄名的管理
(4)SQL SERVER數(shù)據(jù)庫(kù)用戶的管理
(5)SQL SERVER權(quán)限的管理
(6)SQL SERVER角色的管理
**5.9 Transact-SQL編程,主要掌握以下相關(guān)概念及T-SQL語句用法,并復(fù)習(xí)實(shí)驗(yàn)5相關(guān)部分**
(1)Transact-SQL基礎(chǔ)語法
(2)Transact-SQL流程控制語句
(3)Transact-SQL常用函數(shù)
(4)存儲(chǔ)過程概述
(5)存儲(chǔ)過程(包括帶輸入和輸出參數(shù)的)的創(chuàng)建與管理
**6、數(shù)據(jù)庫(kù)設(shè)計(jì)(復(fù)習(xí)數(shù)據(jù)庫(kù)設(shè)計(jì)案例)**
6.1數(shù)據(jù)庫(kù)設(shè)計(jì)的基本過程及每階段的主要任務(wù)
數(shù)據(jù)庫(kù)設(shè)計(jì)通常分為6個(gè)階段
1、需求分析:分析用戶的需求,包括數(shù)據(jù)、功能和性能需求;
分析方法常用SA(Structured Analysis) 結(jié)構(gòu)化分析方法,SA方法從最上層的系統(tǒng)組織結(jié)構(gòu)入手,采用自頂向下,逐層分解的方式分析系統(tǒng)。
數(shù)據(jù)流圖表達(dá)了數(shù)據(jù)和處理過程的關(guān)系,在SA方法中,處理過程的處理邏輯常常借助判定表或判定樹來描述。在處理功能逐步分解的同事,系統(tǒng)中的數(shù)據(jù)也逐級(jí)分解,形成若干層次的數(shù)據(jù)流圖。系統(tǒng)中的數(shù)據(jù)則借助數(shù)據(jù)字典(data dictionary,DD)來描述。數(shù)據(jù)字典是系統(tǒng)中各類數(shù)據(jù)描述的集合,數(shù)據(jù)字典通常包括**數(shù)據(jù)項(xiàng),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)流,數(shù)據(jù)存儲(chǔ),和處理過程** 5個(gè)階段。
2、概念結(jié)構(gòu)設(shè)計(jì):主要采用E-R模型進(jìn)行設(shè)計(jì),包括畫E-R圖;
3、邏輯結(jié)構(gòu)設(shè)計(jì):通過將E-R圖轉(zhuǎn)換成表,實(shí)現(xiàn)從E-R模型到關(guān)系模型的轉(zhuǎn)換;
4、數(shù)據(jù)庫(kù)物理設(shè)計(jì):主要是為所設(shè)計(jì)的數(shù)據(jù)庫(kù)選擇合適的存儲(chǔ)結(jié)構(gòu)和存取路徑;
常用的存取方法有三類:1.索引方法,目前主要是B+樹索引方法。2.聚簇方法(Clustering)方法。3.是HASH方法。
5、數(shù)據(jù)庫(kù)的實(shí)施:包括編程、測(cè)試和試運(yùn)行;
6、數(shù)據(jù)庫(kù)運(yùn)行與維護(hù):系統(tǒng)的運(yùn)行與數(shù)據(jù)庫(kù)的日常維護(hù)。
6.2 掌握E-R建模和繪制E-R圖的方法
6.3 “數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)階段”的任務(wù)
6.4 掌握將E-R模型轉(zhuǎn)換為關(guān)系模型的規(guī)則和方法
(1)每個(gè)實(shí)體類型轉(zhuǎn)換成一個(gè)關(guān)系模式。實(shí)體的屬性就是關(guān)系模式的屬性,實(shí)體的的碼就是關(guān)系的主碼。
(2)實(shí)體之間的聯(lián)系轉(zhuǎn)換,根據(jù)不同的情況進(jìn)行不同的處理:一個(gè) 1:1 的聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與任意一端的關(guān)系模式合并;一個(gè) 1:n 的聯(lián)系可轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與 n 端實(shí)體對(duì)應(yīng)的關(guān)系模式合并;一個(gè) m:n 的聯(lián)系必須轉(zhuǎn)換為一個(gè)關(guān)系模式。
6.5 掌握關(guān)系模式的非形式化設(shè)計(jì)原則和更新異常的概念
6.6 掌握1NF、2NF、3NF的概念和規(guī)范化方法(參考教材5.1、5.2、5.3節(jié))
*規(guī)范化*的基本思想是消除關(guān)系模式中的數(shù)據(jù)冗余,消除數(shù)據(jù)依賴中不合適的部分,解決數(shù)據(jù)插入、刪除和修改時(shí)發(fā)生的異常現(xiàn)象。關(guān)系數(shù)據(jù)庫(kù)的規(guī)范化過程中為不同程度的規(guī)范化要求設(shè)立的不同的標(biāo)準(zhǔn)或準(zhǔn)則稱為范式。一個(gè)低一級(jí)的范式的關(guān)系模式,通過模式分解可以轉(zhuǎn)換為若干個(gè)高一級(jí)的范式的關(guān)系模式的集合,這種過程叫做規(guī)范化。
6.6.1 第一范式
如果關(guān)系模式R所有屬性均為簡(jiǎn)單屬性,即每個(gè)屬性都是不可再分的,則稱R為第一范式。
6.6.2 第二范式
如果關(guān)系模式屬于第一范式,R(U,F)中的所有非主屬性都完全函數(shù)依賴于任意一個(gè)候選關(guān)鍵字,則稱關(guān)系R屬于第二范式。即不存 在某非主屬性對(duì)某候選關(guān)鍵字存在部分函數(shù)依賴。
6.6.3 第三范式
如果關(guān)系模式R屬于第二范式,R(U,F)中的所有非主屬性對(duì)任何候選關(guān)鍵字都不存在傳遞函數(shù)依賴,則稱R是屬于第三范式。
6.7 反規(guī)范化的基本概念(參考教材5.4節(jié))
常用的反規(guī)范化技術(shù)有哪些?
解:反規(guī)范化常用的方法是合并 1:1 聯(lián)系的表,合并 1:n 聯(lián)系的表,復(fù)制 1:n 聯(lián)系 1端表中數(shù)據(jù)到 n 端,復(fù)制 m:n 聯(lián)系中 m 端和 n 端數(shù)據(jù)到新產(chǎn)生的聯(lián)系表中。
有關(guān)ER圖的例題
例題一:
(2)將所畫的 E-R 圖轉(zhuǎn)換為關(guān)系模型。
解: 讀者(借閱證號(hào) ,姓名,地址)
圖書(編號(hào),書名,出版社,單價(jià),作者姓名)
借閱(借閱證號(hào),圖書編號(hào),借閱日期)
作者(姓名,性別,工作單位)
例題二
2. 設(shè)計(jì)滿足下述業(yè)務(wù)需求的 E-R 圖(注意:實(shí)體、屬性和聯(lián)系名稱均用中文表示)。
某圖書館要實(shí)現(xiàn)如下的業(yè)務(wù):新書的入庫(kù),讀者信息的入庫(kù),讀者對(duì)圖書的借閱 和歸還業(yè)務(wù)。此外,圖書館還要維護(hù)書籍的作者信息,在有需求的情況下可以查 詢作者聯(lián)系方式。
(1)圖書,需要存儲(chǔ):圖書編號(hào)、索書號(hào)、書名、出版社、單價(jià);
(2)作者,需要存儲(chǔ):作者編號(hào)、姓名、性別、聯(lián)系電話;(3)讀者,需要存儲(chǔ):借閱證號(hào)、姓名、聯(lián)系電話。圖書編號(hào)是指圖書館中的每一本書,有一個(gè)全館唯一的編號(hào)。假定一個(gè)作者可以撰寫多本圖書,但是一個(gè)圖書只能屬于一個(gè)作者。一個(gè)讀者可以借多本圖書,一本書也可以先后在不同時(shí)刻被多個(gè)讀者借閱。讀者借閱圖書時(shí),要記錄借閱的日期時(shí)間。你的設(shè)計(jì)中暫不考慮讀者的還書業(yè)務(wù),也不考慮同一個(gè)索書號(hào)的庫(kù)存問題。
2. 將該 E-R 圖轉(zhuǎn)換為等價(jià)的關(guān)系模式,分別指出每個(gè)關(guān)系的主鍵和外鍵,并畫出各關(guān)系間的主鍵、外鍵參照(注意:關(guān)系模式的表示規(guī)范請(qǐng)參照下圖、不用寫數(shù)據(jù)類型;關(guān)系和屬性名稱均用中文表示)。
作者(作者編號(hào),姓名,性別,聯(lián)系電話)
圖書(圖書編號(hào),索書號(hào),書名,出版社,單價(jià),作者號(hào))
讀者(借閱證號(hào),姓名,聯(lián)系電話)
借閱(圖書編號(hào),借閱證號(hào),借閱日期)
說明:借閱表也可增加一個(gè)自增字段作為主鍵
例題三:
3. 設(shè)計(jì)滿足下述業(yè)務(wù)需求的 E-R 圖,并寫出你在確定 E-R 模型約束條件時(shí)所做的其他假設(shè)(注意:實(shí)體、屬性和聯(lián)系名稱均用中文表示)某研究所擬開發(fā)一套系統(tǒng)管理其科研人員及科研項(xiàng)目,經(jīng)分析,有如下需求:
1) 該研究所由多個(gè)研究部門組成,每個(gè)員工屬于某一個(gè)研究部門;
2) 該研究所有若干研究項(xiàng)目,每個(gè)項(xiàng)目由且僅由一個(gè)部門負(fù)責(zé);
3) 每個(gè)員工可參與多個(gè)研究項(xiàng)目(注:可參與不由員工所屬部門負(fù)責(zé)的項(xiàng)目),當(dāng)員工參與研究項(xiàng)目時(shí),需記錄這個(gè)員工在所參與的每個(gè)項(xiàng)目上的工作時(shí)間和角色。
4) 員工的基本信息包括:?jiǎn)T工號(hào)、姓名、性別、生日、職稱、年齡;
5) 部門的基本信息包括:部門號(hào)、部門名、辦公地址;
6) 研究項(xiàng)目的基本信息包括:項(xiàng)目編號(hào)、項(xiàng)目名稱、項(xiàng)目經(jīng)費(fèi);
7) 上面信息中的員工號(hào),部門號(hào)和項(xiàng)目編號(hào)都具有唯一性。
**7、 數(shù)據(jù)庫(kù)保護(hù)**
7.1事務(wù)的基本概念
7.2 事務(wù)的定義
事務(wù)是用戶定義的一個(gè)數(shù)據(jù)操作序列,這些操作要么全部執(zhí)行,要么全部不執(zhí)行,是一個(gè)不可分割的工作單元;
7.3 事務(wù)的特征
7.4 并發(fā)控制
事務(wù)是并發(fā)控制的基本單位。
7.5 并發(fā)操作引發(fā)的問題
并發(fā)操作帶來的數(shù)據(jù)不一致性包括:丟失修改、不可重復(fù)讀、讀 “臟” 數(shù)據(jù)。
7.6并發(fā)控制的基本方法(封鎖協(xié)議,并發(fā)調(diào)度的可串行性,兩段鎖協(xié)議)
并發(fā)控制主要技術(shù):封鎖、時(shí)間戳、樂觀控制法、多版本并發(fā)控制等。
基本封鎖類型:排他鎖(X 鎖 / 寫鎖)、共享鎖(S 鎖 / 讀鎖)。
7.7 死鎖的概念、預(yù)防、診斷與解除(詳見教材第7.2節(jié))
活鎖和死鎖:
活鎖:事務(wù)永遠(yuǎn)處于等待狀態(tài),可通過先來先服務(wù)的策略避免。
死鎖:事物永遠(yuǎn)不能結(jié)束
預(yù)防:一次封鎖法、順序封鎖法;
診斷:超時(shí)法、等待圖法;
解除:撤銷處理死鎖代價(jià)最小的事務(wù),并釋放此事務(wù)的所有的鎖,使其他事務(wù)得以繼續(xù)運(yùn)行下去。
7.7數(shù)據(jù)庫(kù)故障類型
事務(wù)內(nèi)部故障,系統(tǒng)故障,介質(zhì)故障,計(jì)算機(jī)病毒
7.8數(shù)據(jù)庫(kù)恢復(fù)的基本方法(詳見教材第7.3節(jié))
7.9備份和恢復(fù)數(shù)據(jù)庫(kù)(詳見教材第11章)
7.10 備份類型和備份內(nèi)容(詳見教材第11.2節(jié))
數(shù)據(jù)庫(kù)備份,就是通過特定的辦法,將數(shù)據(jù)庫(kù)的必要文件復(fù)制到轉(zhuǎn)儲(chǔ)設(shè)備的過程。其 中,轉(zhuǎn)儲(chǔ)設(shè)備是指用于放置數(shù)據(jù)庫(kù)拷貝的磁帶或磁盤。數(shù)據(jù)庫(kù)備份的作用就是防止數(shù)據(jù)丟失,最大限度地降低災(zāi)難性數(shù)據(jù)丟失的風(fēng)險(xiǎn),從數(shù)據(jù)庫(kù)中定期保存用戶對(duì)數(shù)據(jù)庫(kù)所做的修改,當(dāng)數(shù)據(jù)庫(kù)出現(xiàn)故障時(shí),用以將數(shù)據(jù)庫(kù)從錯(cuò)誤狀態(tài)下恢復(fù)到正確狀態(tài)的副本。還有一個(gè)作用,就是對(duì)數(shù)據(jù)庫(kù)進(jìn)行轉(zhuǎn)儲(chǔ)。
7.11 備份策略(詳見教材第11.3節(jié))
7.12 恢復(fù)策略(詳見教材第11.5節(jié))
**8 、數(shù)據(jù)庫(kù)新技術(shù)**
8.1 什么是大數(shù)據(jù)?(參考教材14.2)
8.2 數(shù)據(jù)倉(cāng)庫(kù)與數(shù)據(jù)挖掘(參考教材14.3)
8.3 NoSQL數(shù)據(jù)庫(kù)(參考教材14.4)
總結(jié)
以上是生活随笔為你收集整理的数据库复习笔记(全覆盖,包括往年部分真题)(常用的数据网站汇总)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP Spartacus cost-c
- 下一篇: SAP Spartacus cost-c