1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      Oracle之函數(shù)學(xué)習(xí)以及事務(wù)

      Oracle之函數(shù)學(xué)習(xí)

      創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、離石網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁面制作電子商務(wù)商城網(wǎng)站建設(shè)、集團公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為離石等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

      1、字符函數(shù)是oracle中最常用的函數(shù)

      lower(char):將字符串轉(zhuǎn)化為小寫的格式

      upper(char):將字符串轉(zhuǎn)化為大寫的格式

      length(char):返回字符串的長度

      substr(char,m,n):取字符串的子串

      將所有的員工的名字按小寫的方式顯示?

      SQL> select lower(ename),sal from emp;

      LOWER(ENAM        SAL

      ---------- ----------

      smith             800

      allen            1600

      按照大寫的方式顯示?

      SQL> select upper(ename),sal from emp;

      UPPER(ENAM        SAL

      ---------- ----------

      SMITH             800

      顯示正好有5個字符的員工?

      SQL> select * from emp where length(ename)=5;

           EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM

      ---------- ---------- --------- ---------- --------- ---------- ----------

          DEPTNO

      ----------

            7369 SMITH      CLERK           7902 17-DEC-80        800

              20

      顯示所有員工姓名的前三個字符?

      SQL> select substr(ename,1,3) from emp;   從第一個字符開始,向后偏移三個字符

      SUBSTR(ENAME

      ------------

      SMI

      ALL

      SQL> select substr(ename,2,3) from emp;   從第二個字符開始,向后偏移三個字符

      SUBSTR(ENAME

      ------------

      MIT

      LLE

      取出首字母為大寫的行?

      SQL> select upper(substr(ename,1,1)) from emp; 第一步取出首字母,然后將首字母進行替換成大寫

      UPPE

      ----

      S

      A

      將字符串首字母除外的字符都變成小寫?

      第一步使用substr函數(shù)先將第二個字符到最后一個字符摘出來,由length函數(shù)計算出長度

      SQL> select lower(substr(ename,2,length(ename)-1)) from emp;

      LOWER(SUBSTR(ENAME,2,LENGTH(ENAME)-1

      ------------------------------------

      mith

      llen

      將首字符為大寫其他字符為小寫的條件查詢出來

      將兩者結(jié)合起來就行

      SQL> select upper(substr(ename,1,1))||lower(substr(ename,2,length(ename)-1)) from emp;

      UPPER(SUBSTR(ENAME,1,1))||LOWER(SUBSTR(E

      ----------------------------------------

      Smith

      Allen

      Ward            ||:Oracle使用雙豎線表示字符串連接函數(shù)

      replace(char1,search_string,replace_string)

      顯示所有員工的姓名,用“B”替換“A”?

      SQL> select replace(ename,'A','B') from emp前者為舊字符,后者為新字符(也就是替換后的字符)

      REPLACE(EN

      ----------

      SMITH

      BLLEN

      2、數(shù)學(xué)函數(shù)

      數(shù)學(xué)函數(shù)的輸入?yún)?shù)和返回值的數(shù)據(jù)類型都是數(shù)字類型的。數(shù)學(xué)函數(shù)包括cos、cosh、exp、in、

      log、sinh、sqrt、tan、tanh、acos、asin、atan、round

      round(n,[m])

      該函數(shù)用于執(zhí)行四舍五入,如果省掉m則四舍五入到整數(shù),m為正數(shù),則四舍五入到小數(shù)點的m位,m為負(fù)數(shù),則四舍五入到小數(shù)點的m位前

      SQL> select round(sal),sal from student where xm='xiaocai';

      ROUND(SAL)       SAL

      ---------- ---------

            1234   1234.34      四舍五入

      SQL> select round(sal,1),sal from student where xm='xiaocai';

      ROUND(SAL,1)       SAL

      ------------ ---------

            1234.3   1234.34 

      trunc(n,[m])

      該函數(shù)用于截取數(shù)字,如果省掉m,就截取整數(shù)部分,如果m是正數(shù)就截取到小數(shù)點的m位后。如果m是負(fù)數(shù),則截取到小數(shù)點的前m位

      SQL> select trunc(sal),sal from student where xm='xiaocai';

      TRUNC(SAL)       SAL

      ---------- ---------

            1234   1234.34

      SQL> select trunc(sal,1),sal from student where xm='xiaocai';

      TRUNC(SAL,1)       SAL

      ------------ ---------

            1234.3   1234.34

      mod(m,n)

      取模,取得就是余數(shù)

      SQL> select mod(10,2) from dual;        在做oracle測試時,可以使用dual表(虛擬表)

       MOD(10,2)

      ----------

               0

      SQL> select mod(1,3) from dual;         余數(shù)為1

        MOD(1,3)

      ----------

               1

      floor(n)

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

      SQL> select floor(sal),sal from student where xm='xiaocai';

      FLOOR(SAL)       SAL

      ---------- ---------

            1234   1234.34      小于或者等于1234.34的最大整數(shù)為1234,也就是比原值稍小的整數(shù)(或者相等)

      ceil(n)

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

      SQL> select ceil(sal),sal from student where xm='xiaocai';

       CEIL(SAL)       SAL

      ---------- ---------

            1235   1234.34          比原值稍大的整數(shù)(或者相等)

      3、日期函數(shù)

      日期函數(shù)用于處理date類型的數(shù)據(jù)

      默認(rèn)情況下日期格式是dd-7月-yy

      a、sysdate:該函數(shù)返回當(dāng)前系統(tǒng)時間

      SQL> select sysdate from dual;

      SYSDATE

      ---------

      26-SEP-16

      b、add_months(d,n):往d上加n個月時間

      查詢出入職時間到現(xiàn)在已經(jīng)過了8個月的員工?

      SQL> select * from emp where sysdate>add_months(hiredate,8);        入職時間是hiredate,往此基礎(chǔ)上增加8個月,此時的系統(tǒng)時間比這個大就是表面已經(jīng)入職8個月了

      EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO

      ----- ---------- --------- ----- ----------- --------- --------- ------

       7369 SMITH      CLERK      7902 1980/12/17     800.00               20

       7499 ALLEN      SALESMAN   7698 1981/2/20     1600.00    300.00     30

       7521 WARD       SALESMAN   7698 1981/2/22     1250.00    500.00     30

       7566 JONES      MANAGER    7839 1981/4/2      2975.00               20

       7654 MARTIN     SALESMAN   7698 1981/9/28     1250.00   1400.00     30

      顯示出員工入職時間到現(xiàn)在有多少天?

      SQL> select sysdate-hiredate workday,ename from emp;

         WORKDAY ENAME

      ---------- ----------

      13057.8384 SMITH

      12992.8384 ALLEN

      SQL> select trunc(sysdate-hiredate) workday,ename from emp;

         WORKDAY ENAME

      ---------- ----------

           13057 SMITH

           12992 ALLEN

      c、last_day(d):返回指定日期所在月份的最后一天

      找出個月倒數(shù)第三天受雇傭的所有員工和時間?

      SQL> select hiredate,last_day(hiredate) from emp;

      HIREDATE    LAST_DAY(HIREDATE)

      ----------- ------------------

      1980/12/17  1980/12/31     入職時間是1980/12/17,當(dāng)年的那一月的最后一天是1980/12/31

      1981/2/20   1981/2/28

      SQL> select hiredate,ename from emp where hiredate=last_day(hiredate)-2;

      HIREDATE  ENAME

      --------- ----------

      28-SEP-81 MARTIN

      4、轉(zhuǎn)換函數(shù)

      轉(zhuǎn)換函數(shù)用于將數(shù)據(jù)類型從一種轉(zhuǎn)為另外一種,在某些情況下,oracle server允許值的數(shù)據(jù)和實際的不一樣,這時

      oracle server會隱含的轉(zhuǎn)化為數(shù)據(jù)類型

      create table t1(id int);

      insert into t1 values ('10'):這樣oracle會自動的將'10'轉(zhuǎn)化為10

      create table t2(id vachar2(10));

      inset into t2 values (1);這樣oracle就會自動將1轉(zhuǎn)化為'1'

      盡管oracle可以進行隱含的數(shù)據(jù)類型轉(zhuǎn)化,但是它并不適應(yīng)所有的情況。為了提高程序的可靠性

      應(yīng)該使用轉(zhuǎn)換函數(shù)進行轉(zhuǎn)換.

      函數(shù)to_char

      使用函數(shù)to_char來替換,將表的某一個字段的進行替換

      SQL> select to_char(hiredate,'yyyy-mm-dd') from emp;

      TO_CHAR(HI

      ----------

      1980-12-17

      SQL> select to_char(sysdate,'day') from dual;     以day字符串的格式替換一下查詢結(jié)果

      TO_CHAR(SYSDATE,'DAY')

      ------------------------------------

      thursday

      日期可以顯示時/分/秒

      yy:兩位數(shù)字的年份

      yyyy:四位數(shù)的年份

      mm:2位數(shù)的月數(shù)

      dd:2位數(shù)的天數(shù)

      hh34:24小時的小時數(shù),比如晚上八點就是:20點

      hh22:8點就是08點

      mi、ss顯示分鐘、秒

      示例:

      SQL> select ename,to_char(hiredate,'yyyy-mm-dd hh34:mi:ss') from emp;

      ENAME      TO_CHAR(HIREDATE,'YYYY-MM-DDHH

      ---------- ------------------------------

      SMITH      1980-12-17 00:00:00

      ALLEN      1981-02-20 00:00:00

      WARD       1981-02-22 00:00:00

      JONES      1981-04-02 00:00:00

      MARTIN     1981-09-28 00:00:00

      SQL> select to_char(sysdate,'yyyy-mm-dd hh34:mi:ss') from emp;

      TO_CHAR(SYSDATE,'YY

      -------------------

      2016-09-26 10:39:51

      2016-09-26 10:39:51

      薪水yoga貨幣單位顯示:

      9:顯示數(shù)字,并忽略前面0,表示薪水這個字段的類型一共有多少有效數(shù)和支持的小數(shù)位數(shù)

      2:顯示數(shù)字,如位數(shù)不足,用0補充

      .:在指定位置顯示小數(shù)點

      ,:在指定位置顯示逗號

      $:在數(shù)字前加美元

      L:在數(shù)字前加本地貨幣(oracle安裝時會判斷該用戶使用的字符集來判斷是哪個國家)

      C:在數(shù)字前加國際貨幣單位符號

      G:在指定位置顯示組分符號

      D:在指定位置顯示小數(shù)點符號

      SQL> select ename,to_char(sal,'L99999.99') from emp;

      ENAME      TO_CHAR(SAL,'L99999.99')

      ---------- ------------------------

      SMITH                ¥800.00

      ALLEN               ¥1600.00

      WARD                ¥1250.00

      JONES               ¥2975.00

      MARTIN              ¥1250.00

      SQL> desc emp;

      Name     Type         Nullable Default Comments 

      -------- ------------ -------- ------- -------- 

      EMPNO    NUMBER(4)                              

      ENAME    VARCHAR2(10) Y                         

      JOB      VARCHAR2(9)  Y                         

      MGR      NUMBER(4)    Y                         

      HIREDATE DATE         Y                         

      SAL      NUMBER(7,2)  Y         由于這個表emp的字段sal是number(7,2),所以上面用的是一共七位有效數(shù),兩位小數(shù)                      

      COMM     NUMBER(7,2)  Y                         

      DEPTNO   NUMBER(2)    Y     

      to_char()用來取出hiredate字段的年份

      SQL> select ename,to_char(hiredate,'year') from emp;

      ENAME      TO_CHAR(HIREDATE,'YEAR')

      ---------- ------------------------------------------

      SMITH      nineteen eighty

      ALLEN      nineteen eighty-one

      WARD       nineteen eighty-one

      SQL> select ename,to_char(hiredate,'yyyy') from emp;

      ENAME      TO_CHAR(HIREDATE,'YYYY')

      ---------- ------------------------

      SMITH      1980

      ALLEN      1981

      WARD       1981

      SQL> select to_char(sysdate,'day') from dual;

      TO_CHAR(SYSDATE,'DAY')

      ----------------------

      星期五

      SQL> select to_char(sysdate,'dd') from dual;

      TO_CHAR(SYSDATE,'DD')

      ---------------------

      23         只顯示的就是這一天的日子

      查詢?nèi)肼殨r間是1980年的員工?

      SQL> select * from emp where to_char(hiredate,'yyyy')=1980;

      EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO

      ----- ---------- --------- ----- ----------- --------- --------- ------

       7369 SMITH      CLERK      7902 1980/12/17     800.00               20

      查詢?nèi)肼氃路菔?2月的員工?

      SQL> select * from emp where to_char(hiredate,'mm')=12;

      EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO

      ----- ---------- --------- ----- ----------- --------- --------- ------

       7369 SMITH      CLERK      7902 1980/12/17     800.00               20

       7900 JAMES      CLERK      7698 1981/12/3      950.00               30

       7902 FORD       ANALYST    7566 1981/12/3     3000.00               20

      函數(shù)sys_context:系統(tǒng)函數(shù),下面是該函數(shù)的一些替換值

      1、terminal:當(dāng)前會話客戶所對應(yīng)的中斷的標(biāo)識符

      2、language:語言

      3、db_name:當(dāng)前數(shù)據(jù)庫名稱

      4、nls_date_format:當(dāng)前會話客戶所對應(yīng)的日期格式

      5、session_user:當(dāng)前會話客戶所對應(yīng)的數(shù)據(jù)庫用戶名

      6、current_schema:當(dāng)前會話客戶所對應(yīng)的方案名

      7、host:返回數(shù)據(jù)庫所在主機的名稱

      通過該函數(shù),可以查詢到一些重要信息,比如你使用的是哪個數(shù)據(jù)庫?

      SQL> select sys_context('userenv','db_name') from dual;

      SYS_CONTEXT('USERENV','DB_NAME')

      --------------------------------------------------------------------------------

      orcl11g

      查看當(dāng)前數(shù)據(jù)庫支持的語言

      SQL> select sys_context('userenv','language') from dual;

      SYS_CONTEXT('USERENV','LANGUAG

      --------------------------------------------------------------------------------

      SIMPLIFIED CHINESE_CHINA.AL32UTF8

      查看nls_date_format

      SQL> select sys_context('userenv','nls_date_format') from dual;

      SYS_CONTEXT('USERENV','NLS_DAT

      --------------------------------------------------------------------------------

      DD-MON-RR

      SQL> select sys_context('userenv','terminal') from dual;                                       

      SYS_CONTEXT('USERENV','TERMINAL')

      --------------------------------------------------------------------------------

      pts/0

      查看session_user,相當(dāng)于show user;查看當(dāng)前用戶

      SQL> select sys_context('userenv','session_user') from dual;

      SYS_CONTEXT('USERENV','SESSION

      --------------------------------------------------------------------------------

      SCOTT

      查看current_schema:當(dāng)前會話客戶所對應(yīng)的方案名    一個用戶對應(yīng)一個方案,一個方案有很多數(shù)據(jù)對象

      SQL> select sys_context('userenv','current_schema') from dual;

      SYS_CONTEXT('USERENV','CURRENT

      --------------------------------------------------------------------------------

      SCOTT

      SQL> select sys_context('userenv','current_schema') from dual;

      SYS_CONTEXT('USERENV','CURRENT_SCHEMA')

      --------------------------------------------------------------------------------

      SCOTT

      查看當(dāng)前數(shù)據(jù)庫的host主機

      SQL> select sys_context('userenv','host') from dual;

      SYS_CONTEXT('USERENV','HOST')

      --------------------------------------------------------------------------------

      aliyun_test

      schema:

      oracle以方案的名稱來管理數(shù)據(jù)對象

      當(dāng)數(shù)據(jù)庫創(chuàng)建了一個用戶時,oracle就會給用戶分配一個schema方案

      方案里面存放著什么呢?

      很多的數(shù)據(jù)對象

      表、視圖、觸發(fā)器、存儲過程等等(以方案的方式管理數(shù)據(jù)對象)

      http://blog.csdn.net/kimsoft/article/details/4627520

      A schema is a collection of database objects (used by a user.). 

      Schema objects are the logical structures that directly refer to the database’s data.

      A user is a name defined in the database that can connect to and access objects.

      Schemas and users help database administrators manage database security.

      從定義中我們可以看出schema為數(shù)據(jù)庫對象的集合,為了區(qū)分各個集合,我們需要給這個集合起個名字

      這些名字就是我們在企業(yè)管理器的方案下看到的許多類似用戶名的節(jié)點,這些類似用戶名的節(jié)點其實就是一個schema

      schema里面包含了各種對象如tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links。

      一個用戶一般對應(yīng)一個schema,該用戶的schema名等于用戶名,并作為該用戶缺省schema。

      這也就是我們在企業(yè)管理器的方案下看到schema名都為數(shù)據(jù)庫用戶名的原因。Oracle數(shù)據(jù)庫中不能新創(chuàng)建一個schema

      要想創(chuàng)建一個schema,只能通過創(chuàng)建一個用戶的方法解決(Oracle中雖然有create schema語句,但是它并不是用來創(chuàng)建一個schema的)

      在創(chuàng)建一個用戶的同時為這個用戶創(chuàng)建一個與用戶名同名的schem并作為該用戶的缺省shcema。即schema的個數(shù)同user的個數(shù)相同

      而且schema名字同user名字一一 對應(yīng)并且相同,所有我們可以稱schema為user的別名,雖然這樣說并不準(zhǔn)確,但是更容易理解一些。

      一個用戶有一個缺省的schema,其schema名就等于用戶名,當(dāng)然一個用戶還可以使用其他的schema。

      如果我們訪問一個表時,沒有指明該表屬于哪一個schema中的,系統(tǒng)就會自動給我們在表上加上缺省的sheman名。

      比如我們在訪問數(shù)據(jù)庫時,訪問scott用戶下的emp表,通過select * from emp; 其實,這sql語句的完整寫法為select * from scott.emp。

      在數(shù)據(jù)庫中一個對象的完整名稱為schema.object,而不屬user.object。類似如果我們在創(chuàng)建對象時不指定該對象的schema

      在該對象的schema為用戶的缺省schema。這就像一個用戶有一個缺省的表空間,但是該用戶還可以使用其他的表空間

      如果我們在創(chuàng)建對象時不指定表空間,則對象存儲在缺省表空間中,要想讓對象存儲在其他表空間中,我們需要在創(chuàng)建對象時指定該對象的表空間。

      補充:

      SQL> select trunc(sysdate+7)+(1/24) from dual;    對于當(dāng)前日期和時間,在日期上加7天,時間中的小時加1,其它分、秒都不變,1/24:一天除以24小時,等于1小時

      SQL> select trunc((sysdate+7)+(1/24)) from dual;  上述sql和這類似,結(jié)果都一樣

      SQL> select trunc((sysdate+7)+(1/24)) from dual;

      TRUNC((SY

      ---------

      03-OCT-16

      =>:

      創(chuàng)建函數(shù)中參數(shù)的賦值:=>(=>這個符號的含義)

      oracle實參與形參有二種對應(yīng)方式

      1.一種是位置方式,和面向?qū)ο笳Z言參數(shù)傳遞類似;

      2.另外一種是=> 作為形參對應(yīng),因為位置對應(yīng)方法有缺限,比如一個函數(shù)有四個參數(shù),但第三個是可以不傳(有默認(rèn)值)

      這里就沒辦法位置對應(yīng)方法,oralce內(nèi)部一般用此種方法作參數(shù)傳遞(一般是, 某些參數(shù)有默認(rèn)值的時候,你需要跳過某些參數(shù)來進行調(diào)用)

      在Oracle中各符號含義

      %(百分號): 用來表示任意數(shù)量的字符,或者可能根本沒有字符。

      _(下劃線): 表示確切的未知字符。

      ?(問號): 用來表示確切的未知字符。

      #(井號): 用來表示確切的阿拉伯?dāng)?shù)字,0到9.

      [a-d](方括號):用來表示字符范圍,在這里是從a到d.

      單引號('):在Oracle中,應(yīng)該只使用單引號將文本和字符和日期括起來,不能使用引號(包括單雙引號)將數(shù)字括起來。

      雙引號("):在Oracle中,單雙引號含義不同。雙引號被用來將包含特定字符或者空格的列別名括起來。雙引號還被用來將文本放入日期格式。

      撇號('):在Oracle中,撇號也可以寫成彼此相鄰的兩個單引號。為了在供應(yīng)商名字中間查找所有帶撇號的供應(yīng)商名字,可以這樣編寫代碼:select * from l_suppliers where supplier_name like '%''%'

      &符號:在Oracle中,&符號常用來指出一個變量。例如,&fox是一個變量,稍微有點不同的一種&& fox.每當(dāng)&fox出現(xiàn)在Oracle腳本中時,都會要求您為它提供一個值。而使用&&fox,您只需要在& &fox第一次出現(xiàn)時為它提供變量值。如果想將&符號作為普通的符號使用,則應(yīng)該關(guān)閉這個特性。要想關(guān)閉這個特性,可以運行以下的命令: set define off ,這是一個SQLplus命令,不是一個SQL命令。SQLplus設(shè)置了SQL在Oracle中運行的環(huán)境。

      雙豎線(||):Oracle使用雙豎線表示字符串連接函數(shù)。

      星號(*):select *意味著選擇所有的列,count(*)意味著計算所有的行,表示通配符時,表示0個或任意多個字符。

      正斜杠(/):在Oracle中,用來終止SQL語句。更準(zhǔn)確的說,是表示了“運行現(xiàn)在位于緩沖區(qū)的SQL代碼”。正斜杠也用作分隔項。

      多行注釋:/*……*/.

      不等于:有多種表達方式:!=、^=、<>、not xxx=yyy、not(xxx=yyy)

      insert插入數(shù)據(jù)  

      當(dāng)使用values子句時,一次插入的數(shù)據(jù)有限,當(dāng)使用子查詢插入數(shù)據(jù)時,一條insert語句可以插入大量的數(shù)據(jù)

      當(dāng)處理行遷移或者裝載外部表的數(shù)據(jù)到數(shù)據(jù)庫時,可以使用子查詢來插入數(shù)據(jù)

      1、先創(chuàng)建一個單表

      SQL> create table mytable(myid number(4),myname varchar2(20),mydept number(3));

      Table created

      SQL> desc mytable;

      Name   Type         Nullable Default Comments 

      ------ ------------ -------- ------- -------- 

      MYID   NUMBER(4)    Y                         

      MYNAME VARCHAR2(20) Y                         

      MYDEPT NUMBER(3)    Y

      2、利用子查詢將查詢到的某一行數(shù)據(jù)插入到新表中

      SQL> insert into mytable select empno,ename,deptno from emp where deptno=20;

      5 rows inserted

      3、查看插入的數(shù)據(jù)

      SQL> select * from mytable;

       MYID MYNAME               MYDEPT

      ----- -------------------- ------

       7369 SMITH                    20

       7566 JONES                    20

       7788 SCOTT                    20

       7876 ADAMS                    20

       7902 FORD                     20

      利用子查詢遷移行,遷移庫數(shù)據(jù),效率提升

      用update結(jié)合子查詢更新

      希望scott員工的崗位、工資、補助和smith員工一樣多?

      SQL> update emp set (job,sal,comm)=(select job,sal,comm from emp where ename='SMITH') where ename='SCOTT';

      1 row updated

      SQL> select job,sal,comm from emp where ename='SMITH';

      JOB             SAL      COMM

      --------- --------- ---------

      CLERK        800.00 

      SQL> select job,sal,comm from emp where ename='SCOTT';

      JOB             SAL      COMM

      --------- --------- ---------

      CLERK        800.00 

      Oracle事務(wù)處理

      事務(wù)用于保證數(shù)據(jù)的一致性,它由一組相關(guān)的dml(增刪改)語句組成,該組的dml語句要么全部成功,要么全部失敗

      如:網(wǎng)上轉(zhuǎn)賬就是典型的要用事務(wù)來處理,用來保證數(shù)據(jù)的一致性

      事務(wù)和鎖

      當(dāng)執(zhí)行事務(wù)操作時,也就是dml語句操作時,oracle會在被作用的表上加鎖,防止其他用戶在此表上

      修改此表的表的結(jié)構(gòu),這里對用戶來說就是非常重要的

      提交事務(wù)

      當(dāng)執(zhí)行使用commit語句可以提交事務(wù),當(dāng)執(zhí)行了commit語句之后,會確認(rèn)事務(wù)的變化,結(jié)束事務(wù),刪除保存點,釋放鎖

      當(dāng)使用commit語句結(jié)束事務(wù)之后,其他會話將可以查看到事務(wù)變化后的數(shù)據(jù),當(dāng)退出plus命令行時,會默認(rèn)提交事務(wù)

      回退事務(wù)

      回退事務(wù)需要用到保存點,能夠?qū)⒄`操作的數(shù)據(jù)進行回滾

      savepoint a;

      rollback to a;

      a1:8點

      a2:12:00 

      a3:17:00

      可以從a3回滾到a2,然后從a2繼續(xù)回滾到a1

      但是使用commit一旦提交,保存點都將失去

      SQL> savepoint a1;   創(chuàng)建保存點

      Savepoint created

      SQL> delete from mytable where myname='SMITH'; 模擬刪除數(shù)據(jù)

      1 row deleted

      SQL> commit;   提交事物

      Commit complete

      SQL> rollback to a1;    進行保存點回滾,但是失敗,說明提交事物后,保存點將失效

      rollback to a1

      ORA-01086: 從未在此會話中創(chuàng)建保存點 'A1' 或者該保存點無效

      只讀事務(wù)

      只讀事務(wù)是指只允許執(zhí)行查詢的操作,而不允許執(zhí)行任何其他dml操作的事務(wù),使用只讀事務(wù)可以確保用戶只能取得

      某時間點的數(shù)據(jù)。假定機票代售點每天18點開始統(tǒng)計今天的銷售狀況,這是可以使用只讀事務(wù),在設(shè)置只讀事務(wù)

      之后,盡管其他會話可能會提交新的事務(wù),但是只讀事務(wù)將不會取得最新數(shù)據(jù)的變化,從而可以保證取得

      特定時間點的數(shù)據(jù)信息


      分享文章:Oracle之函數(shù)學(xué)習(xí)以及事務(wù)
      本文鏈接:http://ef60e0e.cn/article/jhspdo.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        延川县| 北流市| 定南县| 上饶县| 陆川县| 精河县| 晴隆县| 正安县| 桓仁| 章丘市| 宜阳县| 宁波市| 连平县| 乐至县| 项城市| 大洼县| 泗水县| 湄潭县| 漳平市| 柏乡县| 岳西县| 扶绥县| 廊坊市| 连平县| 赣州市| 随州市| 同德县| 铜山县| 额尔古纳市| 绿春县| 安远县| 横山县| 芦山县| 嘉义市| 澄城县| 南溪县| 泗洪县| 兰州市| 柳江县| 阜宁县| 黄浦区|