• 让你提前认识软件开发(36):怎样扩展数据表字段?


    第2部分 数据库SQL语言

    怎样扩展数据表字段?

     

    【文章摘要】

            在通信类软件中,常常会与数据库打交道。由于需求变化,或者是程序优化升级等原因,对数据表字段进行扩展是常有的事情。

    这就要求开发者必须熟练掌握对数据表字段进行扩展的操作流程。

            本文基于作者的数据库方面的工作经验,以实际的SQL程序为例,具体介绍了怎样对对数据表字段进行扩展,为相关的开发工作提供了參考。

    【关键词】

            数据库  数据表  扩展  SQL  开发

     

    一、前言

            在实际的软件开发项目中,对数据表字段的扩展包括例如以下两个方面:

            第一,对原有字段值的扩展。比如,原表有一个字段“result”,表示结果,之前的取值为01,如今要扩展其取值范围。加入一个结果值2。对于此类扩展,数据表的结构不用动,仅仅须要让相关模块知道有这个值的扩展就可以。

            第二,新添加字段。即原来表已有的字段不能满足当前的要求。须要新增一个或几个字段,这就涉及到数据表结构的改变。

            本文主要讨论另外一种情况下数据表字段扩展的流程和操作方法。本文中的全部脚本都是基于Sybase数据库。

     

    二、数据表字段扩展的流程

            对于新增字段的情况。不能通过简单的删除表和重建表来完毕。由于在实际的软件执行环境中。差点儿每一个数据表里面都会有非常多的数据。假设无论三七二十一,将表删除了。会导致某些关键数据的丢失,造成极为不良的影响,甚至会引起客户的投诉。

            在实际的软件开发项目中,对数据表字段的扩展流程如图1所看到的。

    1 对数据表字段的扩展流程

     

    三、数据表字段扩展操作演示样例

            有一个员工信息表,包括了工号、姓名和年龄三个字段,例如以下所看到的:

    create table tb_employeeinfo

    (

        workid    int                default(0)  not null,  -- workid

        name     varchar(50)  default('')   not null,  -- name

        age        int                 default(0)  not null    -- age

    )

    go

     

    create unique index idx1_tb_employeeinfo on tb_employeeinfo(workid)

    go

     

    print 'create table tb_employeeinfo ok'

    go

     

            如今须要在原表的基础之上扩展一个地址(address)字段,用于记录员工的居住地址,该字段能够为空。

            整个字段扩展的执行SQL脚本例如以下:

    -- 第一步: 创建备份表

    if exists(select * from sysobjects where name='tb_employeeinfobak')

        drop table tb_employeeinfobak

    go

    create table tb_employeeinfobak

    (

        workid    int                default(0)   not null,  -- workid

        name      varchar(50)  default('')   not null,  -- name

        age       int                  default(0)  not null   -- age

    )

    go

     

    create unique index idx1_tb_employeeinfobak on tb_employeeinfobak(workid)

    go

     

    print 'create table tb_employeeinfobak ok'

    go

     

    -- 第二步: 将原表内容插入到备份表中

    insert into tb_employeeinfobak(workid, name, age) select workid, name, age from tb_employeeinfo

    go

     

    -- 第三步: 将原表删除掉

    if exists(select * from sysobjects where name='tb_employeeinfo')

        drop table tb_employeeinfo

    go

     

    -- 第四步: 创建新表

    create table tb_employeeinfo

    (

        workid       int                 default(0)  not null,    -- workid

        name        varchar(50)   default('')   not null,    -- name

        age          int                 default(0)  not null,     -- age

        address   varchar(100)                        null     -- address

    )

    go

     

    create unique index idx1_tb_employeeinfo on tb_employeeinfo(workid)

    go

     

    print 'create table tb_employeeinfo ok'

    go

     

    -- 第五步: 将备份表内容插入到新表中

    insert into tb_employeeinfo(workid, name, age) select workid, name, age from tb_employeeinfobak

    go

     

    -- 第六步: 删除备份表

    if exists(select * from sysobjects where name='tb_employeeinfobak')

        drop table tb_employeeinfobak

    go

     

            经过以上六个步骤,即实现了对数据表的字段扩展。而且原来的数据也没有丢失。

     

    四、总结

            本文以实际的SQL脚本为例,具体介绍了对数据表字段进行扩展的整个流程。为相关软件开发活动的开展提供了故意的參考。

     

    (本人微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)

  • 相关阅读:
    html5结构标签
    video标签、audio标签
    a标签、img图片、iframe、表单元素、div
    pre,html转义,abbr缩写,表格table
    html 列表标签
    p,br,hn,b,i,u,s,sup,sub标签
    网站开发准备学习
    交互原型设计工具
    为什么要重写hashCode()方法和equals()方法及如何重写
    Java接口回调
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/6970133.html
Copyright © 2020-2023  润新知