前段时间做了数据表拆分,进行数据迁移,用到一些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. android studio添加project libs库步骤

    在Eclipse中选择要导出的项目,然后依次选择菜单 file->export->Android->Generate Gradle build files. 之后依次点击next到f ...

  2. 如何修改新建脚本模板-ScriptTemplates(Unity3D开发之十五)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/44957631 ...

  3. 新版MATERIAL DESIGN 官方动效指南(二)

    继上一篇,本文继续第二部分,从动效的速度.动态持续时间.通用持续时间和缓动曲线4个部分,教你创建平滑一致的Material Design 动效.再系统的干货都比不上官方的动效指南,西瓜就在这,赶紧来捡 ...

  4. 关于ruby gem无法连接到rubygems.org的解决方案

    RubyGems 镜像 - 淘宝网 为什么有这个? 由于国内网络原因(你懂的),导致 rubygems.org 存放在 Amazon S3 上面的资源文件间歇性连接失败.所以你会与遇到 gem ins ...

  5. iOS监听模式系列之IOS中的几中观察监听模式

    本文介绍Objective C中实现观察者模式(也被称为广播者/监听者.发布/注册或者通知)的五种方法以及每种方法的价值所在. 该文章将包括: 1 手动广播者和监听者(Broadcaster and ...

  6. 数据结构---队列C语言实现

    #include <stdio.h> #include <stdlib.h> //队列大小 #define SIZE 1024 static int queue[SIZE] = ...

  7. 如何用Dreamweaver编辑rails的html.erb文件

    默认情况下用dw是以普通的text文件打开html.erb文件,这多少让人有点不爽.其实dw打开erb文件也是相当的容易,下面就简单说下在mac os X下如何让dw支持erb文件: 首先找到dw的用 ...

  8. rails项目编写中的一些小技巧小心得

    1. 如果form中有数据要传回服务器可以用隐藏属性的控件: form_for(xxx) do |f| f.hidden_field :xxx,value:xxx end 2. 如果你需要一些信息放在 ...

  9. 数据准备<2>:数据质量检查-实战篇

    上一篇文章:<数据质量检查-理论篇>主要介绍了数据质量检查的基本思路与方法,本文作为补充,从Python实战角度,提供具体的实现方法. 承接上文,仍然从重复值检查.缺失值检查.数据倾斜问题 ...

  10. linux 常见命令及说明杂记

    systemctl 命令: systemctl 是管制服务的主要工具, 它整合了chkconfig 与 service功能于一体.示例:systemctl is-enabled iptables.se ...