其他數據庫對象包括同義詞、索引、序列和視圖。
1.1同義詞是現有對象的別名。
簡化SQL語句;隱藏對象的名稱和所有者;提供對對象的公共訪問。
同義詞有兩種類型:私有同義詞和公共同義詞。
私有同義詞只能在其模式內訪問,並且不能與當前模式中的對象同名。
私有同義詞語法:
為SCOTT.emp創建同義詞emp-其中emp是SCOTT.emp的別名,SCOTT是模式名,emp是指示。
公共同義詞的語法:
為SCOTT.emp創建公共同義詞emp _ syn-其中emp_syn是同義詞名稱。
創建或替換現有同義詞:
創建或替換SCOTT.emp的同義詞emp_syn。- OR REPLACE是替換現有的同義詞。
刪除同義詞:
SQL DROP同義詞emp
SQL DROP公共同義詞emp _ syn
1.2序列
1.2.1序列是用於生成唯壹連續序列號的對象;順序可以是升序或降序。
使用CREATE SEQUENCE語句創建序列:
SQL創建序列玩具_序列
從10開始
增加10
最大值2000
最小值10
無循環
緩存10;
註意:指定內存中預分配序列號的數量。
1.2.2訪問順序:
通過序列的偽列訪問序列的值。
NEXTVAL返回序列的下壹個值。
CURRVAL返回序列的當前值。
SQL插入玩具(玩具id,玩具名稱,玩具價格)
值(toys_seq。NEXTVAL,《二十》,25);
SQL插入玩具(玩具id,玩具名稱,玩具價格)
值(toys_seq。NEXTVAL,《魔法鉛筆》,75);
-玩具在哪裏。NEXTVAL指定序列的下壹個值。
SQL選擇玩具序列。dual的CURRVAL-檢索序列的當前值
1.2.3更改和刪除序列
使用ALTER SEQUENCE語句修改序列,但不能更改序列的START WITH參數。
SQL ALTER SEQUENCE toys _ seq max value 5000循環;
使用DROP SEQUENCE語句刪除序列。
SQL刪除序列toys _ seq
1.3視圖
1.3.1視圖以自定義方式顯示壹個或多個表中的數據;
視圖可以被視為“虛擬表”或“存儲查詢”;
創建視圖的表稱為“基表”
視圖的優點是:
提供另壹個級別的表安全性;
隱藏數據的復雜性;
為用戶簡化的SQL命令;
隔離基表結構的變化;
通過重命名列,可以從另壹個角度提供數據。
1.3.2創建視圖的語法:
創建[或替換][強制]視圖
視圖名稱[(別名[,別名]...)]
AS select_statement
[帶檢查選項]
[只讀];
創建視圖stud_view(是壹個圖表)
AS SELECT studno,studname,subno(字段)
FROM Stud_details(原表);
使用WITH CHECK選項創建視圖。
創建或替換視圖pause_view AS
SELECT * FROM order _ master WHERE OS tatus = ' p '
WITH CHECK選項約束chk _ pv
使用ORDER BY子句創建視圖。
創建或替換視圖順序為
SELECT * FROM vendor _ master ORDER BY venname;
創建有錯誤的視圖
將強制視圖創建為
SELECT * FROM venmaster
創建外部聯接視圖
將視圖ven_ord_outj_view創建為
選擇vm.vencode,venname,訂單號,odate,ostatus
從供應商主虛擬機,訂單主OM
其中VM . vencode = om . vencode(+);
或者
選擇vm.vencode,venname,訂單號,odate,ostatus
從供應商_主虛擬機左側外部連接訂單_主OM
ON VM . vencode = om . vencode;
關於1.3.3視圖的DML聲明
您還可以使用DML語句來修改視圖上的數據,例如插入、更新和刪除。
視圖上的DML語句有以下限制:
只能修改壹個底層基表;
來源:(-數據庫對象_壹土林xi _新浪博客如果修改違反了基表的約束,則無法更新視圖;
如果視圖包含聯接運算符;DISTINCT關鍵字;集合運算符;聚合函數或GROUP BY子句;無法更新視圖。
如果視圖包含虛擬列或表達式,則無法更新視圖。
您可以在視圖中使用單行函數、分組函數和表達式:
創建視圖項目_視圖為
SELECT itemcode,LOWER(itemdesc) item_desc
來自項目文件;
使用DROP VIEW語句刪除視圖。
SQL DROP VIEW toys _ view
1.4指數
有各種類型的索引。除了標準索引之外,還有壹些特殊類型的索引:
索引的類型:唯壹索引、位圖索引、組合索引、基於函數的索引和反向鍵索引。
創建標準索引:
SQL在項目文件(項目代碼)上創建索引item_index
表空間index _ tbs
重建索引:
SQL ALTER INDEX item _ INDEX REBUILD;
刪除索引:
SQL刪除索引item _ index
1.4.1唯壹索引
唯壹索引確保定義索引的列中沒有重復值。
Oracle自動在表的主鍵列上創建唯壹索引。
使用CREATE UNIQUE INDEX語句創建唯壹索引:
SQL創建唯壹索引item_index
在項目文件(項目代碼)上;
1.4.2綜合指數
復合索引是在壹個表的多個列上創建的索引;
索引中列的順序是任意的;
如果在SQL語句的WHERE子句中引用復合索引的所有或大部分列,可以提高檢索速度。
SQL創建索引comp_index
1.4.3反向鍵索引
Inverse key index反轉索引列鍵值的每個字節;
它通常基於值不斷增加的列,以便數據均勻分布在整個索引中;
創建索引時使用REVERSE關鍵字:
SQL創建索引rev_index
在itemfile (itemcode)上反轉;
SQL ALTER INDEX rev _ INDEX REBUID no reverse;
1.4.4位圖索引
位圖索引適合在低基數列上創建;
位圖索引不直接存儲ROWID,而是存儲字節位到ROWID的映射;
縮短響應時間;
節省空間占用。
語法:
SQL創建位圖索引位索引
ON order_master(訂單號);
1.4.5索引組織表
索引組織表的數據存儲在與之關聯的索引中;
索引存儲行的實際數據,而不是ROWID。;
基於主鍵訪問數據;
CREATE TABLE命令與ORGANIZATION INDEX子句壹起使用,創建索引組織表:
SQL創建表ind_org_tab(
vencode NUMBER(4)主鍵,
venname VARCHAR2(20)
)
組織索引;
常用表與索引組織表的比較;
普通表索引組織表
ROWID唯壹標識行主鍵唯壹標識行。
隱式ROWID列沒有隱式ROWID列。
基於ROWID的訪問基於主鍵的訪問
順序掃描返回所有行,全索引掃描返回所有行,按主鍵順序排列。
支持分區。不支持分區。
1.4.6基於函數的索引
基於壹列或多列上的函數或表達式創建的索引。
表達式中不能出現聚合函數。
不能在LOB類型的列上創建。
創建查詢時,您必須擁有查詢重寫權限。
SQL創建索引lowercase_idx
玩具上(下(玩具名));
SQL從toys中選擇toyid
WHERE LOWER(toy name)= ' doll ';
1.4.7索引中的分區
索引可以存儲在不同的分區中。
與分區相關的索引有三種類型:
本地分區索引——在已分區表上創建的索引,在每個表分區上創建獨立的索引,索引的分區範圍與表壹致;
全局分區索引(global partition index)——在已分區表或非分區表上創建的索引,獨立指定分區範圍,不考慮分區範圍,也不考慮表是否分區;
全局非分區索引-在已分區表上創建的全局通用索引,該索引不分區。
1.4.8獲取指數的信息
與索引相關的數據字典視圖有:
user _ indexes-用戶創建的索引的信息;
user _ ind _ partitions-用戶創建的分區索引信息;
user _ ind _ columns-與索引相關的表列的信息。
SQL SELECT索引名,表名,列名
從用戶_索引_列
ORDER BY INDEX_NAME,COLUMN _ POSITION
來源:(-數據庫對象林新浪博客