oracle10g經(jīng)典實戰(zhàn)第3章_數(shù)據(jù)庫的操作ppt課件_第1頁
oracle10g經(jīng)典實戰(zhàn)第3章_數(shù)據(jù)庫的操作ppt課件_第2頁
oracle10g經(jīng)典實戰(zhàn)第3章_數(shù)據(jù)庫的操作ppt課件_第3頁
oracle10g經(jīng)典實戰(zhàn)第3章_數(shù)據(jù)庫的操作ppt課件_第4頁
oracle10g經(jīng)典實戰(zhàn)第3章_數(shù)據(jù)庫的操作ppt課件_第5頁
已閱讀5頁,還剩67頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、第3章數(shù)據(jù)庫的操作 3.1操作表數(shù)據(jù) 經(jīng)過PL/SQL語句操作表數(shù)據(jù)比較方便、靈敏。一切SQL命令將在SQL*Plus中編譯完成。進入SQL*Plus,用戶名和密碼分別為:ADMIN和manager。 3.1.1插入表記錄 語法格式: INSERT INTO table_namecolumn_list VALUES(constant1,constant2,) 該語句的功能是向由table_name指定的表中參與一行,由VALUES指定的各列值。 (1) 在插入時,列值表必需與列名表順序和數(shù)據(jù)類型一致。 (2) VALUES中描畫的值可以是一個常量、變量或一個表達式。 (3) 假設(shè)列值為空,那么

2、值必需置為NULL。假設(shè)列值指定為該列的默許值,那么用DEFAULT。 (4) 在對表進展插入行時,假設(shè)新插入的行中一切可取空值的列值均取空值,那么就可以在INSERT語句中經(jīng)過列表指出插入的行值中所包含非空的列,而在VALUES中只需給出這些列的值即可。.3.1.1插入表記錄【例3.1】向XSCJ數(shù)據(jù)庫的表XS中插入如下的一行:061101 王林 計算機 男 19870201 50可以運用如下的PL/SQL語句: INSERT INTO XS(XH,XM,ZYM,XB,CSSJ,ZXF) VALUES(061101,王林, 計算機,男,TO_DATE(19860210,YYYYMMDD),5

3、0);請讀者運用INSERT INTO語句向?qū)W生表插入以下記錄: 學(xué)號 姓名 專業(yè)名 性別 出生時間 總學(xué)分 備注061102 王平 計算機 女 1986-09-02 38 NULL061103王燕 計算機 女1985-10-06 40NULL061104韋嚴(yán)平 計算機 男1986-08-26 40NULL061105吳慶紅計算機男1985-12-3036有兩門不及格061106李方方 計算機 男1986-11-20 40NULL061107李明 計算機 男1986-05-01 40NULL061108林一帆 計算機 男1985-08-05 42已提早修完一門課061109張強民 計算機 男1

4、984-08-11 40NULL061110張蔚 計算機 女1987-07-22 40NULL061111趙琳 計算機 女1986-03-18 40NULL061112羅林琳 計算機 女1984-01-30 40NULL .3.1.1插入表記錄用SELECT語句進展查詢,可以發(fā)現(xiàn)表中曾經(jīng)添加的記錄,如圖3.1所示。圖3.1插入新數(shù)據(jù)后查詢的結(jié)果.3.1.1插入表記錄 【例3.2】建立了表test。 CREATE TABLE test ( xm char(20) NOT NULL, zy varchar(30) DEFAULT(計算機), nj number NOT NULL ); 用INSER

5、T向test表中插入一條記錄: INSERT INTO test(xm,nj) VALUES(王林,3); 那么插入到test表中的記錄為:王林 計算機 3 語法格式: INSERT INTO table_name derived_table derived_table是一個由SELECT語句查詢所得到的結(jié)果集。利用該參數(shù),可把一個表中的部分?jǐn)?shù)據(jù)插入到表table_name中。.3.1.1插入表記錄【例3.3】用如下的CREATE語句建立表XS1: CREATE TABLE XS1 ( num char(6) NOT NULL, name char(8) NOT NULL, speiality

6、 char(10) NULL );用如下的INSERT語句向XS1表中插入數(shù)據(jù): INSERT INTO XS1 SELECT XH,XM,ZYM FROM XS WHERE ZYM=計算機;.3.1.1插入表記錄 這條INSERT語句將XS表中專業(yè)名為計算機的各記錄的學(xué)號、姓名和專業(yè)名列的值插入到XS1表的各行中。用SELECT語句可查看插入結(jié)果: num name speciality - - - 061101 王林 計算機 061102 王平 計算機 061103 王燕 計算機 061104 韋嚴(yán)平 計算機 061105 吳慶紅 計算機 061106 李方方 計算機 061107 李明

7、計算機 061108 林一帆 計算機 061109 張強民 計算機 061110 張蔚 計算機 061111 趙琳 計算機 061112 羅林琳 計算機 從Oracle 10g開場新增了MERGE語句,運用這個語句可以實現(xiàn)對表的更新或插入。.3.1.1插入表記錄 語法格式: MERGE INTO table_name USING table_name ON (join_condition) WHEN MATCHED THEN UPDATE SET WHEN NOT MATCHED THEN INSERT() VALUES() Joni_condition:銜接條件。 【例3.4】 檢查表XS_

8、JSJ中的數(shù)據(jù)能否和表XS的數(shù)據(jù)相匹配,假設(shè)匹配那么運用INSERT子句執(zhí)行插入數(shù)據(jù)行。 首先在表XS_JSJ運用INSERT語句添加一行數(shù)據(jù): INSERT INTO XS_JSJ(XH,XM,ZYM,XB,CSSJ,ZXF) VALUES(101112,霍甲, 計算機,女,TO_DATE(19860130,YYYYMMDD),36); 運用MERGE語句XS_JSJ表中新增的數(shù)據(jù)插入表XS中: MERGE INTO XS a USING XS_JSJ b ON(a.XH=b.XH) WHEN NOT MATCHED THEN INSERT Values(b.xh,b.xm,b.zym,b.

9、xb,b.cssj,b.zxf,b.bz); 用SELECT語句進展查詢,可以發(fā)現(xiàn)表中曾經(jīng)添加一條姓名為霍甲的學(xué)生記錄。 .3.1.2刪除表記錄 1. 運用 DELETE刪除數(shù)據(jù) 在PL/SQL言語中,刪除行可以運用DELETE語句。 語法格式: DELETE FROM table_nameview_name WHERE condition 該語句的功能為從table_name指定的表或view_name指定的視圖中刪除滿足condition 查詢條件的行,假設(shè)省略該條件,表示刪除一切的行。 【例3.5】將XSCJ數(shù)據(jù)庫的XS表中總學(xué)分小于39的行刪除,運用如下的PL/SQL語句。 DELET

10、E FROM XS WHERE ZXF39; .3.1.2刪除表記錄 1. 運用 DELETE刪除數(shù)據(jù) 用SELECT語句進展查詢,可以發(fā)現(xiàn)表中學(xué)號為“061102和“061105兩行已被刪除,結(jié)果為: XH XM ZYM - - - 061101 王林 計算機 061103 王燕 計算機 061104 韋嚴(yán)平 計算機 061106 李方方 計算機 061107 李明 計算機 061108 林一帆 計算機 061109 張強民 計算機 061110 張蔚 計算機 061111 趙琳 計算機 061112 羅林琳 計算機.3.1.2刪除表記錄 2. 運用TRUNCATE TABLE語句刪除表數(shù)據(jù)

11、 假設(shè)確實要刪除一個大表里的全部記錄, 可以用TRUNCATE命令, 它可以釋放占用的數(shù)據(jù)塊表空間。此操作不可回退。 語法格式: TRUNCATE TABLE table_name 其中table_name為要刪除數(shù)據(jù)的表名。由于TRUNCATE TABLE語句刪除表中的一切數(shù)據(jù),且不能恢復(fù),所以運用時要謹(jǐn)慎。 運用TRUNCATE TABLE刪除了指定表中的一切行,但表的構(gòu)造及其列、約束、索引等堅持不變。TRUNCATE TABLE在功能上與不帶WHERE子句的DELETE語句一樣,二者均刪除表中的全部行。但TRUNCATE TABLE執(zhí)行速度比DELETE快。 對于由外鍵(FOREIGN

12、KEY)約束援用的表不能運用TRUNCATE TABLE刪除數(shù)據(jù),而應(yīng)運用不帶WHERE子句的DELETE語句。另外,TRUNCATE TABLE也不能用于索引視圖的表。.3.1.3修正表記錄 在PL/SQL言語中,UPDATE語句可以用來修正表中的數(shù)據(jù)行。 語法格式: UPDATE table_nameview_name SET column_name=expression,n WHERE condition該語句table_name指定的表或view_name指定的視圖中滿足condition 查詢條件的記錄中由SET指定的各列的列值設(shè)置為SET指定的新值。假設(shè)不運用WHERE子句,那么更

13、新一切記錄的指定列值。 【例3.6】 將XSCJ數(shù)據(jù)庫的XS表中學(xué)號為“061110的學(xué)生備注列值改為“三好學(xué)生,運用如下PL/SQL語句: UPDATE XS SET BZ=三好學(xué)生 WHERE XH=061110;.3.1.3修正表記錄 用SELECT語句進展查詢,可以發(fā)現(xiàn)表中學(xué)號為“061110的行的備注字段值已被修正,如圖3.2所示。圖3.2修正數(shù)據(jù)以后的表.3.1.3修正表記錄 【例3.7】將XS表中的一切學(xué)生的總學(xué)分都添加10。 UPDATE XS SET ZXF=ZXF+10; 用SELECT語句進展查詢,可以發(fā)現(xiàn)表中一切學(xué)生的總學(xué)分都添加了10分,如圖3.3所示。圖3.3添加學(xué)

14、分后的數(shù)據(jù).3.1.3修正表記錄 【例3.8】將姓名為“羅林琳的同窗的專業(yè)改為“通訊工程,備注改為“轉(zhuǎn)專業(yè)學(xué)習(xí),學(xué)號改為“061241。 UPDATE XS SET ZYM= 通訊工程, BZ=轉(zhuǎn)專業(yè)學(xué)習(xí), XH= 061241 WHERE XM= 羅林琳; 【例3.9】對XS表進展修正,將姓名為“李明的學(xué)生的總學(xué)分加4,備注改為“提前修完,并獲得學(xué)分。 UPDATE XS SET ZXF=ZXF+ 4, BZ= 提早修完,并獲得學(xué)分 WHERE XM=李明;.3.2默許值約束 對于某些字段,可在程序中定義默許值以方便用戶。定義一個字段的默許值可以在定義表或修正表時,定義默許值約束。 1. 默

15、許值約束的定義 在運用OEM或SQL命令定義表或修正表時,可定義一個字段的默許值約束。下面經(jīng)過例子引見利用SQL語句定義一個字段的默許值約束的方法,有興趣的讀者可以練習(xí)一下在OEM中定義一個字段的默許值約束。 默許值約束定義的普通格式為:CREATE TABLE table_name (column_name datatype NOT NULL | NULL DEFAULT constraint_expression /*默許值約束的表達式*/ ,n) table_name為創(chuàng)建的表名;column_name為列名;datatype為對應(yīng)列的數(shù)據(jù)類型;DEFAULT關(guān)鍵字表示其后的constr

16、aint_expression表達式為缺省值約束表達式,此表達式只能是常量如字符串、系統(tǒng)函數(shù)或 NULL;參數(shù)n表示可定義多個數(shù)據(jù)字段。 .3.2默許值約束 【例3.10】在定義表時定義一個字段的默許值約束。 CREATE TABLE XS ( 學(xué)號 char(6) NOT NULL, 姓名 char(8) NOT NULL, 專業(yè)名 char(10) NULL, 性別 char(2) NOT NULL, 出生時間 date NOT NULL, 總學(xué)分 number DEFAULT 0,/*定義默許值約束*/ 備注 varchar2(200) NULL ) 【例3.11】在修正表時定義一個字段

17、的默許值約束。 ALTER TABLE XS ADD(Addcolumn number(2) DEFAULT 0);.3.3索引 為什么在字典中進展查找時可以很快地找到要查的內(nèi)容呢?主要緣由是字典中已按某種順序進展了排序。 在Oracle 10g中,索引是一種供效力器在表中快速查找一個行的數(shù)據(jù)庫構(gòu)造。在數(shù)據(jù)庫中建立索引主要有以下作用: (1) 快速存取數(shù)據(jù); (2) 既可以改善數(shù)據(jù)庫性能又可以保證列值的獨一性; (3) 實現(xiàn)表與表之間的參照完好性; (4) 在運用ORDER BY、GROUP BY子句進展數(shù)據(jù)檢索時,利用索引可以減少排序和分組的時間。.3.3索引3.3.1索引的分類 索引按存儲

18、方法分類,可以分為2類:B*樹索引和位圖索引。 (1) B*樹索引。B*樹索引的存儲構(gòu)造類似書的索引構(gòu)造,有分支和葉兩種類型的存儲數(shù)據(jù)塊,分支塊相當(dāng)于書的大目錄,葉塊相當(dāng)于索引到的詳細的書頁。 (2) 位圖索引。位圖索引儲存主要用來節(jié)省空間,減少ORACLE對數(shù)據(jù)塊的訪問,它采用位圖偏移方式來與表的行ID號對應(yīng),采用位圖索引普通是反復(fù)值太多的表字段。 索引按功能和索引對象還有以下類型: (1) 獨一索引。獨一索引意味著不會有兩行記錄一樣的索引鍵值。 (2) 非獨一索引。不對索引列的值進展獨一性限制的所以稱為非獨一索引。 (3) 分區(qū)索引。所謂分區(qū)索引是指索引可以分散地存在于多個不同的表空間中,

19、其優(yōu)點是可以提高數(shù)據(jù)查詢的效率。 (4) 未排序索引。未排序索引也稱為正向索引。Oracle 10g數(shù)據(jù)庫中的行是按升序排序的,因此創(chuàng)建索引時不用指定對其排序而運用默許的順序。 (5) 逆序索引。逆序索引也稱為反向索引。該索引同樣堅持索引列按順序排列,但是顛倒已索引的每列的字節(jié)。 (6) 基于函數(shù)的索引。基于函數(shù)的索引是指索引中的一列或者多列是一個函數(shù)或者表達式,索引根據(jù)函數(shù)或者表達式計算索引列的值。 .3.3.2運用索引的原那么 在正確運用索引的前提下,索引可以提高檢索相應(yīng)的表的速度。當(dāng)用戶思索在表中運用索引時,應(yīng)遵照以下一些根本的原那么: (1) 在表中插入數(shù)據(jù)后創(chuàng)建索引 (2) 索引正確

20、的表和列 (3) 合理安排索引列 (4) 限制表中索引的數(shù)量 (5) 指定索引數(shù)據(jù)塊空間的運用 (6) 根據(jù)索引大小設(shè)置存儲參數(shù).3.3.3創(chuàng)建索引 創(chuàng)建索引有三種方法:隨數(shù)據(jù)庫表創(chuàng)建、運用Oracle 10g管理控制臺工具單獨創(chuàng)建和運用SQL命令創(chuàng)建索引。 1. 隨數(shù)據(jù)庫表一同創(chuàng)建索引在創(chuàng)建數(shù)據(jù)庫表時,假設(shè)表中包含有獨一關(guān)鍵字或主關(guān)鍵字,那么Oracle 10g自動為這兩種關(guān)鍵字所包含的列建立索引。假設(shè)不特別指定,系統(tǒng)將默以為該索引定義一個名字。表建立之后,實踐上就是在表XS的列XH上建立了一個索引,如圖3.4所示。這種方法創(chuàng)建的索引是非排序索引,既正向索引,以B*樹方式存儲。 圖3.4隨數(shù)

21、據(jù)庫表創(chuàng)建的索引.3.3.3創(chuàng)建索引 2. 在OEM中創(chuàng)建索引 【例3.11】為XS表的姓名列創(chuàng)建索引。 在如圖3.5所示的界面中,在方案中選擇“索引,鼠標(biāo)單擊左鍵,翻開如圖3.4所示的“索引搜索界面。圖3.5 Oracle企業(yè)管理器 .3.3.3創(chuàng)建索引 2. 在OEM中創(chuàng)建索引 在如圖3.4所示界面,單擊“創(chuàng)建按鈕,進入如圖3.6所示的界面。“創(chuàng)建索引窗口包含普通訊息、分區(qū)、存儲、選項和統(tǒng)計信息5個選項頁面。 圖3.6創(chuàng)建索引 普通訊息選項界面 .3.3.3創(chuàng)建索引 2. 在OEM中創(chuàng)建索引 (1) “普通訊息選項頁面。它可以設(shè)置以下信息: 稱號:指定索引名。創(chuàng)建索引時指定一個有效的Ora

22、cle標(biāo)識符。這里指定的索引名是XS_NAME_INDEX。 方案:單擊“手電筒外形的按鈕,翻開如圖3.7所示的“搜索和選擇方案界面。 圖3.7搜索和選擇方案界面 .3.3.3創(chuàng)建索引 2. 在OEM中創(chuàng)建索引 表空間:指定索引所屬的表空間。 表名:指定哪個表創(chuàng)建索引。 索引類型:指定要創(chuàng)建的索引是規(guī)范索引還是位圖索引。 表列:指定索引列和順序。單擊“置入列按鈕,表列電子表格列出表XS一切的列。電子表格包含列名、數(shù)據(jù)類型、排序次序和順序,由“順序字段指定索引的列及其順序。 (2) “存儲選項選項頁面?!按鎯x項頁面如圖3.8所示。在該界面指定存儲參數(shù)。 事件記錄:指示能否生成重做日志。 區(qū)數(shù):

23、初始大小指定對象的第一個區(qū)的大小。 空間空閑: 區(qū)定義保管用于更新的空閑的百分比 事務(wù)處置數(shù)量:類別定義以下參數(shù): 初始值:對象的每個數(shù)據(jù)塊內(nèi)分配的事務(wù)處置條目的初始數(shù)量。范圍為1255。 最大值:可同時更新分配給對象的數(shù)據(jù)塊的并行事務(wù)處置的最大值。范圍為1255。 緩沖池:區(qū)定義經(jīng)過“緩沖池下拉列表選擇運用的緩沖池??梢赃x擇的緩沖池包括KEEP、RECYCLE和DEFAULT。 .3.3.3創(chuàng)建索引圖3.8創(chuàng)建索引存儲選項界面 .3.3.3創(chuàng)建索引 2. 在OEM中創(chuàng)建索引 (3) “選項選項頁面?!斑x項選項界面如圖3.9所示。在該選項頁面,可以指定如何執(zhí)行并行查詢、如何存儲重做日志等信息。

24、 獨一:該復(fù)選框指定表中將索引的列或列組合的值必需獨一。 逆序:該復(fù)選框指定創(chuàng)建逆序從大到小關(guān)鍵字索引。 并行:該復(fù)選框可用于創(chuàng)建一個常規(guī)表或一個按索引組織的表,并以并行方式裝載。該選項可指定并行執(zhí)行某一操作。程度表示單個例程的操作并行度,并行度可以有兩種設(shè)置: 默許值:查詢效力器數(shù)量根據(jù)CPU數(shù)和存儲要并行掃描的表的“設(shè)備數(shù)計算得出。 值:用戶指定的查詢效力器數(shù)量。 緊縮:是為了防止關(guān)鍵字列的值反復(fù)出現(xiàn),可以大大減少存儲空間。 執(zhí)行選項:有3個復(fù)選框可以勾選設(shè)置: 聯(lián)機:在創(chuàng)建或重建索引時,允許對表進展DML操作。 計算統(tǒng)計信息:在創(chuàng)建或重建索引時,以非常小的代價搜集統(tǒng)計信息。 不排序:闡明

25、存儲在數(shù)據(jù)庫中的數(shù)據(jù)按升序排序,所以創(chuàng)建索引時不對其進展排序。.3.3.3創(chuàng)建索引圖3.9創(chuàng)建索引選項選項界面 .3.3.3創(chuàng)建索引 2. 在OEM中創(chuàng)建索引 (4) “分區(qū)選項頁面?!胺謪^(qū)選項界面如圖3.10所示。 圖3.10創(chuàng)建索引分區(qū)選項界面 .3.3.3創(chuàng)建索引 2. 在OEM中創(chuàng)建索引 對索引進展分區(qū)有2種方法: 全局范圍:在運用范圍分區(qū)的全局索引時, 每個索引分區(qū)都包含由分區(qū)邊境定義的值。 全局散列:在運用散列分區(qū)的全局索引時, 每個索引分區(qū)都包含由 Oracle 的散列函數(shù)確定的值。 (5) 單擊“統(tǒng)計信息選項頁面,出現(xiàn)如圖3.11所示的界面。該界面顯示索引使用情況闡明。 .3.

26、3.3創(chuàng)建索引圖3.11統(tǒng)計信息選項界面 .3.3.3創(chuàng)建索引 3. 利用SQL命令建立索引 運用SQL命令可以靈敏方便地創(chuàng)建索引。在運用SQL命令創(chuàng)建索引時,必需滿足以下條件之一: (1) 索引的表或簇必需在本人的方式中; (2) 必需在要索引的表上具有INDEX權(quán)限; (3) 必需具有CREATE ANY INDEX權(quán)限。 語法格式: CREATE UNIQUEBITMAP INDEX /*索引類型*/ schema.index_name /*索引稱號*/ ON schema.table_name(column_nameASCDESC,n,column_expression) /*索引建于

27、表*/ CLUSTER schema.cluster_name /*索引建于簇*/ INITRANS integer MAXTRANS integer PCTFREE integer PCTUSED integer /*建立索引的物理和存儲特征值*/ TABLESPACE tablespace_name /*索引所屬表空間*/ STORAGE storage_clause /*為索引建立存儲特征*/ NOSORT REVERSE.3.3.3創(chuàng)建索引 3. 利用SQL命令建立索引 其中: UNIQUE:指定索引所基于的列(或多列)值必需獨一。默許的索引是非獨一索引。 BITMAP:指定建成位映射

28、索引而不是B*索引。 Schema:表示包含索引的方案。 ON table_name:建立table_name表索引。 column_expression:創(chuàng)建基于函數(shù)的索引。 ON CLUSTER:創(chuàng)建cluster_name簇索引。 NOSORT:數(shù)據(jù)庫中的行以升序保管,在創(chuàng)建索引時不用對行排序。 REVERSE:指定以反序索引塊的字節(jié),不包含行標(biāo)識符。 .3.3.3創(chuàng)建索引 【例3.12】為KC表的課程名列創(chuàng)建索引。 CREATE INDEX kc_name_idx ON KC(KCM) TABLESPACE INDX; 【例3.13】為XS表的姓名列創(chuàng)建索引,指定索引的物理和存儲特征值

29、,數(shù)據(jù)庫中的行以升序保管。 CREATE INDEX xs_xm_idx ON XS (XM) TABLESPACE INDX INITRANS 2 MAXTRANS 255 NOSORT;.3.3.4維護索引 1. 在OEM中維護索引 在OEM中維護索引的操作,除了一些特殊的信息不能再修正,其他與創(chuàng)建索引的操作相同。 在如圖3.4所示的界面中,選擇要維護的索引,單擊“編輯按鈕,進入“編輯索引界面,如圖3.12所示。在各個選項頁面上重新指定相應(yīng)的設(shè)置,確認(rèn)無誤后,單擊“運用按鈕,完成修正。圖3.12維護索引 .3.3.4維護索引 2. 利用ALTER INDEX命令維護索引 語法格式: ALT

30、ER INDEX schema.index_name INITRANS integer MAXTRANS integer PCTFREE integer /*建立索引的物理和存儲特征值*/ STORAGE storage_clause /*為索引建立存儲特征*/ RENAME TO new_index_name 【例3.14】修正例3.12中創(chuàng)建的索引kc_name_idx。 ALTER INDEX admin.xs_name_index INITRANS 2 MAXTRANS 128; 【例3.15】重命名索引kc_name_idx。 ALTER INDEX kc_name_idx RENA

31、ME TO kc_idx;.3.3.5刪除索引 索引的刪除既可以經(jīng)過OEM刪除,也可以經(jīng)過執(zhí)行SQL命令刪除。 1. 利用OEM刪除索引 在如圖3.4所示的界面中,選中要刪除的索引,單擊“刪除,系統(tǒng)彈出確認(rèn)界面,單擊“是按鈕后,就勝利刪除該索引了。 2. 利用SQL命令刪除索引 語法格式: DROP INDEX schema.index_name 其中,schema是包含索引的方案。index_name是要刪除的索引稱號。 【例3.16】刪除XSCJ數(shù)據(jù)庫中表XS的一個索引名為XS_NAME_IDX的索引。 DROP INDEX XS_NAME_IDX;.3.4同義詞 3.4.1創(chuàng)建同義詞 1

32、. 利用OEM創(chuàng)建同義詞 【例3.17】為本地數(shù)據(jù)庫XSCJ的表XS創(chuàng)建同義詞XS。 如圖3.5所示,在OEM中,選擇方案選項中的同義詞,單擊鼠標(biāo)左鍵,進入“同義詞搜索界面,如圖3.13所示。單擊“創(chuàng)建按鈕,進入“創(chuàng)建同義詞界面,如圖3.14所示。圖3.13同義詞搜索界面 圖3.14創(chuàng)建同義詞界面 .3.4.1創(chuàng)建同義詞 2. 利用CREATE SYNONYM命令創(chuàng)建同義詞 語法格式: CREATE PUBLIC SYNONYM schema.synonym_name FOR schema.object dblink 【例3.18】創(chuàng)建同義詞。 (1) 為XSCJ數(shù)據(jù)庫的XS_KC表創(chuàng)建公用同

33、義詞XS_KC。 CREATE PUBLIC SYNONYM XS_KC FOR ADMIN.XS_KC; (2) 為XSCJ數(shù)據(jù)庫XS表創(chuàng)建遠程數(shù)據(jù)庫同義詞。 CREATE PUBLIC SYNONYM XS FOR ADMIN.XSMY_LINK; (3) 為XSCJ數(shù)據(jù)庫的CS_XS視圖創(chuàng)建公用同義詞CS_XS。 CREATE PUBLIC SYNONYM CS_XS FOR ADMIN.CS_XS;.3.4.2運用同義詞 一旦創(chuàng)建同義詞后,數(shù)據(jù)庫的用戶就可以直接經(jīng)過同義詞稱號訪問該同義詞所指的數(shù)據(jù)庫對象,而不需求特別指出該對象的所屬關(guān)系。 【例3.19】SYSTEM用戶查詢XSCJ數(shù)據(jù)

34、庫XS表中一切學(xué)生的情況。SELECT * FROM XS; 假設(shè)沒有為XSCJ數(shù)據(jù)庫XS表創(chuàng)建同義詞XS,那么SYSTEM用戶查詢XS表那么需指定XS表的一切者。SELECT * FROM ADMIN.XS;.3.4.3刪除同義詞 1. 利用OEM刪除同義詞 在如圖3.13所示的“同義詞搜索界面中,在搜索欄輸入搜索條件,單擊“開場按鈕查找要刪除的同義詞后,選中要刪除的同義詞,單擊“刪除,在出現(xiàn)的“確認(rèn)界面,單擊“是按鈕后,就能刪除該同義詞。 2. 利用DROP SYNONYM命令刪除同義詞 語法格式: DROP PUBLIC SYNONYM schema.synonym_name 闡明: P

35、UBLIC闡明刪除一個公用同義詞。Schema指定將要刪除的同義詞的用戶方案。synonym_name為將要刪除的同義詞稱號。 【例3.20】刪除公用同義詞CS_XS。DROP PUBLIC SYNONYM CS_XS;.3.5數(shù)據(jù)庫鏈接 3.5.1 創(chuàng)建數(shù)據(jù)庫鏈接 1. 利用OEM創(chuàng)建數(shù)據(jù)庫鏈接 【例3.21】利用OEM創(chuàng)建數(shù)據(jù)庫鏈接MY_LINK。 (1) 如圖3.15所示,在企業(yè)管理中選擇單擊“數(shù)據(jù)庫鏈接,進入如圖3.16所示的“數(shù)據(jù)庫鏈接搜索界面。 圖3.15 Oracle企業(yè)管理器 圖3.16數(shù)據(jù)庫鏈接搜索界面.3.5.1 創(chuàng)建數(shù)據(jù)庫鏈接 1. 利用OEM創(chuàng)建數(shù)據(jù)庫鏈接(2)單擊“創(chuàng)

36、建按鈕,進入“創(chuàng)建數(shù)據(jù)庫鏈接界面,如圖3.17所示。 圖3.17創(chuàng)建數(shù)據(jù)庫鏈接界面.3.5.1 創(chuàng)建數(shù)據(jù)庫鏈接 1. 利用OEM創(chuàng)建數(shù)據(jù)庫鏈接 (3) 單擊“確定按鈕,創(chuàng)建勝利后,系統(tǒng)前往到圖3.16所示的界面,完成數(shù)據(jù)庫鏈接操作。 2. 利用CREATE DATABASE LINK命令創(chuàng)建數(shù)據(jù)庫鏈接 語法格式: CREATE PUBLIC DATABASE LINK dblink_name CONNECT TO user IDENTIFIED BY password USING connect_string 【例3.22】為XSCJ數(shù)據(jù)庫創(chuàng)建一個名為MY_PLINK的公用鏈接。 CREATE

37、 PUBLIC DATABASE LINK MY_PLINK CONNECT TO ADMIN IDENTIFIED BY MANAGE USING XSCJ;.3.5.2運用數(shù)據(jù)庫鏈接 創(chuàng)建了數(shù)據(jù)庫鏈接,就可以運用遠程數(shù)據(jù)庫的對象了。 【例3.23】查詢遠程數(shù)據(jù)庫XSCJ表KC中的一切課程情況。 SELECT * FROM ADMIN.KCMY_PLINK;上述查詢將經(jīng)過MY_PLINK數(shù)據(jù)庫鏈接來訪問KC表,也可以為該表創(chuàng)建一個同義詞。 【例3.24】為XSCJ遠程數(shù)據(jù)庫表KC創(chuàng)建一個同義詞。 CREATE PUBLIC SYNONYM KC FOR ADMIN.KC MY_PLINK;

38、這時數(shù)據(jù)庫對象的全限定標(biāo)志已被定義,其中包括經(jīng)過效力名的主機和實例、經(jīng)過數(shù)據(jù)庫鏈接的擁有者(ADMIN)和表名(KC)。 .3.5.3刪除數(shù)據(jù)庫鏈接 1. 利用OEM刪除數(shù)據(jù)庫鏈接 在如圖3.16所示的窗口中,選擇要刪除的數(shù)據(jù)庫鏈接,單擊“刪除按鈕,在出現(xiàn)的“確認(rèn)界面,單擊“是按鈕后,就能勝利刪除該數(shù)據(jù)庫鏈接。 2. 利用DROP DATABASE LINK刪除數(shù)據(jù)庫鏈接 語法格式: DROP DATABASE LINK dblink_name dblink_name為要刪除的數(shù)據(jù)庫鏈接稱號。 【例3.25】刪除公用數(shù)據(jù)庫鏈接MY_PLINK。 DROP DATABASE LINK MY_PL

39、INK; 留意:公用數(shù)據(jù)庫鏈接可由任何有相應(yīng)權(quán)限的用戶刪除,而私有數(shù)據(jù)庫鏈接只能由SYS系統(tǒng)用戶刪除。.3.6數(shù)據(jù)完好性 Oracle運用完好性約束防止不合法的數(shù)據(jù)進入到基表中。管理員和開發(fā)人員可以定義完好性規(guī)那么,以加強商業(yè)規(guī)那么,限制數(shù)據(jù)表中的數(shù)據(jù)。 運用完好性約束有以下幾個益處: (1) 在數(shù)據(jù)庫運用的代碼中加強了商業(yè)規(guī)那么。 (2) 運用存儲過程,完好控制對數(shù)據(jù)的訪問。 (3) 加強了觸發(fā)存儲數(shù)據(jù)庫過程的商業(yè)規(guī)那么。 3.6.1數(shù)據(jù)完好性的分類 1. 域完好性 域完好性又稱為列完好性,指定一個數(shù)據(jù)集對某一個列能否有效和確定能否允許空值。 .3.6.1數(shù)據(jù)完好性的分類 【例3.26】定義

40、表KC的同時定義學(xué)分的約束條件。 CREATE TABLE KC ( KCH char(6) NOT NULL, KCM char(8) NOT NULL, XF NUMBER(2) CHECK (總學(xué)分=0 AND總學(xué)分=0 AND CJ=100,單擊“確定按鈕,完成CHECK約束的創(chuàng)建,系統(tǒng)前往到圖3.19所示界面,單擊“運用保管上述操作。 圖3.20添加CHECK約束條件界面.3.6.3域完好性的實現(xiàn) (2) 利用SQL語句在創(chuàng)建表時創(chuàng)建CHECK約束 語法格式: CREATE TABLE table_name /*指定表名*/ ( column_name datatype NOT NU

41、LL | NULL DEFAULT constraint_expression /*默許值*/ CONSTRAINT check_name CHECK(check_expression),n) /*CHECK約束表達式*/ 【例3.27】在 XSCJ 數(shù)據(jù)庫中創(chuàng)建表books,其中包含一切的約束定義。 CREATE TABLE books ( book_id number(10), book_name varchar2(50) not null, book_desc varchar2(50) DEFAULT New book, max_lvl number(3,2) not null, tra

42、de_price number(4,1) not null, CONSTRAINT ch_cost CHECK(max_lvl=250);.3.6.3域完好性的實現(xiàn) (3) 利用SQL語句在修正表時創(chuàng)建CHECK約束 語法格式: ALTER TABLE table_name ADD( CONSTRAINT check_name CHECK(check_expression) 【例3.28】經(jīng)過修正XSCJ數(shù)據(jù)庫的books表,添加零售價字段trade_price的CHECK約束。 ALTER TABLE books ADD( CONSTRAINT ch_price CHECK(trade_pr

43、ice=250); (4) 利用SQL語句刪除CHECK約束 CHECK約束的刪除可在OEM中刪除,有興趣的讀者可以本人試一試,在此介紹如何利用SQL命令刪除。 語法格式: ALTER TABLE table_name DROP CONSTRAINT check_name 功能:在table_name指定的表中,刪除名為check_name的約束。 【例3.29】刪除XSCJ數(shù)據(jù)庫中books表零售價字段的CHECK約束。 ALTER TABLE books DROP CONSTRAINT ch_price;.3.6.4實體完好性的實現(xiàn) 如前所述,表中應(yīng)有一個列或列的組合,其值能獨一地標(biāo)識表中

44、的每一行,選擇這樣的一列或多列作為主鍵可實現(xiàn)表的實體完好性。 一個表只能有一個 PRIMARY KEY 約束,而且 PRIMARY KEY 約束中的列不能取空值。由于 PRIMARY KEY 約束能確保數(shù)據(jù)的獨一,所以經(jīng)常用來定義標(biāo)識列。當(dāng)為表定義PRIMARY KEY約束時,Oracle 10g為主鍵列創(chuàng)建獨一索引,實現(xiàn)數(shù)據(jù)的獨一性,在查詢中運用主鍵時,該索引可用來對數(shù)據(jù)進展快速訪問。假設(shè) PRIMARY KEY 約束是由多列組合定義的,那么某一列的值可以反復(fù),但 PRIMARY KEY 約束定義中一切列的組合值必需獨一。 PRIMARY KEY約束與UNIQUE約束的主要區(qū)別如下: (1)

45、 一個數(shù)據(jù)表只能創(chuàng)建一個PRIMARY KEY約束,但一個表中可根據(jù)需求對不同的列創(chuàng)建假設(shè)干個UNIQUE約束; (2) PRIMARY KEY字段的值不允許為NULL,而UNIQUE字段的值可取NULL;PRIMARY KEY約束與UNIQUE約束的一樣點在于:二者均不允許表中對應(yīng)字段存在反復(fù)值;在創(chuàng)建PRIMARY KEY約束與UNIQUE約束時會自動產(chǎn)生索引。 .3.6.4實體完好性的實現(xiàn) 對于PRIMARY KEY約束與UNIQUE約束來說,都是由索引強迫實現(xiàn)。在實現(xiàn)PRIMARY KEY約束與UNIQUE約束時,Oracle按照下面過程來實現(xiàn): (1) 假設(shè)制止該約束,那么不創(chuàng)建索引

46、。 (2) 假設(shè)約束是允許的,且約束中的列是某個索引的一部分,那么該索援用來強迫約束。 (3) 假設(shè)約束是允許的,且約束中的列都不是某個索引的一部分,那么按照下面的規(guī)那么創(chuàng)建索引: 假設(shè)約束是可延遲的,那么在這種約束的列上創(chuàng)建一個非獨一性索引。 假設(shè)約束是非可延遲的,那么創(chuàng)建一個獨一性索引。 1. 利用OEM創(chuàng)建和刪除PRIMAY KEY或UNIQUE約束 利用OEM創(chuàng)建和刪除PRIMAY KEY或UNIQUE約束的操作過程同利用OEM創(chuàng)建和刪除CHECK約束根本一樣,獨一的區(qū)別是在選擇約束類型時選擇PRIMAY KEY或UNIQUE約束,詳細操作請參照利用OEM創(chuàng)建和刪除CHECK約束。 .

47、3.6.4實體完好性的實現(xiàn)2.利用SQL語句創(chuàng)建和刪除PRIMAY KEY及UNIQUE約束(1) 創(chuàng)建表的同時創(chuàng)建PRIMAY KEY或UNIQUE約束語法格式:CREATE TABLE table_name /*指定表名*/(column_name datatype /*定義字段*/CONSTRAINT constraint_name /*定義約束名*/NOT NULLPRIMARY KEY | UNIQUE /*定義約束類型*/,n) /*n表示可定義多個字段*/在語法格式中,經(jīng)過關(guān)鍵字PRIMARY KEY、UNIQUE闡明所創(chuàng)建的約束類型。 .3.6.4實體完好性的實現(xiàn) 2. 利用S

48、QL語句創(chuàng)建和刪除PRIMAY KEY及UNIQUE約束 【例3.30】對XSCJ數(shù)據(jù)庫中XS表的學(xué)號字段創(chuàng)建PRIMARY KEY約束,對身份證號碼字段定義UNIQUE約束。 CREATE TABLE XS ( XH char(6) NOT NULL CONSTRAINT PK_XH PRIMARY KEY, XM char(8) NOT NULL, INDENTITY char(20) CONSTRAINT UN_ID UNIQUE, ZYM char(10) NULL, XB char(2) NOT NULL, CSSJ ldate NOT NULL, ZXF number(2) NUL

49、L, BZ varchar2(100) NULL, RXSJ date );.3.6.4實體完好性的實現(xiàn)2. 利用SQL語句創(chuàng)建和刪除PRIMAY KEY及UNIQUE約束 (2) 利用修正表創(chuàng)建PRIMAY KEY或UNIQUE約束 語法格式: ALTER TABLE table_name ADD( CONSTRAINT constraint_name PRIMARY KEY(column_name,n)闡明:這是創(chuàng)建PRIMAY KEY約束,ADD CONSTRAINT表示對table_name表添加一個約束,約束名由constraint_name指定,約束類型為PRIMARY KEY。索

50、引字段由column_name參數(shù)指定,可包含一列或多列。語法格式: ALTER TABLE table_name ADD(CONSTRAINT constraint_name UNIQUE(column_name,n)這是創(chuàng)建UNIQUE約束。 .3.6.4實體完好性的實現(xiàn) 【例3.31】 先在XSCJ數(shù)據(jù)庫中創(chuàng)建表XS,然后經(jīng)過修正表,對學(xué)號字段創(chuàng)建PRIMARY KEY約束,對身份證號碼字段定義UNIQUE約束。 CREATE TABLE XS ( XH char(6) NOT NULL, XM char(8) NOT NULL, INDENTITY char(20), ZYM char

51、(10) NULL, XB char(2) NOT NULL, CSSJ date NOT NULL, ZXF number(2) NULL, BZ varchar2(100) NULL, RXSJ date ); ALTER TABLE XS ADD(CONSTRAINT PK_XS PRIMARY KEY(XH); ALTER TABLE XS ADD(CONSTRAINT UN_XS UNIQUE(INDENTITY);.3.6.4實體完好性的實現(xiàn)2. 利用SQL語句創(chuàng)建和刪除PRIMAY KEY及UNIQUE約束(3)刪除PRIMARY KEY或UNIQUE約束語法格式: ALTER TABLE table_name DROP CONSTRAINT constraint_name,n;【例3.32】刪除創(chuàng)建的UN_XS的UNIQUE約束。 ALTER TABLE XS DROP CONSTRAINT UN_XS;.3.6.5參照完好性的實現(xiàn) 對兩個相關(guān)聯(lián)的表(主表與從表)進展數(shù)據(jù)插入和刪除時,經(jīng)過參照完好性保證它們之間數(shù)據(jù)的一致性。利用FORE

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論