前段时间做了数据表拆分,进行数据迁移,用到一些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. 内存数据网格hazelcast的一些机制原理

    hazelcast作为一个内存数据网格工具,还算比较优秀,听说有Apache顶级项目使用它,值得研究下,使用文档可以直接看官方文档,但机制原理相关的资料基本没有,本人硬撸源码写的一些东西,跟大家分享一 ...

  2. LeetCode之“链表”:Intersection of Two Linked Lists

    此题扩展:链表有环,如何判断相交? 参考资料: 编程判断两个链表是否相交 面试精选:链表问题集锦 题目链接 题目要求: Write a program to find the node at whic ...

  3. 解决javac和java命令在Mac OSX终端里的乱码问题

    转自:https://www.surfchen.org/archives/710 java和javac在简体中文的Mac OSX的终端(Terminal.app)环境下,默认是以GBK编码的中文输出各 ...

  4. iOS监听模式之KVO、KVC的高阶应用

    KVC, KVO作为一种魔法贯穿日常Cocoa开发,笔者原先是准备写一篇对其的全面总结,可网络上对其的表面介绍已经够多了,除去基本层面的使用,笔者跟大家谈下平常在网络上没有提及的KVC, KVO进阶知 ...

  5. 在Windows使用git工具将代码同步至github(作者:ying1989920)

     [ps]git是一个分布式代码管理工具,类似于svn,方便协同开发,git里面有所谓的仓库(用来存放代码的),分为本地和线上,线上的你可以自己搭建,不想搭建的话github就给你提供了. [关于 ...

  6. 一键安装 redmine on windows 和发邮件设置

    一键安装 redmine on windows 和发邮件设置 1)使用http://bitnami.org/stack/redmine一键安装redmine (windows). 2)修改下面的文件: ...

  7. OpenGL OpenCV根据视差图重建三维信息

    代码如下: // disparity_to_3d_reconstruction.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" //Huan ...

  8. web报表工具finereport常用函数的用法总结(数组函数)

    ADD2ARRAY ADDARRAY(array,insertArray, start):在数组第start个位置插入insertArray中的所有元素,再返回该数组. 示例: ADDARRAY([3 ...

  9. C# 中的线程安全集合类

    C# 的集合类型中, 都有Synchronized静态方法, 和SyncRoot实例方法 对于ArrayList以及Hashtable 集合类来讲,当需要做到线程安全的时候,最好利用其自带的属性Syn ...

  10. 安装centOS后要解决的问题

    1,检查是否联网 ping www.baidu.com 未显示: 则表示网络未连接 首先关闭防火墙 sudo systemctl stop firewalld.service #停止firewall ...