用建視圖的用戶登陸,執(zhí)行下面代碼,可以刪除所有視圖,但是慎重哈。
成都網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、成都網(wǎng)站建設(shè)、微信開發(fā)、小程序設(shè)計(jì)、集團(tuán)成都企業(yè)網(wǎng)站定制等服務(wù)項(xiàng)目。核心團(tuán)隊(duì)均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗(yàn),服務(wù)眾多知名企業(yè)客戶;涵蓋的客戶類型包括:石雕等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗(yàn),同時也獲得了客戶的一致贊美!
前提是該用戶有執(zhí)行代碼權(quán)限。
begin
for cur in (select view_name from user_views) loop
execute immediately 'drop view '|| cur.view_name ||';';
end loop;
end;
/
子查詢目標(biāo)
子查詢是一種把查詢的結(jié)果作為參數(shù)返回給另一個查詢的一種查詢
子查詢可以讓你將多個查詢綁定在一起
嵌套子查詢
多層子查詢
相關(guān)子查詢
可接受外部的引用
exists/any/all
any:與子查詢中的每一行與主查詢進(jìn)行比較 并對子查詢中的每一行返回一個true值
some 結(jié)果與any一樣
all 子查詢結(jié)果都滿足條件 才會返回true
DML
數(shù)據(jù)庫插入
insert value
insert select
update update table set col=value
delete
DDL
創(chuàng)建和操作表
create
存儲參數(shù) storage(initial size next size minextents value pctincrease value)初始分配空間 追加的長度 最小追加長度 每次追加的百分比或進(jìn)行下一次追加
用已存在的表創(chuàng)建新表
create table new_t(num name amount) as(select * from old_t where amount )
alter
加入一列到已經(jīng)存在的表中
修改已經(jīng)存在的表中的某一列
ALTER TABLE BILLS MODIFY NAME CHAR( );將表中某字段改為長度 個字符
ALTER TABLE NEW_BILLS ADD MENTS CHAR( );向表中加一列
alter不能用于對一個數(shù)據(jù)庫增加或刪除字段 但可以將某列由not null改為null
drop
drop table table_name;
創(chuàng)建視圖和索引
視圖 常被稱為虛表 create view 視圖是一個數(shù)據(jù)庫對象 他允許用戶從一個表或一組表中建立一個 虛表 它本身沒有數(shù)據(jù) 僅僅是一條查詢語句 它可以方便的在各個表中進(jìn)行聯(lián)合查詢 這對用戶來說是很方便的 其次 可以增加安全性 屏蔽一些不想讓無權(quán)限的用戶看一些表中的數(shù)據(jù)即隱藏了基本表 這同時也可以隱藏著其中的復(fù)雜性 有時更改起來也很方便而不必涉及到應(yīng)用程序 如一個表中有 列數(shù)據(jù) 我只想讓其他用戶看到 列 這時候視圖就會顯得十分方便 如表school 有ID name lesson三項(xiàng) 我只需要顯示其中 項(xiàng) 實(shí)例如下
子查詢目標(biāo) 子查詢是一種把查詢的結(jié)果作為參數(shù)返回給另一個查詢的一種查詢子查詢可以讓你將多個查詢綁定在一起嵌套子查詢多層子查詢相關(guān)子查詢可接受外部的引用exists/any/allany:與子查詢中的每一行與主查詢進(jìn)行比較 并對子查詢中的每一行返回一個true值some 結(jié)果與any一樣all 子查詢結(jié)果都滿足條件 才會返回true
DML 數(shù)據(jù)庫插入 insert valueinsert selectupdate update table set col=valuedelete
DDL 創(chuàng)建和操作表create存儲參數(shù) storage(initial size next size minextents value pctincrease value)初始分配空間 追加的長度 最小追加長度 每次追加的百分比或進(jìn)行下一次追加用已存在的表創(chuàng)建新表 create table new_t(num name amount) as(select * from old_t where amount )alter 加入一列到已經(jīng)存在的表中 修改已經(jīng)存在的表中的某一列ALTER TABLE BILLS MODIFY NAME CHAR( );將表中某字段改為長度 個字符ALTER TABLE NEW_BILLS ADD MENTS CHAR( );向表中加一列alter不能用于對一個 數(shù)據(jù)庫 增加或刪除字段 但可以將某列由not null改為nulldropdrop table table_name;
創(chuàng)建視圖和索引視圖 常被稱為虛表 create view 視圖是一個數(shù)據(jù)庫對象 他允許用戶從一個表或一組表中建立一個 虛表 它本身沒有數(shù)據(jù) 僅僅是一條查詢語句 它可以方便的在各個表中進(jìn)行聯(lián)合查詢 這對用戶來說是很方便的 其次 可以增加安全性 屏蔽一些不想讓無權(quán)限的用戶看一些表中的數(shù)據(jù)即隱藏了基本表 這同時也可以隱藏著其中的復(fù)雜性 有時更改起來也很方便而不必涉及到應(yīng)用程序 如一個表中有 列數(shù)據(jù) 我只想讓其他用戶看到 列 這時候視圖就會顯得十分方便 如表school 有ID name lesson三項(xiàng) 我只需要顯示其中 項(xiàng) 實(shí)例如下
所以在適當(dāng)?shù)臅r候 十分有必要在眾多表中建立視圖
索引 索引是與磁盤上數(shù)據(jù)的存儲方式不同的另外一組數(shù)據(jù)的方法 索引的特例是表中記錄一句其在磁盤上的存儲位置顯示 索引可以在表內(nèi)創(chuàng)建一個列或列的組合 通過對正確的 特定的兩個表的歸并字段進(jìn)行索引可以獲得明顯的好處 create index
ps 視圖和索引是兩個完全不同的對象 但有一點(diǎn)是相同的 它們都與一個表或數(shù)據(jù)庫相關(guān)聯(lián) 盡管每一個對象只能與一個特定的表相關(guān)聯(lián) 但它們還是通過對數(shù)據(jù)的預(yù)排序和預(yù)定義顯著地提高了表的工作性能
使用視圖 create view view_name(col col ……) as select table_name(col col ……) from table_name;
select規(guī)則 不能使用union 不能使用order by 但使用group by有其相同功能
DML的規(guī)則 對于多表視圖不能使用delete
除非非空列都出現(xiàn)在視圖中 否則不能使用insert
對于一個歸并(merger)的表插入或更新 所有被更新的記錄必須屬于同一個物理表
如果創(chuàng)建視圖時使用dintinct子句 就不能插入或更新這個視圖
不能更新視圖中????? 的虛擬列(它是用計(jì)算字段得到的)
刪除視圖:drop view view_name;
使用索引
索引可以讓存儲于磁盤上的數(shù)據(jù)進(jìn)行重新排序
使用索引的原因 在使用unique關(guān)鍵字時前執(zhí)行的保證數(shù)據(jù)的完整性
可以容易的用索引字段或其他字段進(jìn)行排序
提高查詢執(zhí)行速度
索引的概念
兩種方法從數(shù)據(jù)庫中獲得數(shù)據(jù) 順序訪問方式 需要sql檢查每一個記錄以找到與之匹配的 此法效率很低 但它是使記錄準(zhǔn)確定位的唯一方法 ? 使用索引的的直接訪問方式 sql采用樹形結(jié)構(gòu)來存儲和返回所以數(shù)據(jù) 用以指示的數(shù)據(jù)存儲在樹的最末端(也就是葉子) 它們被稱為結(jié)點(diǎn)(也可以叫葉 子) 每個結(jié)點(diǎn)中有一個指向其他結(jié)點(diǎn)的指針 結(jié)點(diǎn)左邊的值只是它的雙親結(jié)點(diǎn) 結(jié)點(diǎn)右邊的值則是孩子結(jié)點(diǎn)或葉子 sql將從根結(jié)點(diǎn)開始找到所需的數(shù)據(jù)
ps 當(dāng)查詢沒有使用索引的表時 查詢通常是全表搜索后才會得到結(jié)果 全表搜索會讓數(shù)據(jù)庫服務(wù)程序遍歷過表中的所有記錄然后返回給定條件的記錄 索引可以讓數(shù)據(jù)庫服務(wù)程序快速的定位到表中的確定行
create index index_name on table_name(column_name [column_name ] );
SQL Server 和ORACLE允許你創(chuàng)建成簇的索引 Informix和ORACLE允許你指明列名是按升序排列還是按降序排列
使用索引不會對表中的物理存儲造成影響
order by和索引的區(qū)別
使用order by子句時 每次運(yùn)行它都需要重新進(jìn)行排序 而使用索引時 數(shù)據(jù)庫會建立一個物理索引對象(樹結(jié)構(gòu)) 每次運(yùn)行查詢時都訪問同一個索引
當(dāng)表被刪除時 所有與之相關(guān)的索引也將被刪除
使用索引的技巧
對于小表來說 使用索引對于性能不會有任何提高
當(dāng)你的索引列中有極多的不同數(shù)據(jù)和空值時 索引會使性能有極大的提高
當(dāng)查詢要返回的數(shù)據(jù)很少時(少于全部數(shù)據(jù)的 %) 索引可以優(yōu)化你的查詢 如果要返回的數(shù)據(jù)很多時 索引會加大系統(tǒng)開銷
索引可以提高數(shù)據(jù)的返回速度 但它使得數(shù)據(jù)的更新操作變慢 (對記錄和索引進(jìn)行更新時請不要忘記先刪除索引 當(dāng)執(zhí)行完更新操作后 恢復(fù)索引即可 對于一次特定的操作 系統(tǒng)可以保存刪除的索引 個小時 在這個時間內(nèi)數(shù)據(jù)更新完成后你可以恢復(fù)它 )
索引會占用數(shù)據(jù)庫空間
可以提高歸并速度
大多數(shù)數(shù)據(jù)庫系統(tǒng)不允許對視圖使用索引
不要對經(jīng)常需要更新或修改的字段創(chuàng)建索引 否則會降低性能
不要將索引與表存儲在同一個驅(qū)動器上 分開存儲會去掉訪問沖突從而使結(jié)果返回的更快
復(fù)合索引
對多個字段進(jìn)行索引(一個索引包含多個列)
CREATE INDEX ID_CMPD_INDEX ON BILLS( ACCOUNT_ID AMOUNT );盡量將經(jīng)常在查詢中使用的字段放在最前邊
復(fù)合索引的性能與單個字段的索引相比是無法判定的
創(chuàng)建索引時使用unique關(guān)鍵字
復(fù)合索引通常使用unique關(guān)鍵字來防止有相同數(shù)據(jù)的多個記錄多次出現(xiàn) (oracle 不支持 從 i開始支持)
索引與歸并
當(dāng)查詢中使用了復(fù)雜的歸并時 你的select語句會好用很長時間
在歸并時對字段創(chuàng)建索引可以顯著得提高查詢反應(yīng)速度 但創(chuàng)建太多的索引 會使性能下降而不是提高
作為一個規(guī) 則你應(yīng)該對表中的唯一屬性的字段或你用以歸并操作的字段來創(chuàng)建索引
群集(簇)的使用
當(dāng) 使用群集索引時 數(shù)據(jù)在表中的物理排序方式會被修改 使用群集索引通常比傳統(tǒng)的不使用群集索引速度要快 ORACLE 中群集的概念與此不同 當(dāng)使用ORACLE 關(guān)系數(shù)據(jù)庫系統(tǒng)時 群集就是一個像數(shù)據(jù)或表一樣的對象 群集一般是存儲了表的共有字段以提高對表的訪問速度
oracle 的例子
CREATE CLUSTER [schema ]cluster (column datatype [ column datatype] )
[PCTUSED integer] [PCTFREE integer] [SIZE integer [K|M] ]
[INITRANS integer] [MAXTRANS integer] [TABLESPACE tablespace]
[STORAGE storage_clause] [!!under!!INDEX | [HASH IS column] HASHKEYS integer]
你隨后創(chuàng)建的其于該表的群集的索引會被加入到群集中 然后把表也加入群集中 你應(yīng)該只將經(jīng)常需要?dú)w并的表加入到群集 不要向群集中加入只需要用簡單的SELECT 語句進(jìn)行個別訪問的表
事務(wù)處理控制
事務(wù)控制
事務(wù)控制(事務(wù)處理)指關(guān)系數(shù)據(jù)庫系統(tǒng)執(zhí)行數(shù)據(jù)庫事務(wù)的能力 (邏輯分組 它有自己的開始和結(jié)束)
事務(wù) 邏輯上必須完成的一命令序列的單位
單元工作期 事務(wù)的開始和結(jié)束時期
開始事務(wù)處理
SET TRANSACTION {READ ONLY | USE ROLLBACK SEGMENT segment}
可以在下列語句中使用READ ONLY選項(xiàng) SELECT LOCK TABLE SET ROLE ALTER SESSION ALTER SYSTEM
有些數(shù)據(jù)庫支持SET AUTOMIT [ON | OFF]
結(jié)束事務(wù)處理
MIT [WORK][ MENT text | FORCE text [ integer] ] ;
MIT (TRANSACTION | TRAN | WORK) (TRANSACTION_NAME)
取消事務(wù)處理
這必須是在MIT 之前 ROLLBACK 語句必須在一個事務(wù)之中運(yùn)行 它可以一直撤消到事務(wù)的開始
在事務(wù)中使用保存點(diǎn)
SAVEPOINT savepoint_name;
ROLLBACK TO SAVEPOINT savepoint_name;
數(shù)據(jù)庫安全
技巧要帶著下邊的問題去規(guī)劃你數(shù)據(jù)庫系統(tǒng)的安全性
誰應(yīng)該得到數(shù)據(jù)庫管理員權(quán)限?
有多少個用戶需要訪問數(shù)據(jù)庫系統(tǒng)?
每個用戶應(yīng)該得到什么樣的權(quán)限與角色?
當(dāng)一個用戶不再訪問數(shù)據(jù)庫時應(yīng)該如何去刪除它?
oracle使用三個結(jié)構(gòu)來實(shí)現(xiàn)安全性 用戶 角色 權(quán)限
用戶
CREATE USER user
IDENTIFIED {BY password | EXTERNALLY}
[DEFAULT TABLESPACE tablespace]
[TEMPORARY TABLESPACE tablespace]
[QUOTA {integer [K|M] | UNLIMITED} ON tablespace]
[PROFILE profile]
如 果選擇了EXTERNALLY 選項(xiàng) ORACLE 將會依賴于你登錄進(jìn)入計(jì)算機(jī)系統(tǒng)的用戶名和密碼 也就是說當(dāng)你登錄進(jìn)行計(jì)算機(jī)時你就已經(jīng)登錄進(jìn)行了ORACLE 我們推薦你使用IDENTIFIED BY 子句強(qiáng)制用戶在登錄進(jìn)行系統(tǒng)時輸入密碼IDENTIFIED BY PASSWORD
角色
GRANT role TO user [WITH ADMIN OPTION];
REVOKE role from user;
lishixinzhi/Article/program/Oracle/201311/16734
該表中的數(shù)據(jù)時oracle 為了同步基表和物化視圖之間的數(shù)據(jù)的 當(dāng)基表的數(shù)據(jù)發(fā)生變化 在日志表中就會產(chǎn)生數(shù)據(jù)。 等oracle將變化同步到物化視圖后 日志表中的數(shù)據(jù)會自動清除 一般情況下不建議手工刪除該表中的數(shù)據(jù)
如果只是單表的簡單查詢視圖,是可以直接刪除的。
但是如果是復(fù)雜查詢,有分析函數(shù)的,或者是多表的視圖,則需要創(chuàng)建instead of 觸發(fā)器才能完成這個功能。
首先,要明白視圖的原理。
視圖的數(shù)據(jù)都產(chǎn)生于表,視圖本身是沒有數(shù)據(jù)的,而表才是真正的數(shù)據(jù)來源。
還有多級的視圖,就是從視圖還可以繼續(xù)創(chuàng)建視圖。
所以,視圖的數(shù)據(jù)來源是表或視圖。但是最終的數(shù)據(jù)源一定是表。
什么樣的視圖數(shù)據(jù)是可以使用DELETE的?只有從單表引過來的視圖是可以的,這樣的視圖操作實(shí)際就相當(dāng)于操作表,但是DROP VIEW不會對數(shù)據(jù)有任何影響。其他形勢的視圖,都是不可能刪除數(shù)據(jù)的。但是DROP VIEW同樣可以。
視圖只是根據(jù)關(guān)聯(lián)關(guān)系從表中抓取數(shù)據(jù)。實(shí)際并沒有像表一樣有專門的存儲這些數(shù)據(jù)。只是從表里引過來而已。只要你時刻記住,視圖實(shí)際上并沒有實(shí)際的存儲數(shù)據(jù),而是借用表的數(shù)據(jù),這就夠了。無論你創(chuàng)建或者刪除視圖,都不會影響數(shù)據(jù)本身。否則你想想,你創(chuàng)建了一個視圖的時候,沒想過為什么一下子就有了那么多數(shù)據(jù)了呢?也不是你插入的,因?yàn)榫褪菑谋硪^來的而已。
刪除視圖的語句是DROP VIEW 視圖名字
所以刪除視圖,不會對數(shù)據(jù)有任何影響。因?yàn)閿?shù)據(jù)都在表中。想要恢復(fù)視圖,重新創(chuàng)建,你的幾千萬條數(shù)據(jù)就又會出現(xiàn)了。視圖的效果和SELECT查詢一樣,只是能把這個查詢固定了,以便你直接拿來用。
網(wǎng)頁標(biāo)題:oracle如何刪視圖 oracle刪除試圖
本文網(wǎng)址:http://chinadenli.net/article10/hgdgdo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)公司、域名注冊、網(wǎng)站建設(shè)、電子商務(wù)、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)