在大數(shù)據(jù)時代,“數(shù)據(jù)”是一種寶貴的資源,甚至可以說是戰(zhàn)略性資源,它蘊含著無盡的能量,展示出超然的魅力。隨著大數(shù)據(jù)時代的到來,數(shù)據(jù)庫技術(shù)在研究、管理和應用數(shù)據(jù)領域成為備受矚目的核心技術(shù)。在這種背景下,數(shù)據(jù)庫技術(shù)已成為人們需要學習和掌握的一種基本知識和本領。
本書以華為公司自主研發(fā)的GaussDB(for MySQL)數(shù)據(jù)庫管理系統(tǒng)為背景,全面講述了數(shù)據(jù)庫原理和技術(shù),以及基于GaussDB(for MySQL)進行數(shù)據(jù)庫應用系統(tǒng)開發(fā)的基本技能和方法。
本書以培養(yǎng)計算思維能力為目標,由“基礎理論篇”“技術(shù)篇”“系統(tǒng)應用篇”三篇組成,以數(shù)據(jù)庫應用系統(tǒng)案例為主線貫穿全書,講述了數(shù)據(jù)庫基礎理論、數(shù)據(jù)庫操作和管理的基本技能以及數(shù)據(jù)庫應用系統(tǒng)開發(fā)的一般方法。
特別地,它以目前國產(chǎn)新型云數(shù)據(jù)庫為背景,這在國內(nèi)極為少見,對于增強科技自信、民族自信,促進國產(chǎn)數(shù)據(jù)庫軟件的發(fā)展和應用普及具有重要意義。
本書配套資源全面、豐富,未來還將配套適合GaussDB(for MySQL)平臺的實驗指導書,可作為數(shù)據(jù)庫技術(shù)學習者的教學用書,也可作為培養(yǎng)“小型應用系統(tǒng)開發(fā)能力”的學習用書,以及作為廣大計算機用戶和計算機學習者的培訓用書及自學用書。
在大數(shù)據(jù)時代,“數(shù)據(jù)”構(gòu)成了一種世界觀,以“數(shù)據(jù)”觀世界,則客觀世界就是一切數(shù)據(jù)的總和!皵(shù)據(jù)”是一種寶貴的資源,甚至可以說是戰(zhàn)略性資源!按髷(shù)據(jù)”技術(shù)使“數(shù)據(jù)”蘊含著無盡的能量,顯示出超然的魅力。只要掌握數(shù)據(jù),人人都可以俯瞰大千世界的任何一個側(cè)面。所謂掌握數(shù)據(jù),也就意味著首先要處理數(shù)據(jù); 而數(shù)據(jù)處理的過程是與數(shù)據(jù)庫技術(shù)息息相關的。數(shù)據(jù)庫原理和技術(shù)給人們提供了一種理解、處理和管理世界的方法。隨著數(shù)據(jù)觀的成長、成熟和發(fā)展,數(shù)據(jù)時空的海量擴張呈現(xiàn)出一個大數(shù)據(jù)時代來臨的現(xiàn)實景觀。大數(shù)據(jù)必然帶來云計算技術(shù)的發(fā)展,數(shù)據(jù)庫技術(shù)也因云計算而有了新的飛躍,于是云數(shù)據(jù)庫管理系統(tǒng)給我們打開了一個數(shù)據(jù)處理的想象空間,呈現(xiàn)出海量數(shù)據(jù)與云計算背景下數(shù)據(jù)處理的“魅力生態(tài)”新技術(shù)場景。在這種形勢下,華為公司研發(fā)推出的GaussDB管理系統(tǒng)應運而生。它以基于云計算的數(shù)據(jù)庫管理技術(shù)為根基,是企業(yè)級高擴展海量存儲分布式數(shù)據(jù)庫管理系統(tǒng),完全兼容MySQL,一經(jīng)問世便成為華為鯤鵬系統(tǒng)生態(tài)中的核心產(chǎn)品之一,進而成為替代國外數(shù)據(jù)庫管理系統(tǒng)軟件、解決“卡脖子問題”的國產(chǎn)本土數(shù)據(jù)庫管理系統(tǒng)的代表、首選和佼佼者,備受矚目。
作為三十余年一直在高校講授“數(shù)據(jù)庫原理和應用”相關課程的教師,我編著了多本相關的數(shù)據(jù)庫教程,但這是第一次編著國產(chǎn)數(shù)據(jù)庫教程。在多年的實踐教學的基礎上,在華為公司GaussDB團隊合作和指導下,研發(fā)編著了本書,以使GaussDB(for MySQL)更快地走進數(shù)據(jù)庫技術(shù)應用領域,走進高校,為廣大讀者用戶所掌握。
本書的特點在于將數(shù)據(jù)庫基本原理知識與GaussDB(for MySQL)數(shù)據(jù)庫管理系統(tǒng)的技術(shù)知識融合在一起,是以GaussDB(for MySQL)為平臺的數(shù)據(jù)庫原理與技術(shù)教程,也是從數(shù)據(jù)庫基本概念入手的GaussDB(for MySQL)數(shù)據(jù)庫管理系統(tǒng)入門教程。本書講解了數(shù)據(jù)庫基本概念、數(shù)據(jù)庫設計、數(shù)據(jù)庫組織與管理、數(shù)據(jù)庫SQL查詢語言、數(shù)據(jù)庫系統(tǒng)控制,以及數(shù)據(jù)庫應用系統(tǒng)開發(fā)的一般方法,同時也介紹了GaussDB(for MySQL)云數(shù)據(jù)庫的特性、架構(gòu)及工作原理等幾個方面的內(nèi)容。每章都通過翔實的基礎知識和簡明的操作步驟,將知識點和實際應用相結(jié)合,幫助讀者理解和掌握數(shù)據(jù)庫原理和數(shù)據(jù)庫操作。以“基礎知識與動手實驗相結(jié)合”為編寫理念,以一個完整的數(shù)據(jù)庫應用系統(tǒng)案例貫穿全書,編寫體例貼近實踐的語境,將數(shù)據(jù)庫原理與數(shù)據(jù)庫操作技術(shù),以及數(shù)據(jù)庫應用系統(tǒng)開發(fā)等內(nèi)容相結(jié)合,由淺入深,層層遞進
地展現(xiàn)給讀者。
上篇基 礎 理 論
第1章走進GaussDB00
1.1與數(shù)據(jù)庫相關的基本概念00
1.1.1信息00
1.1.2數(shù)據(jù)00
1.1.3數(shù)據(jù)庫00
1.1.4數(shù)據(jù)庫管理系統(tǒng)00
1.1.5數(shù)據(jù)庫系統(tǒng)00
1.1.6分布式數(shù)據(jù)庫系統(tǒng)00
1.2數(shù)據(jù)庫應用系統(tǒng)的組成00
1.2.1數(shù)據(jù)庫應用系統(tǒng)組織架構(gòu)00
1.2.2數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)00
1.2.3DBMS管理與控制00
1.3GaussDB(for MySQL)概述0
1.3.1GaussDB(for MySQL)的特點0
1.3.2GaussDB(for MySQL)系統(tǒng)架構(gòu)0
1.3.3GaussDB(for MySQL)獨特之處0
1.3.4GaussDB(for MySQL)集成環(huán)境0
1.3.5GaussDB家族其他數(shù)據(jù)庫產(chǎn)品0
知識點樹0
思考題0
第2章關系數(shù)據(jù)庫0
2.1數(shù)據(jù)描述0
2.2概念模型0
2.2.1概念模型相關術(shù)語0
2.2.2實體聯(lián)系類型 0
2.2.3實體聯(lián)系圖0
2.3關系模型0
2.3.1關系模型相關術(shù)語0
2.3.2關系的操作0
2.3.3關系的完整性0
2.3.4關系數(shù)據(jù)庫的特性0
2.4關系規(guī)范化0
2.4.1冗余與異常0
2.4.2函數(shù)依賴0
2.4.3規(guī)范化原則0
2.4.4模式分解0
2.5關系代數(shù)0
2.5.1并運算0
2.5.2差運算0
2.5.3交運算0
2.5.4笛卡兒積運算0
2.5.5投影運算0
2.5.6選擇運算0
2.5.7連接運算0
2.5.8除運算0
知識點樹0
思考題0
數(shù)據(jù)庫原理及應用——基于GaussDB的實現(xiàn)方法
目錄
0
0
第3章數(shù)據(jù)庫設計和建模0
3.1數(shù)據(jù)庫生命周期0
3.2需求分析0
3.2.1需求分析階段的目標及任務0
3.2.2需求分析階段的工作過程0
3.3概念結(jié)構(gòu)設計0
3.3.1概念結(jié)構(gòu)設計的目標及任務0
3.3.2概念結(jié)構(gòu)設計的一般策略和方法0
3.3.3概念結(jié)構(gòu)設計階段工作過程0
3.4邏輯結(jié)構(gòu)設計0
3.4.1邏輯結(jié)構(gòu)設計的目標及任務0
3.4.2概念結(jié)構(gòu)轉(zhuǎn)換成邏輯結(jié)構(gòu)的方法0
3.4.3邏輯結(jié)構(gòu)設計階段工作過程0
3.5物理結(jié)構(gòu)設計0
3.5.1物理結(jié)構(gòu)設計的目標及任務0
3.5.2物理結(jié)構(gòu)設計時的注意事項0
3.5.3物理結(jié)構(gòu)設計階段工作過程0
知識點樹0
思考題0
中篇技 術(shù) 詳 解
第4章數(shù)據(jù)庫預備知識0
4.1數(shù)據(jù)類型0
4.1.1數(shù)值類型0
4.1.2文本類型0
4.1.3日期與時間類型0
4.2運算符0
4.2.1算術(shù)運算符0
4.2.2比較運算符0
4.2.3邏輯運算符0
4.3函數(shù)0
4.3.1字符串函數(shù)0
4.3.2數(shù)學函數(shù)0
4.3.3日期函數(shù)0
4.3.4其他函數(shù)0
知識點樹0
思考題0
第5章SQL0
5.1SQL概述0
5.1.1SQL的特點0
5.1.2SQL的功能0
5.2數(shù)據(jù)定義0
5.2.1定義數(shù)據(jù)庫0
5.2.2定義及維護數(shù)據(jù)庫表0
5.2.3定義視圖0
5.2.4定義觸發(fā)器0
5.3數(shù)據(jù)操縱0
5.3.1數(shù)據(jù)庫表的數(shù)據(jù)插入0
5.3.2數(shù)據(jù)庫表的數(shù)據(jù)修改0
5.3.3數(shù)據(jù)庫表的數(shù)據(jù)刪除0
知識點樹0
思考題0
第6章數(shù)據(jù)庫0
6.1數(shù)據(jù)庫的種類0
6.1.1集中式數(shù)據(jù)庫0
6.1.2分布式數(shù)據(jù)庫0
6.1.3云數(shù)據(jù)庫0
6.2存儲引擎0
6.2.1InnoDB存儲引擎0
6.2.2MyISAM存儲引擎0
6.2.3MEMORY存儲引擎
6.2.4Archive存儲引擎
6.3數(shù)據(jù)庫創(chuàng)建與維護
6.3.1創(chuàng)建數(shù)據(jù)庫
6.3.2維護數(shù)據(jù)庫
6.3.3創(chuàng)建數(shù)據(jù)庫模式
知識點樹
思考題
第7章文件組織與索引
7.1文件組織
7.2什么是索引
7.3創(chuàng)建索引的原則
7.4索引類型及創(chuàng)建索引
7.4.1普通索引和唯一索引
7.4.2單列索引和組合索引
7.4.3全文索引
7.4.4空間索引
7.5維護索引
7.5.1查看索引
7.5.2刪除索引
知識點樹
思考題
第8章表與視圖
8.1表設計概述
8.2創(chuàng)建表及維護
8.2.1創(chuàng)建表
8.2.2表結(jié)構(gòu)的維護
8.2.3表的鍵及約束
8.3表中數(shù)據(jù)的操縱
8.3.1插入數(shù)據(jù)
8.3.2修改數(shù)據(jù)
8.3.3刪除數(shù)據(jù)
8.4視圖概述
8.4.1什么是視圖
8.4.2視圖的特性
8.5創(chuàng)建視圖
8.5.1創(chuàng)建單表視圖
8.5.2創(chuàng)建多表視圖
8.5.3維護視圖
8.6使用視圖
8.6.1使用視圖插入數(shù)據(jù)
8.6.2使用視圖更新數(shù)據(jù)
8.6.3使用視圖刪除數(shù)據(jù)
知識點樹
思考題
第9章數(shù)據(jù)查詢
9.1SELECT語句
9.2集函數(shù)查詢
9.3簡單查詢
9.3.1所有列查詢
9.3.2指定列查詢
9.3.3指定行查詢
9.3.4指定行、列查詢
9.3.5分組查詢
9.3.6條件分組查詢
9.4多表查詢
9.4.1兩表列查詢
9.4.2多表列查詢
9.4.3兩表條件查詢
9.4.4多表條件查詢
9.4.5多表指定行、列查詢
9.5嵌套查詢
9.5.1兩表嵌套查詢
9.5.2多表嵌套查詢
9.6子查詢
9.6.1帶IN關鍵字的子查詢
9.6.2帶比較運算符的子查詢
9.6.3帶ANY關鍵字的子查詢
9.6.4帶ALL關鍵字的子查詢
9.6.5帶EXISTS關鍵字的子查詢
9.7SQL引擎
9.7.1SQL解析
9.7.2查詢優(yōu)化
知識點樹
思考題
第10章數(shù)據(jù)庫完整性
10.1完整性約束
10.1.1實體完整性約束
10.1.2參照完整性約束
10.1.3用戶自定義完整性約束
10.2觸發(fā)器
10.2.1觸發(fā)器概述
10.2.2創(chuàng)建觸發(fā)器
10.2.3刪除觸發(fā)器
10.3存儲過程
10.3.1存儲過程概述
10.3.2創(chuàng)建存儲過程
10.3.3執(zhí)行存儲過程
10.3.4刪除存儲過程
知識點樹
思考題
下篇系 統(tǒng) 應 用
第11章數(shù)據(jù)庫系統(tǒng)控制
11.1事務
11.1.1事務ACID屬性
11.1.2調(diào)度
11.2恢復技術(shù)
11.2.1事務故障及恢復
11.2.2系統(tǒng)故障及恢復
11.2.3介質(zhì)故障及恢復
11.3并發(fā)控制
11.3.1并發(fā)控制概述
11.3.2串行化調(diào)度
11.3.3封鎖的并發(fā)控制
11.3.4并發(fā)調(diào)度的可串行性
11.4數(shù)據(jù)庫安全
11.4.1數(shù)據(jù)庫安全概述
11.4.2用戶管理
11.4.3數(shù)據(jù)庫備份/恢復
11.4.4數(shù)據(jù)庫表導入/導出
知識點樹
思考題
第12章GaussDB(for MySQL)數(shù)據(jù)庫管理系統(tǒng)
12.1緣起
12.2系統(tǒng)結(jié)構(gòu)
12.2.1云環(huán)境的不同
12.2.2GaussDB 體系架構(gòu)
12.2.3日志存儲
12.2.4頁存儲
12.2.5存儲抽象層
12.2.6數(shù)據(jù)庫前端
12.3數(shù)據(jù)存儲
12.3.1寫流程
12.3.2讀流程
12.4恢復與實現(xiàn)
12.4.1日志存儲恢復
12.4.2頁存儲恢復
12.4.3SAL和數(shù)據(jù)庫恢復
12.5GaussDB整體架構(gòu)
12.5.1GaussDB發(fā)展
12.5.2GaussDB架構(gòu)概覽
12.5.3GaussDB云數(shù)據(jù)庫架構(gòu)
12.5.4GaussDB多模云數(shù)據(jù)庫架構(gòu)
知識點樹
思考題
第13章數(shù)據(jù)庫應用系統(tǒng)開發(fā)的一般方法
13.1總體設計
13.1.1提出問題
13.1.2總體系統(tǒng)架構(gòu)
13.1.3系統(tǒng)功能
13.2數(shù)據(jù)庫設計
13.3數(shù)據(jù)庫管理與實現(xiàn)
13.3.1數(shù)據(jù)庫創(chuàng)建
13.3.2數(shù)據(jù)庫表的創(chuàng)建
13.3.3向數(shù)據(jù)表中輸入數(shù)據(jù)
13.3.4視圖設計
13.3.5存儲過程設計
13.3.6觸發(fā)器設計
13.4應用系統(tǒng)前端開發(fā)
13.4.1數(shù)據(jù)庫連接
13.4.2用戶登錄模塊設計
13.4.3數(shù)據(jù)維護
知識點樹
思考題
附錄A訪問GaussDB(for MySQL)用戶指南
參考文獻