讓你提前認識軟體開發(33):資料操縱語言(DML)

來源:互聯網
上載者:User

標籤:style   http   color   使用   strong   資料   

第2部分 資料庫SQL語言

資料操縱語言(DML)

 

        資料操縱語言(Data Manipulation Language,DML)包括insert、delete和update語句,用於增、刪、改資料。

        本文用以下的表tb_employeeinfo作為例子加以說明:

create table tb_employeeinfo

(

    employeeno         varchar(20)       not null,       -- 員工工號

    employeename    varchar(20)      not null,       -- 員工姓名

    employeeage       int                            null        -- 員工年齡

);

        在實際的軟體開發項目中,DML的使用規則如下:

1. insert語句必須列出欄位名

        許多開發人員為了省事,在需要向一個表中所有欄位都插入資料的時候,就直接列出表名即可,如下所示:

        反例:

insert into tb_employeeinfo vaues(‘10000’,’Jim’, 30)

        這樣,如果tb_employeeinfo表結構發生了修改,以前的SQL語句就不能寫入資料了。正確的做法是不管向表中多少個欄位插入資料,都需要列出欄位名。如下所示:

        正例:

insert into tb_employeeinfo(employeeno, employeename, employeeage) vaues(‘10000’,’Jim’, 30)

        同樣,不要使用“select * from”語句,必須列出欄位名,即使是返回所有欄位的值。

 

2. delete,update語句必須帶where條件

        這樣做是為了防止將整個表的資料修改和清空,導致系統癱瘓。對於全表處理,則使用“where 1=1”。

        正例:

delete from tb_employeeinfo where employeeage=30

update tb_employeeinfo set employeeage=32 where 1=1

 

3. SQL語句塊或預存程序中需要對DML語句的執行結果進行檢查

        這是資料庫的錯誤/異常處理機制,需要對SQL語句執行成功或失敗進行檢查,以便根據執行結果決定後續的操作。

(1) SQLServer/Sybase資料庫的處理

        在SQLServer/Sybase資料庫中,可以通過系統變數“@@error”來檢查,並根據結果進行處理,如果已經開始了事務(資料庫的修改是以事務為單位進行的。一個事務就是一個操作序列,這些操作要麼全做,要麼全不做,它是一個不可分割的工作單位),則需要進行復原。

        正例:

begin tran                   -- 事務開始

    insert into ……

    if @@error <> 0

    begin

        rollback tran         -- 交易回復

        return

    end

 

    update ……

    if @@error <> 0

    begin

       rollback tran        -- 交易回復

       return

   end

 

commit tran                 -- 事務提交

 

 

(2) Oracle資料庫的處理

        在Oracle中,錯誤是通過異常機制進行處理的。如果沒有異常處理部分,它會立即中止當前的SQL語句塊,並自動進行回退。如果需要根據情況進行處理,就應該使用異常處理部分,否則使用Oracle預設的行為中止當前的SQL塊,並自動回退。

        正例1:

begin

    insert into …

    update …

    insert into…

    exception

        when others then

        begin

           ……            -- 錯誤處理

           rollback;

       end;

end;

 

 

       正例2:

begin

    insert into …

    update …

    insert into…        -- 沒有異常處理部分

end;

 

 

        此外,在SQL語句塊和預存程序中使用事務,必須保證事務的開始與結束匹配,即必須保證在SQL語句塊的任何分支和異常情況下“begin tran”都有正確的“commit”或“rollback”與之對應。

 

        在實際的軟體項目中,資料操縱語言(DML)使用的非常的廣泛,正確地使用該語言是對一個軟體開發人員的基本要求。

 

 

(本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,號:245924426,歡迎關注!)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.