一、啟動和關閉Oracle資料庫
1. 資料庫啟動以SYSDBA身份登入資料庫啟動命令:STARTUP 【啟動選項】
資料庫啟動三個階段:
啟動Oracle例項(非安裝階段)
由例項安裝資料庫(安裝階段)
開啟資料庫(開啟階段)
2. 資料庫的關閉
以SYSDBA身份登入 資料庫關閉命令:SHUTDOWN 【啟動選項】 資料庫關閉三個階段:
關閉資料庫
解除安裝資料庫
關閉Oravle例項
二、啟動、關閉Oracle監聽程序
監聽器lsnrctl:提供資料庫訪問,預設埠1521
為了使客戶端使用者能連線到Oracle例項,要啟動監聽
1.啟動監聽啟動監聽是Oracle使用者在作業系統下執行的命令,可以直接在LSNRCTL後加引數,也可以在該命令提示符後在進行操作。
2.關閉監聽
注意:先啟動監聽,後啟動資料庫。 三、表空間
1. 建立表空間
引數解釋:tablespacename:表空間名稱DATAFILE:指定組成表空間的一個或多個數據檔案,當有多個數據檔案時使用逗號分隔filename:表空間中資料檔案的路徑和名稱SIZE:指定檔案的大小,用K指定千位元組大小,用M指定兆位元組大小AUTOEXTEND:用來啟用或禁用資料檔案的自動擴充套件
舉例:
2. 表空間的管理(1)調整表空間的大小。當表空間已滿的情況下,可以透過ALTER語句來調整表空間的大小。 方法一:更改資料檔案的大小,並指明資料檔案的存放路徑,透過使用RESIZE關鍵字,用於指定調整後的表空間的大小
方法二:向表空間內新增資料檔案。為表空間新增一個新的資料檔案
(2)改變表空間的讀寫狀態。
ALTER TABLESPACE 表空間名 READ WRITE ; 使表空間可讀寫ALTER TABLESPACE 表空間名 READ ONLY ; --使表空間只讀
(3)刪除表空間,可以透過DROP語句來刪除表空間,再加上表空間的名字即可。 DROP TABLESPACE 表空間名 [INCLUDING CONTENTS] ;其中INCLUDING CONTENTS是可選項。如果刪除仍包含資料的表空間,需要加上該選項。
四、使用者管理1. 建立使用者
2. 修改使用者的密碼ALTER USER 使用者名稱 IDENTIFIED BY 密碼 ;
DROP USER 使用者名稱 CASCADE;
建立使用者前的準備工作:1) 選擇使用者名稱和密碼2) 識別使用者需用於儲存物件的表空間3) 決定每個表空間的限額4) 分配預設表空間和臨時表空間5) 建立使用者6) 向用戶授予許可權和角色
五、資料庫許可權管理
1. 系統許可權
系統許可權是指在資料庫中執行某種系統級別的操作,或者針對某一類物件執行某種操作的權利
常用的系統許可權如下:CREATE SESSION:連線到資料庫CREATE TABLE:建立表CREATE VIEW:建立檢視CREATE SEQUENCE:建立序列
2. 物件許可權物件許可權是指標對某個特定模式物件執行操作的權利,只能針對模式物件來設定管理物件許可權,包括:表、檢視、序列、儲存過程等。
Oracle資料使用者有兩種途徑獲得許可權:(1)直接向用戶授予許可權(2)將許可權授予給角色,再將角色授予給一個或多個使用者。使用角色能夠更加方便和高效地對許可權進行管理,所以資料庫管理員通常使用角色向用戶授予許可權,而不是直接向用戶授予許可權。 Oracle中常用系統預定義角色如下:(1)CONNECT:擁有連線資料庫的許可權(2)RESOURCE:擁有建立表、觸發器、過程等許可權(3)DBA:資料庫管理員角色,擁有管理資料庫的最高許可權
3. 新建的使用者必須授予一定的許可權才能進行相關資料庫操作。
授權透過GRANT語句,取消授權則透過REVOKE語句。 授予許可權語法格式如下:
GRANT 許可權 | 角色 TO 使用者名稱;
撤銷許可權語法格式如下:REVOKE 許可權 角色 FROM 使用者名稱;
六、事務控制
COMMIT:提交事務,即把事務中對資料庫的修改進行永久儲存。ROLLBACK:回滾事務,即取消對資料庫所做的任何修改自動提交:set autocommit on關閉自動提交:set autocommit off 七、索引
索引是oracle的一個物件,是與表關聯的可選結構,提供了一種快速訪問資料的途徑,提高了資料庫檢索效能。索引使資料庫程式無需對整個表進行掃描,就可以在其中找到所需要的資料。就像書的目錄,可以透過目錄快速查詢所需資訊,無需閱讀整本書。 1、索引的特點適當地使用索引可以提高查詢速度可以對錶的一列或多列建立索引建立索引的數量沒有限制索引需要磁碟儲存,可以指定表空間,由oracle自動維護索引對使用者透明,檢索時是否使用索引由oracle自身決定
Oracle資料庫管理系統在訪問資料時使用以下三種方式:
全表掃描
透過ROWID(行地址,快速訪問表的一行)
使用索引
當沒有索引或者不選擇使用索引時就用全表掃描的方式
2.索引的分類
(1)建立普通索引(B樹索引)
引數解釋:index_name:建立索引的名稱
tablename:為之建立索引的表名columnname:在其上建立索引的列名列表,可以基於多列建立索引,列之間用逗號分隔tablespace:為索引指定表空間
(2)建立唯一索引保證定義索引的列中沒有任何兩行有重複值。唯一索引中的索引關鍵字只能指向表中的一行。
(3)建立反向鍵索引與常規B樹索引相反,反向鍵索引在保持列順序的同時反轉索引列的位元組。反向鍵索引透過反轉索引鍵的資料值,使得索引的修改平均分佈到整個索引樹上。主要應用於所多個例項同時訪問一個數據庫的場景中。
(4)建立點陣圖索引
優點:相對於B樹索引而言,基於點陣圖索引列的查詢可以減少響應時間。相比其他索引技術,點陣圖索引佔用空間明顯減少。
(5)其他索引
組合索引:在表內多列上建立。索引中的列不必與表中的列順序一致,也不必相互鄰接。基於函式的索引:需要建立的索引需要使用表中一列或多列的函式或表示式,也可以將基於函式的索引建立為B樹索引或點陣圖索引
3. 建立索引的原則
頻繁搜尋的列可以作為索引列經常排序,分組的列可以作為索引經常用作連線的列(主鍵/外來鍵)可以作為索引將索引放在一個單獨的表空間中,不要放在有回退段、臨時段和表的表空間中對於大型索引而言,考慮使用NOLOGIN子句建立大型索引。 根據業務資料發生頻率,定期重新生成或重新組織索引,進行碎片整理
4. 檢視索引
和索引有關的資料字典:USER_INDEXS:使用者建立的索引資訊USER_IND_COLUMNS:與索引相關的表列資訊
5. 維護索引
(1)重建索引索引需要維護,如果建立了索引的表中有大量的刪除和插入操作,會使得索引很大,因為刪除操作後,刪除值的索引空間不能被自動重新使用,對於大表和DML操作很頻繁的表,索引的維護是很重要的。Oracle提供了rebuild指令來重建索引。使索引空間可以重用刪除值所佔用的空間,使索引更加緊湊。
(2)合併索引碎片合併索引碎片可以釋放部分磁碟空間,是索引維護的一種重要方式,也是維護磁碟空間的方式,類似於磁碟碎片整理,把不用的空間釋放出來再利用。
(3)重新命名索引
八、檢視
檢視是一個虛表,不佔用物理空間,因為檢視本身的定義語句儲存在資料字典裡,檢視中的資料是一個或多個實際表中獲得的。那些用於產生檢視的表叫做該檢視的基表。一個檢視也可以從另一個檢視中產生。
1. 檢視的優點:1) 提供了另外一種級別的表安全性2) 隱藏的資料的複雜性:一個檢視可能是用多表連線定義的,但使用者不需要知道多表連線的語句也可以查詢資料。3) 簡化的使用者的SQL命令:查詢檢視的時候不需要寫出複雜的查詢語句,只需要查詢檢視名稱即可。4) 隔離基表結構的改變:檢視建立好了之後,如果修改了表的結構,也不會影響檢視的。5)透過重新命名列,從另一個角度提供資料:例如在銷售系統中,每日下班前要對當日資料進行彙總,在銷售人員眼中,該彙總表成為日銷售統計表,在財務人眼中,該銷售表成為銷售日報表
2. 建立檢視
引數解釋:
OR REPLACE:如果檢視已存在,此選項將重新建立該檢視。FORCE:如果使用此關鍵字,則無論基表是否存在,都將建立檢視。NOFORCE:這是預設值,如果使用此關鍵字,則僅當基表存在時才建立檢視。VIEW_NAME:要建立檢視的名稱Alias:指定由檢視的查詢所選擇的表示式或列的別名。別名的數目必須與檢視所選擇的表示式的數目相匹配。Select_statement:select語句WITH CHECK OPTION :此選項指定只能插入或更新檢視可以訪問的行。術語constraint表示為CHECK OPTION約束指定的名稱。WITH READ ONLY:此選項保證不能在此檢視上執行任何修改操作。
3. DML語句和複雜檢視DML語句是指用於修改資料的insert、delete和update語句。因為檢視是一個虛擬的表,所以這些語句也可以與檢視一同使用。一般情況下不透過檢視修改資料,而是直接修改基表,因為這樣條例更清晰。
在檢視上使用DML語句有如下限制(相對於表)。1)DML語句只能修改檢視中的一個基表。2)如果過記錄的修改違反了基表的約束條件,則將無法更新檢視。3)如果建立的檢視包含連線運算子,DISTINCT運算子、集合運算子、聚合函式和groupby子句,則將無法更新檢視。4)如果建立的檢視包含偽列表達式,則將無法更新檢視。簡單檢視基於單個基表,不包括函式和分組函式,那麼可以在此檢視中進行insert、update、delete操作,這些操作實際上在基表中插入、更新和刪除行。
複雜檢視從多個表提取資料,包括函式分組函式。複雜檢視不一定能進行DML操作。
4. 查詢檢視select view_name from user_views;
6. 物化檢視含義:就是具有物理儲存的特殊檢視,佔據物理空間,就像表一樣是遠端資料的本地副本,或者用來生成基於資料表求和的彙總表
物化檢視中兩個重要概念:查詢重寫和物化檢視同步
(1)查詢重寫:對sql語句進行重寫,當用戶使用sql語句對基表進行查詢時,如果已經建立了基於這些表的物化檢視,oracle將自動計算和使用物化檢視來完成查詢,在某些情況下可以節約查詢時間,減少系統i/o。Oracle將這種查詢最佳化技術成為查詢重寫。引數QUERY_REWRITE_ENABLED決定是否使用重寫查詢,該引數為布林型。在建立物化檢視需要用ENABLE_QUERY REWRITE來啟動查詢重寫功能。透過SHOW指令可以檢視該引數的值。 (2)物化檢視的同步:物化檢視是基於表建立的,所以當基表變化時,需要同步資料以更新物化檢視中的資料,這樣保持物化檢視中的資料和基表的資料一致性。Oracle提供了兩種物化檢視的重新整理方式,決定何時進行重新整理,即ON COMMIT方式和ON DEMAND方式。
ON COMMIT方式:指物化檢視在對基表的DML操作事務提交的同時進行重新整理。
ON DEMAND方式:指物化檢視在使用者需要的時候進行更新,可以手工透過DBMS_MVIEW.REFRESH等方式來進行重新整理,也可以透過JOB定時進行重新整理。
選擇重新整理方式之後,還需要選擇一種重新整理型別,重新整理型別指定重新整理時基表與物化檢視如何實現資料的同步,oracle提供了以下4種重新整理型別。
COMPLETE:對整個物化檢視進行完全的重新整理。FAST:採用增量重新整理,只重新整理自上次重新整理後進行的修改。FORCE:oracle在重新整理時會去判斷是否可以進行快速重新整理,如果可以則採用FAST方式,否則採用COMPLETE方式。NEVER:物化檢視不進行任何重新整理。預設值是FORCE重新整理型別。
建立物化檢視(1)授予許可權,具備建立物化檢視的許可權、QUERY REWRITE的許可權,以及對建立物化檢視所涉及的表的訪問許可權和建立表的許可權。透過SCOTT使用者來演示
(2)建立物化檢視日誌
(3)建立物化檢視語句
其中:bulid immediate:該引數的含義是立即建立物化檢視,也可以選擇build deffered,該引數說明在物化檢視定以後不會立即執行,而是延遲執行,在使用該檢視時再建立。Reffesh fast:重新整理資料的型別選擇FAST型別。ON COMMIT:在基表有更新時提交後立即更新物化檢視。ENABLE QUERY REWRITE:啟動查詢重寫功能。在建立物化檢視時明確說明啟用查詢重寫功能。As:定義後面的查詢語句。查詢體:物化檢視的查詢內容,該sql語句的查詢結果集輸出到物化檢視中,儲存在由oracle自動建立的表中。
九、序列
序列是用來生成唯一、連續的整數資料庫物件。序列通常用來自動生成主鍵或唯一鍵的值。序列可以按升序排列,也可以按降序排列。
1. 建立序列
START WITH:指定要生成的第一個序列號,對於升序序列,其預設值為序列的最小值,對於降序序列,其預設值為序列的最大值。
INCREMENT BY:用於指定序列號之間的間隔,預設值為1,如果n為正值,則生成的序列將按升序排序,如果n為負值,則生成的序列按降序排列。
MAXVALUE:指定序列可以生成的最大值
NOMAXVALUE:如果指定了NOMAXVALUE,oracle將升序序列的最大值設為1027,將降序序列的最大值設為-1。
MINVALUE:指定序列最小值。MINVALUE必須小於或等於START WITH的值,並且必須小於MAXVALUE。
NOMINVALUE:如果指定了NOMINVALUE,oracle將升序序列的最小值設為1,或將降序列的值設定為-1026。
CYCLE:指定序列在達到最大值或最小值後,將繼續從頭開始生成值。
NOCYCLE:指定序列在達到最大值或最小值後,將不在繼續生成值。
CHCHE:使用CACHE選項可以預先分配一組序列號,並將其保留在記憶體中,這樣可以更快地訪問序列號,當用完快取中的所有序列號時,oracle將生成另一組數值,並將其保留在快取中。
NOCACHE:使用NOCACHE選項,則不會為加快訪問速度而預先分配序列號。如果在建立序列時忽略了CACHE和NOCACHE選項,oracle將預設快取20個序列號。
2. 訪問序列建立了序列之後,可以透過NEXTVAL和CURRVAL偽列來訪問該序列的值。可以從偽列中選擇值。但是不能操縱他們的值。
NETXVAL:建立序列後第一次使用NEXTVAL時,將返回該序列的初始值。以後再引用NETXVAL時,將使用INCREMENT BY子句的值來增加序列值,並返回這個新值。CURRVAL:返回序列的當前值,即最後一次引用NEXTVAL時返回的值
舉例:建立序列
建立表
插入資料
檢視資料
檢視序列的當前值
Currval返回序列的當前值,即最後一次引用NEXTVAL時返回的值
測試currval
重啟例項之後再次寫入資料發現從40開始,因為按建立序列的要求,每次會拿30個序列號放到快取中,例項重啟後,快取中的序列就會消失
十、同義詞
同義詞是物件的一個別名,不佔用任何的實際儲存空間,只在oracle的資料字典中儲存其定義描述,在使用同義詞時,oracle會將其翻譯為對應物件的名稱。
1. 用途:
簡化SQL語句
隱藏物件的名稱和所有者
為分散式資料庫的遠端物件提供位置透明性
提供對資料庫物件的公共訪問
建立資料庫連結的語法:CREATE DATABASE LINK 資料庫連結名 CONNECT TO user名 IDENTIFIED BY 口令 USING ‘Oracle連結串’;
2. 同義詞的分類
(1)私有同義詞私有同義詞只能被當前模式的使用者訪問,私有同義詞名稱不可與當前模式的物件名稱相同。要在自身的模式建立私有同義詞,使用者必須擁有create synonym系統許可權。要在其他使用者模式建立私有同義詞,使用者必須擁有create any synonym系統許可權。
語法:
CREATE [OR REPLACE] SYNONYM [schema.]synonym_name FOR [schema.]object_name ;
[OR REPLACE]:在同義詞存在的情況下替換該同義詞
synonym_name:要建立同義詞的名稱
object_name:指定要為之建立同義詞的物件的名稱
(2)共有同義詞公有同義詞被所有的資料庫訪問。公有同義詞可以隱藏基表的身份,並降低sql語句的複雜性。要建立公有公有同義詞,使用者必須擁有create public SYNOYM的系統許可權。語法:
CREATE [OR REPLACE] PUBLIC SYNONYM [schema.]synonym_name FOR [schema.]object_name ;
DROP [PUBLIC] SYNONYM [schema.]synonym_name;
一、啟動和關閉Oracle資料庫
1. 資料庫啟動以SYSDBA身份登入資料庫啟動命令:STARTUP 【啟動選項】
資料庫啟動三個階段:
啟動Oracle例項(非安裝階段)
由例項安裝資料庫(安裝階段)
開啟資料庫(開啟階段)
2. 資料庫的關閉
以SYSDBA身份登入 資料庫關閉命令:SHUTDOWN 【啟動選項】 資料庫關閉三個階段:
關閉資料庫
解除安裝資料庫
關閉Oravle例項
二、啟動、關閉Oracle監聽程序
監聽器lsnrctl:提供資料庫訪問,預設埠1521
為了使客戶端使用者能連線到Oracle例項,要啟動監聽
1.啟動監聽啟動監聽是Oracle使用者在作業系統下執行的命令,可以直接在LSNRCTL後加引數,也可以在該命令提示符後在進行操作。
2.關閉監聽
注意:先啟動監聽,後啟動資料庫。 三、表空間
1. 建立表空間
引數解釋:tablespacename:表空間名稱DATAFILE:指定組成表空間的一個或多個數據檔案,當有多個數據檔案時使用逗號分隔filename:表空間中資料檔案的路徑和名稱SIZE:指定檔案的大小,用K指定千位元組大小,用M指定兆位元組大小AUTOEXTEND:用來啟用或禁用資料檔案的自動擴充套件
舉例:
2. 表空間的管理(1)調整表空間的大小。當表空間已滿的情況下,可以透過ALTER語句來調整表空間的大小。 方法一:更改資料檔案的大小,並指明資料檔案的存放路徑,透過使用RESIZE關鍵字,用於指定調整後的表空間的大小
方法二:向表空間內新增資料檔案。為表空間新增一個新的資料檔案
(2)改變表空間的讀寫狀態。
ALTER TABLESPACE 表空間名 READ WRITE ; 使表空間可讀寫ALTER TABLESPACE 表空間名 READ ONLY ; --使表空間只讀
(3)刪除表空間,可以透過DROP語句來刪除表空間,再加上表空間的名字即可。 DROP TABLESPACE 表空間名 [INCLUDING CONTENTS] ;其中INCLUDING CONTENTS是可選項。如果刪除仍包含資料的表空間,需要加上該選項。
四、使用者管理1. 建立使用者
舉例:
2. 修改使用者的密碼ALTER USER 使用者名稱 IDENTIFIED BY 密碼 ;
DROP USER 使用者名稱 CASCADE;
建立使用者前的準備工作:1) 選擇使用者名稱和密碼2) 識別使用者需用於儲存物件的表空間3) 決定每個表空間的限額4) 分配預設表空間和臨時表空間5) 建立使用者6) 向用戶授予許可權和角色
五、資料庫許可權管理
1. 系統許可權
系統許可權是指在資料庫中執行某種系統級別的操作,或者針對某一類物件執行某種操作的權利
常用的系統許可權如下:CREATE SESSION:連線到資料庫CREATE TABLE:建立表CREATE VIEW:建立檢視CREATE SEQUENCE:建立序列
2. 物件許可權物件許可權是指標對某個特定模式物件執行操作的權利,只能針對模式物件來設定管理物件許可權,包括:表、檢視、序列、儲存過程等。
Oracle資料使用者有兩種途徑獲得許可權:(1)直接向用戶授予許可權(2)將許可權授予給角色,再將角色授予給一個或多個使用者。使用角色能夠更加方便和高效地對許可權進行管理,所以資料庫管理員通常使用角色向用戶授予許可權,而不是直接向用戶授予許可權。 Oracle中常用系統預定義角色如下:(1)CONNECT:擁有連線資料庫的許可權(2)RESOURCE:擁有建立表、觸發器、過程等許可權(3)DBA:資料庫管理員角色,擁有管理資料庫的最高許可權
3. 新建的使用者必須授予一定的許可權才能進行相關資料庫操作。
授權透過GRANT語句,取消授權則透過REVOKE語句。 授予許可權語法格式如下:
GRANT 許可權 | 角色 TO 使用者名稱;
撤銷許可權語法格式如下:REVOKE 許可權 角色 FROM 使用者名稱;
六、事務控制
COMMIT:提交事務,即把事務中對資料庫的修改進行永久儲存。ROLLBACK:回滾事務,即取消對資料庫所做的任何修改自動提交:set autocommit on關閉自動提交:set autocommit off 七、索引
索引是oracle的一個物件,是與表關聯的可選結構,提供了一種快速訪問資料的途徑,提高了資料庫檢索效能。索引使資料庫程式無需對整個表進行掃描,就可以在其中找到所需要的資料。就像書的目錄,可以透過目錄快速查詢所需資訊,無需閱讀整本書。 1、索引的特點適當地使用索引可以提高查詢速度可以對錶的一列或多列建立索引建立索引的數量沒有限制索引需要磁碟儲存,可以指定表空間,由oracle自動維護索引對使用者透明,檢索時是否使用索引由oracle自身決定
Oracle資料庫管理系統在訪問資料時使用以下三種方式:
全表掃描
透過ROWID(行地址,快速訪問表的一行)
使用索引
當沒有索引或者不選擇使用索引時就用全表掃描的方式
2.索引的分類
(1)建立普通索引(B樹索引)
引數解釋:index_name:建立索引的名稱
tablename:為之建立索引的表名columnname:在其上建立索引的列名列表,可以基於多列建立索引,列之間用逗號分隔tablespace:為索引指定表空間
(2)建立唯一索引保證定義索引的列中沒有任何兩行有重複值。唯一索引中的索引關鍵字只能指向表中的一行。
(3)建立反向鍵索引與常規B樹索引相反,反向鍵索引在保持列順序的同時反轉索引列的位元組。反向鍵索引透過反轉索引鍵的資料值,使得索引的修改平均分佈到整個索引樹上。主要應用於所多個例項同時訪問一個數據庫的場景中。
(4)建立點陣圖索引
優點:相對於B樹索引而言,基於點陣圖索引列的查詢可以減少響應時間。相比其他索引技術,點陣圖索引佔用空間明顯減少。
(5)其他索引
組合索引:在表內多列上建立。索引中的列不必與表中的列順序一致,也不必相互鄰接。基於函式的索引:需要建立的索引需要使用表中一列或多列的函式或表示式,也可以將基於函式的索引建立為B樹索引或點陣圖索引
3. 建立索引的原則
頻繁搜尋的列可以作為索引列經常排序,分組的列可以作為索引經常用作連線的列(主鍵/外來鍵)可以作為索引將索引放在一個單獨的表空間中,不要放在有回退段、臨時段和表的表空間中對於大型索引而言,考慮使用NOLOGIN子句建立大型索引。 根據業務資料發生頻率,定期重新生成或重新組織索引,進行碎片整理
4. 檢視索引
和索引有關的資料字典:USER_INDEXS:使用者建立的索引資訊USER_IND_COLUMNS:與索引相關的表列資訊
5. 維護索引
(1)重建索引索引需要維護,如果建立了索引的表中有大量的刪除和插入操作,會使得索引很大,因為刪除操作後,刪除值的索引空間不能被自動重新使用,對於大表和DML操作很頻繁的表,索引的維護是很重要的。Oracle提供了rebuild指令來重建索引。使索引空間可以重用刪除值所佔用的空間,使索引更加緊湊。
(2)合併索引碎片合併索引碎片可以釋放部分磁碟空間,是索引維護的一種重要方式,也是維護磁碟空間的方式,類似於磁碟碎片整理,把不用的空間釋放出來再利用。
(3)重新命名索引
八、檢視
檢視是一個虛表,不佔用物理空間,因為檢視本身的定義語句儲存在資料字典裡,檢視中的資料是一個或多個實際表中獲得的。那些用於產生檢視的表叫做該檢視的基表。一個檢視也可以從另一個檢視中產生。
1. 檢視的優點:1) 提供了另外一種級別的表安全性2) 隱藏的資料的複雜性:一個檢視可能是用多表連線定義的,但使用者不需要知道多表連線的語句也可以查詢資料。3) 簡化的使用者的SQL命令:查詢檢視的時候不需要寫出複雜的查詢語句,只需要查詢檢視名稱即可。4) 隔離基表結構的改變:檢視建立好了之後,如果修改了表的結構,也不會影響檢視的。5)透過重新命名列,從另一個角度提供資料:例如在銷售系統中,每日下班前要對當日資料進行彙總,在銷售人員眼中,該彙總表成為日銷售統計表,在財務人眼中,該銷售表成為銷售日報表
2. 建立檢視
引數解釋:
OR REPLACE:如果檢視已存在,此選項將重新建立該檢視。FORCE:如果使用此關鍵字,則無論基表是否存在,都將建立檢視。NOFORCE:這是預設值,如果使用此關鍵字,則僅當基表存在時才建立檢視。VIEW_NAME:要建立檢視的名稱Alias:指定由檢視的查詢所選擇的表示式或列的別名。別名的數目必須與檢視所選擇的表示式的數目相匹配。Select_statement:select語句WITH CHECK OPTION :此選項指定只能插入或更新檢視可以訪問的行。術語constraint表示為CHECK OPTION約束指定的名稱。WITH READ ONLY:此選項保證不能在此檢視上執行任何修改操作。
3. DML語句和複雜檢視DML語句是指用於修改資料的insert、delete和update語句。因為檢視是一個虛擬的表,所以這些語句也可以與檢視一同使用。一般情況下不透過檢視修改資料,而是直接修改基表,因為這樣條例更清晰。
在檢視上使用DML語句有如下限制(相對於表)。1)DML語句只能修改檢視中的一個基表。2)如果過記錄的修改違反了基表的約束條件,則將無法更新檢視。3)如果建立的檢視包含連線運算子,DISTINCT運算子、集合運算子、聚合函式和groupby子句,則將無法更新檢視。4)如果建立的檢視包含偽列表達式,則將無法更新檢視。簡單檢視基於單個基表,不包括函式和分組函式,那麼可以在此檢視中進行insert、update、delete操作,這些操作實際上在基表中插入、更新和刪除行。
複雜檢視從多個表提取資料,包括函式分組函式。複雜檢視不一定能進行DML操作。
4. 查詢檢視select view_name from user_views;
6. 物化檢視含義:就是具有物理儲存的特殊檢視,佔據物理空間,就像表一樣是遠端資料的本地副本,或者用來生成基於資料表求和的彙總表
物化檢視中兩個重要概念:查詢重寫和物化檢視同步
(1)查詢重寫:對sql語句進行重寫,當用戶使用sql語句對基表進行查詢時,如果已經建立了基於這些表的物化檢視,oracle將自動計算和使用物化檢視來完成查詢,在某些情況下可以節約查詢時間,減少系統i/o。Oracle將這種查詢最佳化技術成為查詢重寫。引數QUERY_REWRITE_ENABLED決定是否使用重寫查詢,該引數為布林型。在建立物化檢視需要用ENABLE_QUERY REWRITE來啟動查詢重寫功能。透過SHOW指令可以檢視該引數的值。 (2)物化檢視的同步:物化檢視是基於表建立的,所以當基表變化時,需要同步資料以更新物化檢視中的資料,這樣保持物化檢視中的資料和基表的資料一致性。Oracle提供了兩種物化檢視的重新整理方式,決定何時進行重新整理,即ON COMMIT方式和ON DEMAND方式。
ON COMMIT方式:指物化檢視在對基表的DML操作事務提交的同時進行重新整理。
ON DEMAND方式:指物化檢視在使用者需要的時候進行更新,可以手工透過DBMS_MVIEW.REFRESH等方式來進行重新整理,也可以透過JOB定時進行重新整理。
選擇重新整理方式之後,還需要選擇一種重新整理型別,重新整理型別指定重新整理時基表與物化檢視如何實現資料的同步,oracle提供了以下4種重新整理型別。
COMPLETE:對整個物化檢視進行完全的重新整理。FAST:採用增量重新整理,只重新整理自上次重新整理後進行的修改。FORCE:oracle在重新整理時會去判斷是否可以進行快速重新整理,如果可以則採用FAST方式,否則採用COMPLETE方式。NEVER:物化檢視不進行任何重新整理。預設值是FORCE重新整理型別。
建立物化檢視(1)授予許可權,具備建立物化檢視的許可權、QUERY REWRITE的許可權,以及對建立物化檢視所涉及的表的訪問許可權和建立表的許可權。透過SCOTT使用者來演示
(2)建立物化檢視日誌
(3)建立物化檢視語句
其中:bulid immediate:該引數的含義是立即建立物化檢視,也可以選擇build deffered,該引數說明在物化檢視定以後不會立即執行,而是延遲執行,在使用該檢視時再建立。Reffesh fast:重新整理資料的型別選擇FAST型別。ON COMMIT:在基表有更新時提交後立即更新物化檢視。ENABLE QUERY REWRITE:啟動查詢重寫功能。在建立物化檢視時明確說明啟用查詢重寫功能。As:定義後面的查詢語句。查詢體:物化檢視的查詢內容,該sql語句的查詢結果集輸出到物化檢視中,儲存在由oracle自動建立的表中。
九、序列
序列是用來生成唯一、連續的整數資料庫物件。序列通常用來自動生成主鍵或唯一鍵的值。序列可以按升序排列,也可以按降序排列。
1. 建立序列
引數解釋:
START WITH:指定要生成的第一個序列號,對於升序序列,其預設值為序列的最小值,對於降序序列,其預設值為序列的最大值。
INCREMENT BY:用於指定序列號之間的間隔,預設值為1,如果n為正值,則生成的序列將按升序排序,如果n為負值,則生成的序列按降序排列。
MAXVALUE:指定序列可以生成的最大值
NOMAXVALUE:如果指定了NOMAXVALUE,oracle將升序序列的最大值設為1027,將降序序列的最大值設為-1。
MINVALUE:指定序列最小值。MINVALUE必須小於或等於START WITH的值,並且必須小於MAXVALUE。
NOMINVALUE:如果指定了NOMINVALUE,oracle將升序序列的最小值設為1,或將降序列的值設定為-1026。
CYCLE:指定序列在達到最大值或最小值後,將繼續從頭開始生成值。
NOCYCLE:指定序列在達到最大值或最小值後,將不在繼續生成值。
CHCHE:使用CACHE選項可以預先分配一組序列號,並將其保留在記憶體中,這樣可以更快地訪問序列號,當用完快取中的所有序列號時,oracle將生成另一組數值,並將其保留在快取中。
NOCACHE:使用NOCACHE選項,則不會為加快訪問速度而預先分配序列號。如果在建立序列時忽略了CACHE和NOCACHE選項,oracle將預設快取20個序列號。
2. 訪問序列建立了序列之後,可以透過NEXTVAL和CURRVAL偽列來訪問該序列的值。可以從偽列中選擇值。但是不能操縱他們的值。
NETXVAL:建立序列後第一次使用NEXTVAL時,將返回該序列的初始值。以後再引用NETXVAL時,將使用INCREMENT BY子句的值來增加序列值,並返回這個新值。CURRVAL:返回序列的當前值,即最後一次引用NEXTVAL時返回的值
舉例:建立序列
建立表
插入資料
檢視資料
檢視序列的當前值
Currval返回序列的當前值,即最後一次引用NEXTVAL時返回的值
測試currval
重啟例項之後再次寫入資料發現從40開始,因為按建立序列的要求,每次會拿30個序列號放到快取中,例項重啟後,快取中的序列就會消失
十、同義詞
同義詞是物件的一個別名,不佔用任何的實際儲存空間,只在oracle的資料字典中儲存其定義描述,在使用同義詞時,oracle會將其翻譯為對應物件的名稱。
1. 用途:
簡化SQL語句
隱藏物件的名稱和所有者
為分散式資料庫的遠端物件提供位置透明性
提供對資料庫物件的公共訪問
建立資料庫連結的語法:CREATE DATABASE LINK 資料庫連結名 CONNECT TO user名 IDENTIFIED BY 口令 USING ‘Oracle連結串’;
2. 同義詞的分類
(1)私有同義詞私有同義詞只能被當前模式的使用者訪問,私有同義詞名稱不可與當前模式的物件名稱相同。要在自身的模式建立私有同義詞,使用者必須擁有create synonym系統許可權。要在其他使用者模式建立私有同義詞,使用者必須擁有create any synonym系統許可權。
語法:
CREATE [OR REPLACE] SYNONYM [schema.]synonym_name FOR [schema.]object_name ;
引數解釋:
[OR REPLACE]:在同義詞存在的情況下替換該同義詞
synonym_name:要建立同義詞的名稱
object_name:指定要為之建立同義詞的物件的名稱
(2)共有同義詞公有同義詞被所有的資料庫訪問。公有同義詞可以隱藏基表的身份,並降低sql語句的複雜性。要建立公有公有同義詞,使用者必須擁有create public SYNOYM的系統許可權。語法:
CREATE [OR REPLACE] PUBLIC SYNONYM [schema.]synonym_name FOR [schema.]object_name ;
DROP [PUBLIC] SYNONYM [schema.]synonym_name;