Presentation is loading. Please wait.

Presentation is loading. Please wait.

SQL 介紹 視觀、序列、同義詞、索引.

Similar presentations


Presentation on theme: "SQL 介紹 視觀、序列、同義詞、索引."— Presentation transcript:

1 SQL 介紹 視觀、序列、同義詞、索引

2 ■視觀表格(View) 的概念 可以由一個基本表格或數個基本表格,利用查詢 (Select) 的方式, 選取某些資料列和欄位的資料組成。
視觀表格反映了一個或多個基本表格的局部資料,但視觀表格本身並無實際存放資料,視觀表格僅是對應基本表格的部分資料,因此視觀表格只是一個虛擬表格。

3 何謂 View (觀點、視觀)? 老闆 男/女朋友 父母 … … … 虛擬表格 學生資料庫 實際表格 工作經驗 修習課程 成績 姓名 興趣
住址 個性 男女朋友 電話 姓名 修習課程 男女朋友 成績 姓名 虛擬表格 學生資料庫 工作經驗 興趣 修習課程 住址 個性 男女朋友 成績 電話 姓名 實際表格

4 使用視觀表格的主要原因 視觀表格可以提供安全:視觀表格是建立在一個或數個表格上,使用者可以操作視觀表格而不會直接存取表格中較機密的資料欄位。
視觀表格可以隱藏複雜的資料查詢:跨多表格的關聯查詢或是較複雜的查詢都可以利用視觀表格來代替,如此可以簡化查詢操作。

5 GRANT create view TO scott;
■建立視觀表格的指令 建立視觀表格(View)-CREATE VIEW CREATE VIEW <視觀表格名> [<視觀表格欄位名串列>] AS SELECT 指令 [WITH CHECK OPTION]; 但是,使用者必需要有Create View的系統權限方可建立視觀表格。 若是以 Scott 身份執行Create View的動作,Oracle系統會出現 “權限不足” 的訊息。 此時,先以SYS as SYSDBA的身份進入系統,用以下 “Grant” 的指令來為Scott設定權限即可。 GRANT create view TO scott;

6 CONN <欲切換的身份帳號>
如何知道目前我們是以什麼身份登入系統? 可直接輸入下列指令: SELECT user FROM dual; 如何在系統中快速切換身份,不用直接登出? CONN <欲切換的身份帳號>

7 使用視觀表格(View) 的指令 視觀表格的使用如同基本表格一樣,使用者可以查詢其中的資料。
若視觀表格是由一個基本表格所建立的,則可以對視觀表格進行修改、刪除或插入資料操作,其操作方式與一般基本表格相同。 反之,若視觀表格是由多個基本表格所建立的則不可以。 一個視觀表格如果要進行更新、插入、刪除等動作,則在建立該View的Select指令中不能含有Group by、Distinct或集合函數等子句。

8 DROP VIEW <視觀表名>;
廢除視觀表格 廢除視觀表格-DROP VIEW DROP VIEW <視觀表名>; 視觀表格(View) 的廢除不會影響基本表格的使用,但會導致該視觀表格相關的所有授權被自動取消,該視觀表格相關的所有視觀表格和同義字變成無效。

9 建立View時,View的名稱不能重複。因此,在建立一個View時會先用Drop刪除先前可能存在、但已不使用的View。
CREATE OR REPLACE VIEW <視觀表格名> [<視觀表格欄位名串列>] AS SELECT 指令 [WITH CHECK OPTION];

10 ■建立與使用序列(SEQUENCE) 在 ORACLE 系統中並沒有提供任何自動編號的欄位,所以 ORACLE 就利用序列(SEQUENCES),來達成相同的功能。它的功能類似一個計數器(Counter)。序列是產生連續數字最有效率的方法。

11 CREATE SEQUENCE <序列名>;
建立序列方法 CREATE SEQUENCE <序列名>; 系統預設情況: 計數由 1 開始 計數增 (減) 量為 1 若欲改變系統預設,則有多個參數可供調整 (課本p.4-99) 可以利用序列名.NEXTVAL 得到下一個可用之值與使用序列名.CURRVAL 來得到目前值。 序列名.CURRVAL的使用前題:需要先使用序列名.NEXTVAL產生出序列之後才能使用。

12 Select 序列名.nextval From dual; 如何查看目前的序列號碼?
如何查看下一個序列號碼? Select 序列名.nextval From dual; 如何查看目前的序列號碼? Select 序列名.currval From dual; 如何在表格中使用Sequence? 當要插入資料到表格時,對需使用序列功能之相關欄位 (如:流水號) 使用序列名.nextval即可。如: INSERT INTO 學生基本資料表 VALUES(學號.nextval, ‘杰哥’,’台北市文山區…’);

13 ALTER SEQUENCE <序列名> <New_paramenters>;
序列更改僅能更改先前所設定的參數值,無法修改目前已執行的序列號碼。 ALTER SEQUENCE <序列名> <New_paramenters>; 其中<New_parameters> 為新的選項參數 (課本p.4-99)

14 DROP SEQUENCE <序列名>;

15 ■同義字 (Synonym) ORACLE 系統中提供了一個很方便的物件-Synonym (同義字)。同義字可分為 Public (公用) 與 Private (專用) 兩種。 當使用者以某身份 (如:SYS) 登入到Oracle後,欲使用其它身份 (如:Scott) 所擁有之表格時,需在該表格名稱前加上擁有者的帳號。

16 同義字的主要目的 隱藏原資料庫物件的原擁有者資訊。 為某物件提供一個較簡單或是方便的名字。 隱藏某資料庫物件的實際位置。

17 定義同義字 定義同義字-CREATE SYNONYM……FOR 建立同義字的命令如下:
CREATE [PUBLIC] SYNONYM <同義字> FOR [<使用者名稱>.] <資料庫物件>; 其中: [PUBLIC] 為選項,如果選擇該項,則表示建立的這個同義字可以被所有使用者使用,也就是一個公用的(public) 同義字,但只有 DBA (資料庫管理員) 能夠選擇 [PUBLIC] 項。 一般使用者可建立私有的同義詞,即不加 [PUBLIC] 選項。此同義詞僅建立者可使用。

18 DROP [PUBLIC] SYNONYM <同義字>;
廢除同義字 廢除同義字-DROP SYNONYM DROP [PUBLIC] SYNONYM <同義字>; 其中: 只有 DBA 才能選擇 [PUBLIC] 項來刪除公用同義字。 同義字的廢除不會影響其原本表格、視觀表格(View) 使用權限。 改變一個同義字的方法是先廢除該同義字,再重建該同義字。

19 ■索引(Index) 的概念 索引(Index) 就好比書籍中的目錄,當你要找尋某章節時,可迅速地找到,節省找尋的時間。然而在一般查詢中,ORACLE 要逐列查詢該表格,檢查是否為所需的資料,直到找到所有符合 WHERE 子句中的條件的資料列。 資料庫若沒有使用索引,則當所儲存的資料量變得龐大時,由於資料是成堆存放,資料檢索是從各種表格中循序找尋,使得資料查詢效率低落。

20 當一個表格建立,且宣告以某一個欄位做為主鍵之後,Oracle資料庫系統就會為該欄位設定索引。不過此索引不是為了加速查詢速度,而是為了資料的個體完整性限制 (即:主鍵具有唯一性)。此索引又稱為唯一索引。

21 CREATE [UNIQUE] INDEX……ON
建立索引 建立一般索引- CREATE INDEX……ON CREATE INDEX <索引名> ON <表格名> ( <欄位名1> [ASC/DESC], <欄位名2> [ASC/DESC], <欄位名n> [ASC/DESC] ); 建立唯一索引- CREATE [UNIQUE] INDEX……ON CREATE UNIQUE INDEX <索引名> ON <表格名> ( <欄位名1> [ASC/DESC], <欄位名2> [ASC/DESC], <欄位名n> [ASC/DESC] );

22 建立索引的原則 較大的基本表格應該建立索引 對一個基本表格可以建立多個索引,但建議最好不要超過三個 一般在主鍵欄位上建立索引
表格越大,索引越能更好地改善回應時間,索引也越有效。 對一個基本表格可以建立多個索引,但建議最好不要超過三個 索引越多,查詢速度越快。但是建立太多的索引是不合適的。 一般在主鍵欄位上建立索引 當一個主鍵為複合欄位主鍵時,那麼最好是把資料種類最多的欄位放在 CREATE INDEX 命令列的首位。 建立索引要注意先後順序 通常在表格中輸入資料後才建立索引。如果先建索引後輸入資料,則每插入一列都要對索引進行一次更新,浪費時間。但若希望確保輸入資料的唯一性,那麼只能犧牲性能為代價,在輸入資料前先建立好唯一索引。 建立索引要注意 95/5 法則 在某些情況下使用索引會拖慢速度。你可利用 95/5 法則評估是否使用索引。當查詢回覆結果小於表格全部資料的 5% 時,使用索引是最佳的查詢方式。如果查詢回覆結果超過表格全部資料的 95% 時,不使用索引查詢的方式通常會有比較好的效能。

23 DROP INDEX [<使用者名稱>.]<索引名>;
廢除索引 廢除索引-DROP INDEX DROP INDEX [<使用者名稱>.]<索引名>; <索引名> 指出要廢除的索引名字。 [<使用者名稱>] 的選項,表示該索引的擁有者 (設定者)。


Download ppt "SQL 介紹 視觀、序列、同義詞、索引."

Similar presentations


Ads by Google