前言
在學完諸多Java框架以後,深感本身基礎不牢。打算從頭開始學習計算機的基本知識,爲後續的發展作準備。在諸多計算機基礎知識中,我選擇了與我關聯最大的數據庫開始學習。數據庫系統是一門很是抽象的學科,指望在完成這一系列文章以後,能結合本身的實踐對數據庫加入本身更深的理解java
爲何要學數據庫
- Everything Over DB:傳統社會的業務工做已經沒法知足現代社會的需求,咱們須要計算機的幫助
- 信息積累運用的基礎:幫助人們從繁重的數據管理中解脫出來
- 基於數據庫的應用——大數據。一切以數聽說話。
學習數據庫重要的不是技術,而是思惟。算法
對「表」的抽象
數據起源於表——人們對平常生活信息的整理。在數據庫中,表也做爲最重要的主體部分。表也不是胡亂選取的,須要咱們對錶作出正確的抽象:理解-區分-命名-表達。sql
咱們須要對生活中的信息有着足夠的理解,並從中抽取出須要的信息數據庫
表(Table)的經常使用術語
表由表名、表標題(格式)、表內容(值)組成。安全
其中表內容包括行(row)
與列(column)
,行又能夠稱爲元組(tuple)
、記錄(record)
,列又能夠稱爲字段(field)
、屬性(attribute)
、數據項(data item)
。網絡
Table中描述了一批互相有關聯關係的數據的集合。併發
數據庫與表的關係
數據庫是有關聯關係的若干個table的集合。框架
數據庫系統
基本術語
- 數據庫(DB):DataBase。一組數據的集合
- 數據庫管理系統(DBMS):DataBase Management System。數據庫管理軟件
- 數據庫應用(DBAP):DataBase Application。基於數據庫開發的應用
- 數據庫管理員(DBA):DataBase Administrator。經過數據庫管理系統管理數據庫。
數據庫管理系統(DBMS)
DBMS的功能
對於用戶來講,對DBMS的要求有:分佈式
- 數據庫定義:DBMS爲用戶提供一套數據定義語言(DDL,Data Definition Language),用戶使用DDL建立數據庫及其中的Table;
- 數據庫操做:DBMS爲用戶提供一套數據操縱語言(DML,Data Manipulation Language),用戶使用DML來實現數據庫的CRUD(增刪改查)操做;
- 數據庫控制:DBMS爲用戶提供一套數據控制語言(DCL,Data Control Language),用戶使用DCL描述其對數據庫所要實施的控制(包括且不限於控制哪些用戶可以訪問哪些字段);
- 數據庫維護:DBMS提供一系列程序(使用程序/例行程序)給用戶,用戶使用這些程序來實現數據庫的轉儲、恢復、重組、性能檢測和分析等功能。
上述一、二、3點綜合起來,造成了咱們操做數據庫的SQL語言(結構化的數據庫語言)性能
對於系統,DBMS的實現要求:形式->構造->自動化,實現解析語言並執行。
DBMS爲了完成數據庫的管理,在後臺運行這一系列程序:
- 語言編譯器:將用數據庫語言書寫的內容,翻譯成DBMS可執行的命令。例如:DDL編譯器、DML編譯器、DCL編譯器等;
- 查詢優化(執行引擎)與查詢實現(基本命令的不一樣執行算法):提升數據庫檢索速度的手段。例如穿插於數據存取各個階段的優化程序;
- 數據存取與索引:提供數據在磁盤、磁帶上高效存取的手段。例如:存儲管理器、緩衝區管理器、索引/文件和記錄管理器等;
- 通訊控制:由於數據庫與數據庫應用的通訊要求,且現代大型項目的數據庫一般是分佈式管理。因此提供網絡環境下數據庫操做和數據傳輸的手段是必要的;
- 事務管理:提升可靠性避免併發操做錯誤。如髒讀…
- 是數據庫 自動恢復到故障發生前正確狀態的手段,例如提供了運行日誌操控等實用程序
- 安全性控制:提供合法性檢驗,避免非受權非法用戶訪問數據庫
- 完整性控制:提供數據及數據操做正確性檢查的手段
- 數據字典管理:管理用戶已經定義的信息
- 應用程序接口(API):提供應用程序使用DBMS特定功能的手段‘
- 數據庫數據裝載、重組等使用程序
- 數據庫性能分析:統計在運行過程當中數據庫的各類性能數據,便於優化運行
數據庫語言
數據庫與高級語言
1.一條數據庫語言語句至關於高級語言的一個或多個循環程序。
例如:
select id, name 名字 from table where id = 1;
至關於Java中的:
for(int i=0; i<n; ++i) {
if (user[i].id == id) {
return user[i];
}
}
2.數據庫能夠嵌入到高級語言(宿主語言)中使用
總結
本文是基於哈工大在慕課網發的《數據庫系統》,待補充...