1 概述
本文主要介紹了數(shù)據(jù)庫的發(fā)展史和數(shù)據(jù)庫的相關(guān)概念介紹
2 數(shù)據(jù)庫的發(fā)展史
2.1 萌芽階段-----文件系統(tǒng)
使用磁盤文件來存儲數(shù)據(jù)
不利于大型數(shù)據(jù)進行管理,只能用戶簡單的數(shù)據(jù)管理
2.2 初級階段-----第一代數(shù)據(jù)庫
出現(xiàn)了網(wǎng)狀模型、層次模型的數(shù)據(jù)庫
這里只能算是數(shù)據(jù)庫的管理系統(tǒng)浙宜,用戶不需要直接打開文件鸠补,通過軟件來打開對應(yīng)的文件
2.3 中級階段-----第二代數(shù)據(jù)庫
關(guān)系型數(shù)據(jù)庫和結(jié)構(gòu)化查詢語言
層次性結(jié)構(gòu)
網(wǎng)狀型結(jié)構(gòu)
關(guān)系型數(shù)據(jù)庫
2.4 高級階段------新一代數(shù)據(jù)庫
“關(guān)系-對象”型數(shù)據(jù)庫
3? 數(shù)據(jù)庫管理系統(tǒng)
3.1 數(shù)據(jù)庫管理系統(tǒng)
.數(shù)據(jù)庫是數(shù)據(jù)的匯集家破,它以一定的組織形式存于存儲介質(zhì)上
.DBMS是管理數(shù)據(jù)庫的系統(tǒng)軟件遗锣,它實現(xiàn)數(shù)據(jù)庫系統(tǒng)的各種功能。是數(shù)據(jù)庫系統(tǒng)的核心
? ? DBMS是一套解決方案哺壶,是軟件,管理數(shù)據(jù)庫里的數(shù)據(jù)蜒谤,如mysql,oracle山宾,不同的數(shù)據(jù)庫管理系統(tǒng)支持的文件格式不一樣
.DBA:負責(zé)數(shù)據(jù)庫的規(guī)劃、設(shè)計鳍徽、協(xié)調(diào)资锰、維護和管理等工作
.應(yīng)用程序指以數(shù)據(jù)庫為基礎(chǔ)的應(yīng)用程序
3.2 數(shù)據(jù)庫管理系統(tǒng)的優(yōu)點
.相互關(guān)聯(lián)的數(shù)據(jù)的集合
.較少的數(shù)據(jù)冗余
.程序與數(shù)據(jù)相互獨立
.保證數(shù)據(jù)的安全、可靠
.最大限度地保證數(shù)據(jù)的正確性
.數(shù)據(jù)可以并發(fā)使用并能同時保證一致性
文件管理系統(tǒng)有如下的缺點
.編寫應(yīng)用程序不方便
.數(shù)據(jù)冗余不可避免
.應(yīng)用程序依賴性
.不支持對文件的并發(fā)訪問
.數(shù)據(jù)間聯(lián)系弱
.難以按用戶視圖表示數(shù)據(jù)
.無安全控制功能
3.3 數(shù)據(jù)庫管理系統(tǒng)的基本功能
.數(shù)據(jù)定義
在數(shù)據(jù)庫里把數(shù)據(jù)定義出來阶祭,如存儲的屬性有哪些绷杜,如一個學(xué)生的姓名,身份證等
.數(shù)據(jù)處理
數(shù)據(jù)處理濒募,如增刪改查
.數(shù)據(jù)安全
如創(chuàng)建賬號鞭盟,分配權(quán)限
.數(shù)據(jù)備份
有專門的數(shù)據(jù)庫備份工具,數(shù)據(jù)可能放在內(nèi)存中或者文件中瑰剃,不單單是在文件中齿诉,備份工具能把內(nèi)存中的數(shù)據(jù)也拷貝出來
4? 數(shù)據(jù)庫系統(tǒng)的架構(gòu)
.單機架構(gòu)
excel就是單機架構(gòu)
.大型主機/終端架構(gòu)
早期的環(huán)境,如一個主機讓多個終端接入
.主從式架構(gòu)(C/S)
主從架構(gòu)是目前主流的架構(gòu)晌姚,如安裝server粤剧,客戶端通過客戶端軟件基于網(wǎng)絡(luò)連接到服務(wù)器訪問數(shù)據(jù)
.分布式架構(gòu)
大型企業(yè)會將數(shù)據(jù)分布在多個地方進行存儲,難度增大挥唠,但是更加靈活
5 關(guān)系型數(shù)據(jù)庫
.關(guān)系:關(guān)系就是二維表抵恋。并滿足如下性質(zhì):
.行row:表中的每一行,又稱為一條記錄
.列column:表中的每一列猛遍,稱為屬性馋记,字段
.主鍵(Primary? key):用于唯一確定一個記錄的字段
主鍵:作用于某個字段上号坡,那么該字段的所有值都是唯一的,確保表中沒有完全一樣的數(shù)據(jù)梯醒,主鍵不能為空值宽堆,一個表只能有一個主鍵
復(fù)合主鍵:把多列的數(shù)據(jù)組合為一個主鍵,多個字段組成的復(fù)合主鍵算是一個主鍵
.域domain:屬性的取值范圍茸习,如畜隶,性別只能是‘男’和‘女’兩個值
.唯一鍵:一張表中可以有多個唯一鍵,允許為空值号胚。
5.1 關(guān)系數(shù)據(jù)庫:RDBMS
.RDBMS:
MySQL: MySQL, MariaDB, PerconaServer
mysql是開源產(chǎn)品
MariaDB是mysql的分支籽慢,
PostgreSQL:簡稱為pgsql,EnterpriseDB猫胁,
PostgreSQL:號稱性能最好的開源數(shù)據(jù)庫箱亿,但是用戶量少
Oracle:
MSSQL:
DB2:
5.2 關(guān)系型數(shù)據(jù)庫的常見組件
.數(shù)據(jù)庫:database
.表:table
行:row
列:column
.索引:index,就像是書的目錄弃秆,可以快速提高查詢速度
.視圖:view届惋,是一個虛擬表,取物理表中特定的字段或特定的列或行
.用戶:user
.權(quán)限:privilege
.存儲過程:procedure菠赚,過程無返回值脑豹,這是數(shù)據(jù)庫里專有,有函數(shù)和過程衡查,如下的function,這個是內(nèi)置的的瘩欺,用戶也可以手動創(chuàng)建
.存儲函數(shù):function,過程有返回值
.觸發(fā)器:trigger拌牲。用觸發(fā)器來監(jiān)控表的的某個字段是否發(fā)生變化俱饿,一旦發(fā)生變化,觸發(fā)另一種表做相應(yīng)的變更
.事件調(diào)度器:event
scheduler们拙,任務(wù)計劃稍途,相當(dāng)于cron計劃任務(wù)
5.3 事務(wù)
事務(wù)transaction:多個操作被當(dāng)作一個整體對待
ACID,是指在可靠數(shù)據(jù)庫管理系統(tǒng)(DBMS)中砚婆,事務(wù)(transaction)所應(yīng)該具有的四個特性:原子性(Atomicity)械拍、一致性(Consistency)、隔離性(Isolation)装盯、持久性(Durability).這是可靠數(shù)據(jù)庫所應(yīng)具備的幾個特性.下面針對這幾個特性進行逐個講解.
A:原子性
指事務(wù)是一個不可再分割的工作單位坷虑,事務(wù)中的操作要么都發(fā)生,要么都不發(fā)生埂奈。
針對事務(wù)來說的
mysql和sqserver執(zhí)行命令后迄损,默認是commit
oracle如果執(zhí)行命令后,還沒commit后账磺,就代表還沒完成事物
C:一致性
數(shù)據(jù)在進行操作的時候芹敌,必須是從一個一致性的狀態(tài)切換到另一個一致性的狀態(tài)
數(shù)據(jù)庫設(shè)計的是讀的狀態(tài)痊远,而不是結(jié)束時的狀態(tài),讀的時候會將數(shù)據(jù)放到一個地方氏捞,保證了一致性
I:隔離性
多個事務(wù)同時進行時系統(tǒng)會進行隔離
D:持久性
一旦執(zhí)行了commit碧聪,數(shù)據(jù)就不能修改
中間狀態(tài)的數(shù)據(jù)(即沒有提交的數(shù)據(jù))叫dirty data.
undo和redo的區(qū)別
undo就是撤銷的操作
redo就是重新做操作
操作完,一般先把記錄寫在日志里
做修改后液茎,一般是先在內(nèi)存中修改逞姿,將修改寫入日志中,已經(jīng)執(zhí)行了cmd1,正在執(zhí)行cmd2,但是突然出現(xiàn)異常后捆等,cmd2還么完成就被或被執(zhí)行undo滞造,而在日志中的cmd1,則會被提交到數(shù)據(jù)庫中栋烤,這個動作叫做redo