Oracle學(xué)習(xí)筆記之視圖及索引的使用
一、視圖的使用
1.概念
視圖概念: 視圖是基于一個(gè)表或多個(gè)表或視圖的邏輯表(虛表),本身不包含數(shù)據(jù),通過(guò)它可以對(duì)表里面的數(shù)據(jù)進(jìn)行查詢(xún)。
基表:視圖是從一個(gè)或多個(gè)實(shí)際表中獲得的,這些表的數(shù)據(jù)存放在數(shù)據(jù)庫(kù)中。那些用于產(chǎn)生視圖的表叫做該視圖的基表。
視圖優(yōu)點(diǎn):
- 簡(jiǎn)化性
- 安全性
2.視圖分類(lèi)
視圖分為簡(jiǎn)單視圖和復(fù)雜視圖。兩者區(qū)別如下:
- 簡(jiǎn)單視圖只從單表獲取數(shù)據(jù),復(fù)雜視圖從多表獲取數(shù)據(jù)。
- 簡(jiǎn)單視圖不包含函數(shù)和數(shù)據(jù)組,復(fù)雜視圖包含。
- 簡(jiǎn)單視圖可以實(shí)現(xiàn)DML操作,復(fù)雜視圖不可以。
3.視圖語(yǔ)法
創(chuàng)建視圖的語(yǔ)法:
- CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[,alias]...)]
- AS subquery [WITH CHECK OPTION] [WITH READ ONLY]
參數(shù)解析:
- OR REPLACE:如果視圖存在,新定義將替換視圖。
- FORCE:基本不存在也將創(chuàng)建視圖,NOFORCE相反。
- ALIAS:為視圖產(chǎn)生的列定義別名,如不定義將采用基表中列名。
- SUBQUERY:一條查詢(xún)語(yǔ)句。
- WITH CHECK OPTION:插入或者修改數(shù)據(jù)必須滿(mǎn)足視圖查詢(xún)(SUBQUERY)WHERE子句的條件。
- WITH READ ONLY:不能對(duì)視圖進(jìn)行刪改(DELETE/UPDATE)操作。
4.視圖實(shí)例
create or replace view emp_view as select * from emp where empno<1003;
二、索引
1.索引概念
- 在關(guān)系數(shù)據(jù)庫(kù)中,索引是一種與表有關(guān)的數(shù)據(jù)庫(kù)對(duì)象,它可以使對(duì)應(yīng)于表的SQL查詢(xún)語(yǔ)句執(zhí)行得更快。
- 索引的作用類(lèi)似于圖書(shū)的目錄,可以根據(jù)目錄中的頁(yè)碼快速找到所需的內(nèi)容。
- 對(duì)于數(shù)據(jù)庫(kù)來(lái)說(shuō),索引是一個(gè)必選項(xiàng),對(duì)于現(xiàn)在的各種大型數(shù)據(jù)庫(kù)來(lái)說(shuō),索引可以大大提高數(shù)據(jù)庫(kù)的性能,以至于它變成了數(shù)據(jù)庫(kù)不可缺少的一部分。
2.索引分類(lèi)
2.1、按物理存儲(chǔ)方式分類(lèi)
B*樹(shù)索引:B*樹(shù)索引的存儲(chǔ)結(jié)構(gòu)類(lèi)似書(shū)的索引結(jié)構(gòu),有分支和葉兩種類(lèi)型的存儲(chǔ)數(shù)據(jù)塊。分支塊相當(dāng)于書(shū)的大目錄,葉塊相當(dāng)于索引到具體的書(shū)頁(yè)。
位圖索引:位圖索引的存儲(chǔ)主要用來(lái)節(jié)省空間,減少Oracle對(duì)數(shù)據(jù)塊的訪(fǎng)問(wèn),它采用位圖偏移方式來(lái)與表的行ID對(duì)應(yīng),采購(gòu)位圖索引一般是重復(fù)值太多的表字段。
2.2、按邏輯功能分類(lèi)
唯一索引:唯一索引意味著不會(huì)有兩行記錄相同的索引鍵值。
非唯一索引:非唯一索引即不對(duì)索引列的值進(jìn)行唯一性限制。
3.索引原則
在正確使用索引的前提下,索引可以提高檢索相應(yīng)表的速度。
- 下列情況可以創(chuàng)建索引
- 字段取值分布范圍很廣
- 字段中包含大量空值
- 字段經(jīng)常出現(xiàn)在where子句或連接條件中
- 表經(jīng)常被訪(fǎng)問(wèn)、數(shù)據(jù)量很大,且通常每次訪(fǎng)問(wèn)的數(shù)據(jù)量小于記錄總數(shù)的2%-4%。
下列情況不適合創(chuàng)建索引:
- 表很小
- 字段不經(jīng)常出現(xiàn)在where子句中
- 每次訪(fǎng)問(wèn)的數(shù)據(jù)量大于記錄總數(shù)的2%-4%
- 表經(jīng)常更新
- 被索引的字段作為表達(dá)式的一部分被引用
4.索引語(yǔ)法
索引創(chuàng)建的語(yǔ)法:
- create [unique|bitmap] index 索引名稱(chēng)
- on 表名(列名1[desc|asc],……)
創(chuàng)建索引:
create index ix_emp_ename on emp(ename);
刪除索引:
drop index ix_emp_ename;
到此這篇關(guān)于Oracle學(xué)習(xí)筆記之視圖及索引的使用的文章就介紹到這了,更多相關(guān)Oracle 視圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle?19c?RAC?手工建庫(kù)的搭建過(guò)程
這篇文章主要介紹了Oracle?19c?RAC?手工建庫(kù)搭建過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01
解析PL/SQL Developer導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)的方法以及說(shuō)明
本篇文章是對(duì)PL/SQL Developer導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)的方法以及說(shuō)明進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
Oracle數(shù)據(jù)庫(kù)中查詢(xún)時(shí)怎么使用日期(時(shí)間)作為查詢(xún)條件
這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫(kù)中查詢(xún)時(shí)怎么使用日期(時(shí)間)作為查詢(xún)條件的相關(guān)資料,Oracle數(shù)據(jù)庫(kù)下基于日期條件的查詢(xún)發(fā)揮著重要的作用,它能夠幫助開(kāi)發(fā)者實(shí)現(xiàn)比較復(fù)雜的數(shù)據(jù)管理任務(wù),需要的朋友可以參考下2024-02-02
Oracle數(shù)據(jù)庫(kù)TNS常見(jiàn)錯(cuò)誤的解決方法匯總
這篇文章主要介紹了Oracle數(shù)據(jù)庫(kù)TNS常見(jiàn)錯(cuò)誤的解決方法,需要的朋友可以參考下2014-07-07
Oracle往某表批量插入記錄的幾種實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于Oracle往某表批量插入記錄的幾種實(shí)現(xiàn)方法,Oracle批量插入語(yǔ)句與其他數(shù)據(jù)庫(kù)不同,文中通過(guò)代碼實(shí)例介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07
ORACLE實(shí)現(xiàn)字段自增示例說(shuō)明
如何實(shí)現(xiàn)oracle中字段的自增,下面用一個(gè)例子來(lái)說(shuō)明,有此需求的各位朋友可以參考下2013-11-11
Oracle8i和Microsoft SQL Server比較
Oracle8i和Microsoft SQL Server比較...2007-03-03
Oracle給用戶(hù)授權(quán)truncatetable的實(shí)現(xiàn)方案
這篇文章主要介紹了Oracle給用戶(hù)授權(quán)truncatetable的實(shí)現(xiàn)方案,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-05-05

