一:概述
一、簡介
1. 概念:Oracle 數據庫是 ORACLE 公司提供的以分布式數據庫為核心的一組軟件產品,是使用最為廣泛的大型數據庫管理系統。
2. 特點
1. 開放性:Oracle能在所有主流平台上運行(包括Windows),完全支持所有的工業標准,采用完全開放策略,可以使客戶選擇最適合的解決方案,對開發商全力支持。
2. 可伸縮性,並行性:Oracle的並行服務器通過使一組結點共享同一簇中的工作來擴展Windownt的能力,提供高可用性和高伸縮性的簇的解決方案。如果WindowsNT不能滿足需要,用戶可以把數據庫移到UNIX中。Oracle的並行服務器對各種UNIX平台的集群機制都有着相當高的集成度。
3. 性能優越:Oracle幾乎是性能最高的關系型數據庫,保持開放平台下的TPC-D和TPC-C的世界記錄。
4. 客戶端支持及應用模式:Oracle支持多層次網絡計算,支持多種工業標准,可以用ODBC、JDBC、OCI等網絡客戶連接。
5. 操作性:Oracle相對於其他RDBMS來講較復雜,同時提供GUI和命令行,在WindowsNT和Unix下操作相同。
6. 使用性:Oracle具有相當長時間的開發經驗,完全向下兼容。得到廣泛的認可與應用,完全沒有風險。
7. 安全性:Oracle獲得了最高認證級別的ISO標准認證。它提供多層安全性,包括用於評估風險、防止未授權的數據泄露、檢測和報告數據庫活動,以及通過數據驅動的安全性在數據庫中實施數據訪問控制的控制。
3. 架構體系
1. 數據庫實例(instance):指數據庫服務器的內存及相關處理程序,是Oracle 的心臟,包括兩個部分:
1. SGA(System Global Area,即系統全局區活共享內存區),性能核心,包括三個部分:
1. 數據緩沖區:可避免重復讀取常用的數據;
2. 日志緩沖區:提升了數據增刪改的速度,減少磁盤的讀寫而加快速度;
3. 共享池:使相同的SQL語句不再編譯,提升了SQL的執行速度;
2. 后台進程:系統監控、進程監控、數據讀寫、日志讀寫、檢驗點進程,配合完成數據庫管理任務;
2. 數據庫文件
1. 數據文件(.dbf):存放數據庫的數據,保存信息的物理存儲位置;
2. 控制文件(.ctl) :存放數據庫的基本信息,告訴數據庫到哪里找到數據文件和重做日志文件等;
3. 日志文件(.log):記錄日志信息
4. 參數文件(.ora):數據庫啟動時讀取的屬性
4. 邏輯結構
1. 表空間(tablespace):最高級的邏輯存儲結構,數據庫是由多個表空間組成,表空間對應於若干個磁盤文件,即表空間是由一個或多個磁盤文件構成的。
1. 系統表空間:默認的表空間,用於保存數據字典,保存所有的PL/SQL程序的源代碼和解析代碼,包括存儲過程、函數、包、數據庫觸發器等,保存數據庫對象(表、視圖、序列)的定義;
2. 數據表空間:用於存儲用戶數據的普通表空間;
3. 臨時表空間:存儲SQL執行過程中產生的臨時數據;
4. 回滾表空間:用於存放回滾段,每個實例最多只能使用一個撤銷表空間;
2. 數據段(Segment):是由多個數據區構成的(可以不連續),它是為特定的數據庫對象(如表段、索引段、回滾段、臨時段)分配的一系列數據區。
1. 數據段:保存表中的記錄。當創建一個表時,系統自動創建一個以該表的名字命名的數據段。
2. 索引段:索引中的索引條目。一旦建立索引,系統自動創建一個以該索引的名字命名的索引段。
3. 臨時段:在執行查詢等操作時,Oracle可能會需要使用到一些臨時存儲空間,用於臨時保存解析過的查詢語句以及在排序過程中產生的臨時數據。
4. 回滾段:保存回滾數據。當一個事務開始處理時,系統為之分配回滾段,回滾段可以動態創建和撤銷。
3. 數據區(Extent):一組連續的數據塊,用來保存特定數據類型的數據。
4. 數據塊(Blocks):Oracle用來管理存儲的最小單元,也是最小的邏輯存儲結構,塊中存放表的數據和索引的數據。
1. 塊的結構:由塊頭、表目錄、行目錄、空余空間、行數據五部分組成。
1. 塊頭(header/Common and Variable):存放塊的基本信息,如:塊的物理地址,塊所屬的段的類型。
2. 表目錄(Table Directory):存放表的信息。
3. 行目錄(Row Directory):存放行數據信息。
4. 空余空間(Free Space):塊中未使用的區域,這片區域用於新行的插入和已經存在的行的更新。
5. 行數據(Row Data):真正存放表數據和索引數據的地方。這部分空間是已被數據行占用的空間。
2. 塊的存儲區:主要包含空閑空間和已經使用的空間。
1. PCTFREE參數:指定塊中必須保留的最小空閑空間比例。當塊中的空閑存儲空間減少到PCTFREE所設置的比例后,Oracle將塊標記為不可用狀態,新的數據行將不能被加入到這個塊。
2. PCTUSED參數:制定一個百分比,當塊中已經使用的存儲空間降低到這個百分比只下時,這個塊才被重新標記為可用狀態。
6. 數據類型
二、安裝部署(Windows)
1. 官網下載(https://www.oracle.com/database/technologies/oracle-database-software-downloads.html#19c)
2. 解壓並運行setup.exe進行安裝
3. 配置監聽(Net Configuration Assistant 和 listener.ora)
4. 配置服務(客戶端)(Net Configuration Assistant 和 tnsnames.ora)
二:Shell 操作
一、數據定義語言(DDL)
二、數據操作語言(DML)
三、數據查詢語言(DQL)
1. 單表
1. 條件查詢
1. 條件判斷
2. 邏輯判斷
3. 范圍查找
4. 模糊查找
2. 分組
3. 排序
4. 分頁
2. 多表
1. 表與表之間的關系
1. 一對一:唯一外鍵對應/主鍵對應
2. 一對多:多方創建外鍵對應一方的主鍵
3. 多對多:創建中間表,至少有兩個字段分別作為外鍵指向多對多雙方的主鍵。
2. 連接查詢
1. 方言:過濾的笛卡爾積
2. 自然連接:屬性相同的元組對
3. 內連接:等值連接
4. 外連接:注意空值
2. 子查詢:嵌套查詢(select中包含select)
四、數據控制語言(DCL)
五、完整性約束
1. 作用:DBMS自動按照一定的約束條件對數據進行監測,防止不符合規范的數據進入數據庫,以確保數據庫中存儲的數據正確、有效、相容。
2. 實體完整性
1. 概念:主鍵的值不能為空或部分為空的約束條件稱為實體完整性。
2. 作用:表示每一行數據不重復。
3. 分類(所有的INT改為NUMBER,VARCHAR改為VARCHAR2)
1. 主鍵約束(PRIMARY KEY):指定該列的值可以唯一地標識該列記錄且不能為空
2. 唯一約束(UNIQUE):指定某列或者幾列組合不能重復。
3. 域完整性
1. 概念:域完整性指列的值域的完整性。
2. 作用:保證表中某些列不能輸入無效的值。
3. 分類(所有的INT改為NUMBER,VARCHAR改為VARCHAR2)
1. 非空約束(NOT NULL):指定某列不能為空
2. 默認約束(DEFAULT):設置默認值
4. 參照完整性
1. 概念:外鍵約用來在兩個表之間建立連接,一對多關系中一方的主鍵。
2. 作用:保持數據的一致性,完整性
六、視圖
1. 概念:視圖是從一個或多個表中導出的一個虛擬表,用戶對視圖的各種操作都不會影響源數據,保障數據庫系統的安全。
2. 作用:簡化用戶對數據的操作,屏蔽真實表結構變化的影響,保護數據庫數據安全。
3. 使用