內容簡介
Oracle數據庫系統是數據庫領域最優秀的數據庫之一,《Oracle 12c數據庫入門與應用》以Oracle最新版本12c為藍本,系統地講述了Oracle數據庫的概念、管理和應用開發等內容。全書結構合理、內容翔實、示例豐富、語言簡潔。從實際角度出發,系統地介紹了數據庫和Oracle的相關概念和原理、數據維護(查詢、更新和刪除)、Oracle數據庫管理(如安裝與啟動、用戶權限)以及Oracle的應用開發基礎,并在最后通過設計醫院預約掛號系統數據庫講解開發的詳細過程。
《Oracle 12c數據庫入門與應用》面向數據庫管理人員和數據庫開發人員,是初學者很好的入門教程,對Oracle管理員和應用程序開發員也有很好的學習和參考價值,也可以作為各大、中專院校相關專業的參考用書和相關培訓機構的培訓教材。
前言
Oracle Database(Oracle數據庫)是甲骨文公司(即Oracle公司)以高級結構化查詢語言(SQL)為基礎設計的大型關系數據庫。Oracle系統采用的是并行服務器模式,能在對稱多CPU的系統上提供并行處理,擁有可移植性強、可用性強、可擴展性強、數據安全性強和高穩定性等優點,能適應高吞吐量的數據庫,適用于各類大、中、小、微型計算機環境,是目前最流行的數據庫之一。甲骨文公司在2013年發布了Oracle Database 12c正式版,版本號是12.1.0.1.0,支持的平臺有Windows、Linux、Solaris,這次的命名用了c而不是以前的g(Grid),c代表Cloud(云計算)的意思。Oracle 12c新增了諸多的新特性,在數據類型、分區表、統計信息、數據優化等方面都有所改進,功能比上一版本強大很多。本書以Oracle Database 12c為例,詳細介紹初學Oracle所需掌握的常用知識點。適合作為Oracle數據庫基礎入門學習書籍,也可以幫助中級讀者提高使用數據的技能,適合大專院校在校學生、程序開發人員以及編程愛好者學習和參考。本書內容全書共分為15章,各章主要內容如下。第1章 關系數據庫與Oracle 12c。本章從數據庫的基本概念開始介紹,進而講解Oracle 12c的安裝、登錄方式及其體系結構。第2章 Oracle的基本操作。本章使用6種工具來講解Oracle 12c的基本操作,分別是OEM、SQL Plus、SQL Developer、網絡配置助手、網絡管理器和數據庫管理助手。第3章 操作Oracle數據表。本章介紹了數據表的概念和創建規則,重點介紹表的各種操作,像創建表、指定表屬性、刪除表以及分析表等。第4章 維護表的完整性。本章詳細介紹Oracle中約束數據完整性的各種方法,如約束不能為空和不能重復等。第5章 SELECT簡單查詢。本章主要介紹SELECT語句查詢數據的簡單方法,如查詢所有列、查詢不重復列、查詢時指定范圍和列表以及對結果集進行排序和分組等。第6章 修改表數據。本章詳細介紹修改表中數據的各種方法,如直接插入、根據條件更新和刪除以及批量導入等。第7章 高級查詢。本章主要介紹SELECT語句多表查詢的高級方法,包括子查詢、多表基本連接、內連接、外連接和交叉連接等。第8章 Oracle表空間的管理。本章主要介紹Oracle中的各種表空間,包括表空間的創建、修改、切換和管理等操作。第9章 PL/SQL編程基礎。本章主要詳細介紹PL/SQL編程所需掌握的基礎,包括PL/SQL編寫規則、編程結構、變量和常量的聲明與使用、字符集、運算符以及流程結構和異常處理等。第10章 PL/SQL應用編程。本章從6個方面介紹PL/SQL編程的高級應用,分別是系統函數、自定義函數、PL/SQL集合、游標、數據庫事務和鎖。第11章 管理數據庫對象。本章主要介紹Oracle數據庫中常用的6個對象,分別是包、序列、同義詞、索引、視圖和偽列。第12章 存儲過程和觸發器。本章主要介紹Oracle中存儲過程與觸發器的創建、調用以及管理方法。第13章 Oracle數據庫的安全性。本章主要介紹Oracle 12c中與安全性有關的對象,包括用戶、角色和權限以及這些對象的操作。第14章 Oracle數據庫文件。本章主要介紹Oracle中三類文件的創建與管理,分別是控制文件、日志文件和數據文件。第15章 醫院預約掛號系統數據庫的設計。本章以醫院預約掛號系統為背景進行需求分析,然后在Oracle 12c中實現。具體實現包括表空間和用戶的創建、創建表和視圖,并在最后模擬實現常見業務的辦理。本書特色本書中采用大量的實例進行講解,力求通過實際操作使讀者更容易地掌握Oracle數據庫應用。本書難度適中,內容由淺入深,實用性強,覆蓋面廣,條理清晰。知識點全本書緊緊圍繞Oracle數據庫展開講解,具有很強的邏輯性和系統性。實例豐富各章實例短小卻又能體現出知識點的精髓,讓讀者很輕松地學習,并能靈活地應用到實際項目中。基于理論,注重實踐在講述過程中,不僅僅只介紹理論知識,而且在合適位置安排綜合應用實例或者小型應用程序,將理論應用到實踐當中,來加強讀者實際應用能力,鞏固開發基礎和知識。貼心的提示為了便于讀者閱讀,全書還穿插著一些技巧、提示等小貼士,體例約定如下。提示:通常是一些貼心的提醒,讓讀者加深印象或提供建議,或者解決問題的方法。注意:提出學習過程中需要特別注意的一些知識點和內容,或者相關信息。技巧:通過簡短的文字,指出知識點在應用時的一些小竅門。讀者對象本書可以作為Oracle數據庫的入門書籍,也可以幫助中級讀者提高技能。本書適合以下人員閱讀學習。• 沒有數據庫應用基礎的Oracle 入門人員。• 有一些數據庫應用基礎,并且希望全面學習Oracle 數據庫的讀者。• 各大中專院校的在校學生和相關授課老師。• 相關社會培訓班的學員。本書由靳智良、馮海燕編著,其他參與編寫的人員還有侯政云、劉利利、鄭志榮、肖進、侯艷書、崔再喜、侯政洪、李海燕、祝紅濤、賀春雷等,在此表示感謝。在本書的編寫過程中,我們力求精益求精,但難免存在一些不足之處,敬請廣大讀者批評指正。編 者目錄
第1章 關系數據庫與Oracle 12c1.1 數據庫的概念 21.1.1 數據庫概述 21.1.2 數據庫模型 21.2 了解關系型數據庫 31.2.1 數據庫的組成 31.2.2 常見術語 41.2.3 完整性規則 51.3 范式理論和E-R模型 51.3.1 范式理論 61.3.2 E-R模型 71.3.3 實踐案例:E-R模型轉換為關系模型 81.4 了解Oracle 12c 91.4.1 發展歷史 91.4.2 數據庫版本 101.4.3 新特性 121.5 實踐案例:安裝Oracle 12c數據庫管理系統 141.6 實踐案例:登錄Oracle數據庫 181.7 實踐案例:Oracle用戶解鎖 201.8 Oracle 12c的體系結構 211.8.1 內存結構 211.8.2 進程結構 221.8.3 物理結構 221.9 練習題 23第2章 Oracle的基本操作2.1 Web管理工具——OEM 262.1.1 登錄OEM 262.1.2 使用OEM 272.2 命令行工具——SQL Plus 302.2.1 SQL Plus簡介 302.2.2 連接Oracle 302.2.3 斷開連接 322.2.4 查看表結構 322.2.5 編輯緩存區內容 332.2.6 保存緩存區內容 352.2.7 使用變量 362.2.8 使用提示參數 372.3 圖形工具——SQL Developer 382.3.1 打開SQL Developer 382.3.2 連接Oracle 382.3.3 執行存儲過程 402.3.4 導出數據 422.4 網絡配置助手 442.4.1 配置監聽程序 442.4.2 配置命名方法 462.4.3 配置本地NET服務名 472.5 網絡管理器 492.6 數據庫管理助手 512.7 練習題 55第3章 操作Oracle數據表3.1 Oracle數據表 583.1.1 數據表概述 583.1.2 數據表的創建規則 593.1.3 Oracle中表的類型 603.2 Oracle表列的數據類型 613.3 創建表 633.3.1 創建表的語句 633.3.2 指定表空間 643.3.3 指定存儲參數 643.4 實踐案例:使用設計器創建表 653.5 修改表屬性 673.5.1 增加列 673.5.2 刪除列 673.5.3 更新列 683.5.4 更改存儲表空間 703.5.5 更改存儲參數 703.6 重命名表 713.7 刪除表定義 713.8 分析表 723.8.1 驗證表的存儲情況 723.8.2 查看表的統計信息 733.8.3 查找表中的連接記錄和遷移記錄 743.8.4 dbms_stats表 763.8.5 dbms_stats與analyze對比 803.9 實踐案例:創建導游信息表 803.10 練習題 81第4章 維護表的完整性4.1 數據完整性簡介 844.2 主鍵約束 854.2.1 主鍵約束簡介 854.2.2 創建表時定義主鍵約束 854.2.3 為現有表添加主鍵約束 864.2.4 刪除主鍵約束 864.2.5 在設計器中設置主鍵約束 864.3 唯一約束 874.3.1 創建表時定義唯一約束 874.3.2 為現有表添加唯一約束 874.3.3 刪除唯一約束 884.3.4 在設計器中設置唯一約束 884.4 非空約束 894.4.1 創建表時定義非空約束 894.4.2 為現有表添加非空約束 894.4.3 刪除非空約束 904.4.4 使用設計器設置非空約束 914.5 外鍵約束 914.5.1 外鍵約束簡介 924.5.2 創建表時定義外鍵約束 924.5.3 對現有表添加外鍵約束 934.5.4 外鍵的引用類型 934.5.5 刪除外鍵約束 944.5.6 使用設計器設置外鍵約束 944.6 檢查約束 954.6.1 使用SQL語句添加檢查約束 954.6.2 使用設計器設置檢查約束 964.7 操作約束 974.7.1 查詢約束信息 974.7.2 禁止和激活約束 984.7.3 約束的狀態 1014.7.4 延遲約束 1024.8 實踐案例:設計電器信息管理表 1024.9 練習題 105第5章 SELECT簡單查詢5.1 SQL語言簡介 1085.1.1 特點 1085.1.2 分類 1085.1.3 語句編寫的規則 1095.2 SELECT語句的語法格式 1095.3 簡單查詢 1105.3.1 查詢所有列 1105.3.2 查詢指定列 1115.3.3 使用別名 1115.3.4 查詢不重復數據 1125.3.5 查詢計算列 1135.4 按條件查詢 1145.4.1 比較條件 1145.4.2 范圍條件 1155.4.3 邏輯條件 1165.4.4 模糊條件 1175.4.5 列表條件 1185.4.6 實踐案例:查詢NULL值 1195.5 結果集的規范化 1205.5.1 排序 1205.5.2 分組 1215.5.3 篩選 1225.6 實踐案例:分頁查詢會員信息 1235.7 實踐案例:員工信息查詢 1255.8 練習題 126第6章 修改表數據6.1 插入數據 1306.1.1 INSERT語句的語法格式 1306.1.2 插入單行數據 1306.1.3 插入多行數據 1326.2 更新數據 1326.2.1 UPDATE語句的語法格式 1336.2.2 更新單列 1336.2.3 更新多列 1346.2.4 基于他表更新列 1346.3 刪除數據 1356.3.1 DELETE語句的語法格式 1356.3.2 刪除數據 1366.3.3 清空表 1366.4 合并數據 1376.4.1 MERGE語句的語法格式 1376.4.2 執行更新操作 1386.4.3 執行插入操作 1386.4.4 限制條件的更新和插入 1396.4.5 使用常量表達式 1406.4.6 執行刪除操作 1406.5 練習題 141第7章 高級查詢7.1 子查詢 1447.1.1 子查詢的使用規則 1447.1.2 單行子查詢 1447.1.3 實踐案例:單行子查詢常見錯誤解析 1477.1.4 使用IN操作符 1487.1.5 使用ANY操作符 1497.1.6 使用ALL操作符 1507.1.7 使用EXISTS操作符 1517.1.8 使用UPDATE語句 1527.1.9 使用DELETE語句 1527.1.10 實踐案例:多層嵌套子查詢 1537.2 多表查詢的語法格式 1537.2.1 消除笛卡兒積 1547.2.2 基本連接 1547.3 內連接 1567.3.1 等值內連接 1567.3.2 非等值內連接 1577.3.3 自然連接 1597.4 外連接 1607.4.1 左外連接 1607.4.2 右外連接 1617.4.3 完全連接 1627.5 聯合查詢 1637.5.1 UNION ALL查詢 1637.5.2 UNION查詢 1647.5.3 MINUS查詢 1647.5.4 INTERSECT查詢 1657.6 交叉連接 1667.7 實踐案例:查詢超市商品信息 1667.8 練習題 168第8章 Oracle表空間的管理8.1 Oracle表空間簡介 1728.1.1 了解表空間 1728.1.2 表空間的類型 1728.1.3 表空間的狀態 1738.2 實踐案例:創建一個表空間 1738.3 實踐案例:查詢表空間的信息 1768.4 修改表空間的屬性 1788.4.1 修改表空間的名稱 1798.4.2 修改表空間的大小 1798.4.3 切換只讀和讀寫狀態 1808.4.4 切換脫機和聯機狀態 1808.5 操作表空間 1828.5.1 本地化管理 1828.5.2 增加數據文件 1838.5.3 移動數據文件 1838.5.4 刪除表空間 1848.6 實踐案例:修改默認表空間 1848.7 還原表空間 1868.7.1 創建還原表空間 1868.7.2 管理還原表空間 1868.7.3 更改還原表空間的方式 1888.8 臨時表空間 1898.8.1 了解臨時表空間 1898.8.2 創建臨時表空間 1908.8.3 修改臨時表空間 1908.8.4 臨時表空間組 1918.9 實踐案例:創建購物系統的表空間 1938.10 練習題 195第9章 PL/SQL編程基礎9.1 PL/SQL概述 1989.1.1 PL/SQL語言的特點 1989.1.2 PL/SQL代碼的編寫規則 1989.2 PL/SQL的編程結構 1999.2.1 PL/SQL程序塊 1999.2.2 數據類型 2009.2.3 PL/SQL程序的注釋 2009.3 變量 2019.3.1 標識符的定義規則 2019.3.2 聲明變量 2029.3.3 變量賦值 2039.3.4 %TYPE操作符 2039.3.5 %ROWTYPE操作符 2049.4 常量 2059.5 字符集 2069.5.1 字符集的概念 2069.5.2 查看字符集 2079.6 運算符 2089.6.1 連接運算符 2089.6.2 算術運算符 2099.6.3 比較運算符 2099.6.4 邏輯運算符 2109.7 流程控制語句 2119.7.1 分支語句 2129.7.2 循環語句 2149.7.3 跳轉語句 2169.7.4 語句嵌套 2199.8 實踐案例:輸出九九乘法表 2209.9 異常處理 2209.9.1 異常的語法結構 2209.9.2 預定義異常 2219.9.3 非預定義異常 2239.9.4 自定義異常 2239.10 練習題 225第10章 PL/SQL應用編程10.1 系統函數 22910.1.1 字符函數 22910.1.2 數學函數 23110.1.3 聚合函數 23210.1.4 日期函數 23310.1.5 轉換函數 23510.2 自定義函數 23610.2.1 創建函數語法 23610.2.2 調用函數 23710.2.3 查看函數源代碼 23810.2.4 刪除函數 23910.2.5 實踐案例:使用SQL Developer工具操作函數 23910.3 實踐案例:實現MD5加密 24010.4 使用集合 24110.4.1 嵌套表 24110.4.2 可變數組 24310.4.3 索引表 24610.4.4 集合方法 24710.4.5 實踐案例:使用PL/SQL記錄表 24810.5 使用游標 24910.5.1 游標簡介 24910.5.2 聲明游標 24910.5.3 打開游標 25010.5.4 檢索游標 25110.5.5 關閉游標 25110.5.6 實踐案例:LOOP循環游標 25210.5.7 實踐案例:FOR循環游標 25210.5.8 游標屬性 25310.5.9 游標變量 25510.6 實踐案例:使用游標更新和刪除數據 25710.7 使用事務 25910.7.1 事務概述 25910.7.2 事務控制 26010.7.3 使用事務 26110.7.4 實踐案例:更新賬戶余額 26210.8 使用鎖 26310.8.1 鎖的分類 26310.8.2 鎖的查詢語句 26410.9 練習題 265第11章 管理數據庫對象11.1 包 26811.1.1 包簡介 26811.1.2 系統預定義包 26811.1.3 創建包聲明 27111.1.4 創建包主體 27211.1.5 使用包 27411.1.6 修改和刪除包 27511.2 序列 27511.2.1 創建序列 27511.2.2 使用序列 27611.2.3 修改序列 27811.2.4 刪除序列 27811.2.5 自動序列 27911.3 同義詞 28011.3.1 同義詞簡介 28011.3.2 創建同義詞 28111.3.3 刪除同義詞 28211.4 索引 28211.4.1 索引簡介 28211.4.2 創建索引 28611.4.3 創建B樹索引 28711.4.4 創建位圖索引 28811.4.5 創建函數索引 28911.4.6 重命名索引 29011.4.7 合并索引 29011.4.8 重建索引 29111.4.9 監視索引 29111.4.10 刪除索引 29211.5 視圖 29211.5.1 視圖簡介 29311.5.2 創建視圖 29311.5.3 查詢視圖 29511.5.4 操作視圖 29611.5.5 刪除視圖 29811.5.6 實踐案例:使用SQL Developer操作視圖 29911.5.7 視圖的WITH子句 29911.6 Oracle偽列 30111.6.1 ROWNUM偽列 30111.6.2 ROWID偽列 30211.6.3 實踐案例:刪除重復數據 30311.7 實踐案例:獲取分頁數據 30411.8 練習題 305第12章 存儲過程和觸發器12.1 創建存儲過程 30912.2 實踐案例:創建一個更新密碼的存儲過程 30912.3 管理存儲過程 31012.3.1 查看存儲過程信息 31012.3.2 實踐案例:調用存儲過程 31112.3.3 修改存儲過程 31112.3.4 刪除存儲過程 31212.4 使用參數 31312.4.1 輸入參數 31312.4.2 輸出參數 31512.4.3 同時包含輸入和輸出參數 31512.4.4 參數默認值 31612.5 觸發器 31812.5.1 觸發器簡介 31812.5.2 觸發器類型 31812.6 創建觸發器 31912.6.1 創建觸發器語法 31912.6.2 DML觸發器 32012.6.3 DDL觸發器 32412.6.4 INSTEAD OF觸發器 32512.7 實踐案例:跟蹤數據庫和用戶狀態 32712.8 管理觸發器 33012.8.1 查看觸發器信息 33012.8.2 改變觸發器的狀態 33012.8.3 刪除觸發器 33112.9 實踐案例:實現主鍵自動增長 33112.10 練習題 332第13章 Oracle數據庫的安全性13.1 用戶和模式 33613.1.1 用戶 33613.1.2 模式 33713.2 創建用戶 33713.3 管理用戶 33813.3.1 查看用戶 33913.3.2 修改用戶 33913.3.3 刪除用戶 34113.3.4 管理用戶會話 34113.4 實踐案例:使用SQL Developer管理用戶 34313.5 管理權限 34513.5.1 系統權限 34513.5.2 對象權限 34613.6 角色 34813.6.1 角色概述 34813.6.2 系統預定義角色 34913.6.3 創建角色 35013.7 管理角色 35013.7.1 角色授權 35013.7.2 為用戶授予角色 35113.7.3 修改角色密碼 35113.7.4 取消角色權限 35213.7.5 禁用與啟用角色 35213.7.6 查看角色 35213.7.7 刪除角色 35313.8 配置文件 35313.8.1 創建配置文件 35313.8.2 查看配置文件 35513.8.3 修改配置文件 35513.8.4 刪除配置文件 35513.9 練習題 355第14章 Oracle數據庫文件14.1 控制文件 35814.1.1 控件文件簡介 35814.1.2 創建控制文件 35914.1.3 查看控制文件信息 36214.1.4 移動和刪除控制文件 36314.1.5 備份控制文件 36414.1.6 恢復控制文件 36514.2 實踐案例:多路復用控制文件策略 36514.3 重做日志文件 36714.3.1 重做日志文件簡介 36714.3.2 重做記錄和回滾段 36714.3.3 查看重做日志文件 36814.3.4 創建重做日志文件組 36914.3.5 切換重做日志組 37014.3.6 實踐案例:管理重做日志組成員 37114.3.7 設置重做日志模式 37214.3.8 刪除重做日志組 37414.4 數據文件 37414.4.1 數據文件簡介 37414.4.2 創建數據文件 37514.4.3 查看數據文件信息 37614.4.4 修改數據文件大小和狀態 37714.4.5 修改數據文件的位置 37814.4.6 刪除數據文件 37914.5 實踐案例:操作數據文件 37914.6 練習題 381第15章 醫院預約掛號系統數據庫的設計15.1 系統概述 38415.1.1 開發背景 38415.1.2 可行性分析 38415.1.3 功能性分析 38515.2 數據庫E-R圖的設計 38615.3 數據庫的設計 38615.3.1 創建表空間和用戶 38715.3.2 創建數據表 38715.3.3 創建約束 39115.3.4 創建視圖 39115.3.5 創建序列 39215.3.6 創建存儲過程 39315.4 業務測試 39515.4.1 注冊就診信息 39615.4.2 注冊醫生數據 39715.4.3 更改密碼 39815.4.4 更新患者姓名 39815.4.5 修改密碼 39915.4.6 更改醫生信息 40015.4.7 查詢預約信息 401練習題答案