Oracle數據庫基礎
1.Oracle簡介:Oracle是一個數據庫管理系統,是Oracle公司的核心產品。
Oracle數據庫主要特點特點:
> 支持多用戶、大事務量的事務處理
> 在保持數據安全性和完整性方面性能優越
> 支持分布式數據處理
> 具有可移植性
1.數據庫
概念:Oracle是磁盤上存儲數據的集合,在物理上表現為數據文件、日志文件和控制文件等,在邏輯上以表空間形式存在,首先必須創建數據庫,然後才能使用Oracle。也可以在安裝軟件的同時創建數據庫,也可以安裝後單獨創建數據庫。
2.全局數據庫名
3.數據庫實例
4.表空間
5.數據文件
6.控制文件
7.日志文件
8.模式和模式對象
安裝Oracle
Windows下啟動數據庫
Oracle常用的3個服務
(1)OracleServiceSID服務是Oracle數據庫服務,此服務對應名為SID(系統標識符)的數據庫實例創建的。SID是安裝Oracle數據庫時輸入的數據庫名稱,默認自啟動。
(2)OeacleOraDb11g_home1TNSListerer:監聽器服務,遠程連接數據庫作用
(3)OracleDBConsoleSID:數據庫控制台服務。
配置數據庫
連接數據庫
1.SQL*Plus工具:與Oracle數據庫進行交互的客戶端工具。
2.PL/SQL Developer:第三方客戶端工具。
2.Oracle數據類型
(1)字符數據類型
a) Char數據類型:
b) Varchar2:
c) Nchar:
(2)數值數據類型
a) Number:
(3)日期時間數據類型
a) DATE數據類型
b) TIMESTAMP:
(4)LOB數據類型:
LOB又稱為“大數據”數據類型,該數據可以存儲多達4GB的非結構化數據,LOB允許對數據庫進行高效、隨機、分段的訪問。可以是外部也可以是內部的。
a) CLOB(Character):存儲大量字符數據(包括單字節和多字節)主要用於存儲非結構化的XML文檔。
b) BLOB(Binary):存儲較大的二進制對象。
c) BFILE:將二進制文件存儲在數據庫外部的操作系統文件中。
d) NCLOB:用於存儲大的NCHAR字符數據。
Oracle中的表可以有多個LOB,沒個LOB列可以是不同的LOB類型。
Oracle中的偽劣:
1.ROWID:重要用途
a) 能以最快的速度訪問表中的一行
b) 能顯示表的行是如何存儲的
c) 可以作為表中行的唯一標識
2.ROWNUM:限制查詢返回的行數,
SQL語言簡介:
> 數據庫定義語言(DDL):CREATE(創建)、ALTER(更改)、TRUNCATE(截斷)、DROP(刪除)命令。
> 數據庫操作語言(DML):INSERT(插入)、SELECT(選擇)、DELETE(刪除)、Update(更新)命令。
> 事務控制語言(TCL):COMMIT(提交)、SAVEPOINT(保存點)、ROLLBACK(回滾)。
> 數據控制語言(DCL):GRANT(授予)、REMOVE(回收)
數據定義語言:CREATE TABLE:
創建標明規則:
> 表名首字符為字母
> 不能使用Oracle保留字為表名
> 表名的最大長度為30個字符。
> 同以用戶模式下的不同表不能具有相同的名稱
> 可以使用”_”數字和字母,但不能使用空格和單引號
Oracle的表名(列名、用戶名、其他對象名)不區分大小寫,系統會自動轉換大小寫。
Varchar2標准數據類型 不建議使用VARCHAR
TRUNCATE TABLE<表名>:只刪除表中的記錄不刪除表結構。節省資源,執行效率高。
提示:
(1)何時開啟事務:在Oracle中,事務在上一次事務結束後,數據第一次被修改時自動開啟。
(2)何時關閉事務
有兩種情況
1.數據被提交
a) COMMIT
b) 執行DDL或DCL語句時,當前事務自動被提交
c) 與Oracle分離,退出PL/SQL Developer
2.數據被撤銷
a) ROLLBACK
b) 服務器進程異常結束
c) DBA停止會話。
SQL操作符
1.算術操作符:+-*/
2.比較操作符:=>< => <= != Between and 、 IN、 LIKE、IS NULL
3.邏輯操作符:AND OR NOT
4.集合操作符:UNION(聯合)、UNIONALL(聯合所有)、INTERSECT(交集)、MINUS(減集)。
SQL函數
1.轉換函數:
a) TO_CHAR:格式化顯示日期類型的函數
b) TO_DATE:將TO_CHAR、TO_NUMBER數據類型轉換為TO_DATE數據類型
c) TO_NUMBER:隱式轉換。
2.其他函數:
a) NVL(exp1,exp2):1為NULL則返回2的值 否則返回1
b) NVL2(1,2,3):1為NULL則返回2的值 否則返回3
c) DECODE(value,1,then1,2,then2,):value1 f返回1 alue=2 返回2
3.分析函數
a) ROW_NUMBER:返回一個唯一的值,相同數據時排名順序依次遞增
b) DENSE_RANK:返回一個唯一的值,相同數據時排名順序相同
c) RANK:返回一個唯一的值,相同數據排名相同,同時會在最後一條記錄和下一條不同記錄之間空出排名
02——Oracle數據庫應用
1.表空間和用戶權限管理
1.表空間:
表空間分類:
永久性、臨時性、撤銷表空間
目的:
(1)對不同用戶分配不同的表空間,對不同模式對象分配不同的表空間,方便對用戶數據的操作,對模式對象的管理。
(2)可以將不同的數據文件創建在不同的磁盤中,有利於管理磁盤空間性能、備份 和恢復數據等。
創建表空間:
CREATE TABLE tablespacename
刪除表空間:
DROP TABLE tablespacename
2.自定義用戶管理:
a) SYS:超級用戶管理員
b) SYSTEM:默認系統管理員
c) Scott:臨時示范用戶
3.數據庫權限管理:
a) 系統權限
常見的系統權限
> CREATESESSION:連接數據庫
> CREATETABLE:創建表
> CREATEVIEW:創建試圖
> CREATE SEQUENCES:創建序列
b) 對象權限
Oracle數據庫用戶有兩種途徑獲得權限:
1.管理員直接向用戶授予權限:1.直接授權
2.管理員將權限授予角色,然後再將角色授予給一個或多個用戶:2.通過角色授權
2.序列
i. 創建序列:
ii. 訪問蘇列:
iii. 更改序列:
iv. 刪除序列:
v. 使用序列:
3.同義詞
同義詞是表、視圖、序列、函數、過程、程序包或者其他同義詞的別名
4.索引
索引是與表關聯的可選結構,是一種快速訪問數據的途徑,可提高數據庫性能。
索引的分類:
單列或組合索引:分區或非分區索引
唯一或非唯一索引:B樹索引
基於函數的索引:位圖索引、正常或反向鍵索引
(1)B樹索引:標准索引,默認索引
(2)唯一索引和非唯一索引:
a) 唯一索引:沒有重復值,唯一索引的關鍵字只能指向表中的一行,在創建主鍵約束和創建唯一約束時都會創建一個與之對應的唯一索引。
b) 非唯一索引:單個關鍵字可以有多個與其關聯的行
(3)反向鍵索引:與B樹相反,
(4)位圖索引:適用於低基數列。
優點:
a) 對於大批查詢可以減少響應時間
b) 相比其他索引技術,占用空間明顯減少
c) 即使在配置很低的終端硬件上也能獲得顯著的性能
(5)其他索引:
a) 組合索引:在表內多列上創建
b) 基於函數的索引:使用的函數或表達式正在建立索引中的表中的一列或多列則創建
5.分區表
i. Oracle允許用戶把一個表中的所有行分為幾個部分,並將這些部分存儲在不同的位置。被分區的表稱為分區表,分成的每個部分稱為一個分區。
表分區優點:
》 改善表的查詢性能
》 更容易管理
》 便於備份和分區
》 提高數據安全性
創建分區表條件
》 數據量大於2GB
》 已有的數據和新添加的數據有明顯的界限劃分。
分區表的分類:
1.范圍分區:以列的值的范圍作為分區的條件
2.間隔分區:范圍分區的一種增強,可以實現范圍分區的自動化
優點:在不需要創建表時就將所有分區劃分清楚,隨著數據的增加會劃分出更多的分區,並自動創建新的分區。
表分區用於管理存儲大表中的數據
總結:
一個數據庫由一個或多個表空間組成,每個表空間中的數據保存在一個多個數據文件中,
分區方法包括:范圍分區、散列分區、列表分區、復合分區、間隔分區和虛擬列分區。
1.PL/SQL:結合了Oracle過程語言和結構化查詢語言的一種擴展語言。
運算符和表達式:
常量和變量的聲明
注釋:-- 、/**/
PL/SQL是一種可移植的高性能事務處理語言
2.PL/SQL 數據類型
1. 標量數據類型:
a) CHAR:
i. Character:定長字符串 0~32767
ii. Nchar:民族語言字符集: 可選 默認1
b) VARCHAR2
i. Varchar String可變字符串 0~32767
ii. NVARCHAR2:民族語言字符集 0~32767
c) BINARY_INTEGER:帶符號整數,為整數計算優化性能
d) NUMBER:
i. DEC:小數
ii. DOUBLE Precision:整數 子類型
iii. Integer:整數 子類型
iv. INT:與NUmber等價
v. NUMERIC:與NUmber等價
vi. REAL:整數 比Integer小
vii. Small int:
e) LONG:變長字符串
f) DATE:日期
g) BOOLEAN:布爾類型 TRUE FALSE NULL
2. LOB數據類型:用於存儲大的數據對象的類型。Oracle主要支持BFILE、BLOB、CLOB、NCLOB類型
3. 屬性類型
a) %Type:
b) %ROWTYPE:
3.PL/SQL控制語句
控制結構共有三種類型:
1.條件控制:
a)
2.循環控制:
3.順序控制:
a) NULL語句:一個可執行語句
4.異常處理
在運行程序時出現的錯誤叫異常。
5.顯式游標
游標可分為靜態游標和動態游標
靜態游標可分為:隱式、顯式 和REF游標
a) 顯式游標的使用步驟:
1. 聲明游標
2. 打開游標
3. 提取游標
4. 關閉游標
顯式游標屬性:
》 %FOUND:只有在DML語句影響一行或多行時%FOUND屬性才會返回true
》 %NOTFOUND:與%FOUND相反
》 %ROWCOUNT:返回DML語句影響的行數 無影響返回0
》 %ISOPRN:返回游標是否打開
6.存儲過程
1.聲明部分
a) 聲明部分包括類型、游標、常量、變量、異常和嵌套子程序的聲明
2.可執行部分
a) 賦值、控制執行過程以及操作Oracle數據的語句
3.異常處理部分:包括異常處理程序,負責處理執行存儲過程中出現的異常
a) 模塊化:通過子程序可以將程序分解為可管理的、明確的邏輯模塊
b) 可重用性:子程序在創建並執行後,就可以在任意數目的應用程序中使用
c) 可維護性:子程序簡化維護操作
d) 安全性:用戶可以設置權限使得訪問數據的唯一方式就是通過用戶提供的存儲過程和函數。
4.用法:
1. 創建存儲過程
2. 調用存儲過程
a) 用命令在SQL提示符下調用
1. 執行存儲過程
a) 參數的傳遞方式:
i. 按位置傳遞
ii. 按名稱傳遞
iii. 混合方式傳遞
b) 在PL/SQL塊中調用
3. 存儲過程的參數模式
4. 存儲過程的訪問權限
5. 刪除存儲過程
5.規范:
a) 存儲過程中不可以直接使用DDL語句,可以通過動態SQL實現。
b) 必須有相應的出錯處理功能
c) 存儲過程中變量在引用表字段的時候,需使用%TYPE和%ROWTYPE類型
d) 必須在存儲過程中做異常處理,並將異常信息通過OS_MSG變量輸出
e) 必須包含兩個參數:on_Flag (NUMBER)和 os_Msg(VarChar2)
f) -19999~ -1的異常為Oracle定義的異常代碼
g) “WHEN OTHERS”必須放置在異常處理代碼的最後面作為默認處理器處理沒有顯式處理的異常。