• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    軟件測試數據庫中Oracle數據操作和控制語言詳解

    發布: 2010-7-06 08:12 | 作者: 網絡轉載 | 來源: 領測軟件測試網采編 | 查看: 34次 | 進入軟件測試論壇討論

    領測軟件測試網

    軟件測試數據庫Oracle數據操作和控制語言詳解

    SQL語言共分為四大類:數據查詢語言DQL,數據操縱語言DML, 數據定義語言DDL,數據控制語言DCL。其中用于定義數據的結構,比如 創建、修改或者刪除數據庫;DCL用于定義數據庫用戶的權限;在這篇文章中我將詳細講述這兩種語言在Oracle中的使用方法。

      DML語言

      DML是SQL的一個子集,主要用于修改數據,下表列出了ORACLE支持的DML語句。

    語句 用途
    INSERT 向表中添加行
    UPDATE 更新存儲在表中的數據
    DELETE 刪除行
    SELECT FOR UPDATE 禁止其他用戶訪問DML語句正在處理的行。
    LOCK TABLE 禁止其他用戶在表中使用DML語句

      插入數據

      INSERT語句常常用于向表中插入行,行中可以有特殊數據字段,或者可以用子查詢從已存在的數據中建立新行。

      列目錄是可選的,缺省的列的目錄是所有的列名,包括comlumn_id,comlumn_id可以在數據字典視圖ALL_TAB_COLUMNS,USER_TAB_COLUMNS,或者DBA_TAB_COLUMNS中找到。

      插入行的數據的數量和數據類型必須和列的數量和數據類型相匹配。不符合列定義的數據類型將對插入值實行隱式數據轉換。NULL字符串將一個NULL值插入適當的列中。關鍵字NULL常常用于表示將某列定義為NULL值。

      下面的兩個例子是等價的。

    INSERT INTO customers(cust_id,state,post_code)
    VALUE('Ariel',NULL,'94501');

      或

    INSERT INTO customers(cust_id,state,post_code)
    VALUE('Ariel',,'94501');

      更新數據

      UPDATE命令用于修改表中的數據。

    UPDATE order_rollup
    SET(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')

      刪除數據

      DELETE語句用來從表中刪除一行或多行數據,該命令包含兩個語句:

       1、關鍵字DELETE FROM后跟準備從中刪除數據的表名。

       2、WHERE后跟刪除條件

    DELETE FROM po_lines
    WHERE ship_to_state IN ('TX','NY','IL')
    AND order_date

      清空表

      如果你想刪除表中所有數據,清空表,可以考慮使用DDL語言的TRUNCATE語句。TRUNCATE就像沒有WHERE子句的DELETE命令一樣。TRUNCATE將刪除表中所有行。TRUNCATE不是DML語句是DDL語句,他和DELETE右不同的特點。

    TRUNCATE TABLE (schema)table DROP(REUSE) STORAGE

      STORAGE子串是可選的,缺省是DROP STORAGE。當使用DROP STORAGE時將縮短表和表索引,將表收縮到最小范圍,并重新設置NEXT參數。REUSE STORAGE不會縮短表或者調整NEXT參數。

      TRUNCATE和DELETE有以下幾點區別

      1、TRUNCATE在各種表上無論是大的還是小的都非?。如果有ROLLBACK命令DELETE將被撤銷,而TRUNCATE則不會被撤銷。

      2、TRUNCATE是一個DDL語言,向其他所有的DDL語言一樣,他將被隱式提交,不能對TRUNCATE使用ROLLBACK命令。

      3、TRUNCATE將重新設置高水平線和所有的索引。在對整個表和索引進行完全瀏覽時,經過TRUNCATE操作后的表比DELETE操作后的表要快得多。

      4、TRUNCATE不能觸發任何DELETE觸發器。

      5、不能授予任何人清空他人的表的權限。

      6、當表被清空后表和表的索引講重新設置成初始大小,而delete則不能。

      7、不能清空父表。

      SELECT FOR UPDATE

      select for update語句用于鎖定行,阻止其他用戶在該行上修改數據。當該行被鎖定后其他用戶可以用SELECT語句查詢該行的數據,但不能修改或鎖定該行。

      鎖定表

      LOCK語句常常用于鎖定整個表。當表被鎖定后,大多數DML語言不能在該表上使用。LOCK語法如下:

    LOCK schema table IN lock_mode

      其中lock_mode有兩個選項:

       share 共享方式

       exclusive 唯一方式

      例:

    LOCK TABLE intentory IN EXCLUSIVE MODE

      死鎖

      當兩個事務都被鎖定,并且互相都在等待另一個被解鎖,這種情況稱為死鎖。

      當出現死鎖時,ORACLE將檢測死鎖條件,并返回一個異常。
      事務控制

      事務控制包括協調對相同數據的多個同步的訪問。當一個用戶改變了另一個用戶正在使用的數據時,oracle使用事務控制誰可以操作數據。

      事務

      事務表示工作的一個基本單元,是一系列作為一個單元被成功或不成功操作的SQL語句。在SQL和PL/SQL中有很多語句讓程序員控制事務。程序員可以:

       1、顯式開始一個事物,選擇語句級一致性或事務級一致性

       2、設置撤銷回滾點,并回滾到回滾點
     
       3、完成事務永遠改變數據或者放棄修改。
      
      事務控制語句

    語句 用途
    Commit 完成事務,數據修改成功并對其他用戶開放
    Rollback 撤銷事務,撤銷所有操作
    rollback to savepoint 撤銷在設置的回滾點以后的操作
    set transaction 響應事務或語句的一致性;特別對于事務使用回滾段

      例:

    BEGIN
    UPDATE checking
    SET balance=balance-5000
    WHERE account='Kieesha';

    INSERT INTO checking_log(action_date,action,amount)
    VALUES (SYSDATE,'Transfer to brokerage',-5000);

    UPDATE brokerage
    SET cash_balance=cash_balance+5000
    WHERE account='Kiesha';

    INSERT INTO brokerage_log(action_date,action,amount)
    VALUES (SYSDATE,'Tracfer from checking',5000)

    COMMIT

    EXCEPTION
    WHEN OTHERS
    ROLLBACK

    END

      Savepoint 和 部分回滾(Partial Rollback)

      在SQL和PL/SQL中Savepoint是在一事務范圍內的中間標志。經常用于將一個長的事務劃分為小的部分。保留點Savepoint可標志長事務中的任何點,允許可回滾該點之后的操作。在應用程序中經常使用Savepoint;例如一過程包含幾個函數,在每個函數前可建立一個保留點,如果函數失敗,很容易返回到每一個函數開始的情況。在回滾到一個Savepoint之后,該Savepoint之后所獲得的數據封鎖被釋放。為了實現部分回滾可以用帶TO Savepoint子句的ROLLBACK語句將事務回滾到指定的位置。

      例

    BEGIN

    INSERT INTO ATM_LOG(who,when,what,where)
    VALUES ('Kiesha',SYSDATE,'Withdrawal of $100','ATM54')
    SAVEPOINT ATM_LOGGED;

    UPDATE checking
    SET balance=balance-100
    RETURN balance INTO new_balance;

    IF new_balance<0
    THEN
    ROLLBACK TO ATM_LOGGED;
    COMMIT
    RAISE insufficient_funda;
    END IF

    END

      關鍵字SAVEPOINT是可選的,所以下面兩個語句是等價的:

    ROLLBACK TO ATM_LOGGED;
    ROLLBACK TO SAVEPOINT ATM_LOGGED;

      一致性和事務

      一致性是事物控制的關鍵慨念。掌握了oracle 的一致性模型,能使您更好的,更恰當的使用事務控制。oracle通過一致性保證數據只有在事務全部完成后才能被用戶看見和使用。這項技術對多用戶數據庫有巨大的作用。

      oracle常常使用語句級(state-level)一致性,保證數據在語句的生命期之間是可見的但不能被改變。事務由多個語句組成,當使用事務時,事物級(transaction-level)一致性在整個事務生命期中保證數據對所有語句都是可見的。

      oracle通過SCN(syatem change number)實施一致性。一個SCN是一個面向時間的數據庫內部鍵。SCN只會增加不會減少,SCN表示了時間上的一個點,每個數據塊都有一個SCN,通過比較這個點實施操作。

      

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: oracle Oracle ORACLE 軟件測試 數據庫 詳解 語言

    21/212>

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>