數(shù)據(jù)庫復(fù)習(xí)點

數(shù)據(jù)庫的三級模式:
  • 模式:也稱邏輯模式,是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有的用戶的公共數(shù)據(jù)視圖。
  • 外模式:也稱子模式或用戶模式,它是數(shù)據(jù)庫用戶能夠看見和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫用戶的數(shù)據(jù)視圖,是與某一應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示。
  • 內(nèi)模式:也稱存儲模式,一個數(shù)據(jù)庫只有一個內(nèi)模式。它是數(shù)據(jù)物理結(jié)構(gòu)的存儲方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的組織方式。

傳統(tǒng)的集合運算是二目運算,包括并、差、交、笛卡爾積4中運算

連接分為3種:內(nèi)連接、自然連接、外連接
  • 內(nèi)連接和自然連接的區(qū)別:自然連接必須兩個表進行比較的列必須同名相同屬性,內(nèi)連接則不需要列同名。
  • 內(nèi)連接和外連接的區(qū)別:兩種連接取出兩張表中匹配到的數(shù)據(jù),內(nèi)連接匹配不到的不保留;外連接匹配不到的也保留,其值設(shè)置為NULL。
  • 外連接分為左外連接和右外連接:
    • 左外連接:保存左邊的懸浮元組
    • 右外連接:保存右邊的懸浮元組
      自然連接

      外連接

SQL的數(shù)據(jù)定義
操作對象 創(chuàng)建 刪除 修改
模式 CREATE SCHEMA DROP SCHEMA
CREATE TABLE DROP TABLE ALTER TABLE
視圖 CREATE VIEW DROP VIEW
索引 CREATE INDEX DROP INDEX ALTER INDEX

SQL的數(shù)據(jù)定義語句

SQL定義表的基本格式:

CREATE TABLE <表名> (<列名> <數(shù)據(jù)類型> [列級完整性約束條件]
 ,<列名> <數(shù)據(jù)類型> [列級完整性約束條件]
 ,<列名> <數(shù)據(jù)類型> [列級完整性約束條件]
 ,[表級完整性約束條件]);

SQL定義表示例:

 CREATE TABLE SC
 (Cno CHAR(9) PRIMARY KEY,
 Cname CHAR(40) NOT NULL,
 Cpno CHAR(4),
 Ccredit INT,
 FOREIGN KEY (Cpno) REFERENCES Course(Cno)
 );
索引

當(dāng)數(shù)據(jù)量比較大的時候,查詢比較耗時。簡歷索引是加快查詢速度的有效手段。(類似于圖書后面的索引)

數(shù)據(jù)庫索引類型

  • 順序文件上的索引:是針對按指定屬性值升序或降序存儲的關(guān)系,在該屬性上簡歷一個順序索引文件,索引文件由屬性值和相應(yīng)的元組指針組成。
  • B+樹索引:是將索引屬性組織成B+樹的形式,B+樹的葉節(jié)點為屬性值和相應(yīng)的元組指針。B+樹索引具有動態(tài)平衡的優(yōu)點。
  • 散列索引:是建立若干個桶,將索引按照其散列函數(shù)值映射到相應(yīng)桶中,桶中存放索引屬性值和相應(yīng)的元組指針。散列索引具有查找速度快的優(yōu)點。
  • 位圖索引:是用位向量記錄索引屬性中可能出現(xiàn)的值,每個位向量對應(yīng)一個可能的值。
數(shù)據(jù)查詢

SQL的SELECT語句基本格式:

FROM <表名或試圖名> [,<表名或試圖名>...] | (SELECT語句) AS <別名>
[WHERE <條件表達式>]
[GROUP BY <列名1> [HAVING <條件表達式>]]
[GROUP BY <列名2> [ASC|DESC]];

左外連接SQL示例:

SELECT Student.Sno,Sname,Ssex,Sage,Cno
FROM Student LEFT OUTER JOIN SC ON (Student.Sno=SC.Sno);

GROUP BY子句將查詢結(jié)果按一列或多列的值分組,值相等的為一組。

WHERE和HAVING的區(qū)別:作用對象不同。

  • WHERE子句作用于基本表或視圖,從中選擇滿足條件的元組。
  • HAVING短語作用于組,從中選擇滿足條件的組。

嵌套查詢示例:

    SELECT Sname
    FROM Student, SC, Course
    WHERE Student.Sno=SC.Sno=SC.Sno AND SC.Cno=Course.Cno

數(shù)據(jù)庫謂詞有:IN 、ANY、SOME、ALL、EXISTS

視圖

視圖是從一個或多個基本表導(dǎo)出的表。是一個虛表。
建立視圖的一般格式:

CREATE VIEW <視圖名> [(<列名> [,<列名>] ...)]
AS <子查詢>
[WITH CHECK OPTION];
SQL四種語言
  • DDLData Definition Language數(shù)據(jù)庫定義語言

DDL是SQL語言的四大功能之一。
用于定義數(shù)據(jù)庫的三級結(jié)構(gòu),包括外模式、概念模式、內(nèi)模式及其相互之間的映像,定義數(shù)據(jù)的完整性、>>安全控制等約束
DDL不需要commit.
CREATE、ALTER、DROP、TRUNCATE、COMMENT、RENAME

  • DML(Data Manipulation Language)數(shù)據(jù)操縱語言

由DBMS提供,用于讓用戶或程序員使用,實現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)的操作。
DML分成交互型DML和嵌入型DML兩類。
依據(jù)語言的級別,DML又可分成過程性DML和非過程性DML兩種。
DML需要commit.
SELECT、INSERT、UPDATE、DELETE、MERGE、CALL、EXPLAIN PLAN、LOCK TABLE

  • DCL(Data Control Language)數(shù)據(jù)庫控制語言。授權(quán),角色控制

GRANT 授權(quán)
REVOKE 取消授權(quán)

  • TCL(Transaction Control Language)事務(wù)控制語言

SAVEPOINT 設(shè)置保存點
ROLLBACK 回滾
SET TRANSACTION

SQL主要分成四部分:
  • 數(shù)據(jù)定義(SQL DDL)用于定義SQL模式、基本表、視圖和索引的創(chuàng)建和撤消操作。
  • 數(shù)據(jù)操縱(SQL DML)數(shù)據(jù)操縱分成數(shù)據(jù)查詢和數(shù)據(jù)更新兩類。數(shù)據(jù)更新又分成插入、刪除、和修改三種操作
  • 數(shù)據(jù)控制 包括對基本表和視圖的授權(quán),完整性規(guī)則的描述,事務(wù)控制等內(nèi)容。
  • 嵌入式SQL的使用規(guī)定 涉及到SQL語句嵌入在宿主語言程序中使用的規(guī)則。
參照完整性策略
  • 拒絕(NO ACTION)執(zhí)行
  • 級聯(lián)(CASCADE)操作
  • 設(shè)置為空值
數(shù)據(jù)庫存取方式

存取方式是快速存取數(shù)據(jù)庫中數(shù)據(jù)的方式,常用的存取方法為索引方法聚簇方法
B+樹索引hash索引是數(shù)據(jù)庫中經(jīng)典的存取方法,使用最普遍。

實現(xiàn)查詢操作的算法示例

選擇操作的實現(xiàn):

  • 簡單地全表掃描算法
  • 索引掃描算法

連接操作的實現(xiàn):

  • 嵌套循環(huán)算法
  • 排序-合并算法
  • 索引連接算法
  • hash join算法
事務(wù)

事務(wù)概念:事務(wù)是一系列的數(shù)據(jù)庫操作,是數(shù)據(jù)庫應(yīng)用程序的基本邏輯單元。
事務(wù)的ACID特性:

  • 原子性(Atomicity):事務(wù)是數(shù)據(jù)庫的邏輯工作單位,事務(wù)中包括的操作要么都做要么都不做。
  • 一致性(Consistency):事務(wù)執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。例如某公司有A,B兩個賬戶,A取出一萬元存入B賬戶。那么可以定義為一個事務(wù),該事務(wù)包括兩個操作,這兩個操作要么全做,要么全不做,否則就會破壞一致性。
  • 隔離性(Isolation):一個事務(wù)的執(zhí)行不能被其他事務(wù)干擾。即一個事務(wù)的內(nèi)部操作及使用的數(shù)據(jù)對其他并發(fā)事務(wù)是隔離的,并發(fā)執(zhí)行的各個事務(wù)之間不能相互干擾。即要達到這么一種效果:對于任意兩個并發(fā)的事務(wù)T1和T2,在事務(wù)T1看來,T2要么在T1開始之前就已經(jīng)結(jié)束,要么在T1結(jié)束之后才開始,這樣每個事務(wù)都感覺不到有其他事務(wù)在并發(fā)地執(zhí)行。
  • 持續(xù)性(Durability):也叫永久性。指的是一個事務(wù)一旦提交,對數(shù)據(jù)庫的數(shù)據(jù)的改變就是永久性的,接下來的其他操作或故障不應(yīng)該對其執(zhí)行結(jié)果有影響。

在不考慮事務(wù)的隔離性時,并發(fā)操作會帶來的數(shù)據(jù)的不一致性:

  • 臟讀:臟讀是指在一個事務(wù)處理過程里讀取了另一個未提交的事務(wù)中的數(shù)據(jù)。當(dāng)一個事務(wù)正在多次修改某個數(shù)據(jù),而在這個事務(wù)中這多次的修改都還未提交,這時一個并發(fā)的事務(wù)來訪問該數(shù)據(jù),就會造成兩個事務(wù)得到的數(shù)據(jù)不一致。
  • 不可重復(fù)讀:不可重復(fù)讀是指在對于數(shù)據(jù)庫中的某個數(shù)據(jù),一個事務(wù)范圍內(nèi)多次查詢卻返回了不同的數(shù)據(jù)值,這是由于在查詢間隔,被另一個事務(wù)修改并提交了。
    例如事務(wù)T1在讀取某一數(shù)據(jù),而事務(wù)T2立馬修改了這個數(shù)據(jù)并且提交事務(wù)給數(shù)據(jù)庫,事務(wù)T1再次讀取該數(shù)據(jù)就得到了不同的結(jié)果,發(fā)送了不可重復(fù)讀。
      不可重復(fù)讀和臟讀的區(qū)別是,臟讀是某一事務(wù)讀取了另一個事務(wù)未提交的臟數(shù)據(jù),而不可重復(fù)讀則是讀取了前一事務(wù)提交的數(shù)據(jù)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容