內容簡介
本書主要內容包括 Oracle的安裝與配置、資料庫的創建、數據表的創建、數據類型和運算符、Oracle函式、查詢數據、數據表的操作(插入、更新與刪除數據)、游標、存儲過程、視圖、觸發器、用戶管理、數據備份與還原、日誌以及性能最佳化等。最後通過兩個綜合案例的資料庫設計,進一步講述 Oracle在實際工作中的套用。重點介紹 Oracle安裝與配置、數據類型和運算符以及數據表的操作。本書注重實戰操作,幫助讀者循序漸進地掌握 Oracle中的各項技術。
本書共有 480個實例,還有大量的經典習題。隨書光碟中贈送了近 20小時培訓班形式的視頻教學錄像,詳細講解了書中每一個知識點和每一個資料庫操作的方法和技巧。同時,光碟中還提供了本書所有例子的原始碼,讀者可以直接查看和調用。
本書適合 Oracle資料庫初學者、Oracle資料庫開發人員和 Oracle資料庫管理員,同時也能作為高等院校相關專業師生的教學用書。
圖書目錄
第 1章初識 Oracle 1
1.1 資料庫基礎 .... 1
1.1.1 什麼是資料庫 .. 1
1.1.2 表 .. 2
1.1.3 數據類型 2
1.1.4 主鍵 ...2
1.2 資料庫技術構成 . 3
1.2.1 資料庫系統 . 3
1.2.2 SQL語言 4
1.2.3 資料庫訪問技術 ... 5
1.3 什麼是 Oracle 12c.... 6
1.3.1 Oracle的發展歷程 .... 6
1.3.2 Oracle 12c版本的新功能.... 7
1.3.3 Oracle的優勢... 9
1.4 Oracle工具 9
1.4.1 SQL Plus. 9
1.4.2 Oracle SQL Developer .. 10
1.5 如何學習 Oracle 11
第 2章 Oracle的安裝與配置... 12
2.1 安裝 Oracle 12c. 12
2.2 啟動服務並登錄 Oracle資料庫 .... 18
2.2.1 啟動 Oracle服務 18
2.2.2 登錄 Oracle資料庫 . 20
2.3 卸載 Oracle 12c. 24
2.4 疑難解惑 . 28
2.5 經典習題 . 30
第 3章資料庫和數據表的基本操作... 31
3.1 創建資料庫 .. 31
3.2 刪除資料庫 .. 34
3.3 創建數據表 .. 38
3.3.1 創建數據表的語法形式 .... 38
3.3.2 使用主鍵約束 39
3.3.3 使用外鍵約束 41
3.3.4 使用非空約束 43
3.3.5 使用唯一性約束 . 45
3.3.6 使用默認約束 46
3.3.7 使用檢查約束 47
3.3.8 設定表的屬性值自動增加 48
3.4 查看數據表結構 .... 49
3.5 修改數據表 .. 50
3.5.1 修改表名 ... 50
3.5.2 修改欄位的數據類型 ... 51
3.5.3 修改欄位名 .... 52
3.5.4 添加欄位 ... 52
3.5.5 刪除欄位 ... 54
3.6 刪除數據表 .. 55
3.6.1 刪除沒有被關聯的表 ... 55
3.6.2 刪除被其他表關聯的主表 55
3.7 綜合案例——數據表的基本操作 . 57
3.8 疑難解惑 . 63
3.9 經典習題 . 65
第 4章數據類型和運算符... 66
4.1 Oracle數據類型介紹.. 66
4.1.1 數值類型 ... 66
4.1.2 日期與時間類型 . 68
4.1.3 字元串類型 .... 71
4.2 如何選擇數據類型 72
4.3 常見運算符介紹 .... 73
4.3.1 運算符概述 .... 73
4.3.2 算術運算符 .... 74
4.3.3 比較運算符 .... 75
4.3.4 邏輯運算符 .... 77
4.3.5 運算符的優先權 . 78
4.4 疑難解惑 . 78
4.5 經典習題 . 79
第 5章 Oracle函式... 80
5.1 Oracle函式簡介 80
5.2 數學函式 . 80
5.2.1 絕對值函式 ABS(x). 81
5.2.2 平方根函式 SQRT(x)和求余函式 MOD(x,y) 81
5.2.3 獲取整數的函式 CEIL(x)和 FLOOR(x).... 82
5.2.4 獲取隨機數的函式 DBMS_RANDOM.RANDOM和 DBMS_RANDOM.VALUE (x,y).... 82
5.2.5 函式 ROUND(x)、ROUND(x,y)和 TRUNC(x,y) .... 83
5.2.6 符號函式 SIGN(x) ... 84
5.2.7 冪運算函式 POWER(x,y)和 EXP(x) .... 84
5.2.8 對數運算函式 LOG(x,y)和 LN(x) ... 85
5.2.9 正弦函式 SIN(x)和反正弦函式 ASIN(x).. 85
5.2.10 餘弦函式 COS(x)和反餘弦函式 ACOS(x) .. 86
5.2.11 正切函式 TAN(x)和反正切函式 ATAN(x) . 86
5.3 字元串函式 .. 87
5.3.1 計算字元串長度的函式 .... 87
5.3.2 合併字元串函式 CONCAT(s1,s2)... 87
5.3.3 字元串搜尋函式 INSTR (s,x) 88
5.3.4 字母大小寫轉換函式 ... 88
5.3.5 獲取指定長度的字元串的函式 SUBSTR(s,m,n) 89
5.3.6 替換字元串的函式 REPLACE(s1,s2,s3)... 89
5.3.7 刪除字元串首尾指定字元的函式 LTRIM(s,n)和 RTRIM(s,n) .. 90
5.3.8 刪除指定字元串的函式 TRIM() 90
5.3.9 字元集名稱和 ID互換函式... 91
5.4 日期和時間函式 .... 91
5.4.1 獲取當前日期和時間的函式 . 92
5.4.2 獲取時區的函式 . 92
5.4.3 獲取指定月份最後一天的函式 .. 93
5.4.4 獲取指定日期後一周的日期的函式 .... 93
5.4.5 獲取指定日期特定部分的函式 .. 93
5.4.6 獲取兩個日期之間的月份數的函式 .... 94
5.5 轉換函式 . 94
5.5.1 字元串轉 ASCII類型字元串函式... 94
5.5.2 二進制轉十進制函式 ... 95
5.5.3 數據類型轉換函式 .. 95
5.5.4 數值轉換為字元串函式 .... 95
5.5.5 字元轉日期函式 . 96
5.5.6 字元串轉數字函式 .. 96
5.6 系統信息函式 ... 97
5.6.1 返回登錄名函式 . 97
5.6.2 返回會話以及上下文信息函式 .. 97
5.7 綜合案例——Oracle函式的使用 . 98
5.8 疑難解惑 .... 100
5.9 經典習題 .... 101
第 6章查詢數據 102
6.1 基本查詢語句 . 102
6.2 單表查詢 .... 105
6.2.1 查詢所有欄位 ... 105
6.2.2 查詢指定欄位 ... 106
6.2.3 查詢指定記錄 ... 108
6.2.4 帶 IN關鍵字的查詢... 110
6.2.5 帶 BETWEEN AND的範圍查詢 .. 111
6.2.6 帶 LIKE的字元匹配查詢 .... 112
6.2.7 查詢空值 . 114
6.2.8 帶 AND的多條件查詢 ... 116
6.2.9 帶 OR的多條件查詢.. 117
6.2.10 查詢結果不重複 .. 118
6.2.11 對查詢結果排序 .. 119
6.2.12 分組查詢 .... 123
6.2.13 使用 ROWNUM限制查詢結果的數量 129
6.3 使用聚合函式查詢 ... 130
6.3.1 COUNT()函式... 130
6.3.2 SUM()函式... 131
6.3.3 AVG()函式... 132
6.3.4 MAX()函式 .. 133
6.3.5 MIN()函式.... 134
6.4 連線查詢 .... 135
6.4.1 內連線查詢 .. 135
6.4.2 外連線查詢 .. 139
6.4.3 複合條件連線查詢 141
6.5 子查詢 ... 142
6.5.1 帶 ANY、SOME關鍵字的子查詢 .... 142
6.5.2 帶 ALL關鍵字的子查詢 143
6.5.3 帶 EXISTS關鍵字的子查詢 144
6.5.4 帶 IN關鍵字的子查詢.... 145
6.5.5 帶比較運算符的子查詢 .. 147
6.6 合併查詢結果 . 149
6.7 為表和欄位取別名 ... 152
6.7.1 為表取別名 .. 152
6.7.2 為欄位取別名 ... 153
6.8 使用正則表達式查詢 .... 155
6.8.1 查詢以特定字元或字元串開頭的記錄 ... 156
6.8.2 查詢以特定字元或字元串結尾的記錄 ... 157
6.8.3 用符號"".""來替代字元串中的任意一個字元 157
6.8.4 使用""*""和""+""來匹配多個字元 . 158
6.8.5 匹配指定字元串 .... 158
6.8.6 匹配指定字元中的任意一個 .... 160
6.8.7 匹配指定字元以外的字元 ... 161
6.8.8 使用{n,}或者{n,m}來指定字元串連續出現的次數 .. 161
6.9 綜合案例——數據表查詢操作 ... 162
6.10 疑難解惑 .. 170
6.11 經典習題 .. 170
第 7章插入、更新與刪除數據 ... 171
7.1 插入數據 .... 171
7.1.1 為表的所有欄位插入數據 ... 171
7.1.2 為表的指定欄位插入數據 ... 173
7.1.3 同時插入多條記錄 175
7.1.4 將查詢結果插入到表中 .. 176
7.2 更新數據 .... 178
7.3 刪除數據 .... 180
7.4 綜合案例——記錄的插入、更新和刪除 .. 182
7.5 疑難解惑 .... 187
7.6 經典習題 .... 188
第 8章視圖.. 189
8.1 視圖概述 .... 189
8.1.1 視圖的含義 .. 189
8.1.2 視圖的作用 .. 190
8.2 創建視圖 .... 191
8.2.1 創建視圖的語法形式 . 191
8.2.2 在單表上創建視圖 192
8.2.3 在多表上創建視圖 193
8.2.4 創建視圖的視圖 .... 193
8.2.5 創建沒有源表的視圖 . 194
8.3 查看視圖 .... 195
8.4 修改視圖 .... 195
8.4.1 CREATE OR REPLACE VIEW語句修改視圖 196
8.4.2 ALTER語句修改視圖的約束 .. 197
8.5 更新視圖 .... 197
8.6 刪除視圖 .... 199
8.7 限制視圖的數據操作 .... 200
8.7.1 設定視圖的唯讀屬性 . 200
8.7.2 設定視圖的檢查屬性 . 200
8.8 綜合案例——視圖套用 201
8.9 疑難解惑 .... 207
8.10 經典習題 .. 208
第 9章游標.... 209
9.1 認識游標 .... 209
9.1.1 游標的概念 .. 209
9.1.2 游標的優點 .. 210
9.1.3 游標的分類 .. 210
9.2 顯式游標 .... 210
9.2.1 顯式游標的語法 .... 210
9.2.2 打開游標 . 211
9.2.3 讀取游標中的數據 211
9.2.4 關閉游標 . 211
9.2.5 使用顯式游標的案例 . 212
9.2.6 使用顯式游標的 LOOP語句.... 213
9.2.7 使用 BULK COLLECT和 FOR語句的游標 ... 214
9.2.8 使用 CURSOR FOR LOOP語句的游標. 215
9.2.9 顯式游標的屬性 .... 216
9.3 隱式游標 .... 219
9.3.1 使用隱式游標 ... 219
9.3.2 隱式游標的屬性 .... 220
9.3.3 在游標中使用異常處理 .. 222
9.4 綜合案例——游標的綜合套用 ... 223
9.5 疑難解惑 .... 225
9.6 經典習題 .... 225
第 10章存儲過程... 226
10.1 創建存儲過程 .... 226
10.1.1 什麼是存儲過程 .. 226
10.1.2 創建存儲過程 . 227
10.2 調用存儲過程 .... 228
10.3 查看存儲過程 .... 229
10.4 存儲過程的參數 230
10.4.1 無參數的存儲過程 ... 230
10.4.2 有參數的存儲過程 ... 231
10.5 修改存儲過程 .... 232
10.6 刪除存儲過程 .... 233
10.7 查看存儲過程的錯誤 .. 233
10.8 綜合案例——綜合運用存儲過程 .. 234
10.9 疑難解惑 .. 236
10.10 經典習題 236
第 11章 Oracle觸發器 237
11.1 創建觸發器 ... 237
11.1.1 什麼是觸發器 . 237
11.1.2 創建只有一個執行語句的觸發器 .... 238
11.1.3 創建有多個執行語句的觸發器 ... 239
11.2 查看觸發器 ... 241
11.2.1 查看觸發器的名稱 ... 241
11.2.2 查看觸發器的內容信息 242
11.3 觸發器的使用 .... 242
11.4 修改觸發器 ... 243
11.5 刪除觸發器 ... 244
11.6 綜合案例——使用觸發器 .... 245
11.7 疑難解惑 .. 247
11.8 經典習題 .. 247
第 12章管理表空間 .... 248
12.1 什麼是表空間 .... 248
12.2 查看錶空間 ... 249
12.3 管理表空間 ... 250
12.3.1 創建表空間 251
12.3.2 設定表空間的可用狀態 252
12.3.3 設定表空間的讀寫狀態 252
12.3.4 重命名表空間 . 253
12.3.5 刪除表空間 253
12.3.6 建立大檔案表空間 ... 254
12.4 管理臨時表空間 254
12.4.1 創建臨時表空間 .. 254
12.4.2 查看臨時表空間 .. 255
12.4.3 創建臨時表空間組 ... 255
12.4.4 查看臨時表空間組 ... 256
12.4.5 刪除臨時表空間組 ... 256
12.5 管理數據檔案 .... 256
12.5.1 移動數據檔案 . 257
12.5.2 刪除數據檔案 . 257
12.6 疑難解惑 .. 257
12.7 經典習題 .. 258
第 13章事務與鎖... 259
13.1 事務管理 .. 259
13.1.1 什麼是事務 259
13.1.2 事務的屬性 260
13.1.3 事務管理的常用語句 .... 260
13.1.4 事務的類型 260
13.1.5 事務的套用實例 .. 261
13.1.6 事務的保存點 . 262
13.2 鎖 .... 264
13.2.1 什麼是鎖 .... 264
13.2.2 鎖的分類 .... 265
13.2.3 鎖的類型 .... 265
13.2.4 鎖等待和死鎖 . 266
13.3 綜合案例——死鎖的案例 .... 268
13.4 疑難解惑 .. 269
13.5 經典習題 .. 269
第 14章 Oracle的用戶管理... 270
14.1 賬戶管理 .. 270
14.1.1 管理賬號概述 . 270
14.1.2 新建普通用戶 . 271
14.1.3 修改用戶信息 . 272
14.1.4 刪除用戶 .... 273
14.2 許可權管理 .. 273
14.2.1 授權 .. 274
14.2.2 收回許可權 .... 275
14.2.3 查看許可權 .... 275
14.3 角色管理 .. 276
14.3.1 角色概述 .... 276
14.3.2 創建角色 .... 277
14.3.3 設定角色 .... 277
14.3.4 修改角色 .... 278
14.3.5 查看角色 .... 278
14.3.6 刪除角色 .... 279
14.4 管理概要檔案 PROFILE.. 279
14.4.1 PROFILE概述 279
14.4.2 創建概要檔案 . 279
14.4.3 修改概要檔案 . 280
14.4.4 刪除概要檔案 . 280
14.5 疑難解惑 .. 281
14.6 經典習題 .. 281
第 15章控制檔案和日誌.. 283
15.1 控制檔案簡介 .... 283
15.2 控制檔案的套用案例 .. 284
15.2.1 查看控制檔案的內容 .... 284
15.2.2 更新控制檔案的內容 .... 284
15.2.3 使用 init.ora多路復用控制檔案.. 285
15.2.4 使用 SPFILE多路復用控制檔案 286
15.2.5 創建控制檔案 . 287
15.3 日誌簡介 .. 289
15.4 管理日誌檔案 .... 290
15.4.1 新建日誌檔案組 .. 291
15.4.2 添加日誌檔案到日誌檔案組 .. 291
15.4.3 刪除日誌檔案組和日誌檔案 .. 292
15.4.4 查詢日誌檔案組和日誌檔案 .. 293
15.5 疑難解惑 .. 293
15.6 經典習題 .. 294
第 16章數據備份與還原.. 295
16.1 數據備份 .. 295
16.1.1 冷備份 ... 295
16.1.2 熱備份 ... 296
16.2 數據還原 .. 297
16.3 表的導出和導入 299
16.3.1 用 EXP工具導出數據... 299
16.3.2 用 EXPDP導出數據 299
16.3.3 用 IMP導入數據 . 301
16.3.4 用 IMPDP導入數據. 301
16.4 疑難解惑 .. 301
16.5 經典習題 .. 302
第 17章性能最佳化... 303
17.1 最佳化簡介 .. 303
17.1.1 修改系統全局區 .. 303
17.1.2 修改進程全局區 .. 305
17.2 最佳化查詢 .. 306
17.2.1 分析查詢語句的執行計畫 . 306
17.2.2 索引對查詢速度的影響 309
17.2.3 使用索引查詢 . 309
17.2.4 最佳化子查詢 309
17.3 最佳化資料庫結構 310
17.3.1 將欄位很多的表分解成多個表 ... 310
17.3.2 增加中間表 311
17.3.3 增加冗餘欄位 . 313
17.3.4 最佳化插入記錄的速度 .... 313
17.4 最佳化 Oracle伺服器. 315
17.4.1 最佳化伺服器硬體 .. 315
17.4.2 最佳化 Oracle的參數 .. 315
17.5 疑難解惑 .. 317
17.6 經典習題 .. 318
第 18章設計新聞發布系統資料庫... 319
18.1 系統概述 .. 319
18.2 系統功能 .. 320
18.3 資料庫設計和實現 . 321
18.3.1 設計表 ... 321
18.3.2 設計索引 .... 326
18.3.3 設計視圖 .... 327
18.3.4 設計觸發器 327
18.4 小結 328
第 19章設計論壇管理系統資料庫... 329
19.1 系統概述 .. 329
19.2 系統功能 .. 330
19.3 資料庫設計和實現 . 331
19.3.1 設計方案圖表 . 331
19.3.2 設計表 ... 333
19.3.3 設計索引 .... 336
19.3.4 設計視圖 .... 338
19.3.5 設計觸發器 338
19.4 小結 339