Oracle Database,又名Oracle RDBMS,或簡稱Oracle。是甲骨文公司的一款關系數據庫管理系統。它是在數據庫領域一直處於領先地位的產品。可以說Oracle數據庫系統是目前世界上流行的關系數據庫管理系統,是目前最流行的C/S或B/S體系結構的數據庫之一,它具有系統可移植性好、使用方便、功能強,適用於各類大、中、小、微機環境。它是一種高效率、可靠性好的 適應高吞吐量的數據庫解決方案。oracle目前是世界上使用最為廣泛的數據庫管理系統,作為一個通用的數據庫系統,它具有完整的數據管理功能;作為一個關系型數據庫,它是一個完備關系的產品;作為分布式數據庫它實現了分布式處理功能。
一,oracle的一些基本概念
1.數據庫:database
oracle數據庫是數據的物理存儲。包括數據文件ORA或者DBF,控制文件,聯機文件,日志文件,參數文件。oracle數據庫的概念和其他數據庫概念有些不一樣,比如mysql,mysql數據庫創建數據庫的過程是--創建庫--創建表,而oracle創建數據庫的過程是--創建一個表空間--創建一個用戶--由用戶去創建表。所以oracle數據庫和其他數據庫是有不同之處的。可以這樣理解,oracle是只有一個數據庫,是一個大的數據庫,由用戶來管理的。
2.實例
一個oracle的實例由一系列的后台進程和內存結構組成。一個數據庫可以有多個實例。
3.數據文件:dbf
數據文件是數據庫的物理存儲單位。oracle的數據庫的數據存儲在表空間中,而真正是存儲在一個或多個數據文件中。而一個表空間可以由一個或者多個數據文件組成,而一個數據文件只能屬於一個表空間。一旦數據文件被放入一個表空間過后,就不能刪除這個數據文件。如果要刪除某個數據文件,則必須刪除其所屬的表空間。
4.表空間
表空間是oracle對物理數據庫上相關數據文件的邏輯映射。一個數據庫邏輯上被划分成一個或若干個表空間,每個表空間包含了在邏輯上相關聯的一組結構。每個數據庫至少有一個表空間(system表空間)。每個表空間由同一磁盤上的一個或者多個文件組成,這些文件就是數據文件。一個數據文件只能屬於一個表空間。
5.用戶
用戶是在實例下建立的。不同實例中可以建相同名字的用戶。表的數據,是由用戶放入某一個表空間的,而這個表空間會隨機把這些表數據放到一個或多個數據文件DBF中。
oracle是由用戶和表空間對數據進行管理和存儲的。但是表數據不是由表空間去查詢的,而是由用戶去查詢的。因為不同用戶可以在同一個表空間建立相同名字的表。
6.偽表dual
select 1+1;
這條sql語句在mysql中是可以成功執行的,而在oracle中卻是不能執行的,而這時偽表dual出現了,它的一個主要作用就是為了補全語法結構。在平時學習是可以使用偽表練習。
7.偽列rownum
在oracle中偽列是它獨有的,它表示的是表中的行號,它有兩個特點:首先它是隱藏的,其次它是隨着數據量的增長而動態增長的,也就是說當你每查詢出來一條數據,它就是自動+1。
rownum的用途:在oracle數據庫中利用rownum來做分頁查詢,但是需要注意的是rownum不能用做大於號判斷,可以做小於號判斷。
例如:查詢第6-10條數據
select * from (select rownum hanghao,emp.* from emp) tt where tt.hanghao between 6 and 10;
結果如下:
HANGHAO EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ----------- ---------- --------- ----- ----------- --------- --------- ------
6 7698 BLAKE MANAGER 7839 1981/05/01 2850.00 30
7 7782 CLARK MANAGER 7839 1981/06/09 2450.00 10
8 7788 SCOTT ANALYST 7566 1987/04/19 3000.00 20
9 7839 KING PRESIDENT 1981/11/17 5000.00 10
10 7844 TURNER SALESMAN 7698 1981/09/08 1500.00 0.00 30
8.偽列rowid
首先rowid在oracle中是表示每行記錄所存放的真實物理地址的,這個物理地址是唯一的,在表中是獨一無二的,就算有兩條數據,他們的內容一樣,但rowid還是不同。
例如,刪除重復的記錄,只保留rowid最小的那條記錄。
新建一張表:
create table p(
name varchar(10)
);
往表中插入多條數據,有重復的,最后插入結果如圖。
要求刪除重復的數據,並且保留rowid最小的那條數據,sql如下:
首先利用表連接查詢獲取rowid最小的那條數據,最后將大於最小rowid的數據刪除。
delete from p p1 where p1.rowid>(select min(rowid) from p p2 where p1.name=p2.name)
二,oracle的功能十分強大,應用也十分廣泛
oracle有很強大的威力,它的特性主要體現在這些方面:
1)跨平台(軟硬件都是跨平台的)
2)安全性高, 廣泛應用於各行各業,金融,保險,銀行....
3)支持分布式處理
4)支持數據庫倉庫,具有大數據分析功能
5)支持大事務操作
6)支持海量級別的數據處理,性能特別好
7)支持強大的函數處理和觸發器處理
8)基於角色的權限管理機制,安全性極高
9)支持PL/SQL強大的業務編程能力(什么是PL/SQL: