SQL 入門經典, 6/e

賴安·斯蒂芬斯(Ryan Stephens)

  • SQL 入門經典, 6/e-preview-1
  • SQL 入門經典, 6/e-preview-2
SQL 入門經典, 6/e-preview-1

買這商品的人也買了...

相關主題

商品描述

本書詳細介紹了SQL語言的基本語法、基本概念,說明瞭各種SQL實現與ANSI標準之間的差別。書中包含了大量的範例,直觀地說明瞭如何使用SQL對數據進行處理。每章後面還有針對性很強的測驗與練習,能夠幫助讀者更好地理解和掌握學習的內容。在最後的附錄里還有關於安裝MySQL的詳細介紹、書中用到的關鍵SQL語句、測驗和練習的答案。

本書的內容層次清晰,針對性強,非常適合初學者作為入門教材。

作者簡介

Ryan Stephens是Perpetual Technologies公司以及Indy Data Partners公司(位于印第安纳波利斯)的联合创始人兼CEO。Ryan在IT领域有20多年的研究和咨询经历,擅长数据管理、SQL和Oracle。Ryan在印第安纳大学-普渡大学印第安纳波利斯联合分校创办并讲授了5年的数据库和SQL课程,他还为印第安纳陆军国民警卫队担任了12年的程序分析员(programmer analyst)。Ryan已经为Sams Publishing编写了多本数据库和SQL相关的图书。

Arie D. Jones是Indy Data Partners(IDP)公司(位于印第安纳波利斯)新兴技术(Emerging Technologies)部门的副总裁,领导着一个专家小组负责数据库环境与应用程序的规划、设计、开发、部署和管理,从而让每个客户都获得最佳的工具与服务的组合。他还是技术活动的定期发言人,并且在数据库方面出版了多本图书,并发表了多篇文章。

Ronald Plew已经从Perpetual Technologies公司的联合创始人和副总裁的位置上退休,他在关系数据库技术领域有20多年的研究和咨询经验,还为Sams Publishing合著了多本图书。Ron在印第安纳大学-普渡大学印第安纳波利斯联合分校讲授了5年的数据库和SQL课程。他还曾经担任过印第安纳陆军国民警卫队的程序分析员。

目錄大綱

第 1章 歡迎來到SQL世界 1

1.1 SQL定義及歷史 1

1.1.1 什麽是SQL 2

1.1.2 什麽是ANSI SQL 2

1.1.3 當前標準:SQL-2011 2

1.1.4 什麽是數據庫 3

1.1.5 關系數據庫 4

1.1.6 客戶端/服務器技術 4

1.1.7 基於Web的數據庫系統 5

1.1.8 主流數據庫廠商 5

1.2 SQL會話 6

1.2.1 CONNECT 6

1.2.2 DISCONNECT和EXIT 6

1.3 SQL命令的類型 6

1.3.1 定義數據庫結構 7

1.3.2 操作數據 7

1.3.3 選擇數據 7

1.3.4 數據控制語言 8

1.3.5 數據管理命令 8

1.3.6 事務控制命令 8

1.4 本書使用的數據庫 8

1.4.1 表命名標準 10

1.4.2 實例數據一瞥 10

1.4.3 表的構成 10

1.4.4 示例和練習 11

1.5 小結 11

1.6 問與答 12

1.7 實踐 12

1.7.1 測驗 12

1.7.2 練習 12

第 2章 定義數據結構 14

2.1 數據是什麽 14

2.2 基本數據類型 14

2.2.1 定長字符串 15

2.2.2 變長字符串 16

2.2.3 大對象類型 16

2.2.4 數值類型 16

2.2.5 小數類型 17

2.2.6 整數 17

2.2.7 浮點數 18

2.2.8 日期和時間類型 18

2.2.9 直義字符串 19

2.2.10 NULL數據類型 19

2.2.11 布爾值 20

2.2.12 自定義類型 20

2.2.13 域 20

2.3 小結 21

2.4 問與答 21

2.5 實踐 22

2.5.1 測驗 22

2.5.2 練習 22

第3章 管理數據庫對象 25

3.1 數據庫對象和模式 25

3.2 表:數據的主要存儲方式 27

3.2.1 列 27

3.2.2 行 27

3.2.3 CREATE TABLE語句 28

3.2.4 命名規範 29

3.2.5 ALTER TABLE命令 29

3.2.6 從現有表新建另一個表 32

3.2.7 刪除表 33

3.3 完整性約束 33

3.3.1 主鍵約束 34

3.3.2 唯一性約束 34

3.3.3 外鍵約束 35

3.3.4 NOT NULL約束 36

3.3.5 檢查約束 36

3.3.6 去除約束 37

3.4 小結 37

3.5 問與答 37

3.6 實踐 38

3.6.1 測驗 38

3.6.2 練習 38

第4章 規格化過程 41

4.1 規格化數據庫 41

4.1.1 原始數據庫 42

4.1.2 數據庫邏輯設計 42

4.1.3 規格形式 43

4.1.4 命名規範 45

4.1.5 規格化的優點 46

4.1.6 規格化的缺點 46

4.2 去規格化數據庫 47

4.3 小結 47

4.4 問與答 47

4.5 實踐 48

4.5.1 測驗 48

4.5.2 練習 48

第5章 操作數據 50

5.1 數據操作概述 50

5.2 用新數據填充表 50

5.2.1 把數據插入到表 51

5.2.2 將數據插入到表的特定列中 52

5.2.3 從另一個表插入數據 53

5.2.4 插入NULL值 54

5.3 更新現有數據 55

5.3.1 更新一列的數據 55

5.3.2 更新一條或多條記錄中的

多個字段 56

5.4 從表中刪除數據 57

5.5 小結 57

5.6 問與答 58

5.7 實踐 58

5.7.1 測驗 58

5.7.2 練習 58

第6章 管理數據庫事務 61

6.1 什麽是事務 61

6.2 控制事務 62

6.2.1 COMMIT命令 62

6.2.2 ROLLBACK命令 64

6.2.3 SAVEPOINT命令 65

6.2.4 ROLLBACK TO SAVEPOINT

命令 65

6.2.5 RELEASE SAVEPOINT命令 67

6.2.6 SET TRANSACTION命令 68

6.3 低劣的事務控制 68

6.4 小結 68

6.5 問與答 68

6.6 實踐 69

6.6.1 測驗 69

6.6.2 練習 69

第7章 數據庫查詢 71

7.1 SELECT語句 71

7.1.1 SELECT語句 72

7.1.2 FROM子句 74

7.1.3 WHERE子句 74

7.1.4 ORDER BY子句 75

7.1.5 大小寫敏感性 77

7.2 編寫查詢語句 78

7.2.1 統計表中的記錄數量 79

7.2.2 從另一個用戶表裡選擇

數據 80

7.2.3 使用字段別名 80

7.3 小結 81

7.4 問與答 81

7.5 實踐 82

7.5.1 測驗 82

7.5.2 練習 82

第8章 使用操作符對數據進行分類 84

8.1 什麽是SQL里的操作符 84

8.2 比較操作符 84

8.2.1 相等 85

8.2.2 不等於 85

8.2.3 小於和大於 86

8.2.4 比較操作符的組合 87

8.3 邏輯操作符 88

8.3.1 IS NULL 88

8.3.2 BETWEEN 89

8.3.3 IN 89

8.3.4 LIKE 90

8.3.5 EXISTS 91

8.3.6 ALL、SOME和ANY

操作符 91

8.4 連接操作符 93

8.4.1 AND 93

8.4.2 OR 94

8.5 求反操作符 95

8.5.1 不相等 96

8.5.2 NOT BETWEEN 96

8.5.3 NOT IN 97

8.5.4 NOT LIKE 97

8.5.5 IS NOT NULL 98

8.5.6 NOT EXISTS 99

8.6 算術操作符 99

8.6.1 加法 99

8.6.2 減法 100

8.6.3 乘法 100

8.6.4 除法 100

8.6.5 算術操作符的組合 101

8.7 小結 102

8.8 問與答 102

8.9 實踐 102

8.9.1 測驗 102

8.9.2 練習 103

 

第9章 匯總查詢得到的數據 104

9.1 聚合函數 104

9.1.1 COUNT函數 105

9.1.2 SUM函數 106

9.1.3 AVG函數 107

9.1.4 MAX函數 109

9.1.5 MIN函數 109

9.2 小結 110

9.3 問與答 110

9.4 實踐 111

9.4.1 測驗 111

9.4.2 練習 112

第 10章 數據排序與分組 113

10.1 為什麽要對數據進行分組 113

10.2 GROUP BY子句 113

10.2.1 分組函數 114

10.2.2 對選中的數據進行分組 114

10.2.3 創建分組和使用聚合函數 114

10.3 GROUP BY與ORDER BY

的對比 118

10.4 CUBE和ROLLUP語句 120

10.5 HAVING子句 121

10.6 小結 122

10.7 問與答 123

10.8 實踐 123

10.8.1 測驗 123

10.8.2 練習 124

第 11章 重構數據的外觀 125

11.1 ANSI字符函數 125

11.2 常用字符函數 126

11.2.1 串接函數 126

11.2.2 UPPER函數 127

11.2.3 LOWER函數 128

11.2.4 SUBSTR函數 129

11.2.5 TRANSLATE函數 130

11.2.6 REPLACE函數 130

11.2.7 LTRIM函數 131

11.2.8 RTRIM函數 132

11.3 其他字符函數 133

11.3.1 LENGTH函數 133

11.3.2 ISNULL函數(NULL值

檢查程序) 133

11.3.3 COALESCE函數 134

11.3.4 LPAD函數 134

11.3.5 RPAD函數 135

11.3.6 ASCII函數 135

11.4 算術函數 135

11.5 轉換函數 136

11.5.1 字符串轉換為數值 136

11.5.2 數值轉換為字符串 137

11.6 字符函數的組合使用 138

11.7 小結 139

11.8 問與答 139

11.9 實踐 140

11.9.1 測驗 140

11.9.2 練習 140

第 12章 日期和時間 142

12.1 日期是如何存儲的 142

12.1.1 日期和時間的標準

 數據類型 142

12.1.2 DATETIME元素 143

12.1.3 不同實現的日期類型 143

12.2 日期函數 144

12.2.1 當前日期 144

12.2.2 時區 144

12.2.3 時間與日期相加 145

12.2.4 其他日期函數 147

12.3 日期轉換 147

12.3.1 日期描述 148

12.3.2 日期轉換為字符串 150

12.3.3 字符串轉換為日期 150

12.4 小結 151

12.5 問與答 151

12.6 實踐 152

12.6.1 測驗 152

12.6.2 練習 152

 

第 13章 在查詢中連接表 153

13.1 從多個表獲取數據 153

13.2 連接 153

13.2.1 等值連接 154

13.2.2 使用表的別名 155

13.2.3 不等值連接 156

13.2.4 外部連接 157

13.2.5 自連接 159

13.2.6 連接多個主鍵 161

13.3 需要考慮的連接事項 161

13.3.1 使用基表 162

13.3.2 笛卡兒積 162

13.4 小結 164

13.5 問與答 164

13.6 實踐 164

13.6.1 測驗 165

13.6.2 練習 165

第 14章 使用子查詢定義未知數據 166

14.1 什麽是子查詢 166

14.1.1 子查詢與SELECT語句 167

14.1.2 子查詢與INSERT語句 169

14.1.3 子查詢與UPDATE語句 169

14.1.4 子查詢與DELETE語句 170

14.2 嵌套的子查詢 171

14.3 關聯子查詢 174

14.4 子查詢的效率 175

14.5 小結 176

14.6 問與答 176

14.7 實踐 176

14.7.1 測驗 177

14.7.2 練習 177

第 15章 將多個查詢組合成一個 178

15.1 單查詢與組合查詢 178

15.2 組合查詢操作符 179

15.2.1 UNION操作符 179

15.2.2 UNION ALL操作符 180

15.2.3 INTERSECT操作符 181

15.2.4 EXCEPT操作符 182

15.3 在組合查詢中使用

 ORDER BY 183

15.4 在組合查詢中使用

 GROUP BY 184

15.5 獲取準確的數據 185

15.6 小結 186

15.7 問與答 186

15.8 實踐 186

15.8.1 測驗 187

15.8.2 練習 187

第 16章 利用索引改善性能 188

16.1 什麽是索引 188

16.2 索引是如何工作的 188

16.3 CREATE INDEX命令 189

16.4 索引的類型 190

16.4.1 單字段索引 190

16.4.2 唯一索引 190

16.4.3 組合索引 191

16.4.4 隱式索引 191

16.5 何時考慮使用索引 191

16.6 何時應該避免使用索引 192

16.7 修改索引 193

16.8 刪除索引 193

16.9 小結 194

16.10 問與答 194

16.11 實踐 194

16.11.1 測驗 194

16.11.2 練習 195

第 17章 改善數據庫性能 196

17.1 什麽是SQL語句調整 196

17.2 數據庫調整與SQL語句

 調整 196

17.3 格式化SQL語句 197

17.3.1 為提高可讀性格式化SQL

 語句 197

17.3.2 FROM子句中的表 199

17.3.3 連接條件的次序 199

17.3.4 最嚴格條件 199

17.4 全表掃描 201

17.5 其他性能考慮 202

17.5.1 使用LIKE操作符和

 通配符 202

17.5.2 避免使用OR操作符 203

17.5.3 避免使用HAVING子句 203

17.5.4 避免大規模排序操作 204

17.5.5 使用存儲過程 204

17.5.6 在批量加載時禁用索引 204

17.6 基於成本的優化 204

17.7 小結 205

17.8 問與答 206

17.9 實踐 206

17.9.1 測驗 206

17.9.2 練習 206

第 18章 管理數據庫用戶 208

18.1 數據庫的用戶管理 208

18.1.1 用戶的類型 209

18.1.2 誰管理用戶 209

18.1.3 用戶在數據庫中的位置 209

18.1.4 用戶與模式的區別 210

18.2 管理過程 210

18.2.1 創建用戶 210

18.2.2 創建模式 212

18.2.3 刪除模式 214

18.2.4 調整用戶 214

18.2.5 用戶會話 215

18.2.6 刪除用戶訪問權限 215

18.3 數據庫用戶使用的工具 215

18.4 小結 216

18.5 問與答 216

18.6 實踐 216

18.6.1 測驗 217

18.6.2 練習 217

第 19章 管理數據庫安全 218

19.1 什麽是數據庫安全 218

19.2 什麽是權限 219

19.2.1 系統權限 219

19.2.2 對象權限 220

19.2.3 誰負責授予和撤銷權限 221

19.3 控制用戶訪問 221

19.3.1 GRANT命令 221

19.3.2 REVOKE命令 222

19.3.3 控制對單獨字段的訪問 222

19.3.4 PUBLIC數據庫賬戶 222

19.3.5 權限組 223

19.4 通過角色控制權限 223

19.4.1 CREATE ROLE語句 224

19.4.2 DROP ROLE語句 224

19.4.3 SET ROLE語句 224

19.5 小結 225

19.6 問與答 225

19.7 實踐 226

19.7.1 測驗 226

19.7.2 練習 226

第 20章 創建並使用視圖和異名 227

20.1 什麽是視圖 227

20.1.1 使用視圖來簡化數據訪問 228

20.1.2 使用視圖作為一種安全角式 228

20.1.3 使用視圖來維護匯總數據 228

20.2 創建視圖 229

20.2.1 從一個表創建視圖 229

20.2.2 從多個表創建視圖 231

20.2.3 從視圖創建視圖 231

20.3 WITH CHECK OPTION 232

20.4 從視圖創建表 233

20.5 視圖與ORDER BY子句 234

20.6 通過視圖更新數據 234

20.7 刪除視圖 235

20.8 嵌套視圖對性能的影響 235

20.9 什麽是異名 235

20.9.1 創建異名 236

20.9.2 刪除異名 236

20.10 小結 237

20.11 問與答 237

20.12 實踐 237

20.12.1 測驗 237

20.12.2 練習 238

第 21章 使用系統目錄 239

21.1 什麽是系統目錄 239

21.2 如何創建系統目錄 240

21.3 系統目錄中包含什麽內容 240

21.3.1 用戶數據 241

21.3.2 安全信息 241

21.3.3 數據庫設計信息 241

21.3.4 性能統計信息 241

21.4 不同實現中的系統目錄表 241

21.5 查詢系統目錄 242

21.6 更新系統目錄對象 244

21.7 小結 245

21.8 問與答 245

21.9 實踐 245

21.9.1 測驗 245

21.9.2 練習 246

第 22章 高級SQL主題 247

22.1 游標 247

22.1.1 打開游標 248

22.1.2 從游標獲取數據 248

22.1.3 關閉游標 249

22.2 存儲過程和函數 250

22.3 觸發器 251

22.3.1 CREATE TRIGGER語句 251

22.3.2 DROP TRIGGER語句 253

22.4 動態SQL 253

22.5 調用級接口 253

22.6 使用SQL生成SQL 254

22.7 直接SQL與嵌入SQL 254

22.8 窗口表格函數 255

22.9 使用XML 255

22.10 小結 256

22.11 問與答 256

22.12 實踐 256

22.12.1 測驗 257

22.12.2 練習 257

第 23章 將SQL擴展到企業、

 互聯網和內聯網 258

23.1 SQL與企業 258

23.1.1 後端程序 258

23.1.2 前端程序 259

23.2 訪問遠程數據庫 259

23.2.1 ODBC 260

23.2.2 JDBC 260

23.2.3 OLE DB 260

23.2.4 廠商連接產品 260

23.2.5 Web接口 261

23.3 SQL與互聯網 261

23.3.1 讓數據供全世界的

 顧客使用 262

23.3.2 向雇員和授權顧客

 提供數據 262

23.4 SQL與內聯網 262

23.5 小結 263

23.6 問與答 263

23.7 實踐 263

23.7.1 測驗 264

23.7.2 練習 264

第 24章 標準SQL的擴展 265

24.1 各種實現 265

24.1.1 不同實現之間的區別 265

24.1.2 遵循ANSI SQL 266

24.1.3 SQL的擴展 267

24.2 擴展示例 267

24.2.1 Transact-SQL 268

24.2.2 PL/SQL 268

24.2.3 MySQL 269

24.3 交互式SQL語句 269

24.4 小結 270

24.5 問與答 270

24.6 實踐 271

附錄A 常用SQL命令 272

附錄B 安裝Oracle和Microsoft SQL 277

附錄C 測驗和練習的答案 280

附錄D 額外練習 314

術語表 325