色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Oracle數(shù)據(jù)操作和控制語(yǔ)言詳解

瀏覽:6日期:2023-11-17 11:59:59
SQL語(yǔ)言共分為四大類:數(shù)據(jù)查詢語(yǔ)言DQL,數(shù)據(jù)操縱語(yǔ)言DML, 數(shù)據(jù)定義語(yǔ)言DDL,數(shù)據(jù)控制語(yǔ)言DCL。其中用于定義數(shù)據(jù)的結(jié)構(gòu),比如 創(chuàng)建、修改或者刪除數(shù)據(jù)庫(kù);DCL用于定義數(shù)據(jù)庫(kù)用戶的權(quán)限;在這篇文章中我將具體講述這兩種語(yǔ)言在Oracle中的使用方法。 DML語(yǔ)言DML是SQL的一個(gè)子集,主要用于修改數(shù)據(jù),下表列出了ORACLE支持的DML語(yǔ)句。語(yǔ)句 用途INSERT向表中添加行UPDATE更新存儲(chǔ)在表中的數(shù)據(jù)DELETE 刪除行SELECT FOR UPDATE 禁止其他用戶訪問(wèn)DML語(yǔ)句正在處理的行。LOCK TABLE 禁止其他用戶在表中使用DML語(yǔ)句插入數(shù)據(jù)INSERT語(yǔ)句經(jīng)常用于向表中插入行,行中可以有非凡數(shù)據(jù)字段,或者可以用子查詢從已存在的數(shù)據(jù)中建立新行。列目錄是可選的,缺省的列的目錄是所有的列名,包括comlumn_id,comlumn_id可以在數(shù)據(jù)字典視圖ALL_TAB_COLUMNS,USER_TAB_COLUMNS,或者DBA_TAB_COLUMNS中找到。插入行的數(shù)據(jù)的數(shù)量和數(shù)據(jù)類型必須和列的數(shù)量和數(shù)據(jù)類型相匹配。不符合列定義的數(shù)據(jù)類型將對(duì)插入值實(shí)行隱式數(shù)據(jù)轉(zhuǎn)換。NULL字符串將一個(gè)NULL值插入適當(dāng)?shù)牧兄小Rψ諲ULL經(jīng)常用于表示將某列定義為NULL值。下面的兩個(gè)例子是等價(jià)的。INSERT INTO customers(cust_id,state,post_code)VALUE('Ariel',NULL,'94501'); 或INSERT INTO customers(cust_id,state,post_code)VALUE('Ariel',,'94501');更新數(shù)據(jù)UPDATE命令用于修改表中的數(shù)據(jù)。UPDATE order_rollupSET(qty,price)=(SELECT SUM(qty),SUM(price) FROM order_lines WHERE customer_id='KOHL'WHERE cust_id='KOHL'AND order_period=TO_DATE('01-Oct-2000')刪除數(shù)據(jù)DELETE語(yǔ)句用來(lái)從表中刪除一行或多行數(shù)據(jù),該命令包含兩個(gè)語(yǔ)句: 1、要害字DELETE FROM后跟預(yù)備從中刪除數(shù)據(jù)的表名。 2、WHERE后跟刪除條件DELETE FROM po_linesWHERE ship_to_state IN ('TX','NY','IL')AND order_date 清空表假如你想刪除表中所有數(shù)據(jù),清空表,可以考慮使用DDL語(yǔ)言的TRUNCATE語(yǔ)句。TRUNCATE就像沒(méi)有WHERE子句的DELETE命令一樣。TRUNCATE將刪除表中所有行。TRUNCATE不是DML語(yǔ)句是DDL語(yǔ)句,他和DELETE右不同的特點(diǎn)。TRUNCATE TABLE (schema)table DROP(REUSE) STORAGE STORAGE子串是可選的,缺省是DROP STORAGE。當(dāng)使用DROP STORAGE時(shí)將縮短表和表索引,將表收縮到最小范圍,并重新設(shè)置NEXT參數(shù)。REUSE STORAGE不會(huì)縮短表或者調(diào)整NEXT參數(shù)。TRUNCATE和DELETE有以下幾點(diǎn)區(qū)別1、TRUNCATE在各種表上無(wú)論是大的還是小的都非常快。假如有ROLLBACK命令DELETE將被撤銷,而TRUNCATE則不會(huì)被撤銷。2、TRUNCATE是一個(gè)DDL語(yǔ)言,向其他所有的DDL語(yǔ)言一樣,他將被隱式提交,不能對(duì)TRUNCATE使用ROLLBACK命令。3、TRUNCATE將重新設(shè)置高水平線和所有的索引。在對(duì)整個(gè)表和索引進(jìn)行完全瀏覽時(shí),經(jīng)過(guò)TRUNCATE操作后的表比DELETE操作后的表要快得多。4、TRUNCATE不能觸發(fā)任何DELETE觸發(fā)器。5、不能授予任何人清空他人的表的權(quán)限。6、當(dāng)表被清空后表和表的索引講重新設(shè)置成初始大小,而delete則不能。7、不能清空父表。SELECT FOR UPDATEselect for update語(yǔ)句用于鎖定行,阻止其他用戶在該行上修改數(shù)據(jù)。當(dāng)該行被鎖定后其他用戶可以用SELECT語(yǔ)句查詢?cè)撔械臄?shù)據(jù),但不能修改或鎖定該行。鎖定表LOCK語(yǔ)句經(jīng)常用于鎖定整個(gè)表。當(dāng)表被鎖定后,大多數(shù)DML語(yǔ)言不能在該表上使用。LOCK語(yǔ)法如下:LOCK schema table IN lock_mode其中l(wèi)ock_mode有兩個(gè)選項(xiàng): share 共享方式 exclusive 唯一方式例:LOCK TABLE intentory IN EXCLUSIVE MODE死鎖當(dāng)兩個(gè)事務(wù)都被鎖定,并且互相都在等待另一個(gè)被解鎖,這種情況稱為死鎖。 當(dāng)出現(xiàn)死鎖時(shí),ORACLE將檢測(cè)死鎖條件,并返回一個(gè)異常。事務(wù)控制事務(wù)控制包括協(xié)調(diào)對(duì)相同數(shù)據(jù)的多個(gè)同步的訪問(wèn)。當(dāng)一個(gè)用戶改變了另一個(gè)用戶正在使用的數(shù)據(jù)時(shí),oracle使用事務(wù)控制誰(shuí)可以操作數(shù)據(jù)。事務(wù)事務(wù)表示工作的一個(gè)基本單元,是一系列作為一個(gè)單元被成功或不成功操作的SQL語(yǔ)句。在SQL和PL/SQL中有很多語(yǔ)句讓程序員控制事務(wù)。程序員可以: 1、顯式開(kāi)始一個(gè)事物,選擇語(yǔ)句級(jí)一致性或事務(wù)級(jí)一致性 2、設(shè)置撤銷回滾點(diǎn),并回滾到回滾點(diǎn)  3、完成事務(wù)永遠(yuǎn)改變數(shù)據(jù)或者放棄修改。事務(wù)控制語(yǔ)句語(yǔ)句用途Commit 完成事務(wù),數(shù)據(jù)修改成功并對(duì)其他用戶開(kāi)放Rollback 撤銷事務(wù),撤銷所有操作rollback to savepoint 撤銷在設(shè)置的回滾點(diǎn)以后的操作set transaction響應(yīng)事務(wù)或語(yǔ)句的一致性;非凡對(duì)于事務(wù)使用回滾段例:BEGINUPDATE checkingSET balance=balance-5000WHERE account='Kieesha';INSERT INTO checking_log(action_date,action,amount)VALUES (SYSDATE,'Transfer to brokerage',-5000);UPDATE brokerageSET cash_balance=cash_balance+5000WHERE account='Kiesha';INSERT INTO brokerage_log(action_date,action,amount)VALUES (SYSDATE,'Tracfer from checking',5000)COMMITEXCEPTIONWHEN OTHERSROLLBACKENDSavepoint 和 部分回滾(Partial Rollback)在SQL和PL/SQL中Savepoint是在一事務(wù)范圍內(nèi)的中間標(biāo)志。經(jīng)常用于將一個(gè)長(zhǎng)的事務(wù)劃分為小的部分。保留點(diǎn)Savepoint可標(biāo)志長(zhǎng)事務(wù)中的任何點(diǎn),答應(yīng)可回滾該點(diǎn)之后的操作。在應(yīng)用程序中經(jīng)常使用Savepoint;例如一過(guò)程包含幾個(gè)函數(shù),在每個(gè)函數(shù)前可建立一個(gè)保留點(diǎn),假如函數(shù)失敗,很輕易返回到每一個(gè)函數(shù)開(kāi)始的情況。在回滾到一個(gè)Savepoint之后,該Savepoint之后所獲得的數(shù)據(jù)封鎖被釋放。為了實(shí)現(xiàn)部分回滾可以用帶TO Savepoint子句的ROLLBACK語(yǔ)句將事務(wù)回滾到指定的位置。例BEGIN INSERT INTO ATM_LOG(who,when,what,where)VALUES ('Kiesha',SYSDATE,'Withdrawal of $100','ATM54')SAVEPOINT ATM_LOGGED;UPDATE checkingSET balance=balance-100RETURN balance INTO new_balance;IF new_balance<0THENROLLBACK TO ATM_LOGGED;COMMITRAISE insufficient_funda;END IFEND 要害字SAVEPOINT是可選的,所以下面兩個(gè)語(yǔ)句是等價(jià)的:ROLLBACK TO ATM_LOGGED;ROLLBACK TO SAVEPOINT ATM_LOGGED;一致性和事務(wù)一致性是事物控制的要害慨念。把握了oracle 的一致性模型,能使您更好的,更恰當(dāng)?shù)氖褂檬聞?wù)控制。oracle通過(guò)一致性保證數(shù)據(jù)只有在事務(wù)全部完成后才能被用戶看見(jiàn)和使用。這項(xiàng)技術(shù)對(duì)多用戶數(shù)據(jù)庫(kù)有巨大的作用。oracle經(jīng)常使用語(yǔ)句級(jí)(state-level)一致性,保證數(shù)據(jù)在語(yǔ)句的生命期之間是可見(jiàn)的但不能被改變。事務(wù)由多個(gè)語(yǔ)句組成,當(dāng)使用事務(wù)時(shí),事物級(jí)(transaction-level)一致性在整個(gè)事務(wù)生命期中保證數(shù)據(jù)對(duì)所有語(yǔ)句都是可見(jiàn)的。oracle通過(guò)SCN(syatem change number)實(shí)施一致性。一個(gè)SCN是一個(gè)面向時(shí)間的數(shù)據(jù)庫(kù)內(nèi)部鍵。SCN只會(huì)增加不會(huì)減少,SCN表示了時(shí)間上的一個(gè)點(diǎn),每個(gè)數(shù)據(jù)塊都有一個(gè)SCN,通過(guò)比較這個(gè)點(diǎn)實(shí)施操作。事務(wù)級(jí)一致性SET TRANSACTION 的一個(gè)作用是確保事務(wù)級(jí)一致或語(yǔ)句級(jí)一致中有一個(gè)實(shí)施。ORACLE使用這些術(shù)語(yǔ): ISOLATION LEVEL READ COMMIT 表示語(yǔ)句級(jí)一致 ISOLATION LEVEL SERIALIZABLE 表示事務(wù)級(jí)一致。例:SET TRANSACTION ISOLATION LEVEL READ COMMIT;SET TRANSACTION ISOLATION LEVEL READ COMMIT下面的語(yǔ)句也能確保事務(wù)級(jí)一致:SET TRANSCATION READ ONLY任何企圖在只讀(READ ONLY)事務(wù)中修改數(shù)據(jù)的操作都會(huì)拋出一個(gè)異常。但是,READ ONLY事務(wù)只能在下列語(yǔ)句中使用:SELECT(沒(méi)有FOR UPDATE子句)LOCK TABLESET ROLEALTER SYSTEMALTER ALARM即使沒(méi)有改變?nèi)魏螖?shù)據(jù),READ ONLY事務(wù)依然必須使用一個(gè)COMMIT或ROLLBACK以結(jié)束整個(gè)事務(wù)。 SET TRANSCTION的另外一個(gè)應(yīng)用是在回滾時(shí)直接使用回滾段(ROLLBACK SEGMENT)。回滾段是ORACLE的一個(gè)非凡的數(shù)據(jù)對(duì)象,回滾段的頭部包含正在使用該回滾段事務(wù)的信息。當(dāng)用戶回滾事務(wù)(ROLLBACK)時(shí),ORACLE將會(huì)利用回滾段中的數(shù)據(jù)前影像來(lái)將修改的數(shù)據(jù)恢復(fù)到原來(lái)的值。oracle用round-robin給事務(wù)隨機(jī)分配回滾段。一個(gè)大的事務(wù)可以分配任何回滾段,這也許會(huì)導(dǎo)致回滾段的大小變得很大。因此要避免讓大的事務(wù)隨機(jī)分配回滾段。事務(wù)以SET TRANSACTION開(kāi)始,象下面這樣:SET TRANSACTION USE ROLLBACK SEGMENT rb_large;rb_large是一個(gè)大的回滾段的名稱,現(xiàn)在就給一個(gè)大的事務(wù)分配了一個(gè)大的回滾段,其他的小的回滾段將不由動(dòng)態(tài)空間治理,這樣就更有效率。下面我們看一個(gè)例子.我們有一個(gè)回滾段表空間大小是2G,在高峰時(shí)期需要10個(gè)回滾段以滿足用戶的需要,這些高峰在線用戶只有小的事務(wù)。一周我們連續(xù)運(yùn)行了4個(gè)大的事務(wù),這些事務(wù)需要?jiǎng)h除和加載數(shù)據(jù),每一個(gè)撤銷需要1G,回滾段的大小如下:rb_large(initial 100M minextenta 2)rb1 (initial 1M next minextents 5) rb2 (initial 1M next minextents 5)rb3 (initial 1M next minextents 5)rb4 (initial 1M next minextents 5)rb5 (initial 1M next minextents 5)rb6 (initial 1M next minextents 5)rb7 (initial 1M next minextents 5)rb8 (initial 1M next minextents 5)rb9 (initial 1M next minextents 5)rb10 (initial 1M next minextents 5) 所有的都非常恰當(dāng)?shù)陌才旁?G的表空間中,假如我們?nèi)笔〉膔ound-robin給事務(wù)分配回滾段,4個(gè)大事務(wù)將有4個(gè)獨(dú)立的回滾段,每個(gè)回滾段的大小將是1G,假如這樣我們的2G表空間就不夠,而數(shù)據(jù)庫(kù)治理員就不得不在夜晚2點(diǎn)起來(lái)工作,每個(gè)事務(wù)都由以下面的語(yǔ)句開(kāi)始:SET TRANSACTION USE ROLLBACK SEGMENT rb_large 現(xiàn)在 4個(gè)事務(wù)重用相同的表空間,保正4個(gè)回滾段的表空間在2G以內(nèi)。數(shù)據(jù)庫(kù)治理員可以睡到天亮。建立和修改用戶CREATE USER 語(yǔ)句將建立一個(gè)用戶。當(dāng)一個(gè)用戶連接到ORACLE數(shù)據(jù)庫(kù)時(shí),它必須被驗(yàn)證。ORACLE中驗(yàn)證有三種類型: Database external Global缺省是數(shù)據(jù)庫(kù)驗(yàn)證,當(dāng)用戶連接到數(shù)據(jù)庫(kù)時(shí),oracle將檢測(cè)用戶是否是數(shù)據(jù)庫(kù)的合法用戶,并且要提供正確的passWord.external驗(yàn)證,oracle將只檢測(cè)用戶是否是合法用戶,password已經(jīng)被網(wǎng)絡(luò)或系統(tǒng)驗(yàn)證了。global驗(yàn)證也是只檢測(cè)是否是合法用戶,password由oraclesecurity server驗(yàn)證。Database驗(yàn)證用戶賬號(hào)數(shù)據(jù)庫(kù)驗(yàn)證賬號(hào)是張好的缺省類型,也是最普通的類型。建立一個(gè)賬號(hào)是piyush,口令是welcome的賬號(hào),只需執(zhí)行下面的命令:CREATE USE piyush IDENTIFIED BY welcomepiyush可以通過(guò)下面的語(yǔ)句將口令改變?yōu)閟araswatt:ALTER USER piyush IDENTIFIED BY saraswati;外部驗(yàn)證用戶賬號(hào)用戶賬號(hào)進(jìn)入數(shù)據(jù)庫(kù)時(shí)可以不提供口令,這種情況下代替數(shù)據(jù)庫(kù)識(shí)別口令的是客戶端操作系統(tǒng)。外部驗(yàn)證賬號(hào)有時(shí)也叫OPS$賬號(hào),當(dāng)他們最初在oracle6開(kāi)始介紹時(shí),oracle賬號(hào)都有要害字前綴OPS$,這也就是為什么init.ora 參數(shù)os_authent_prefix是OPS$--默認(rèn)特征與oracle6保持一致。os_authent_prefix定義的字符串必須被預(yù)處理為用于Oracle外部識(shí)別賬號(hào)的操作系統(tǒng)賬號(hào)名。創(chuàng)建操作系統(tǒng)用戶appl的語(yǔ)句是:CREATE USER ops$appl IDENTIFIED EATERNALLY但在通常情況下,os_authent_prefix將被設(shè)置為空,像下面這樣:CREATE USER appl IDENTIFIED EATERNALLY這樣效果是一樣的,要害字IDENTIFIED EXTERNALLY告訴ORACLE這是一個(gè)外部識(shí)別賬號(hào)。GLOBAL用戶賬號(hào)GLOBAL類型的用戶賬號(hào)數(shù)據(jù)庫(kù)不檢測(cè)口令,而是由X.509目錄服務(wù)器檢測(cè)口令。創(chuàng)建一個(gè)GLOBAL類型的用戶賬號(hào)的方法是:CREATE USER scott IDENTIFIED GLOBALLY AS 'CN=scott,OU=divisional,O=sybex,C=US'要害字IDENTIFIED GLOBALLY AS表示建立的是一個(gè)GLOBAL類型的用戶賬號(hào).創(chuàng)建和更改用戶賬號(hào)CREATE USER 用于建立用戶賬號(hào)和給用戶賬號(hào)的屬性賦值。ALTER USER用于更改用戶賬號(hào)和屬性。 但CREATE USER語(yǔ)句必須包括用戶名和口令。有部分屬性能用CREATER USER和ALTER USER語(yǔ)句設(shè)置,下面對(duì)是這些的屬性具體描述:給用戶分配缺省表空間表空間(tablespace)是放置表、索引、叢等用戶對(duì)象的。假如在create user語(yǔ)句中沒(méi)有包含表空間,那么缺省的是系統(tǒng)表空間。CREATE USER piyush IDENTIFIED BY saraswatiDEFAULTE TABLESPACE user_data;ALTER USER manoj DEFAULTE TABLESPACE dev1_data;給用戶分配臨時(shí)表空間臨時(shí)表空間,顧名思義是臨時(shí)存放表、索引等用戶對(duì)象的臨時(shí)段。建立方法一樣CREATE USER piyush IDENTIFIED BY saraswatiTemporary TABLESPACE user_data;ALTER USER manoj Temporary TABLESPACE dev1_data;給用戶分配表空間的使用定額使用定額限制用戶在表空間中使用磁盤的數(shù)量。定額可以按字節(jié)、千字節(jié)、兆字節(jié)或者無(wú)限制來(lái)制定。CREATE USER piyush IDENTIFIED BY saraswatiDEFAULT TABLESPACE user_dataQUOTA UNLIMITED ON user_dataQUOTA 20M ON tools;ALTER USER manoj QUOTA 2500K ON tools;給用戶分配一個(gè)簡(jiǎn)表簡(jiǎn)表可以限制用戶在會(huì)話時(shí)消耗的資源。這些資源包括:連接數(shù)據(jù)庫(kù)的時(shí)間,空閑時(shí)間,每次會(huì)話的邏輯讀數(shù)據(jù)的數(shù)量等等,缺省的簡(jiǎn)表對(duì)資源無(wú)限制。CREATE USER piyush IDENTIFIED BY saraswatiPROFILE TABLESPACE user_data;ALTER USER manoj Temporary TABLESPACE dev1_data;為用戶響應(yīng)指定角色這個(gè)屬性只能由ALTER USER語(yǔ)句設(shè)置,試圖用CREATE USER語(yǔ)句設(shè)置將回返回一個(gè)例外。ALTER USER manoj DEFAULT ROLE ALL EXCEPT salary_adm;為用戶的password設(shè)定到期時(shí)間以便在用戶下次登錄時(shí)更改當(dāng)用戶的password到期,在下一次登錄時(shí)將強(qiáng)迫修改password,oracle提示用戶輸入舊的password,然后輸入新的password。這項(xiàng)功能常用于新用戶,當(dāng)新用戶用缺省的password登錄時(shí)必須修改立即修改password.ALTER USER manoj IDENTIFIED BY welcome;ALTER USER manoj PASSWORD EXPIRE;鎖定賬號(hào),是用戶不能登錄ALTER USER ql AC COUNT LOCK 對(duì)賬號(hào)解鎖,以便用戶能登錄數(shù)據(jù)庫(kù)ALTER USER ql ACCOUNT UNLOCK權(quán)限和角色權(quán)限答應(yīng)用戶訪問(wèn)屬于其它用戶的對(duì)象或執(zhí)行程序,ORACLE系統(tǒng)提供三種權(quán)限: Object 對(duì)象級(jí) System 系統(tǒng)級(jí) Role 角色級(jí)這些權(quán)限可以授予給用戶、非凡用戶public或角色,假如授予一個(gè)權(quán)限給非凡用戶'Public'(用戶public是oracle預(yù)定義的,每個(gè)用戶享有這個(gè)用戶享有的權(quán)限),那么就意味作將該權(quán)限授予了該數(shù)據(jù)庫(kù)的所有用戶。對(duì)治理權(quán)限而言,角色是一個(gè)工具,權(quán)限能夠被授予給一個(gè)角色,角色也能被授予給另一個(gè)角色或用戶。用戶可以通過(guò)角色繼續(xù)權(quán)限,除了治理權(quán)限外角色服務(wù)沒(méi)有其它目的。權(quán)限可以被授予,也可以用同樣的方式撤銷。建立和使用角色如前所訴,角色存在的目的就是為了使權(quán)限的治理變得輕松。建立角色使用CREATE ROLE語(yǔ)句,他的語(yǔ)法如下:CREATE ROLE role_name IDENTIFIED BY passwordCREATE ROLE role_name IDENTIFIED EXTERNALLYCREATE ROLE role_name IDENTIFIED GLOBALLY缺省情況下建立的角色沒(méi)有password或者其他的識(shí)別。假如使用IDENTIFIED BY 子句建立,那么角色不會(huì)自動(dòng)響應(yīng),必須用SET ROLE激活。SET ROLE role_name IDENTIFIED BY passwordEXTERNALLY和GLOBALLY類型的角色由操作系統(tǒng)和ORACLE Service server驗(yàn)證。通常用戶需要權(quán)限修改應(yīng)用程序中使用的表單中的數(shù)據(jù),但是只有在應(yīng)用程序運(yùn)行時(shí)而不是在使用ad hoc工具時(shí),這種上下文敏感安全可以通過(guò)有PASSWORD的角色來(lái)實(shí)現(xiàn)。當(dāng)用戶在應(yīng)用程序內(nèi)部連結(jié)數(shù)據(jù)庫(kù)時(shí),代碼將執(zhí)行SET ROLE命令,通過(guò)安全驗(yàn)證。所以用戶不需要知道角色的password,也不需要自己輸入SET ROLE命令。對(duì)象權(quán)限對(duì)象權(quán)限就是指在表、視圖、序列、過(guò)程、函數(shù)或包等對(duì)象上執(zhí)行非凡動(dòng)作的權(quán)利。有九種不同類型的權(quán)限可以授予給用戶或角色。如下表:權(quán)限ALTERDELETEEXECUTEINDEXINSERTREAD REFERENCESELECT UPDATEDirectoryno no no no no yesnono nofunctionnonoyesno nononononoprocedureno noyesnonono nononopackagenonoyesnonononononoDB Objectno no yesnono nonononoLibary nonoyes nonono no nonoOperation no no yesno no no no no noSequenceyes no no no no no no no noTable yes yes noyesyes no yes yes yesTypeno no yes no no no no no noView no yes no no yes no no yes yes對(duì)象由不止一個(gè)權(quán)限,非凡權(quán)限ALL可以被授予或撤銷。 如TABLE的ALL權(quán)限就包括: SELECT,INSERT,UPDATE和DELETE,還有INDEX,ALTER,和REFERENCE。如何看這個(gè)表我們以ALTER權(quán)限為例進(jìn)行說(shuō)明ALTER權(quán)限答應(yīng)執(zhí)行ALTER TABLE和LOCK TABLE操作,ALTER TABLE可以進(jìn)行如下操作:. 更改表名. 增加或刪除列. 改變列的數(shù)據(jù)類型或大小. 將表轉(zhuǎn)變?yōu)榉謪^(qū)表在SEQUENCE上的ALTER權(quán)限答應(yīng)執(zhí)行ALTER Sequence語(yǔ)句,重新給sequence分配最小值、增量和緩沖區(qū)大小。系統(tǒng)權(quán)限系統(tǒng)權(quán)限需要授予者有進(jìn)行系統(tǒng)級(jí)活動(dòng)的能力,如連接數(shù)據(jù)庫(kù),更改用戶會(huì)話、建立表或建立用戶等等。你可以在數(shù)據(jù)字典視圖SYSTEM_PRIVILEGE_MAP上獲得完整的系統(tǒng)權(quán)限。對(duì)象權(quán)限和系統(tǒng)權(quán)限都通過(guò)GRANT語(yǔ)句授予用戶或角色。需要注重的是在授予對(duì)象權(quán)限時(shí)語(yǔ)句應(yīng)該是WITH GRANT OPTION子句,但在授予系統(tǒng)權(quán)象時(shí)語(yǔ)句是WITH ADMIN OPTION,所以在你試圖授予系統(tǒng)權(quán)限時(shí),使用語(yǔ)句WITH GRANT OPTION系統(tǒng)會(huì)報(bào)告一個(gè)錯(cuò)誤:ONLY ADMIN OPTION can be specified。在考試中要非凡注重這個(gè)語(yǔ)法和錯(cuò)誤信息。角色和角色權(quán)限角色權(quán)限就是將屬于用戶的權(quán)限授予一個(gè)角色。任何權(quán)限都可以授予給一個(gè)角色。授予系統(tǒng)權(quán)限給被授予者必須使用WITH_ADMIN_OPTION子句,在會(huì)話期間通過(guò)SET ROLE語(yǔ)句授予或撤銷角色權(quán)限。然而,角色權(quán)限不能依靠存儲(chǔ)在SQL中的權(quán)限。假如函數(shù)、程序、包、觸發(fā)器或者方法使用另一個(gè)計(jì)劃擁有的對(duì)象,那么就必須直接給對(duì)象的擁有者授權(quán),這是因?yàn)闄?quán)限不會(huì)在會(huì)話之間改變。授予和撤銷權(quán)限 給用戶或者角色授予權(quán)限使用GRANT 語(yǔ)句,GRANT語(yǔ)句的語(yǔ)法如下:GRANT ROLE(或system privilege) TO user(role,Public) WITH ADMIN OPTION(可選)對(duì)象權(quán)限被授予 WITH GRANT OPTION,權(quán)限和數(shù)據(jù)字典數(shù)據(jù)字典是ORACLE存儲(chǔ)有關(guān)數(shù)據(jù)庫(kù)結(jié)構(gòu)信息的地方,數(shù)據(jù)本身存放在其他地方,數(shù)據(jù)字典由表和視圖組成。在考試中關(guān)于數(shù)據(jù)字典最輕易考的內(nèi)容是:查看那一類權(quán)限已經(jīng)被授予。比如DBA_TAB_PRIV包含了用戶授予給另一用戶的對(duì)象權(quán)限和在授予時(shí)是否帶有WITH GRANT OTPION子串的信息。注重DBA_TAB_PRIV不僅僅包含了對(duì)表的權(quán)限的關(guān)系,他還包括函數(shù)、包、隊(duì)列等等上的權(quán)限的關(guān)系。下表列出了所有的權(quán)限和角色的數(shù)據(jù)字典視圖:表: 權(quán)限的數(shù)據(jù)字典視圖視圖 作用ALL_COL_PRIVS表示列上的授權(quán),用戶和PUBLIC是被授予者ALL_COL_PRIVS_MADE 表示列上的授權(quán),用戶是屬主和被授予者ALL_COL_RECD表示列上的授權(quán),用戶和PUBLIC是被授予者ALL_TAB_PRIVS表示對(duì)象上的授權(quán),用戶是PUBLIC或被授予者或用戶是屬主ALL_TAB_PRIVS_MADE 表示對(duì)象上的權(quán)限,用戶是屬主或授予者ALL_TAB_PRIVS_RECD 表示對(duì)象上的權(quán)限, 用戶是PUBLIC或被授予者DBA_COL_PRIVS 數(shù)據(jù)庫(kù)列上的所有授權(quán)DBA_ROLE_PRIVS 顯示已授予用戶或其他角色的角色DBA_SYS_PRIVS 已授予用戶或角色的系統(tǒng)權(quán)限D(zhuǎn)BA_TAB_PRIVS 數(shù)據(jù)庫(kù)對(duì)象上的所有權(quán)限ROLE_ROLE_PRIVS 顯示已授予用戶的角色ROLE_SYS_PRIVS顯示通過(guò)角色授予用戶的系統(tǒng)權(quán)限ROLE_TAB_PRIVS顯示通過(guò)角色授予用戶的對(duì)象權(quán)限SESSION_PRIVS 顯示用戶現(xiàn)在可利用的所有系統(tǒng)權(quán)限USER_COL_PRIVS顯示列上的權(quán)限,用戶是屬主、授予者或被授予者USER_COL_PRIVS_MADE顯示列上已授予的權(quán)限,用戶是屬主或授予者USER_COL_PRIVS_RECD 顯示列上已授予的權(quán)限,用戶是屬主或被授予者USER_ROLE_PRIVS 顯示已授予給用戶的所有角色USER_SYS_PRIVS 顯示已授予給用戶的所有系統(tǒng)權(quán)限USER_TAB_PRIVS顯示已授予給用戶的所有對(duì)象權(quán)限USER_TAB_PRIVS_MADE 顯示已授予給其他用戶的對(duì)象權(quán)限,用戶是屬主USER_TAB_PRIVS_RECD顯示已授予給其他用戶的對(duì)象權(quán)限,用戶是被授予者
相關(guān)文章:
主站蜘蛛池模板: 欧美一级免费大片 | 久草新视频| 91久久国产综合精品 | 成人国产一区二区三区 | 点击进入不卡毛片免费观看 | 欧美精品在线免费观看 | 日本午夜人成免费视频 | 成人免费视频一区二区 | 美女黄色一级毛片 | 成人在线精品视频 | 玖玖香蕉视频 | 无毒在线 | 韩国美女毛片 | 中文字幕有码在线播放 | 久草久草久草 | 日韩欧美不卡在线 | 成人免费福利片在线观看 | 欧美成人高清免费大片观看 | 久操精品在线 | 黄色美女网站免费看 | 欧美激情久久久久久久久 | 欧美久久久久久久久 | 欧美亚洲日本在线 | 精品久久久久不卡无毒 | 91精品网站 | 国产在线一二三区 | 91看片淫黄大片.在线天堂 | 日本特级黄毛片毛片视频 | 一本大道香蕉大vr在线吗视频 | 亚洲成a人片在线观看中文 亚洲成a人片在线观看中文!!! | 女人张开腿让男人桶免费最新 | 毛片b| 成年女人毛片免费播放人 | 久久一区二区精品综合 | 亚洲一区二区中文字幕 | 99精品视频在线观看免费 | 成人免费在线观看视频 | 手机看片亚洲 | 91精品视品在线播放 | 日本一级~片免费永久 | 特级毛片免费观看视频 |