隨筆-60  評論-117  文章-0  trackbacks-0
          mysql和oracle 中針對table 的操作基本相同,但oracle中涉及用戶創(chuàng)建和授權(quán)的問題,它的內(nèi)部函數(shù)也比較復(fù)雜。
          1) 創(chuàng)建用戶 :

             create user username identified by pwd default tablespace users Temporary TABLESPACE Temp;

             2) 用戶授權(quán)

             grant connect,resource,dba to business;   
               
                   3) 提交

             commit;

          創(chuàng)建角色:
             1:CREATE ROLE role_name IDENTIFIED BY password
                   CREATE ROLE role_name IDENTIFIED EXTERNALLY
                   CREATE ROLE role_name IDENTIFIED GLOBALLY

                   缺省情況下建立的角色沒有password或者其他的識(shí)別。如果使用IDENTIFIED BY 子句建立,那么角色不會(huì)自動(dòng)響應(yīng),必須用SET ROLE激活。

          SET ROLE role_name IDENTIFIED BY password

          EXTERNALLY和GLOBALLY類型的角色由操作系統(tǒng)和ORACLE Service server驗(yàn)證。通常用戶需要權(quán)限修改應(yīng)用程序中使用的表單中的數(shù)據(jù),但是只有在應(yīng)用程序運(yùn)行時(shí)而不是在使用ad hoc工具時(shí),這種上下文敏感安全可以通過有PASSWORD的角色來實(shí)現(xiàn)。當(dāng)用戶在應(yīng)用程序內(nèi)部連結(jié)數(shù)據(jù)庫時(shí),代碼將執(zhí)行SET ROLE命令,通過安全驗(yàn)證。所以用戶不需要知道角色的password,也不需要自己輸入SET ROLE命令。

          對象權(quán)限

            對象權(quán)限就是指在表、視圖、序列、過程、函數(shù)或包等對象上執(zhí)行特殊動(dòng)作的權(quán)利。有九種不同類型的權(quán)限可以授予給用戶或角色。如下表:
          權(quán)限 ALTER DELETE EXECUTE INDEX INSERT READ REFERENCE SELECT UPDATE
          Directory no no no no no yes no no no
          function no no yes no no no no no no
          procedure no no yes no no no no no no
          package no no yes no no no no no no
          DB Object no no yes no no no no no no
          Libary no no yes no no no no no no
          Operation no no yes no no no no no no
          Sequence yes no no no no no no no no
          Table yes yes no yes yes no yes yes yes
          Type no no yes no no no no no no
          View no yes no no yes no no yes yes
           對象由不止一個(gè)權(quán)限,特殊權(quán)限ALL可以被授予或撤銷。如TABLE的ALL權(quán)限就包括:

          系統(tǒng)權(quán)限

            系統(tǒng)權(quán)限需要授予者有進(jìn)行系統(tǒng)級活動(dòng)的能力,如連接數(shù)據(jù)庫,更改用戶會(huì)話、建立表或建立用戶等等。你可以在數(shù)據(jù)字典視圖SYSTEM_PRIVILEGE_MAP上獲得完整的系統(tǒng)權(quán)限。對象權(quán)限和系統(tǒng)權(quán)限都通過GRANT語句授予用戶或角色。需要注意的是在授予對象權(quán)限時(shí)語句應(yīng)該是WITH GRANT OPTION子句,但在授予系統(tǒng)權(quán)象時(shí)語句是WITH ADMIN OPTION,所以在你試圖授予系統(tǒng)權(quán)限時(shí),使用語句WITH GRANT OPTION系統(tǒng)會(huì)報(bào)告一個(gè)錯(cuò)誤:ONLY ADMIN OPTION can be specified。在考試中要特別注意這個(gè)語法和錯(cuò)誤信息。
          內(nèi)部函數(shù):
           

          ASCII()

             c1是一字符串,返回c1第一個(gè)字母的ASCII碼,他的逆函數(shù)是CHR()

          SELECT ASCII('A') BIG_A,ASCII('z') BIG_z FROM empBIG_A BIG_z65 122

           

            CHR(<i>)[NCHAR_CS]

             i是一個(gè)數(shù)字,函數(shù)返回十進(jìn)制表示的字符

          select CHR(65),CHR(122),CHR(223) FROM empCHR65 CHR122 CHR223A z B

           

           CONCAT(,)

             c1,c2均為字符串,函數(shù)將c2連接到c1的后面,如果c1為null,將返回c2.如果c2為null,則返回c1,如果c1、c2都為null,則返回null。他和操作符||返回的結(jié)果相同

          select concat('slobo ','Svoboda') username from dualusernameslobo Syoboda

           

            INITCAP()

             c1為一字符串。函數(shù)將每個(gè)單詞的第一個(gè)字母大寫其它字母小寫返回。單詞由空格,控制字符,標(biāo)點(diǎn)符號限制。

          select INITCAP('veni,vedi,vici') Ceasar from dualCeasarVeni,Vedi,Vici

           

            INSTR(,[,<i>[,]])

             c1,c2均為字符串,i,j為整數(shù)。函數(shù)返回c2在c1中第j次出現(xiàn)的位置,搜索從c1的第i個(gè)字符開始。當(dāng)沒有發(fā)現(xiàn)需要的字符時(shí)返回0,如果i為負(fù)數(shù),那么搜索將從右到左進(jìn)行,但是位置的計(jì)算還是從左到右,i和j的缺省值為1.

          select INSTR('Mississippi','i',3,3) from dualINSTR('MISSISSIPPI','I',3,3)11select INSTR('Mississippi','i',-2,3) from dualINSTR('MISSISSIPPI','I',3,3)2

           

            INSTRB(,[,i[,j])

             與INSTR()函數(shù)一樣,只是他返回的是字節(jié),對于單字節(jié)INSTRB()等于INSTR()

           

            LENGTH()

             c1為字符串,返回c1的長度,如果c1為null,那么將返回null值。

          select LENGTH('Ipso Facto') ergo from dualergo10

           

            LENGTHb()

             與LENGTH()一樣,返回字節(jié)。

           

            lower()

             返回c的小寫字符,經(jīng)常出現(xiàn)在where子串中

          select LOWER(colorname) from itemdetail WHERE LOWER(colorname) LIKE '%white%'COLORNAMEWinterwhite

           

            LPAD(,<i>[,])

             c1,c2均為字符串,i為整數(shù)。在c1的左側(cè)用c2字符串補(bǔ)足致長度i,可多次重復(fù),如果i小于c1的長度,那么只返回i那么長的c1字符,其他的將被截去。c2的缺省值為單空格,參見RPAD。

          select LPAD(answer,7,'') padded,answer unpadded from question;PADDED UNPADDED Yes YesNO NOMaybe maybe

           

            LTRIM(,)

             把c1中最左邊的字符去掉,使其第一個(gè)字符不在c2中,如果沒有c2,那么c1就不會(huì)改變。

          select LTRIM('Mississippi','Mis') from dualLTRppi

           

            RPAD(,<i>[,])

             在c1的右側(cè)用c2字符串補(bǔ)足致長度i,可多次重復(fù),如果i小于c1的長度,那么只返回i那么長的c1字符,其他的將被截去。c2的缺省值為單空格,其他與LPAD相似

          RTRIM(,)

             把c1中最右邊的字符去掉,使其第后一個(gè)字符不在c2中,如果沒有c2,那么c1就不會(huì)改變。

            REPLACE(,[,])

             c1,c2,c3都是字符串,函數(shù)用c3代替出現(xiàn)在c1中的c2后返回。

          select REPLACE('uptown','up','down') from dualREPLACEdowntown

           STBSTR(,<i>[,])

             c1為一字符串,i,j為整數(shù),從c1的第i位開始返回長度為j的子字符串,如果j為空,則直到串的尾部。

          select SUBSTR('Message',1,4) from dualSUBSMess

            SUBSTRB(,<i>[,])

             與SUBSTR大致相同,只是I,J是以字節(jié)計(jì)算。

            SOUNDEX()

             返回與c1發(fā)音相似的詞

          select SOUNDEX('dawes') Dawes SOUNDEX('daws') Daws, SOUNDEX('dawson') from dualDawes Daws DawsonD200 D200 D250

            TRANSLATE(,,)

             將c1中與c2相同的字符以c3代替

          select TRANSLATE('fumble','uf','ar') test from dualTEXTramble

            TRIM([[]] from c3)

             將c3串中的第一個(gè),最后一個(gè),或者都刪除。

          select TRIM(' space padded ') trim from dual TRIMspace padded

            UPPER()

             返回c1的大寫,常出現(xiàn)where子串中

          select name from dual where UPPER(name) LIKE 'KI%'NAMEKING

          單行數(shù)字函數(shù)

            單行數(shù)字函數(shù)操作數(shù)字?jǐn)?shù)據(jù),執(zhí)行數(shù)學(xué)和算術(shù)運(yùn)算。所有函數(shù)都有數(shù)字參數(shù)并返回?cái)?shù)字值。所有三角函數(shù)的操作數(shù)和值都是弧度而不是角度,oracle沒有提供內(nèi)建的弧度和角度的轉(zhuǎn)換函數(shù)。

            ABS()

             返回n的絕對值

            ACOS()

             反余玄函數(shù),返回-1到1之間的數(shù)。n表示弧度

          select ACOS(-1) pi,ACOS(1) ZERO FROM dualPI ZERO3.14159265 0

            ASIN()

             反正玄函數(shù),返回-1到1,n表示弧度

          ATAN()

             反正切函數(shù),返回n的反正切值,n表示弧度。

            CEIL()

             返回大于或等于n的最小整數(shù)。

            COS()

             返回n的余玄值,n為弧度

            COSH()

             返回n的雙曲余玄值,n 為數(shù)字。

          select COSH(<1.4>) FROM dualCOSH(1.4)2.15089847

            EXP()

             返回e的n次冪,e=2.71828183.

           FLOOR()

             返回小于等于N的最大整數(shù)。

           LN()

             返回N的自然對數(shù),N必須大于0

           LOG(,)

             返回以n1為底n2的對數(shù)

           MOD()

             返回n1除以n2的余數(shù),

           POWER(,)

             返回n1的n2次方

            ROUND(,)

             返回舍入小數(shù)點(diǎn)右邊n2位的n1的值,n2的缺省值為0,這回將小數(shù)點(diǎn)最接近的整數(shù),如果n2為負(fù)數(shù)就舍入到小數(shù)點(diǎn)左邊相應(yīng)的位上,n2必須是整數(shù)。

          select ROUND(12345,-2),ROUND(12345.54321,2) FROM dualROUND(12345,-2) ROUND(12345.54321,2)12300 12345.54

            SIGN()

             如果n為負(fù)數(shù),返回-1,如果n為正數(shù),返回1,如果n=0返回0.

            SIN()

             返回n的正玄值,n為弧度。

          SINH()

             返回n的雙曲正玄值,n為弧度。

            SQRT()

             返回n的平方根,n為弧度

            TAN()

             返回n的正切值,n為弧度

            TANH()

             返回n的雙曲正切值,n為弧度

            TRUNC(,)

             返回截尾到n2位小數(shù)的n1的值,n2缺省設(shè)置為0,當(dāng)n2為缺省設(shè)置時(shí)會(huì)將n1截尾為整數(shù),如果n2為負(fù)值,就截尾在小數(shù)點(diǎn)左邊相應(yīng)的位上。

           單行日期函數(shù)

            單行日期函數(shù)操作DATA數(shù)據(jù)類型,絕大多數(shù)都有DATA數(shù)據(jù)類型的參數(shù),絕大多數(shù)返回的也是DATA數(shù)據(jù)類型的值。

            ADD_MONTHS(,<i>)

             返回日期d加上i個(gè)月后的結(jié)果。i可以使任意整數(shù)。如果i是一個(gè)小數(shù),那么數(shù)據(jù)庫將隱式的他轉(zhuǎn)換成整數(shù),將會(huì)截去小數(shù)點(diǎn)后面的部分。

            LAST_DAY()

             函數(shù)返回包含日期d的月份的最后一天

            MONTHS_BETWEEN(,)

             返回d1和d2之間月的數(shù)目,如果d1和d2的日的日期都相同,或者都使該月的最后一天,那么將返回一個(gè)整數(shù),否則會(huì)返回的結(jié)果將包含一個(gè)分?jǐn)?shù)。

            NEW_TIME(,,)

             d1是一個(gè)日期數(shù)據(jù)類型,當(dāng)時(shí)區(qū)tz1中的日期和時(shí)間是d時(shí),返回時(shí)區(qū)tz2中的日期和時(shí)間。tz1和tz2時(shí)字符串。

          NEXT_DAY(,)

             返回日期d后由dow給出的條件的第一天,dow使用當(dāng)前會(huì)話中給出的語言指定了一周中的某一天,返回的時(shí)間分量與d的時(shí)間分量相同。

          select NEXT_DAY('01-Jan-2000','Monday') "1st Monday",NEXT_DAY('01-Nov-2004','Tuesday')+7 "2nd Tuesday") from dual;1st Monday 2nd Tuesday03-Jan-2000 09-Nov-2004

            ROUND([,])

             將日期d按照fmt指定的格式舍入,fmt為字符串。

            SYADATE

             函數(shù)沒有參數(shù),返回當(dāng)前日期和時(shí)間。

            TRUNC([,])

             返回由fmt指定的單位的日期d.

          單行轉(zhuǎn)換函數(shù)

            單行轉(zhuǎn)換函數(shù)用于操作多數(shù)據(jù)類型,在數(shù)據(jù)類型之間進(jìn)行轉(zhuǎn)換。

            CHARTORWID()

             c 使一個(gè)字符串,函數(shù)將c轉(zhuǎn)換為RWID數(shù)據(jù)類型。

          SELECT test_id from test_case where rowid=CHARTORWID('AAAA0SAACAAAALiAAA')

            CONVERT(,[,])

             c尾字符串,dset、sset是兩個(gè)字符集,函數(shù)將字符串c由sset字符集轉(zhuǎn)換為dset字符集,sset的缺省設(shè)置為數(shù)據(jù)庫的字符集。

            HEXTORAW()

             x為16進(jìn)制的字符串,函數(shù)將16進(jìn)制的x轉(zhuǎn)換為RAW數(shù)據(jù)類型。

            RAWTOHEX()

             x是RAW數(shù)據(jù)類型字符串,函數(shù)將RAW數(shù)據(jù)類轉(zhuǎn)換為16進(jìn)制的數(shù)據(jù)類型。

            ROWIDTOCHAR()

             函數(shù)將ROWID數(shù)據(jù)類型轉(zhuǎn)換為CHAR數(shù)據(jù)類型。

           TO_CHAR([[,)

             x是一個(gè)data或number數(shù)據(jù)類型,函數(shù)將x轉(zhuǎn)換成fmt指定格式的char數(shù)據(jù)類型,如果x為日期nlsparm=NLS_DATE_LANGUAGE 控制返回的月份和日份所使用的語言。如果x為數(shù)字nlsparm=NLS_NUMERIC_CHARACTERS 用來指定小數(shù)位和千分位的分隔符,以及貨幣符號。

          NLS_NUMERIC_CHARACTERS ="dg", NLS_CURRENCY="string"

            TO_DATE([,[,)

             c表示字符串,fmt表示一種特殊格式的字符串。返回按照fmt格式顯示的c,nlsparm表示使用的語言。函數(shù)將字符串c轉(zhuǎn)換成date數(shù)據(jù)類型。

            TO_MULTI_BYTE()

             c表示一個(gè)字符串,函數(shù)將c的擔(dān)子截字符轉(zhuǎn)換成多字節(jié)字符。

            TO_NUMBER([,[,)

             c表示字符串,fmt表示一個(gè)特殊格式的字符串,函數(shù)返回值按照fmt指定的格式顯示。nlsparm表示語言,函數(shù)將返回c代表的數(shù)字。

            TO_SINGLE_BYTE()

             將字符串c中得多字節(jié)字符轉(zhuǎn)化成等價(jià)的單字節(jié)字符。該函數(shù)僅當(dāng)數(shù)據(jù)庫字符集同時(shí)包含單字節(jié)和多字節(jié)字符時(shí)才使用

            其它單行函數(shù)

            BFILENAME(

          ,)

             dir是一個(gè)directory類型的對象,file為一文件名。函數(shù)返回一個(gè)空的BFILE位置值指示符,函數(shù)用于初始化BFILE變量或者是BFILE列。

            DECODE(,,[,,,[])

             x是一個(gè)表達(dá)式,m1是一個(gè)匹配表達(dá)式,x與m1比較,如果m1等于x,那么返回r1,否則,x與m2比較,依次類推m3,m4,m5....直到有返回結(jié)果。

            DUMP(,[,[,[,]]])

             x是一個(gè)表達(dá)式或字符,fmt表示8進(jìn)制、10進(jìn)制、16進(jìn)制、或則單字符。函數(shù)返回包含了有關(guān)x的內(nèi)部表示信息的VARCHAR2類型的值。如果指定了n1,n2那么從n1開始的長度為n2的字節(jié)將被返回。

           EMPTY_BLOB()

             該函數(shù)沒有參數(shù),函數(shù)返回 一個(gè)空的BLOB位置指示符。函數(shù)用于初始化一個(gè)BLOB變量或BLOB列。

            EMPTY_CLOB()

             該函數(shù)沒有參數(shù),函數(shù)返回 一個(gè)空的CLOB位置指示符。函數(shù)用于初始化一個(gè)CLOB變量或CLOB列。

            GREATEST()

             exp_list是一列表達(dá)式,返回其中最大的表達(dá)式,每個(gè)表達(dá)式都被隱含的轉(zhuǎn)換第一個(gè)表達(dá)式的數(shù)據(jù)類型,如果第一個(gè)表達(dá)式是字符串?dāng)?shù)據(jù)類型中的任何一個(gè),那么返回的結(jié)果是varchar2數(shù)據(jù)類型,同時(shí)使用的比較是非填充空格類型的比較。

           

           LEAST()

             exp_list是一列表達(dá)式,返回其中最小的表達(dá)式,每個(gè)表達(dá)式都被隱含的轉(zhuǎn)換第一個(gè)表達(dá)式的數(shù)據(jù)類型,如果第一個(gè)表達(dá)式是字符串?dāng)?shù)據(jù)類型中的任何一個(gè),將返回的結(jié)果是varchar2數(shù)據(jù)類型,同時(shí)使用的比較是非填充空格類型的比較。

            UID

             該函數(shù)沒有參數(shù),返回唯一標(biāo)示當(dāng)前數(shù)據(jù)庫用戶的整數(shù)。

            USER

             返回當(dāng)前用戶的用戶名

            USERENV()

             基于opt返回包含當(dāng)前會(huì)話信息。opt的可選值為:

            ISDBA    會(huì)話中SYSDBA腳色響應(yīng),返回TRUE

             SESSIONID  返回審計(jì)會(huì)話標(biāo)示符

             ENTRYID   返回可用的審計(jì)項(xiàng)標(biāo)示符

             INSTANCE  在會(huì)話連接后,返回實(shí)例標(biāo)示符。該值只用于運(yùn)行Parallel 服務(wù)器并且有 多個(gè)實(shí)例的情況下使用。

             LANGUAGE  返回語言、地域、數(shù)據(jù)庫設(shè)置的字符集。

             LANG    返回語言名稱的ISO縮寫。

             TERMINAL  為當(dāng)前會(huì)話使用的終端或計(jì)算機(jī)返回操作系統(tǒng)的標(biāo)示符。

            VSIZE()

             x是一個(gè)表達(dá)式。返回x內(nèi)部表示的字節(jié)數(shù)。
          posted on 2007-04-25 20:30 靜兒 閱讀(707) 評論(2)  編輯  收藏

          評論:
          # oracle到mysql??? 2007-05-14 22:42 | 余威
          我想請教你一下,我現(xiàn)在有一個(gè)oracle的用來專門建描述表的文件,但我只有Mysql數(shù)據(jù)庫,想問下怎么樣把這個(gè)文件導(dǎo)入到Mysql的庫里去啊,文件里里有很多表的描述及其選項(xiàng),我不能一個(gè)個(gè)個(gè)照著改啊,謝謝啊能不能把解決方法發(fā)到我郵箱里啊yuwei4891@yahoo.com.cn
          我一直解決不了這個(gè)問題,希望你能幫我。  回復(fù)  更多評論
            
          # re: 從mysql到oracle 2007-09-11 17:26 | 與我聯(lián)系 13871017378(蘭)
          與我聯(lián)系 13871017378(蘭)  回復(fù)  更多評論
            

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 灵宝市| 汽车| 驻马店市| 中牟县| 城市| 桃园县| 开鲁县| 张家口市| 龙岩市| 固阳县| 迭部县| 潜江市| 蕲春县| 博客| 江油市| 余干县| 青河县| 原阳县| 曲周县| 安溪县| 永兴县| 隆林| 东丰县| 汉川市| 武隆县| 玛多县| 英超| 昔阳县| 安新县| 交城县| 松桃| 邯郸县| 黔西| 新竹市| 通江县| 綦江县| 周宁县| 康平县| 莎车县| 苍梧县| 丽水市|