書單推薦 新書推薦 |
數(shù)據(jù)庫系統(tǒng)原理與設計 ![]()
全書共分12章。第1章是數(shù)據(jù)庫系統(tǒng)基本概念; 第2、3章是關系數(shù)據(jù)庫基礎; 第4、5、6章是關系數(shù)據(jù)庫設計; 第7、8、9、10章是關系數(shù)據(jù)庫管理系統(tǒng); 第11、12章是數(shù)據(jù)庫應用開發(fā)。本書強調(diào)數(shù)據(jù)庫應用與設計能力的培養(yǎng), 將數(shù)據(jù)庫設計的內(nèi)容分散在第4、5、6章以及第7.6、9.6節(jié)等章節(jié)逐層推進。
本書已在清華大學出版社數(shù)字化教學平臺智學苑(http://www.izhixue.com.cn/)上線。
本書已被多所高校選作教材,累計已發(fā)行35000余冊。
Foreword國家精品資源共享課“數(shù)據(jù)庫系統(tǒng)及應用”于2014在“愛課程”網(wǎng)上線,已經(jīng)3年多了。第一批“十二五”普通高等教育本科國家級規(guī)劃教材、國家精品資源共享課配套教材《數(shù)據(jù)庫系統(tǒng)原理與設計》(第2版)及配套教材《數(shù)據(jù)庫系統(tǒng)原理與設計實驗教程》(第2版)于2012年出版,也已近5年了。該套教材引起數(shù)據(jù)庫界同仁和學生的很大反響,已被全國50余所高校選作教材,4年多共印刷了9次。筆者所在學校針對“數(shù)據(jù)庫系統(tǒng)原理”課程開展翻轉(zhuǎn)課堂教學,從2013年試點到2015年全面實施也已經(jīng)4年多了。為了更好地適應大數(shù)據(jù)時代對數(shù)據(jù)庫課程的教學需求,我們從2016年下半年開始著手對本書進行修訂。本次修訂仍然堅持“培養(yǎng)學生‘三會’數(shù)據(jù)庫”的目標,即會設計數(shù)據(jù)庫、會管理數(shù)據(jù)庫、會開發(fā)數(shù)據(jù)庫應用程序,強調(diào)數(shù)據(jù)庫設計與應用能力的培養(yǎng),著重培養(yǎng)學生的應用建模能力,重點是數(shù)據(jù)庫概念模型。第3版對章節(jié)進行了適當?shù)恼{(diào)整,使得結(jié)構(gòu)更加合理、可用性更強。
本次修訂的主要內(nèi)容包括:
(1) 對第4、6兩章涉及的大學選課系統(tǒng)、網(wǎng)上書店系統(tǒng)數(shù)據(jù)庫設計實例的數(shù)據(jù)庫設計流程進行了重新梳理和調(diào)整,以便更好地指導學生開展數(shù)據(jù)庫設計大作業(yè)的實踐活動。重新梳理和調(diào)整后的數(shù)據(jù)庫設計流程為:系統(tǒng)需求分析(需求概述和系統(tǒng)邊界、主要業(yè)務處理流程、功能需求分析、數(shù)據(jù)需求分析、業(yè)務規(guī)則及完整性約束分析)→數(shù)據(jù)庫概念設計(確定基本實體集及屬性、主要業(yè)務局部概念建模、定義聯(lián)系集及屬性、設計完整ER模型、檢查是否滿足需求)→數(shù)據(jù)庫邏輯設計及模式求精→數(shù)據(jù)庫物理設計→數(shù)據(jù)庫應用與安全設計。
(2) 將原第3章中的SQL數(shù)據(jù)定義與更新語言,第9章中的游標、存儲過程和觸發(fā)器等數(shù)據(jù)庫編程的內(nèi)容獨立出來構(gòu)成新版的第7章SQL數(shù)據(jù)定義、更新及數(shù)據(jù)庫編程,并新增TSQL語言簡介的內(nèi)容,這樣有利于提高學生的數(shù)據(jù)庫編程能力。因此,新版的第3章集中介紹SQL查詢語言,有利于學生深刻理解關系數(shù)據(jù)庫邏輯模型,靈活掌握關系代數(shù)和SQL查詢語言;第3版的第9章集中介紹數(shù)據(jù)庫安全性與完整性,并深入地介紹觸發(fā)器應用于數(shù)據(jù)庫安全控制和復雜的用戶自定義完整性約束!魯(shù)據(jù)庫系統(tǒng)原理與設計(第3版)(3) 對原第7、8章的內(nèi)容進行了適當?shù)膲嚎s,并合并作為第3版的第8章數(shù)據(jù)庫存儲結(jié)構(gòu)與查詢處理。
(4) 刪除了原書第12章Web數(shù)據(jù)庫,新增了第12章數(shù)據(jù)管理技術前沿,主要內(nèi)容包括:大數(shù)據(jù)的興起、大數(shù)據(jù)處理平臺和框架、數(shù)據(jù)庫面臨的挑戰(zhàn)、NoSQL數(shù)據(jù)庫、NewSQL數(shù)據(jù)庫。設計這一章的目的是讓學生了解數(shù)據(jù)管理技術的前沿,擴展學生的知識面。今后改版時,這一章的內(nèi)容將與時俱進,不斷更新。
(5) 將原第11.3節(jié)數(shù)據(jù)庫應用開發(fā)實踐的主要內(nèi)容放到與本書配套的《數(shù)據(jù)庫系統(tǒng)原理與設計實驗教程》(第3版)中;考慮到ASP開發(fā)技術已經(jīng)過時,將原來的ASP設計實例改為JSP設計實例;第3版的第11.3節(jié)簡單介紹了對象\|關系映射框架。
(6) 調(diào)整了部分章節(jié)的內(nèi)容和順序,增加和調(diào)整了部分章節(jié)的例題和習題,對部分概念和文字進行了修改。
(7) 將配套教材《數(shù)據(jù)庫系統(tǒng)原理與設計實驗教程》(第3版)中使用的SQL Server 2005平臺改為SQL Server 2014。
與其他教材相比,本書的主要特點如下。
(1) 強化對關系數(shù)據(jù)庫模式的理解,以模式導航圖為工具,使學生深刻理解關系數(shù)據(jù)庫邏輯模型,靈活掌握關系代數(shù)和SQL查詢語言。
(2) 以案例為驅(qū)動,通過分析應用需求來介紹數(shù)據(jù)庫建模的基本方法,著力培養(yǎng)學生應用建模的能力,重點是使學生深刻理解數(shù)據(jù)庫概念模型,提高數(shù)據(jù)庫設計能力。
(3) 涵蓋了關系數(shù)據(jù)庫物理存儲結(jié)構(gòu)、查詢處理和查詢優(yōu)化等內(nèi)容,這些內(nèi)容一是有利于學生更好地理解關系數(shù)據(jù)庫的物理模型,二是有利于學生更好地理解關系數(shù)據(jù)庫管理系統(tǒng)(DBMS)的基本原理,三是有利于學生從底層的角度理解SQL查詢。
(4) 從使用者的角度,以應用需求為驅(qū)動介紹數(shù)據(jù)庫的安全性、完整性以及事務、并發(fā)和恢復等內(nèi)容,使學生深刻理解關系數(shù)據(jù)庫管理系統(tǒng)(DBMS)的基本原理。
(5) 增加數(shù)據(jù)庫應用開發(fā)和數(shù)據(jù)管理技術前沿介紹,一方面增強學生的實踐能力,另一方面讓學生了解數(shù)據(jù)庫的前沿和發(fā)展方向,為后續(xù)的數(shù)據(jù)庫應用開發(fā)實踐和進一步學習打下基礎。
本次修訂方案由萬常選、廖國瓊、吳京慧、劉喜平、劉愛紅等討論確定,萬常選負責第1、2、8章的修訂,廖國瓊負責第4、5、6、10章的修訂,吳京慧負責第3、7、9章的修訂,劉喜平負責第11、12章的修訂。最后,萬常選對全書的修訂稿進行了修改、補充和總纂。
本書在編寫和修訂過程中,參閱了大量的參考書目和文獻資料,在此向參考資料的作者表示衷心的感謝。
在整個編寫和修訂過程中,盡管我們一直懷著敬畏的心情、保持嚴謹?shù)膽B(tài)度,也付出了辛勤的勞動,限于水平,書中不足之處仍然在所難免,敬請各位讀者批評指正,并將您的寶貴意見反饋給我們(wanchangxuan@263.net)。我們對您的厚愛致以崇高的敬意!
編者
2017年6月
萬常選,工學博士,教授,博士生導師,國務院政府特殊津貼專家,江西省首批“贛鄱英才555工程”領軍人才培養(yǎng)計劃人選,江西省高校中青年學科帶頭人,江西省普通高等學校計算機類本科專業(yè)教學指導委員會主任委員,江西省計算機學會副理事長,江西省“十二五”重點學科“計算機科學與技術”學科帶頭人,江西省首批優(yōu)勢科技創(chuàng)新團隊“數(shù)據(jù)工程與數(shù)字媒體創(chuàng)新團隊”領軍人才,江西省高校數(shù)據(jù)與知識工程重點實驗室主任,江西財經(jīng)大學計算機科學與技術學科首席教授。
國家精品資源共享課、國家精品課程《數(shù)據(jù)庫系統(tǒng)及應用》課程負責人,2013-2017年教育部高等學校管理科學與工程類專業(yè)教學指導委員會委員;獲江西省高等學校教學名師獎、江西省“十五”優(yōu)秀研究生指導教師、“全省模范教師”稱號等;獲第六屆高等教育*教學成果獎二等獎1項,江西省優(yōu)秀教學成果一等獎2項、二等獎3項,江西省高校優(yōu)秀教材一等獎2部。
中國計算機學會高級會員、數(shù)據(jù)庫專委會委員,主持國家自然科學基金、國家社會科學基金項目多項,出版專著教材多部,在IEEE TKDE、Information Sciences、JCST、計算機學報、軟件學報、計算機研究與發(fā)展、ACM CIKM等重要期刊或國際會議發(fā)表學術論文50余篇,獲江西省高?萍汲晒勔坏泉3項、二等獎2項,江西省自然科學獎三等獎1項。
第1章數(shù)據(jù)庫系統(tǒng)概論1
1.1數(shù)據(jù)庫系統(tǒng)的作用1
1.1.1數(shù)據(jù)與數(shù)據(jù)管理2
1.1.2數(shù)據(jù)管理技術的產(chǎn)生與發(fā)展3
1.1.3數(shù)據(jù)庫應用8
1.2數(shù)據(jù)模型9
1.2.1數(shù)據(jù)模型的分層10
1.2.2數(shù)據(jù)模型的組成要素11
1.2.3層次模型12
1.2.4網(wǎng)狀模型14
1.2.5關系模型15
1.3數(shù)據(jù)抽象與數(shù)據(jù)庫三級模式17
1.3.1數(shù)據(jù)抽象17
1.3.2數(shù)據(jù)庫三級模式結(jié)構(gòu)及兩層映像18
1.3.3數(shù)據(jù)庫三級模式與三層模型的聯(lián)系和區(qū)別20
1.4數(shù)據(jù)庫系統(tǒng)22
1.4.1數(shù)據(jù)庫系統(tǒng)組成22
1.4.2數(shù)據(jù)庫管理系統(tǒng)23
1.4.3數(shù)據(jù)庫系統(tǒng)的相關人員27
本章小結(jié)29
習題133
第2章關系模型與關系代數(shù)35
2.1關系模型36
2.1.1關系數(shù)據(jù)結(jié)構(gòu)36
2.1.2關系完整性約束41◆數(shù)據(jù)庫系統(tǒng)原理與設計(第3版)目錄
2.1.3關系操作46
2.2關系代數(shù)47
2.2.1傳統(tǒng)的集合運算48
2.2.2專門的關系運算49
2.2.3關系代數(shù)查詢綜合舉例56
本章小結(jié)60
習題261
第3章SQL查詢語言63
3.1SQL概述63
3.1.1SQL發(fā)展64
3.1.2SQL特點65
3.1.3SQL查詢基本概念66
3.2單表查詢67
3.2.1投影運算70
3.2.2選擇運算73
3.2.3排序運算78
3.2.4查詢表79
3.2.5聚合查詢79
3.3連接查詢81
3.3.1等值與非等值連接81
3.3.2自表連接85
3.3.3外連接86
3.4嵌套子查詢87
3.4.1使用IN的子查詢88
3.4.2使用比較運算符的子查詢91
3.4.3使用存在量詞EXISTS的子查詢92
3.4.4復雜子查詢實例96
3.5集合運算99
3.6SQL查詢一般格式101
本章小結(jié)103
習題3103
第4章數(shù)據(jù)庫建模107
4.1數(shù)據(jù)庫設計過程108
4.2ER模型基本概念及表示109
4.2.1實體與實體集109
4.2.2屬性110
4.2.3聯(lián)系與聯(lián)系集112
4.3約束114
4.3.1映射約束114
4.3.2碼約束與聯(lián)系集的屬性安置116
4.3.3依賴約束118
4.3.4參與約束119
4.3.5多值聯(lián)系119
4.4弱實體集120
4.5擴展ER特征121
4.6ER建模問題123
4.6.1ER建模的基本原則123
4.6.2依賴約束的建模128
4.6.3多值聯(lián)系的建模130
4.7數(shù)據(jù)庫概念設計實例——大學選課系統(tǒng)133
4.7.1概念設計任務133
4.7.2系統(tǒng)需求分析133
4.7.3數(shù)據(jù)庫概念設計138
4.8邏輯設計——ER模型轉(zhuǎn)化為關系模型144
4.8.1ER模型轉(zhuǎn)化方法144
4.8.2大學選課系統(tǒng)ER模型轉(zhuǎn)化實例149
本章小結(jié)153
習題4154
第5章關系數(shù)據(jù)理論與模式求精157
5.1問題提出158
5.2函數(shù)依賴定義160
5.3范式163
5.3.1第一范式(1NF)——碼163
5.3.2第二范式(2NF)——全部是碼164
5.3.3第三范式(3NF)——僅僅是碼164
5.3.4BoyceCodd范式(BCNF)165
5.4函數(shù)依賴理論167
5.4.1函數(shù)依賴集閉包167
5.4.2屬性集閉包168
5.4.3正則覆蓋170
5.4.4無損連接分解172
5.4.5保持依賴分解173
5.5模式分解算法173
5.5.1BCNF分解算法173
5.5.23NF分解算法175
5.6數(shù)據(jù)庫模式求精176
本章小結(jié)178
習題5179
第6章關系數(shù)據(jù)庫設計實例——網(wǎng)上書店182
6.1系統(tǒng)需求分析183
6.1.1需求概述和系統(tǒng)邊界183
6.1.2主要業(yè)務處理流程183
6.1.3功能需求分析183
6.1.4數(shù)據(jù)需求分析185
6.1.5業(yè)務規(guī)則及完整性約束分析186
6.2數(shù)據(jù)庫概念設計188
6.2.1確定基本實體集及屬性188
6.2.2主要業(yè)務局部概念建模190
6.2.3定義聯(lián)系集及屬性196
6.2.4完整E\|R模型198
6.2.5檢查是否滿足需求198
6.3數(shù)據(jù)庫邏輯設計200
6.4模式求精207
本章小結(jié)207
習題6208
第7章SQL數(shù)據(jù)定義、更新及數(shù)據(jù)庫編程210
7.1SQL數(shù)據(jù)定義語言211
7.1.1數(shù)據(jù)庫的定義211
7.1.2基本表的定義216
7.1.3索引的定義219
7.2SQL數(shù)據(jù)更新語言221
7.2.1插入數(shù)據(jù)221
7.2.2刪除數(shù)據(jù)223
7.2.3修改數(shù)據(jù)224
7.3視圖225
7.3.1定義視圖225
7.3.2查詢視圖228
7.3.3視圖更新229
7.3.4刪除視圖230
7.4T\|SQL語言簡介231
7.4.1表達式231
7.4.2函數(shù)232
7.4.3流程控制語句236
7.5游標237
7.5.1游標的定義與使用238
7.5.2當前游標集的修改與刪除241
7.6存儲過程242
7.6.1創(chuàng)建存儲過程242
7.6.2執(zhí)行存儲過程246
7.6.3修改和刪除存儲過程247
7.7觸發(fā)器248
7.7.1創(chuàng)建觸發(fā)器249
7.7.2修改和刪除觸發(fā)器254
本章小結(jié)256
習題7257
第8章數(shù)據(jù)庫存儲結(jié)構(gòu)與查詢處理262
8.1文件組織與記錄組織263
8.1.1存儲介質(zhì)263
8.1.2存儲訪問264
8.1.3文件組織與文件中記錄的組織265
8.2索引與散列270
8.2.1索引基本概念270
8.2.2順序索引271
8.2.3B+樹索引273
8.2.4散列277
8.3查詢處理281
8.3.1查詢處理過程281
8.3.2查詢代價度量283
8.3.3選擇運算284
8.3.4連接運算286
8.3.5其他運算293
8.3.6表達式計算295
8.4查詢優(yōu)化296
8.4.1查詢優(yōu)化實例296
8.4.2關系表達式轉(zhuǎn)換297
8.4.3查詢優(yōu)化策略298
8.5物理數(shù)據(jù)庫設計299
本章小結(jié)302
習題8306
第9章數(shù)據(jù)庫安全性與完整性308
9.1數(shù)據(jù)庫安全性308
9.1.1數(shù)據(jù)庫安全概述309
9.1.2SQL Server 安全機制312
9.1.3觸發(fā)器實現(xiàn)安全性320
9.2數(shù)據(jù)庫完整性320
9.2.1數(shù)據(jù)庫完整性概述320
9.2.2SQL Server完整性321
9.2.3使用規(guī)則和觸發(fā)器實現(xiàn)完整性328
9.3數(shù)據(jù)庫應用與安全設計329
9.3.1數(shù)據(jù)庫安全性控制329
9.3.2數(shù)據(jù)庫完整性控制332
9.3.3存儲過程設計335
本章小結(jié)338
習題9339
第10章事務管理與恢復340
10.1事務341
10.1.1問題背景341
10.1.2事務概念342
10.1.3事務特性343
10.1.4事務并發(fā)執(zhí)行與調(diào)度344
10.1.5事務調(diào)度及正確性準則346
10.2并發(fā)控制349
10.2.1基于封鎖的協(xié)議349
10.2.2兩階段封鎖協(xié)議352
10.3恢復與備份354
10.3.1故障分類及恢復策略354
10.3.2事務訪問數(shù)據(jù)方式355
10.3.3基于日志的故障恢復策略357
10.3.4檢查點360
10.3.5備份與介質(zhì)故障恢復363
本章小結(jié)364
習題10366
第11章數(shù)據(jù)庫應用開發(fā)368
11.1數(shù)據(jù)庫系統(tǒng)的體系結(jié)構(gòu)369
11.1.1軟件開發(fā)體系結(jié)構(gòu)概述369
11.1.2C/S體系結(jié)構(gòu)370
11.1.3B/S體系結(jié)構(gòu)372
11.1.4C/S與B/S結(jié)構(gòu)的結(jié)合375
11.1.5常用開發(fā)體系結(jié)構(gòu)377
11.2數(shù)據(jù)庫訪問技術379
11.2.1ODBC API和ODBC庫380
11.2.2MFC DAO381
11.2.3RDO382
11.2.4OLE DB383
11.2.5ADO385
11.2.6ADO.NET386
11.2.7JDBC389
11.2.8數(shù)據(jù)庫訪問技術小結(jié)392
11.3對象關系映射框架394
本章小結(jié)397
習題11399
第12章數(shù)據(jù)管理技術前沿400
12.1大數(shù)據(jù)的興起401
12.1.1大數(shù)據(jù)的概念401
12.1.2從數(shù)據(jù)庫到大數(shù)據(jù)403
12.1.3大數(shù)據(jù)處理模式404
12.2大數(shù)據(jù)處理平臺和框架405
12.2.1Apache Hadoop406
12.2.2Spark409
12.2.3Storm410
12.3數(shù)據(jù)庫面臨的挑戰(zhàn)412
12.3.1MySpace數(shù)據(jù)庫架構(gòu)變化412
12.3.2數(shù)據(jù)庫可擴展性問題的解決方法414
12.3.3數(shù)據(jù)庫的發(fā)展416
12.4NoSQL數(shù)據(jù)庫417
12.4.1鍵值數(shù)據(jù)庫Redis417
12.4.2文檔數(shù)據(jù)庫MongoDB421
12.4.3列數(shù)據(jù)庫HBase426
12.4.4圖數(shù)據(jù)庫Neo4j429
12.5NewSQL數(shù)據(jù)庫433
12.5.1VoltDB434
12.5.2NuoDB437
本章小結(jié)440
習題12440
參考文獻441
第3章chapter3
SQL查詢語言接正文接標題1.1微型計算機簡介學習目標
結(jié)構(gòu)化查詢語言(structured query language,SQL)是關系數(shù)據(jù)庫的標準語言,本章主要講授SQL查詢語言在數(shù)據(jù)庫中的應用。目前,幾乎所有的關系型數(shù)據(jù)庫管理系統(tǒng),如Oracle、Sybase、SQL Server和Access等均采用SQL語言標準。因此,本章的教學目標主要有兩個,一是要求讀者掌握對數(shù)據(jù)庫的基本操作,并了解數(shù)據(jù)庫管理系統(tǒng)的基本功能;二是要求讀者熟練掌握SQL查詢語句,并運用SQL查詢語句完成對數(shù)據(jù)庫的查詢操作。學習方法
本章重在實驗,因此要求讀者結(jié)合課堂講授的知識,強化上機實訓,通過實訓加深對課堂上學過的有關概念和知識點的理解,以便達到融會貫通的學習目標。學習指南
本章的重點是3.2節(jié)、3.3節(jié)和3.4節(jié),難點是3.4節(jié)。本章導讀
(1) SQL查詢語句對關系代數(shù)運算做了哪些擴展?
(2) 連接查詢包括哪些?它們分別用于什么地方?
(3) 在使用分組聚合查詢時需要注意什么?
(4) 相關子查詢與非相關子查詢的概念是什么?
(5) 如何理解存在量詞以及存在量詞在SQL查詢中的重要地位?
(6) 如何理解查詢表的概念?查詢表與子查詢有何異同點?
3.1SQL概述
SQL語言于1974年由Boyce等提出,并于1975—1979年在IBM公司研制的System R數(shù)據(jù)庫管理系統(tǒng)上實現(xiàn),現(xiàn)已成為國際標準。
自從SQL成為國際標準以來,很多數(shù)據(jù)庫廠商都對SQL語言進行了再開發(fā)和擴展,但是包括查詢SELECT、插入INSERT、修改UPDATE、刪除DELETE、創(chuàng)建CREATE以及對象刪除DROP在內(nèi)的標準SQL語句仍然可被用來完成幾乎所有的數(shù)據(jù)庫操作!魯(shù)據(jù)庫系統(tǒng)原理與設計(第3版)第◆3章SQL查詢語言3.1.1SQL發(fā)展
SQL語言是關系數(shù)據(jù)庫的標準語言,是數(shù)據(jù)庫領域中一個主流語言,它經(jīng)歷了如下幾個階段。
(1) SQL86: 第一個SQL標準,由美國國家標準局(American National Standard Institute,ANSI)公布,1987年國際標準化組織(International Organization for Standardization,ISO)通過。該標準也稱為SQL1。
(2) SQL92: 在1992年,由ISO和ANSI對SQL86進行了重新修訂,發(fā)布了第二個SQL標準SQL92,該標準也稱為SQL2。
(3) SQL99: 隨著信息技術的應用,數(shù)據(jù)庫理論和技術得到了廣泛的應用和發(fā)展。在1999年,ISO發(fā)布了反映最新數(shù)據(jù)庫理論和技術的標準SQL99,該版本在SQL2的基礎上,擴展了諸多功能,包括遞歸、觸發(fā)、面向?qū)ο蠹夹g等。該標準也稱為SQL3。
(4) SQL2003: 該標準是最新的標準,也稱SQL4,于2003年發(fā)布,包括9個部分。
① ISO/IEC 9075—1: Framework(SQL/Framework);
② ISO/IEC 9075—2: Foundation(SQL/Foundation);
③ ISO/IEC 9075—3: Call Level Interface(SQL/CLI);
④ ISO/IEC 9075—4: Persistent Stored Modules(SQL/PSM);
⑤ ISO/IEC 9075—9: Management of External Data(SQL/MED);
⑥ ISO/IEC 9075—10: Object Language Bindings(SQL/OLB);
⑦ ISO/IEC 9075—11: Information and Definition Schemas(SQL/Schemata);
⑧ ISO/IEC 9075—13: Java Routines and Types Using the Java Programming Language(SQL/JRT);
⑨ ISO/IEC 9075—14: XMLRelated Specifications(SQL/XML)。
目前,許多數(shù)據(jù)庫廠商都支持SQL92的絕大多數(shù)標準,以及SQL99和SQL2003的部分標準,并對SQL語言進行了擴展。這些擴展的SQL語言,不僅遵循標準SQL語言規(guī)定的功能,而且還增強了許多功能,并賦予SQL不同的名字,如Oracle產(chǎn)品將SQL稱為PL/SQL,Sybase和Microsoft SQL Server產(chǎn)品將SQL稱為TransactSQL。
SQL語言由4部分組成,包括數(shù)據(jù)定義語言DDL、數(shù)據(jù)操縱語言DML、數(shù)據(jù)控制語言DCL和其他,其功能如下:
(1) 數(shù)據(jù)定義語言(data definition language,DDL): 主要用于定義數(shù)據(jù)庫的邏輯結(jié)構(gòu),包括數(shù)據(jù)庫、基本表、視圖和索引等,擴展DDL還支持存儲過程、函數(shù)、對象、觸發(fā)器等的定義。DDL包括3類語言,即定義、修改和刪除。
(2) 數(shù)據(jù)操縱語言(data manipulation language,DML): 主要用于對數(shù)據(jù)庫的數(shù)據(jù)進行檢索和更新,其中更新操作包括插入、刪除和修改數(shù)據(jù)。
(3) 數(shù)據(jù)控制語言(data control language,DCL): 主要用于對數(shù)據(jù)庫的對象進行授權、用戶維護(包括創(chuàng)建、修改和刪除)、完整性規(guī)則定義和事務定義等。
(4) 其他: 主要是嵌入式SQL語言和動態(tài)SQL語言的定義,規(guī)定了SQL語言在宿主語言中使用的規(guī)則。擴展SQL還包括數(shù)據(jù)庫數(shù)據(jù)的重新組織、備份與恢復等功能。
3.1.2SQL特點
SQL語言因其簡單、靈活、易掌握,受到了廣大用戶的接受,SQL語言既可以作為交互式數(shù)據(jù)庫語言使用,也可以作為程序設計語言的子語言使用,它是一個兼有關系代數(shù)和元組演算特征的語言,其特點如下所述。
1. 綜合統(tǒng)一
(1) SQL語言集數(shù)據(jù)定義語言DDL,數(shù)據(jù)操縱語言DML和數(shù)據(jù)控制語言DCL的功能于一體,語言風格統(tǒng)一,可以獨立完成數(shù)據(jù)庫生命周期中的全部活動,包括定義關系模式、錄入數(shù)據(jù)以及建立數(shù)據(jù)庫、查詢、更新、維護、數(shù)據(jù)庫重構(gòu)、數(shù)據(jù)庫安全性控制等一系列操作,這就為數(shù)據(jù)庫應用系統(tǒng)開發(fā)提供了良好的環(huán)境。例如用戶在數(shù)據(jù)庫投入運行后,還可根據(jù)需要隨時地逐步地修改模式,并不影響數(shù)據(jù)庫的運行,從而使系統(tǒng)具有良好的可擴充性。
(2) 在關系模型中實體和實體間的聯(lián)系均用關系表示,這種數(shù)據(jù)結(jié)構(gòu)的單一性帶來了數(shù)據(jù)操作符的統(tǒng)一,即對實體及實體間聯(lián)系的每一種操作(如查找、插入、刪除和修改)都只需要一種操作符。
2. 高度非過程化
非關系數(shù)據(jù)模型的數(shù)據(jù)操縱語言是面向過程的語言,在完成某項操作請求時必須指定存取路徑。而用SQL語言進行數(shù)據(jù)操作,用戶只需提出“做什么”,而不必指明“怎么做”,因此用戶無須了解存取路徑,存取路徑的選擇以及SQL語句的操作過程由系統(tǒng)自動完成。這不僅大大減輕了用戶負擔,而且有利于提高數(shù)據(jù)獨立性。
3. 面向集合的操作方式
SQL語言采用集合操作方式,其操作對象、操作結(jié)果都是元組的集合。而非關系數(shù)據(jù)模型采用的是面向記錄的操作方式,其操作對象是一條記錄。
(1) 非關系數(shù)據(jù)模型采用的是面向記錄的操作方式,任何一個操作的對象都是一條記錄。例如: 查詢所有平均成績在80分以上的學生姓名,用戶必須說明完成該操作請求的具體處理過程,即如何用循環(huán)結(jié)構(gòu)按照某條路徑一條一條地把滿足條件的學生記錄讀出來。
(2) SQL語言采用集合操作方式,不僅查詢操作的對象是元組的集合,而且一次更新(插入、刪除和修改)操作的對象也可以是元組的集合。
4. 同一種語法結(jié)構(gòu)提供兩種使用方式
(1) SQL語言既是自含式語言,又是嵌入式語言,且在兩種不同的使用方式下,SQL語言的語法結(jié)構(gòu)基本上是一致的。
(2) 作為自含式語言,它能夠獨立地用于聯(lián)機交互的使用方式,用戶可以在終端鍵盤上直接鍵入SQL命令對數(shù)據(jù)庫進行操作。
(3) 作為嵌入式語言,SQL語句能夠嵌入到高級語言(如Java、VC、VB、Delphi等)程序中,供程序員設計程序時使用。
5. 語言簡潔,易學易用
SQL語言功能極強,但十分簡潔,易學易用。SQL語言的動詞非常少,主要包括:
(1) 數(shù)據(jù)查詢: SELECT;
(2) 數(shù)據(jù)定義: CREATE、DROP、ALTER;
(3) 數(shù)據(jù)更新: INSERT、DELETE、UPDATE;
(4) 數(shù)據(jù)控制: GRANT、REVOKE。
……
你還可能感興趣
我要評論
|








