本書介紹了SQL的編程原理、基本原則、使用方法及技巧,包含數(shù)據(jù)庫設計基礎知識,第一范式、第二范式、第三范式的概念和范式間的轉換方法,涉及數(shù)據(jù)庫創(chuàng)建、單表查詢、多表查詢、更新數(shù)據(jù)、數(shù)據(jù)庫管理知識,并提供了常用SQL語句的案例速查表。公司使用SQL來管理訂單、物品、客戶和銷售代表的有趣案例貫穿全書,方便讀者跟隨進度逐步上手SQL。
本書可作為高等院校SQL或數(shù)據(jù)庫相關課程的參考教材,也可作為SQL的案例參考和函數(shù)速查手冊,適合有一定編程基礎、想要上手使用SQL的人閱讀。
1.輕松掌握SQL編程技能。提供深入淺出的指導,讓您輕松學習和掌握SQL編程,無論您是初學者還是有一定經(jīng)驗的開發(fā)人員。
2.實戰(zhàn)案例驅動,快速上手SQL。通過豐富的實戰(zhàn)案例,保持學習興趣,帶領您逐步應用SQL解決真實問題,從而快速提升您的SQL應用能力。
3.涵蓋數(shù)據(jù)庫設計與管理技巧。除了SQL編程,還深入介紹數(shù)據(jù)庫設計和管理的關鍵知識和技巧,讓您成為專業(yè)的數(shù)據(jù)庫行家。
4.語言清晰易懂。以簡潔明了的語言和大量實用的示例代碼,幫助您輕松理解SQL的核心概念和復雜操作。
5.全彩印刷,重點難點標記清楚,幫助您輕松理解技術關鍵點。
[美]Mark Shellman ,在信息技術領域他最喜歡的科目包括數(shù)據(jù)庫和編程語言。馬克博士從事信息技術教學已有三十多年,并與人合著了《微軟Access數(shù)據(jù)庫新視角系列》中的幾篇文章。 [美]Hassan Afyouni 是一位數(shù)據(jù)庫專家、Oracle專家、企業(yè)架構師、技術顧問和教育家。他曾在加拿大、美國和黎巴嫩的幾所學院和大學擔任講師。他是數(shù)據(jù)庫領域幾本主要圖書的作者,備受尊敬。 [美]Philip J. Pratt ,他的教學興趣包括數(shù)據(jù)庫管理、系統(tǒng)分析、復雜分析和離散數(shù)學。他撰寫了超過75本教科書,并與人合著了流行的Shelly Cashman系列的三個級別的Microsoft Office Access圖書。 [美]Mary Z. Last, 她自1984年以來一直教授計算機信息系統(tǒng)。她從德克薩斯州貝爾頓的瑪麗-哈丁-貝勒大學退休,在那里她是副教授和學習與教學效率中心的主任。Last女士積極參與計算機教育家的口述歷史項目,鼓勵年輕女性從事數(shù)學和科學方面的工作。自1992年以來,她一直是Shelly Cashman系列的撰稿人。她還為領先的數(shù)據(jù)庫文本編寫了許多教師資源。
第 1章 KimTay和StayWell數(shù)據(jù)庫簡介 1
1.1 簡介 1
1.2 什么是數(shù)據(jù)庫 1
1.3 KimTay數(shù)據(jù)庫 2
1.4 StayWell數(shù)據(jù)庫 8
1.5 本章總結 12
1.6 案例練習 13
第 2章 數(shù)據(jù)庫設計基礎知識 15
2.1 簡介 15
2.2 數(shù)據(jù)庫的概念 16
2.2.1 關系數(shù)據(jù)庫 16
2.2.2 實體、屬性和聯(lián)系 17
2.3 功能依賴關系 21
2.4 主鍵 24
2.5 數(shù)據(jù)庫的設計 26
2.5.1 設計方法 26
2.5.2 數(shù)據(jù)庫的設計需求 27
2.5.3 數(shù)據(jù)庫設計過程示例 28
2.6 規(guī)范化 35
2.6.1 第 一范式 36
2.6.2 第二范式 37
2.6.3 第三范式 41
2.7 數(shù)據(jù)庫的結構設計圖 46
2.8 本章總結 48
2.9 復習題 50
2.10 案例練習 51
第3章 創(chuàng)建表 54
3.1 簡介 54
3.2 創(chuàng)建和運行SQL命令 55
3.2.1 使用MySQL Workbench 55
3.2.2 輸入指令 58
3.3 創(chuàng)建數(shù)據(jù)庫 61
更改默認數(shù)據(jù)庫 63
3.4 創(chuàng)建表 64
3.4.1 修正SQL指令中的錯誤 69
3.4.2 刪除表 70
3.4.3 使用數(shù)據(jù)類型 71
3.5 使用空值 72
3.6 在表中添加行 73
3.6.1 INSERT指令 73
3.6.2 插入包含空值的行 77
3.7 查看表中的數(shù)據(jù) 78
3.8 修正表中的錯誤 80
3.9 保存SQL指令 83
3.10 創(chuàng)建剩余的數(shù)據(jù)庫表 87
3.11 對表進行描述 92
3.12 本章總結 95
3.13 復習題 96
3.14 案例練習 97
第4章 單表查詢 101
4.1 簡介 101
4.2 創(chuàng)建簡單查詢 101
4.2.1 提取特定列和所有行 102
4.2.2 提取所有列和所有行 103
4.2.3 使用WHERE子句 104
4.2.4 使用復合條件 106
4.2.5 使用BETWEEN操作符 109
4.2.6 使用計算列 111
4.2.7 使用LIKE操作符 113
4.2.8 使用IN操作符 115
4.3 排序 116
4.3.1 使用ORDER BY子句 116
4.3.2 其他排序選項 117
4.4 使用函數(shù) 118
4.4.1 使用COUNT函數(shù) 118
4.4.2 使用SUM函數(shù) 119
4.4.3 使用AVG、MAX和MIN函數(shù) 119
4.4.4 使用DISTINCT操作符 121
4.5 嵌套的查詢 123
子查詢 125
4.6 分組 127
4.6.1 使用GROUP BY子句 127
4.6.2 使用HAVING子句 129
4.6.3 比較HAVING子句和WHERE子句 130
4.7 空值 132
4.8 總結SQL查詢的子句和操作符 133
4.9 本章總結 134
4.10 復習題 135
4.11 案例練習 136
第5章 多表查詢 139
5.1 簡介 139
5.2 對多個表進行查詢 139
連接兩個表 140
5.3 連接、IN和EXISTS的比較 143
5.3.1 使用IN操作符 144
5.3.2 使用EXISTS操作符 145
5.3.3 在子查詢中使用子查詢 146
5.3.4 綜合案例 148
5.3.5 使用別名 150
5.3.6 把表與自身相連接 151
5.3.7 根據(jù)主鍵列使用自身連接 153
5.3.8 連接幾個表 154
5.4 集合操作 157
5.5 ALL和ANY操作符 162
5.6 特殊操作 165
5.6.1 內部連接 165
5.6.2 外部連接 167
5.6.3 乘積 168
5.7 本章總結 169
5.8 復習題 171
5.9 案例練習 172
第6章 更新數(shù)據(jù) 175
6.1 簡介 175
6.2 使用一個現(xiàn)有的表創(chuàng)建一個新表 175
6.3 修改一個表的現(xiàn)有數(shù)據(jù) 177
6.4 向一個現(xiàn)有的表添加行 180
6.5 自動提交、提交和回滾 182
6.6 事務 184
6.7 修改和刪除現(xiàn)有的行 185
執(zhí)行回滾 187
6.8 把一個值修改為空值 188
6.9 修改表的結構 190
進行復雜的修改 197
6.10 刪除表 197
6.11 本章總結 198
6.12 復習題 199
6.13 案例練習 199
第7章 數(shù)據(jù)庫管理 203
7.1 簡介 203
7.2 創(chuàng)建和使用視圖 203
7.3 使用視圖更新數(shù)據(jù) 212
7.3.1 更新行列子集視圖 212
7.3.2 更新涉及連接的視圖 214
7.3.3 更新涉及統(tǒng)計數(shù)據(jù)的視圖 218
7.4 刪除視圖 218
7.5 安全 219
7.6 索引 222
7.6.1 創(chuàng)建索引 225
7.6.2 刪除索引 226
7.6.3 創(chuàng)建唯一性索引 227
7.7 系統(tǒng)目錄 228
系統(tǒng)目錄的更新 231
7.8 SQL的完整性約束 232
7.9 本章總結 235
7.10 復習題 237
7.11 案例練習 238
第8章 函數(shù)、存儲過程、觸發(fā)器 242
8.1 簡介 242
8.2 在編程環(huán)境中使用SQL 242
8.3 使用函數(shù) 244
8.3.1 字符函數(shù) 244
8.3.2 數(shù)值函數(shù) 245
8.3.3 對日期進行操作 246
8.4 連接列 251
8.5 在MySQL中使用存儲過程 255
提取單行和單列 256
8.6 錯誤處理 259
8.7 使用更新存儲過程 262
8.7.1 使用更新存儲過程修改數(shù)據(jù) 262
8.7.2 使用更新存儲過程刪除數(shù)據(jù) 264
8.8 使用存儲過程選擇多行 265
8.8.1 使用游標 265
8.8.2 打開游標 266
8.8.3 從游標提取行 267
8.8.4 關閉游標 268
8.8.5 使用游標編寫一個完整的存儲過程 269
8.8.6 使用更復雜的游標 270
8.8.7 游標的優(yōu)點 272
8.9 在Oracle中使用PL/SQL 272
8.9.1 PL/SQL的錯誤處理 274
8.9.2 在PL/SQL中使用游標編寫一個完整的存儲過程 276
8.10 在SQL Server中使用T-SQL 277
8.10.1 在T-SQL中提取單行和單列 277
8.10.2 在T-SQL中使用存儲過程修改數(shù)據(jù) 277
8.10.3 在T-SQL中使用存儲過程刪除數(shù)據(jù) 278
8.10.4 在T-SQL中使用游標 278
8.10.5 在T-SQL中使用更復雜的游標 279
8.11 使用觸發(fā)器 280
8.12 本章總結 286
8.13 復習題 288
8.14 案例練習 289
附錄A SQL參考 293
A.1 別名 293
A.2 ALTER TABLE指令 293
A.3 列或表達式列表(SELECT子句) 294
A.3.1 計算列 294
A.3.2 DISTINCT操作符 294
A.3.3 函數(shù) 295
A.4 COMMIT指令 295
A.5 條件 296
A.5.1 簡單條件 296
A.5.2 復合條件 296
A.5.3 BETWEEN條件 296
A.5.4 LIKE條件 297
A.5.5 IN條件 297
A.5.6 EXISTS條件 297
A.5.7 ALL和ANY條件 298
A.6 CREATE INDEX指令 298
A.7 CREATE TABLE指令 298
A.8 CREATE VIEW指令 299
A.9 數(shù)據(jù)類型 300
A.10 刪除行 300
A.11 DESCRIBE 301
A.12 DROP INDEX指令 301
A.13 DROP TABLE指令 301
A.14 DROP VIEW指令 302
A.15 GRANT指令 302
A.16 INSERT INTO(查詢)指令 303
A.17 INSERT INTO(值)指令 303
A.18 表的完整性 304
A.19 REVOKE指令 304
A.20 ROLLBACK指令 305
A.21 SELECT指令 305
A.22 子查詢 306
A.23 UNION、INTERSECT、MINUS子句 307
A.24 UPDATE指令 308
附錄B SQL參考使用指南 309
附錄C 編寫查詢指令的10條戒律 312