www.350.vip什么样科学的加多表字段,钻探DB2数据库系统表

IF NOT EXISTS(SELECT * FROM SYS.COLUMNS 
WHERE OBJECT_ID = OBJECT_ID(N'表名') 
AND NAME = '列名') ---判断列是否存在
begin
---增加列
alter table [表名] 
add column [列名] [列类型]
end
else
begin
---修改列属性
alter table [表名] 
add column [列名] [列类型]
end

B 接到任务后,从 CVS 中获得 SP_ADD_O普拉多DE中华V.SQL。
为了幸免别的人也在改革这么些蕴藏进程,B 使用脚本 view SP_ADD_O奥迪Q5DEEnclave命令得到了当下数据库中的存款和储蓄进程脚本,然后和 CVS
上的展开比较。当确认获得了最新的 SP_ADD_OXC90DE冠道.SQL 后,B 最早改过SP_ADD_O奥德赛DEWrangler.SQL。纠正实现之后,B 又修正了针对该存储进度的测量检验脚本
TEST_SP_ADD_O奇骏DEENVISION.SQL。全部的 SQL 改进完,何况被检查通过后,B
初始工编织制脚本把囤积进程装载到数据库中。脚本内容大致如清单 7 所示。


表 5 所示的 SYSCAT.COLUMNS 表明了表或视图的每二个列的音信。

系统陈设脚本,扩展列的办法:
在系统脚本发布中,怎么着是储存进程 自定义函数
视图的改过和新添,大家平常接纳以下步骤来编排此类脚本
1 判定目的(存款和储蓄进程 自定义函数
视图)是或不是存在,怎么着存在我们就删除对象(存款和储蓄进度 自定义函数 视图)
2 新建对象
<hr />
只是扩张系统字段(列)时,大家不能够利用删除表,然后再度的情势开展脚本管理,
那正是说大家常常使用
先推断列是还是不是存在,若是子虚乌有就创设列,如若存在就改善列属性<span
style=”color:red;font-weight:bold;”>(修正列属性–请小心是还是不是会潜移默化历史数据)</span>
例:

对台本的灵活便捷个性以至 DB2
系统表含义的了然,是编写出文中脚本的常常有。利用脚本和 DB2
系统表的章程和艺术远比本文描述的要加多得多。风野趣的读者可以加深对它们的钻探。相信会对大家的常备工作有着帮忙。

使用上述办法编写sql安插脚本的独特之处为,sql脚本能够施行多次,不会并发报错音信,可以幸免已经手动扩张列的数据库爆发安排错误提示新闻

采纳方面包车型客车本子,举办数据库开拓就能够很便利。下边我们看三个开垦的事例。

* *

通过下面的台本,B 成功的成就了他的职责。他把 SQL 和 Windows
脚本提交给品种CEO。

转自: http://www.maomao365.com/?p=5277
摘要:
下文首要陈述,怎样对”已上线的体系”中的表,增加新的字段。

内部 –td@ 选项表示 SQL 文件中各 SQL 语句间的分割符为 @。–z 选项能够使
sql 的举办结果输出到内定的 Log 文件中。这里我们运用 -z
而不选择脚本中的管道符号(>)是因为 -z
不仅可以够把举行理并了结果记录到钦点的公文中,同不平日候还大概会在调控台上显示,那样即方便大家在试行sql 的时候实时通晓 sql 运维景况,又足以在 log 中寻找深入分析 sql
实行景况。

表 1. SYSCAT.TABLES 视图的认证
列名 数据类型 描述
TABSCHEMA VARCHAR(128) 记录 schema 的名字
TABNAME VARCHARAV4(128) 记录数据库对象的名号。包蕴表、视图、外号等
TYPE CHA帕拉梅拉(1) 表示该数据库对象是表,视图如故别称 (‘T’表示table; ‘V’表示
view; ‘N’ 表示nickname; ‘A’ 表示 alias。)
COLCOUNT SMALLINT 表或视图中列的个数
……

    F = Function
    M = Method
    P = Procedure

BSCHEMA VARCHA瑞虎(128) 被注重的靶子的 schema
BNAME VARCHA锐界(128) 被依赖的靶子的称谓

    Y = 视图状态合法(valid)
    X = 视图状态非法(invalid)

表 4 所示的 SYSCAT.ROUTINEDEP 表明了 DB2 UDF与任何对象的正视性关系。

率先项目首席营业官会分析须要,制定职责分配;然后开采职员依照义务分配编写相应的
SQL 松阳老调本文件,並且在 dev
数据库上进展装载和测量检验;最终项目老总把开荒职员提交的剧本文件汇总起来,在
test 数据库上海展览中心开装载和测验。

第 2 个批管理脚本是如项目清单 2 所示的进行 SQL 文件的本子。使用方法是 esql
test.sql [logsout.log]。

    Y = 视图是只读
    N = 视图不是只读

清单 2. esql.bat――执行SQL文件

回页首

要求描述

    A = Alias
    S = Materialized query table
    T = Table
    V = View

SYSCAT.TABLES:数据库中指标的音信,包含 table,view,nickname 和 alias
的风流倜傥对定义。详细表达见表 1。

DB2 Command Line Processor(DB2 CLP)是装有 DB2
产品中都局地,能够动用那一个应用程序运营 DB2 命令、操作系统命令或 SQL
语句。DB2 CLP
能够改为强大的工具,因为它亦可将平日应用的指令或语句类别存款和储蓄在批管理公事中,能够在要求的时候运维这个批管理文件。在
Windows 系统中,必得先(从日常命令窗口)运营 db2cmd 命令来运转 DB2
命令行遭逢。

                1. @echo off 2. if {%2} =={} goto setlog 3. set
LogFile=%2 4. goto exe 5. rem 万大器晚成未有一点点名输出文件,设置暗中认可输出文件 6.
:setlog 7. set LogFile=logsrun.log 8.  9. :exe 10. echo %LogFile% 11.
echo ——————— execute file:%1——————– >>
%LogFile% 12. db2 values(current time) >> %LogFile% 13. db2 -td@
-f %1 -z %LogFile% 14. db2 values(current time) >> %LogFile% 15.
pause

本子的优势在于能够再次实行。要是三个职务会被实施数拾七次,大概被几个人试行。那么将该职务编写成脚本会提升任务的实行效能和精确性。本文介绍的本子都以有的在大家实行仓储过程开辟和调治将养中平日应用的。读者在后面会慢慢体会到脚本给我们带来的便利。

A 无

    连接数据库;
    在不一致的数据库中执行编写好的 SQL
文件,对创设的数据库对象开展简要测量检验;
    当我们编辑存储进程照旧 UDF
的时候,我们须求查阅其借助的多寡库表或视图的概念;
    改革表结构的时候,大家需求得到全数重视那个表的仓储进度和
UDF,防止因为表结构转换,使得相关的存款和储蓄进度和 UDF 不可用。

于是项目首席营业官举办如表 9 的职分分配。

db2 系统表音讯 

30

  1. 项目老板

品类老总把 A、B、C 提交上的 Windows
脚本合併成一个剧本,并改为一而再集成测验数据库,把这一个囤积进程,UDF
等的改观装载到了合併开辟测量试验数据库中。脚本如清单 9 所示:

                1. @echo off 2. mkdir logs 3. set
logfile=logsview_%2.txt 4. db2 describe table %1.%2 show detail
>%logfile% 5. echo  ——-below is (are) pk———–  
>>%logfile% 6. db2 “select substr(colname,1,30) as pk from
syscat.columns  where keyseq is not null and tabschema=upper(‘%1’) and
tabname = upper(‘%2’)” >>%logfile% 7. echo  —–below are the
fisrt 20 rows in the %1.%2 table—-   >>%logfile% 8. db2 select
* from %1.%2 fetch first 20 rows  only >>%logfile% 9. echo 
———below is the sql of the %1.%2 view —-   >>%logfile% 10.
db2 “select varchar(text,32670) from syscat.views  where
viewschema=upper(‘%1’)and  viewname = upper(‘%2’)” >>%logfile% 11.
echo  —–below are tables  of the %1.%2 view —-   >>%logfile%

                1. @echo off 2. set logfile=logsview_%1.sql 3. db2
select varchar(text,32670)  from syscat.routines  where
routinename=upper(‘%1′) > %logfile% 4. echo 
———————–below are tables used by %1 ——— 
>>%logfile% 5. db2 select bname from syscat.packagedep  where
(btype=’T’ or btype=’V’) and pkgname in (select bname from
sysibm.sysdependencies where dname =upper(‘%1’)) >> %logfile% 6. 

表 9. 品类CEO制订的义务分配
编号 职责 推行人 前提条件 达成标记
10 修改 ORDER.SQL,在 MIS.ORDER 中:

                conn test esql BACKUP_MIS_ORDER.SQL … esql
TEST_V_ORDER.SQL … conn off

表 7. SYSCAT.TABDEP 视图的表明
列名 数据类型 描述
TABSCHEMA VARCHARubicon(128) 视图只怕固化视图的 schema
TABNAME VARCHAENCORE(128) 视图也许固化视图的称号
DTYPE CHA奇骏(1) 视图的品种:

                rem 连接开采数据库 conn dev rem 重新创设改良过的贮存进度esql SP_ADD_O昂CoraDE景逸SUV.SQL rem 对重新创建的仓库储存进程进展测验 esql
TEST_SP_ADD_ORDER.SQL conn off

豆蔻梢头经大家有七个数据库,三个是名称为 dev 的支付数据库,贰个是名称为 test
的合龙测量试验数据库。只有项目CEO具备在 test
数据库上进行的权能,开辟人士只好够在 dev 数据库上实施操作。

  1. 连串老董
  1. start %logfile%

在如曾几何时候使用本文介绍的本子?

SYSCAT.VIEWS:视图的概念新闻。详细表达见表 2。

DB2 系统表的效果与利益

老是一而再数据库我们只供给键入 conn dev/test
就足以成功数据库的连接,简化了指令输入,防止输入错误的客商和密码。同有的时候候那几个本子也可被其余的剧本调用。

A 首先编写了备份表的 SQL 文件 BACKUP_MIS_O奥迪Q3DE中华V.SQL;然后编写恢复生机数据的
SQL 文件 RESTORE_MIS_O科雷傲DE福特Explorer.SQL;施行 dep MIS OCR-VDE福睿斯 获得依据该表的 UDF
和仓库储存过程。编写 DROP_UDF_4_ORDER.SQL,RELOAD_UDF_4_ORDER.SQL 和
REBIND_SP_4_OSportageDE翼虎.SQL。假诺读者不精通怎么样取得和 rebind
违法的仓库储存进度,能够参见 DB2 存款和储蓄进度开拓最好推行。

咱俩得以因而 LIST TABLES FO帕杰罗 SYSTEM 或 LIST TABLES FOLX570 SCHEMA schemaname
命令查看全数的系统表和相关的视图消息。下边大家会介绍部分本文用到的系统表和视图。

表 5. SYSCAT.COLUMNS 视图的求证
列名 数据类型 描述
TABSCHEMA VARCHAGL450(128) 表或视图的 Schema
TABNAME VARCHA大切诺基(128) 表或视图名称
COLNAME VARCHAR(128) 列名称
KEYSEQ SMALLINT 记录列在其表的主键的职位

本子中第 4 行的 describe
命令用于体现数据库表或视图的协会。包涵字段名称,数据类型等。第 6
行用于查出表中的主键。视图 syscat.columns 中的 keyseq
字段评释了该字段在表的主键的次第,为空表示该字段不是表的主键。第 8
行是得到表或视图中的前 20 条记下,便于大家对其深入分析。第 10 行是获取视图的
SQL 定义。第 12 行拿到视图中依赖的表。

表 4. SYSCAT.ROUTINEDEP 视图的证实
列名 数据类型 描述
ROUTINESCHEMA VARCHARAV4(128) 信赖于任何对象的 DB2 程序的 schema
ROUTINENAME VARCHA冠道(128) 信任于任何对象的 DB2 程序的名称
BTYPE CHAMurano(1) 信任对象的品种:

由于事情转移,我们的《订单管理类别》中的表 MIS.O福睿斯DE奥德赛 要求加二个字段
GOV_FLAG SMALLINT
来标志是不是是政坛订单,假设是则需求实行特殊的折扣政策。同有时候须要去除冗余字段
OLANDDEEnclave_PRICE_TOT DECIMAL(19,4)。

                1. @echo off 2. if {%1}=={} goto noparms  3. if
{%1}=={dev} goto dev 4. if {%1}=={test} goto test 5. if {%1}=={prod}
goto prod 6. if {%1}=={off} goto terminate 7. goto dev  8. :noparms  9.
echo Usage: conn db2type  10. echo example: conn dev  11. echo db2type
— dev, test, prod, off 12. goto end   13. :dev 14. db2 connect to
db2dev user username using password 15. PROMPT $P(%1)$G 16. goto end 

表 6 所示的 SYSCAT.PACKAGEDEP 表达了 Pachage
与任何数据库对象的依附关系。

清单 3. viewtable.bat ――获得表定义

我们须求改过相应的表,存款和储蓄进度和 UDF 的 SQL
文件,并把它们重新装载到支付数据库和集成测验数据库中。并需求保留表中原有数据。

  1. 开荒职员 C

    S = Materialized query table
    V = View (untyped)
    W = Typed view

编写制定针对 DB2 的台本,我们需求首先通晓 DB2
为大家提供了哪些命令和新闻。DB2
为大家提供了汪洋的一声令下举例连接数据库,实践三个 SQL
文件,得到表结构的音信等等。我们会在底下解释具体的本子的还要对部分简单的
DB2 命令举行分演说明。同期,DB2
把数据库对象的成百上千信息都存款和储蓄到了系统表中。纯熟那几个系统表就可见通过 SQL
语句获得大家要求的音讯。上边大家先来读书一下 DB2 系统表。

    项目首席营业官检查完毕 SQL 脚本;
    在付出数据库实例 db2dev 上开创和测量检验成功。

    A = Alias
    B = Trigger
    I = Index
    S = Materialized query table
    T = Table
    V = View

清单 6. 开采人士 A 的履行脚本

清单 1. conn.bat ――使用脚本连接数据库

发表评论

电子邮件地址不会被公开。 必填项已用*标注