《精通Oracle Database 12c SQL & PL/SQL編程(第3版)》是2014年出版的圖書,作者是美國作家Jason Price。
基本介紹
- 書名:精通Oracle Database 12c SQL & PL/SQL編程(第3版)
- 作者:[美]Jason Price
- 譯者:盧濤
- ISBN:9787302365983
- 定價:79.8元
- 出版時間:2014-6-17
- 裝幀:平裝
圖書詳細信息,圖書簡介,目錄,
圖書詳細信息
精通Oracle Database 12c SQL & PL/SQL編程(第3版)
作者:[美]Jason Price 著 盧濤 譯 ISBN:9787302365983
定價:79.8元
印次:1-1
裝幀:平裝
定價:79.8元
印次:1-1
裝幀:平裝
印刷日期:2014-6-17
圖書簡介
學習通過編寫SQL語句並構建PL/SQL程式來訪問Oracle資料庫。《精通OracleDatabase12cSQL&PL/SQL編程(第3版)》完全涵蓋了最新版本Oracle資料庫的功能和技術,指導讀者編寫SQL語句以檢索和修改資料庫中的信息、掌握SQL*Plus和SQLDeveloper、處理資料庫對象、編寫PL/SQL程式、採用性能最佳化技術、結合XML以及其他技術。這本Oracle指南包含掌握SQL所需的全部知識。
目錄
第1章簡介 1
1.1關係資料庫簡介 1
1.2SQL簡介 2
1.3使用SQL*Plus 4
1.3.1啟動SQL*Plus 4
1.3.2從命令行啟動SQL*Plus 4
1.3.3使用SQL*Plus執行SELECT語句 5
1.4使用SQLDeveloper 6
1.5創建store模式 8
1.5.1檢查腳本 8
1.5.2運行腳本 10
1.5.3用來創建store模式的DDL語句 11
1.6添加、修改和刪除行 17
1.6.1向表中添加行 17
1.6.2修改表中的現有行 19
1.6.3從表中刪除行 20
1.7連線資料庫和下線 20
1.8退出SQL*Plus 20
1.9OraclePL/SQL簡介 21
1.10小結 22
第2章從資料庫表中檢索信息 23
2.1對單表執行SELECT語句 24
2.2選擇一個表中的所有列 24
2.3使用WHERE子句限定行 25
2.4行標識符 25
2.5行號 26
2.6執行算術運算 26
2.6.1執行日期運算 27
2.6.2列運算 28
2.6.3算術運算操作符的優先權 29
2.7使用列別名 29
2.8使用連線操作合併列的輸出結果 30
2.9空值 31
2.10禁止顯示重複行 32
2.11比較值 33
2.11.1使用不等於操作符 33
2.11.2使用大於操作符 34
2.11.3使用小於或等於操作符 34
2.11.4使用ANY操作符 34
2.11.5使用ALL操作符 35
2.12使用SQL操作符 35
2.12.1使用LIKE操作符 36
2.12.2使用IN操作符 37
2.12.3使用BETWEEN操作符 38
2.13使用邏輯操作符 38
2.13.1使用AND操作符 38
2.13.2使用OR操作符 39
2.14邏輯操作符的優先權 39
2.15使用ORDERBY子句對行進行排序 40
2.16執行使用兩個表的SELECT語句 41
2.17使用表別名 43
2.18笛卡爾積 43
2.19執行使用多於兩個表的SELECT語句 44
2.20連線條件和連線類型 45
2.20.1不等連線 46
2.20.2外連線 46
2.20.3自連線 50
2.21使用SQL/92語法執行連線 51
2.21.1使用SQL/92標準語法執行兩個表的內連線 51
2.21.2使用USING關鍵字簡化連線 51
2.21.3使用SQL/92執行多於兩個表的內連線 52
2.21.4使用SQL/92執行多列的內連線 53
2.21.5使用SQL/92執行外連線 53
2.21.6使用SQL/92執行自連線 55
2.21.7使用SQL/92執行交叉連線 55
2.22小結 55
第3章使用SQL*Plus 57
3.1查看錶的結構 58
3.2編輯SQL語句 58
3.3保存、檢索並運行檔案 60
3.4格式化列 63
3.5設定頁面大小 65
3.6設定行大小 66
3.7清除列的格式 67
3.8使用變數 67
3.8.1臨時變數 67
3.8.2已定義變數 70
3.9創建簡單報表 73
3.9.1在腳本中使用臨時變數 73
3.9.2在腳本中使用已定義變數 73
3.9.3向腳本中的變數傳遞值 74
3.9.4添加頁眉和頁腳 75
3.9.5計算小計 76
3.10從SQL*Plus獲取幫助信息 78
3.11自動生成SQL語句 79
3.12斷開資料庫連線並退出SQL*Plus 79
3.13小結 79
第4章使用簡單函式 81
4.1使用單行函式 82
4.1.1字元函式 82
4.1.2數值函式 91
4.1.3轉換函式 96
4.1.4正則表達式函式 106
4.2使用聚合函式 112
4.3對行進行分組 116
4.3.1使用GROUPBY子句對行進行分組 116
4.3.2調用聚合函式的錯誤用法 119
4.3.3使用HAVING子句過濾行組 120
4.3.4組合使用WHERE和GROUPBY子句 120
4.4小結 122
第5章日期和時間的存儲與處理 123
5.1幾個簡單的存儲和檢索日期的例子 123
5.2使用TO_CHAR()和TO_DATE()轉換時間值 125
5.2.1使用TO_CHAR()將時間值轉換為字元串 125
5.2.2使用TO_DATE()將字元串轉換為時間值 130
5.3設定默認的日期格式 132
5.4Oracle對兩位年份的處理 133
5.4.1使用YY格式 133
5.4.2使用RR格式 134
5.5使用時間值函式 135
5.6使用時區 140
5.6.1與時區有關的函式 140
5.6.2資料庫時區和會話時區 141
5.6.3獲取時區的時差 142
5.6.4獲取時區名 142
5.6.5將時間值從一個時區轉換為另一個時區 143
5.7使用時間戳 143
5.7.1使用時間戳類型 143
5.7.2與時間戳有關的函式 147
5.8使用時間間隔 152
5.8.3與時間間隔有關的函式 157
5.9小結 158
第6章子查詢 159
6.1子查詢的類型 159
6.2編寫單行子查詢 160
6.2.1在WHERE子句中使用子查詢 160
6.2.2使用其他單行操作符 161
6.2.3在HAVING子句中使用子查詢 161
6.2.4在FROM子句中使用子查詢(內聯視圖) 162
6.2.5可能碰到的錯誤 163
6.3編寫多行子查詢 164
6.3.1在多行子查詢中使用IN操作符 165
6.3.2在多行子查詢中使用ANY操作符 165
6.3.3在多行子查詢中使用ALL操作符 166
6.4編寫多列子查詢 166
6.5編寫關聯子查詢 167
6.5.1關聯子查詢的例子 167
6.5.2在關聯子查詢中使用EXISTS和NOTEXISTS 168
6.6編寫嵌套子查詢 170
6.7編寫包含子查詢的UPDATE和DELETE語句 172
6.7.1編寫包含子查詢的UPDATE語句 172
6.7.2編寫包含子查詢的DELETE語句 172
6.8使用子查詢因子化 173
6.9小結 174
第7章高級查詢 175
7.1使用集合操作符 176
7.1.1示例表 176
7.1.2使用UNIONALL操作符 177
7.1.3使用UNION操作符 178
7.1.4使用INTERSECT操作符 179
7.1.5使用MINUS操作符 179
7.1.6組合使用集合操作符 180
7.2使用TRANSLATE()函式 182
7.3使用DECODE()函式 183
7.4使用CASE表達式 185
7.4.1使用簡單CASE表達式 185
7.4.2使用搜尋CASE表達式 186
7.5層次化查詢 187
7.5.1示例數據 187
7.5.2使用CONNECTBY和STARTWITH子句 189
7.5.3使用偽列LEVEL 190
7.5.4格式化層次化查詢的結果 190
7.5.5從非根節點開始遍歷191
7.5.6在STARTWITH子句中使用子查詢 192
7.5.7從下向上遍歷樹 192
7.5.8從層次化查詢中刪除節點和分支 193
7.5.9在層次化查詢中加入其他條件 194
7.5.10使用遞歸子查詢因子化查詢分層數據 194
7.6使用ROLLUP和CUBE子句 198
7.6.1示例表 199
7.6.2使用ROLLUP子句 200
7.6.3使用CUBE子句 203
7.6.4使用GROUPING()函式 204
7.6.5使用GROUPINGSETS子句 207
7.6.6使用GROUPING_ID()函式 207
7.6.7在GROUPBY子句中多次使用某個列 209
7.6.8使用GROUP_ID()函式 210
7.7使用CROSSAPPLY和OUTERAPPLY 211
7.7.1CROSSAPPLY 212
7.7.2OUTERAPPLY 212
7.8使用LATERAL 213
7.9小結 214
第8章分析數據 215
8.1使用分析函式 215
8.1.1示例表 216
8.1.2使用評級函式 217
8.1.3使用反百分位函式 223
8.1.4使用視窗函式 224
8.1.5使用報表函式 230
8.1.6使用LAG()和LEAD()函式 233
8.1.7使用FIRST和LAST函式 234
8.1.8使用線性回歸函式 234
8.1.9使用假想評級與分布函式 235
8.2使用MODEL子句 236
8.2.1MODEL子句示例 236
8.2.2用位置標記和符號標記訪問數據單元 238
8.2.3用BETWEEN和AND返回特定範圍內的數據單元 239
8.2.4用ANY和ISANY訪問所有的數據單元 239
8.2.5用CURRENTV()函式獲取某個維度的當前值 239
8.2.6用FOR循環訪問數據單元 240
8.2.7處理空值和缺失值 242
8.2.8更新已有的單元 244
8.3使用PIVOT和UNPIVOT子句 245
8.3.1PIVOT子句的簡單示例 245
8.3.2轉換多個列 246
8.3.3在轉換中使用多個聚合函式 247
8.3.4使用UNPIVOT子句 248
8.4執行Top-N查詢 249
8.4.1使用FETCHFIRST子句 250
8.4.2使用OFFSET子句 250
8.4.3使用PERCENT子句 251
8.4.4使用WITHTIES子句 252
8.5在數據中發現模式 252
8.5.1在all_sales2表中發現V形數據模式 253
8.5.2在all_sales3表中發現W型數據模式 256
8.5.3在all_sales3表中發現V形數據模式 257
8.6小結 258
第9章修改表的內容 259
9.1使用INSERT語句添加行 260
9.1.1省略列的列表 261
9.1.2為列指定空值 261
9.1.3在列值中使用單引號和雙引號 261
9.1.4從一個表向另一個表複製行 262
9.2使用UPDATE語句修改行 262
9.3使用RETURNING子句返回聚合函式的計算結果 263
9.4使用DELETE語句刪除行 264
9.5資料庫的完整性 264
9.5.1主鍵約束 264
9.5.2外鍵約束 265
9.6使用默認值 266
9.7使用MERGE合併行 267
9.8資料庫事務 269
9.8.1事務的提交和回滾 269
9.8.2事務的開始與結束 270
9.8.3保存點 271
9.8.4事務的ACID特性 272
9.8.5並發事務 273
9.8.6事務鎖 274
9.8.7事務隔離級別 274
9.8.8SERIALIZABLE事務隔離級別的一個例子 275
9.9查詢閃回 276
9.9.1授權使用閃回 276
9.9.2時間查詢閃回 277
9.9.3SCN查詢閃回 278
9.10小結 280
第10章用戶、特權和角色 281
10.1用戶 282
10.1.1創建用戶 282
10.1.2修改用戶密碼 283
10.1.3刪除用戶 283
10.2系統特權 284
10.2.1向用戶授予系統特權 284
10.2.2檢查授予用戶的系統特權 285
10.2.3使用系統特權 286
10.2.4撤消用戶的系統特權 286
10.3對象特權 287
10.3.1向用戶授予對象特權 287
10.3.2檢查已授予的對象特權 288
10.3.3檢查已接受的對象特權 289
10.3.4使用對象特權 291
10.3.5創建同義詞 291
10.3.6創建公共同義詞 292
10.3.7撤消用戶的對象特權 293
10.4角色 293
10.4.1創建角色 293
10.4.2為角色授權 294
10.4.3將角色授予用戶 294
10.4.4檢查授予用戶的角色 294
10.4.5檢查授予角色的系統特權 296
10.4.6檢查授予角色的對象特權 296
10.4.7使用已授予角色的特權 298
10.4.8啟用和禁用角色 299
10.4.9撤消角色 300
10.4.10從角色中撤消特權 300
10.4.11刪除角色 300
10.5審計 300
10.5.1執行審計需要的特權 300
10.5.2審計示例 301
10.5.3審計跟蹤視圖 302
10.6小結 303
第11章創建表、序列、索引和視圖 305
11.1表 305
11.1.1創建表 306
11.1.2獲得有關表的信息 307
11.1.3獲得表中列的信息 308
11.1.4修改表 308
11.1.5重命名表 317
11.1.6向表中添加注釋 317
11.1.7截斷表 318
11.1.8刪除表 318
11.1.9使用BINARY_FLOAT和BINARY_DOUBLE數據類型 319
11.1.10使用DEFAULTONNULL列 320
11.1.11在表中使用可見及不可見列 321
11.2序列 323
11.2.1創建序列 324
11.2.2獲取有關序列的信息 325
11.2.3使用序列 326
11.2.4使用序列填充主鍵 328
11.2.5使用序列指定默認列值 329
11.2.6使用標識列 329
11.2.7修改序列 330
11.2.8刪除序列 330
11.3索引 331
11.3.1創建B-樹索引 331
11.3.2創建基於函式的索引 332
11.3.3獲取有關索引的信息 333
11.3.4獲取列索引的信息 333
11.3.5修改索引 334
11.3.6刪除索引 334
11.3.7創建點陣圖索引 334
11.4視圖 335
11.4.1創建並使用視圖 336
11.4.2修改視圖 343
11.4.3刪除視圖 343
11.4.4在視圖中使用可見列和不可見列 343
11.5閃回數據歸檔 344
11.6小結 347
第12章PL/SQL編程簡介 349
12.1塊結構 350
12.2變數和類型 351
12.3條件邏輯 352
12.4循環 352
12.4.1簡單循環 353
12.4.2WHILE循環 354
12.4.3FOR循環 354
12.5游標 355
12.5.1步驟(1):聲明用於保存列值的變數 355
12.5.2步驟(2):聲明游標 355
12.5.3步驟(3):打開游標 356
12.5.4步驟(4):從游標中取得行 356
12.5.5步驟(5):關閉游標 357
12.5.6完整的示例:product_cursor.sql 357
12.5.7游標與FOR循環 358
12.5.8OPEN-FOR語句 359
12.5.9無約束游標 361
12.6異常 362
12.6.1ZERO_DIVIDE異常 364
12.6.2DUP_VAL_ON_INDEX異常 365
12.6.3INVALID_NUMBER異常 365
12.6.4OTHERS異常 365
12.7過程 366
12.7.1創建過程 366
12.7.2調用過程 368
12.7.3獲取有關過程的信息 369
12.7.4刪除過程 370
12.7.5查看過程中的錯誤 370
12.8函式 371
12.8.1創建函式 371
12.8.2調用函式 372
12.8.3獲取有關函式的信息 373
12.8.4刪除函式 373
12.9包 373
12.9.1創建包的規範 373
12.9.2創建包體 374
12.9.3調用包中的函式和過程 375
12.9.4獲取有關包中函式和過程的信息 376
12.9.5刪除包 376
12.10觸發器 377
12.10.1觸發器啟動的時機 377
12.10.2設定示例觸發器 377
12.10.3創建觸發器 377
12.10.4啟動觸發器 379
12.10.5獲取有關觸發器的信息 380
12.10.6禁用和啟用觸發器 382
12.10.7刪除觸發器 382
12.11其他PL/SQL特性 382
12.11.1SIMPLE_INTEGER類型 382
12.11.2在PL/SQL中使用序列 383
12.11.3PL/SQL本地機器代碼生成 384
12.11.4WITH子句 385
12.12小結 386
第13章資料庫對象 387
13.1對象簡介 387
13.2創建對象類型 388
13.3使用DESCRIBE獲取有關對象類型的信息 390
13.4在資料庫表中使用對象類型 391
13.4.1列對象 391
13.4.2對象表 394
13.4.3對象標識符和對象引用 397
13.4.4比較對象值 399
13.6類型繼承 410
13.6.1運行腳本以創建第2個對象模式 411
13.6.2繼承屬性 411
13.7用子類型對象代替超類型對象 413
13.7.1SQL例子 413
13.7.2PL/SQL示例 414
13.7.3NOTSUBSTITUTABLE對象 415
13.8其他有用的對象函式 416
13.8.1ISOF()函式 416
13.8.2TREAT()函式 419
13.8.3SYS_TYPEID()函式 423
13.9NOTINSTANTIABLE對象類型 424
13.10用戶自定義的構造函式 425
13.11重載方法 429
13.12通用調用 430
13.12.1運行腳本以創建第3個對象模式 431
13.12.2繼承屬性 431
13.13小結 432
第14章集合 435
14.1集合簡介 435
14.2創建集合類型 436
14.2.1創建變長數組類型 436
14.2.2創建嵌套表類型 437
14.3使用集合類型定義表列 437
14.3.1使用變長數組類型定義表列 437
14.3.2使用嵌套表類型定義表列 438
14.4 獲取集合信息 438
14.4.1獲取變長數組信息 438
14.4.2獲得嵌套表信息 439
14.5填充集合元素 441
14.5.1填充變長數組元素 441
14.5.2填充嵌套表元素 441
14.6檢索集合元素 442
14.6.1檢索變長數組元素 442
14.6.2檢索嵌套表元素 443
14.7使用TABLE()函式將集合視為一系列行 443
14.7.1將TABLE()函式套用於變長數組 444
14.7.2將TABLE()函式套用於嵌套表 445
14.8更改集合元素 445
14.8.1更改變長數組元素 445
14.8.2更改嵌套表元素 446
14.9使用映射方法比較嵌套表的內容 447
14.10使用CAST()函式將集合從一種類型轉換為另一種類型 449
14.10.1使用CAST()函式將變長數組轉換為嵌套表 449
14.10.2使用CAST()函式將嵌套錶轉換為變長數組 450
14.11在PL/SQL中使用集合 451
14.11.1操作變長數組 451
14.11.2操作嵌套表 453
14.11.3PL/SQL集合方法 455
14.12創建和使用多級集合 464
14.12.1運行腳本創建第二個集合模式 464
14.12.2使用多級集合 464
14.13OracleDatabase10g對集合的增強 467
14.13.1運行腳本以創建第三個集合模式 467
14.13.2關聯數組 467
14.13.3更改元素類型的大小 468
14.13.4增加變長數組中元素的數目 469
14.13.5在臨時表中使用變長數組 469
14.13.6為嵌套表的存儲表使用不同的表空間 469
14.13.7嵌套表對ANSI的支持 470
14.14小結 478
第15章大對象 479
15.1大對象(LOB)簡介 480
15.2示例檔案 480
15.3理解大對象類型 480
15.4創建包含大對象的表 481
15.5在SQL中使用大對象 483
15.5.1使用CLOB和BLOB對象 483
15.5.2使用BFILE對象 485
15.6在PL/SQL中使用大對象 486
15.6.1APPEND()方法 489
15.6.2CLOSE()方法 489
15.6.3COMPARE()方法 489
15.6.4COPY()方法 491
15.6.5CREATETEMPORARY()方法 492
15.6.6ERASE()方法 492
15.6.7FILECLOSE()方法 493
15.6.8FILECLOSEALL()方法 493
15.6.9FILEEXISTS()方法 494
15.6.10FILEGETNAME()方法 494
15.6.11FILEISOPEN()方法 495
15.6.12FILEOPEN()方法 495
15.6.13FREETEMPORARY()方法 496
15.6.14GETCHUNKSIZE()方法 496
15.6.15GETLENGTH()方法 497
15.6.16GET_STORAGE_LIMIT()方法 497
15.6.17INSTR()方法 498
15.6.18ISOPEN()方法 499
15.6.19ISTEMPORARY()方法 499
15.6.20LOADFROMFILE()方法 500
15.6.21LOADBLOBFROMFILE()方法 501
15.6.22LOADCLOBFROMFILE()方法 502
15.6.23OPEN()方法 503
15.6.24READ()方法 503
15.6.25SUBSTR()方法 504
15.6.26TRIM()方法 505
15.6.27WRITE()方法 506
15.6.28WRITEAPPEND()方法 507
15.6.29PL/SQL示例過程 507
15.7LONG和LONGRAW類型 524
15.7.1示例表 524
15.7.2向LONG和LONGRAW列添加數據 525
15.7.3將LONG和LONGRAW列轉換為LOB 525
15.8OracleDatabase10g對大對象的增強 526
15.8.1CLOB和NCLOB對象之間的隱式轉換 527
15.8.2在觸發器中使用LOB時:new屬性的用法 528
15.9OracleDatabase11g對大對象的增強 528
15.9.1加密LOB數據 528
15.9.2壓縮LOB數據 532
15.9.3刪除LOB重複數據 533
15.10OracleDatabase12c對大對象的增強 533
15.11小結 534
第16章SQL最佳化 535
16.1SQL最佳化簡介 535
16.2使用WHERE子句過濾行 536
16.3使用表連線而不是多個查詢 536
16.4執行連線時使用完全限定的列引用 537
16.5使用CASE表達式而不是多個查詢 538
16.6添加表索引 539
16.6.1何時創建B-樹索引 539
16.6.2何時創建點陣圖索引 540
16.7使用WHERE而不是HAVING 540
16.8使用UNIONALL而不是UNION 541
16.9使用EXISTS而不是IN 542
16.10使用EXISTS而不是DISTINCT 543
16.11使用GROUPINGSETS而不是CUBE 543
16.12使用綁定變數 543
16.12.1不相同的SQL語句 544
16.12.2使用綁定變數定義相同的SQL語句 544
16.12.3列出和輸出綁定變數 545
16.12.4使用綁定變數存儲PL/SQL函式的返回值 545
16.12.5使用綁定變數存儲來自REFCURSOR的返回值 546
16.13比較執行查詢的成本 546
16.13.1檢查執行計畫 547
16.13.2比較執行計畫 552
16.14為最佳化器傳遞提示 553
16.15其他最佳化工具 554
16.15.1OracleEnterpriseManager 555
16.15.2AutomaticDatabaseDiagnosticMonitor 555
16.16小結 556
第17章XML和Oracle資料庫 557
17.1XML簡介 557
17.2從關係數據生成XML 558
17.2.1XMLELEMENT()函式 558
17.2.2XMLATTRIBUTES()函式 561
17.2.3XMLFOREST()函式 562
17.2.4XMLAGG()函式 563
17.2.5XMLCOLATTVAL()函式 565
17.2.6XMLCONCAT()函式 566
17.2.7XMLPARSE()函式 566
17.2.8XMLPI()函式 567
17.2.9XMLCOMMENT()函式 567
17.2.10XMLSEQUENCE()函式 568
17.2.11XMLSERIALIZE()函式 569
17.2.12PL/SQL示例:將XML數據寫入檔案 569
17.2.13XMLQUERY()函式 571
17.3將XML保存到資料庫中 575
17.3.1示例XML檔案 575
17.3.2創建示例XML模式 576
17.3.3從示例XML模式檢索信息 577
17.3.4更新示例XML模式中的信息 582
17.4小結 585
附錄Oracle數據類型 587