zoukankan      html  css  js  c++  java
  • (让你提前知道软件开发33):数据操纵语言(DML)

    文章2部分 数据库SQL语言

    数据操纵语言(DML)

     

            数据操纵语言(Data Manipulation LanguageDML)包含insertdeleteupdate语句,用于增、删、改数据。

            本文用下面的表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. deleteupdate语句必须带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。欢迎关注!

    )

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    Linux找回root密码
    关于Linux的随笔笔记
    需求征集系统进度03
    需求征集系统进度02
    需求征集系统进度01
    第六周总结
    阅读笔记03
    第一周总结
    第五周总结
    阅读笔记02
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4807361.html
Copyright © 2011-2022 走看看