前段时间做了数据表拆分,进行数据迁移,用到一些SQL命令,语句记录下来

db2look是DB2用于生成数据库DDL语句的一个工具:

命令:db2look -d DBname -a -e -p -i userID -w password -o d:\sample.sql

db2look -d:数据名称 -e:抽取复制数据库所需DDL -t:生成指定表统计信息  pjnl

参数比较多这边就没列举,主要用到以上就可以查询到DDL。

DB2 系统表

目录视图 描述 查询实例
SYSCAT.CHECKS 检查约束包含一行记录 select constname, tabname, text from syscat.checks
SYSCAT.COLCHECKS 检查约束所引用的每一列包含一行记录 select constname, tabname, colname, usage from syscat.colchecks
SYSCAT.COLUMNS 指明一列是可为空(Y)还是不可为空(N)

select tabname, colname, nulls from syscat.columns where nulls = 'N'

select sum(length) from syscat.columns where tabname='';查看列大小

SYSCAT.CONSTDEP 为某些其他对象上的约束的每个依赖性包含一行记录 select constname, tabname, btype, bname from syscat.constdep
SYSCAT.INDEXES 为每个索引包含一行记录 select tabname, uniquerule, made_unique, system_required from syscat.indexes 
SYSCAT.KEYCOLUSE 查看表主键 select constname, tabname, colname, colseq from syscat.keycoluse
SYSCAT.REFERENCES 为每个参照约束包含一行记录 select constname, tabname, refkeyname, reftabname, colcount, deleterule, updaterule from syscat.references
SYSCAT.TABCONST 为每个惟一(U)主键(P)外键(F)或表检查(K)约束包含一行记录 select constname, tabname, type from syscat.tabconst
SYSCAT.TABLES 该表的父表数目(该表在其中充当子表的参照约束数目) select tabname, parents from syscat.tables where parents > 0
SYSCAT.TABLES 该表的子表数目(该表在其中充当父表的参照约束数目) select tabname, children from syscat.tables where children > 0
SYSCAT.TABLES 该表的自引用参照约束数目(该表在其中既充当父表又充当子表的参照约束数目) select tabname, selfrefs from syscat.tables where selfrefs > 0
SYSCAT.TABLES 在该表上所定义的惟一约束(除了主键)的数目 select tabname, keyunique from syscat.tables where keyunique > 0
SYSCAT.TABLES 在该表上所定义的检查约束的数目 select tabname, checkcount from syscat.tables where checkcount > 0
 
db2存储过程创建
如果是在DBVisualizer工具创建需要这样
--/
CREATE PROCEDURE PROC_JNL(IN IN_TRANSDATE DATE,IN NUM INTEGER)
LANGUAGE SQL
P1: BEGIN
DECLARE V_MAX_PJNL INTEGER;
DECLARE V_MIN_PJNL INTEGER;
DECLARE V_COUNT INTEGER;
SELECT MAX(JNLNO),MIN(JNLNO) INTO V_MAX_PJNL,V_MIN_PJNL FROM PJNL_HIS WHERE TRANSDATE > IN_TRANSDATE;
SET V_COUNT= V_MIN_PJNL;
P2: BEGIN
WHILE V_MIN_PJNL<=V_MAX_PJNL DO
SET V_COUNT=V_MIN_PJNL+NUM;--每次进来检查是否大于最大值
IF V_MIN_PJNL > V_MAX_PJNL THEN
SET V_COUNT=V_MAX_PJNL+1;
END IF;
INSERT INTO PJNL SELECT * FROM PJNL_HIS WHERE JNLNO >=V_MIN_PJNL and JNLNO < V_COUNT;
commit;
INSERT INTO PJNLDATA SELECT * FROM PJNLDATA_HIS WHERE JNLNO >=V_MIN_PJNL and JNLNO <V_COUNT;
commit;
SET V_MIN_PJNL=V_MIN_PJNL+NUM;
END WHILE;
END P2;
END P1
/

执行方式: CALL  PROC_JNL('2017-10-10',50000);

DB2有五种约束:

  • NOT NULL 约束是这样一种规则,它防止在表的一列或多列中输入空值。

  • 唯一约束(也称为唯一键约束)是这样一种规则,它禁止表的一列或多列中出现重复值。唯一键和主键是受支持的唯一约束。例如,可对供应商表中的供应商标识定义唯一约束以确保不会对两个供应商指定同一供应商标识。

  • 主键约束是与唯一约束具有相同属性的一列或列的组合。可使用主键和外键约束来定义表之间的关系。

  • 外键约束(也称为引用约束引用完整性约束)是关于一个或多个表中的一列或多列中的值的一种逻辑规则。例如,一组表共享关于公司的供应商的信息。供应商的名称有时可能会更改。可定义一个引用约束,声明表中的供应商的标识必须与供应商信息中的供应商标识相匹配。此约束会阻止可能导致丢失供应商信息的插入、更新或删除操作。

  • (表)检查约束(也称为检查约束)对添加至特定表的数据设置限制。例如,表检查约束可确保每当在包含个人信息的表中添加或更新薪水数据时,职员的薪水级别至少为 $20000。

创建 Not null:

db2 "alter table tabname ALTER colname drop not null"
    db2 "alter table t01 ALTER colname set not null"

创建、删除唯一约束:

db2 "alter table tabname add unique(colname)"

db2 "alter table tabname drop unique CONSTNAME "

创建主键约束:

db2 "alter table staff add primary key (id)"

创建外键约束:

db2 alter table project add foreign key (respemp) references employee on delete cascade

表检查约束:

db2 alter table employee add constraint phoneno_length check (length(rtrim(phoneno)) = 4)

DB2 存储过程创建、系统表的更多相关文章

  1. 【转】利用optimize、存储过程和系统表对mysql数据库表进行批量碎片清理释放表空间

    本文收集于本人的笔记本,由于找不到原文出处.在此省略,如哪位知道可以联系我加上. 核心是利用mysql系统表和“optimize table 表名”命令,对mysql数据表进行空间的释放.由于dele ...

  2. DB2中的系统表SYSIBM.SYSDUMMY1

    ORACLE中有一张系统数据库表DUAL用来访问系统的相关信息 SELECT SYSDATE FROM DUAL;  --返回当前系统日期 ------------------------------ ...

  3. 关于mysql存储过程创建动态表名及參数处理

      转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog)  近期游戏開始第二次内測,開始处理操作日志.最開始把日志放到同一个表里面,发现一天时间,平均100玩家 ...

  4. SQlServer 从系统表 sysobjects 中获取数据库中所有表或存储过程等对象

    [sysobjects] 一.概述 系统对象表. 保存当前数据库的对象,如约束.默认值.日志.规则.存储过程等,该表中包含该数据库中的表 存储过程 视图等所有对象 在sqlserver2005,sql ...

  5. SQL Server系统表sysobjects介绍与使用(转))

    这就让sysobjects表格有了用武之地.虽然我不建议你更新这个表格,但是你当然有权对其进行审查. sysobjects 表  在数据库内创建的每个对象(约束.默认值.日志.规则.存储过程等)在表中 ...

  6. sql server系统表详细说明

    sysaltfiles  主数据库 保存数据库的文件 syscharsets  主数据库字符集与排序顺序 sysconfigures 主数据库 配置选项 syscurconfigs 主数据库当前配置选 ...

  7. SQL Server系统表sysobjects介绍与使用

    关于SQL Server数据库的一切信息都保存在它的系统表格里.我怀疑你是否花过比较多的时间来检查系统表格,因为你总是忙于用户表格.但是,你可能需要偶尔做一点不同寻常的事,例如数据库所有的触发器.你可 ...

  8. SQL SERVER系统表

    sysaltfiles 主数据库 保存数据库的文件 syscharsets 主数据库 字符集与排序顺序sysconfigures 主数据库 配置选项syscurconfigs 主数据库 当前配置选项s ...

  9. MS SQL SERVER 中的系统表

    MS SQL SERVER 中的系统表 序号 名称 说明 备注 1 syscolumns 每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行.   2 syscomments 包含每 ...

随机推荐

  1. linux进程管理之进程创建

    所谓进程就是程序执行时的一个实例. 它是现代操作系统中一个很重要的抽象,我们从进程的生命周期:创建,执行,消亡来分析一下Linux上的进程管理实现. 一:前言 进程管理结构; 在内核中,每一个进程对应 ...

  2. 网络小白之WAN与LAN的区别

    剑指Offer--网络小白之WAN与LAN的区别 基本作用 wan接口是外网接口,是用来连接互联网或局域网等外部网络的. lan接口是内网接口,是用来连接计算机终端或其他路由器等终端设备的. 举例 w ...

  3. oracle临时表空间 ORA-01652:无法通过16(在表空间XXX中)扩展 temp 字段

    今天在查数据的时候报错  ORA-01652:无法通过16(在表空间temp1中)扩展 temp 字段 查看表空间使用明细 SELECT b.tablespace,        b.segfile# ...

  4. java http缓存

    HTTP/1.1中缓存的目的是为了在很多情况下减少发送请求,也即直接返回缓存:同时在许多情况下可以不需要发送完整响应.前者减少了网络回路的数量,挺高响应速度,HTTP利用一个"过期(expi ...

  5. SpannableString 给TextView添加不同的显示样式

    TextView是用来显示文本的,有时需要给TextView中的个别字设置为超链接,或者设置个别字的颜色.字体等,那就需要用到Spannable对象,可以借助Spannable对象实现以上设置 myT ...

  6. iOS开发小技巧总结

    一.NSLog的使用 NSLog在调试的时候,屡试不爽,可是在项目中用的太多,其实是会影响程序性能的,而且程序在非调试模式下也看不到打印,多浪费资源呢?如果程序中使用的太多,发布前删除又是一个麻烦事, ...

  7. Mina源码阅读笔记(五)—Mina对连接的操作IoSession

    IoSession是Mina管理两端的一个重要部分,也是Mina的核心,Session具有了生命周期的概念,它的生命周期和连接时紧密相关的,这点在后面的介绍中会涉及.另外,好像hibernate中也有 ...

  8. 登录以及发送微信消息itchat 库

    项目地址点这里 itchat   itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单. 使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人. 当然,该api的 ...

  9. Google Bigtable (中文版)

    http://dblab.xmu.edu.cn/post/google-bigtable/ Abstract BigTable是一个分布式存储系统,它可以支持扩展到很大尺寸的数据:PB级别的数据,包含 ...

  10. iOS Swift开发的一些坑

    0.人难招,特别是对于没钱的小团队,大多数的iOS开发者没有Swift经验,有经验的也并不是很深入 0.1.语言unwrap坑,虽然有自动修正提示,但感觉代码过程不流畅. 1.Realm的缺憾: 最近 ...