前段时间做了数据表拆分,进行数据迁移,用到一些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. C#之面向对象的特性

                类是一种抽象的数据类型,但是其抽象的程度有可能会不同,而对象就是一个类的实例,例如,将花设计为一个类,天堂鸟和矢车菊就可以各为一个对象,从这里我们可以看出来,天堂鸟和矢车菊 ...

  2. libevent之event_base

    event_base是libevent的事务处理框架,负责事件注册.删除等,属于Reactor模式中的Reactor. event_base结构体 event_base结构体定义于<event_ ...

  3. 聊聊String

    当我们最开始学习java的时候,老师会告诉我们字符串的比较需要用equals(); 真的是这样的吗? 我们看看下面的例子 public class TestString { public static ...

  4. Linux下xargs命令详解

    http://www.cnblogs.com/perfy/archive/2012/07/24/2606101.html xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数 ...

  5. /etc/fstab文件分析(第二版)

    /etc/fstab文件分析 前面说新建的分区在系统重启之后就会失效,要想永久生效,需要将其写入/etc/fstab文件 一./etc/fstab文件格式:6个组成部分 物理分区名/卷标 挂载点 文件 ...

  6. 有关java的引用传递,直接操作对象本身。直接删除BE的value中某值

    HashSet<String> refRegions = BE.get(regionName);    HashSet<String> values = new HashSet ...

  7. mahout系列之---谱聚类

    1.构造亲和矩阵W 2.构造度矩阵D 3.拉普拉斯矩阵L 4.计算L矩阵的第二小特征值(谱)对应的特征向量Fiedler 向量 5.以Fiedler向量作为kmean聚类的初始中心,用kmeans聚类 ...

  8. 设置UIButton中的文字和图片,设置UILabel的文在显示不同颜色

    UIButton: UIEdgeInsets 在UIButton中有三个对EdgeInsets的设置:ContentEdgeInsets.titleEdgeInsets.imageEdgeInsets ...

  9. Spring Cloud项目中通过Feign进行内部服务调用发生401\407错误无返回信息的问题

    问题描述 最近在使用Spring Cloud改造现有服务的工作中,在内部服务的调用方式上选择了Feign组件,由于服务与服务之间有权限控制,发现通过Feign来进行调用时如果发生了401.407错误时 ...

  10. css3-------:before和:after的作用

    1.:before和:after的作用就是在指定的元素内容(而不是元素本身)之前或者之后插入一个包含content属性指定内容的行内元素,最基本的用法如下: <!doctype html> ...