DB2 存储过程创建、系统表
前段时间做了数据表拆分,进行数据迁移,用到一些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 |
--/
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 存储过程创建、系统表的更多相关文章
- 【转】利用optimize、存储过程和系统表对mysql数据库表进行批量碎片清理释放表空间
本文收集于本人的笔记本,由于找不到原文出处.在此省略,如哪位知道可以联系我加上. 核心是利用mysql系统表和“optimize table 表名”命令,对mysql数据表进行空间的释放.由于dele ...
- DB2中的系统表SYSIBM.SYSDUMMY1
ORACLE中有一张系统数据库表DUAL用来访问系统的相关信息 SELECT SYSDATE FROM DUAL; --返回当前系统日期 ------------------------------ ...
- 关于mysql存储过程创建动态表名及參数处理
转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 近期游戏開始第二次内測,開始处理操作日志.最開始把日志放到同一个表里面,发现一天时间,平均100玩家 ...
- SQlServer 从系统表 sysobjects 中获取数据库中所有表或存储过程等对象
[sysobjects] 一.概述 系统对象表. 保存当前数据库的对象,如约束.默认值.日志.规则.存储过程等,该表中包含该数据库中的表 存储过程 视图等所有对象 在sqlserver2005,sql ...
- SQL Server系统表sysobjects介绍与使用(转))
这就让sysobjects表格有了用武之地.虽然我不建议你更新这个表格,但是你当然有权对其进行审查. sysobjects 表 在数据库内创建的每个对象(约束.默认值.日志.规则.存储过程等)在表中 ...
- sql server系统表详细说明
sysaltfiles 主数据库 保存数据库的文件 syscharsets 主数据库字符集与排序顺序 sysconfigures 主数据库 配置选项 syscurconfigs 主数据库当前配置选 ...
- SQL Server系统表sysobjects介绍与使用
关于SQL Server数据库的一切信息都保存在它的系统表格里.我怀疑你是否花过比较多的时间来检查系统表格,因为你总是忙于用户表格.但是,你可能需要偶尔做一点不同寻常的事,例如数据库所有的触发器.你可 ...
- SQL SERVER系统表
sysaltfiles 主数据库 保存数据库的文件 syscharsets 主数据库 字符集与排序顺序sysconfigures 主数据库 配置选项syscurconfigs 主数据库 当前配置选项s ...
- MS SQL SERVER 中的系统表
MS SQL SERVER 中的系统表 序号 名称 说明 备注 1 syscolumns 每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行. 2 syscomments 包含每 ...
随机推荐
- [转]ubuntu安装vncserver实现图形化访问
请注意: 如果在安装中部分软件无法安装成功,说明软件源中缺包,先尝试使用命令#apt-get update更新软件源后尝试安装.如果还是不行,需要更换软件源.更换步骤: 1)输入命令#cp /et ...
- Eclipse集成Android_NDK
Eclipse集成Android NDK说明 2 为什么要用NDK? 以下内容引用自<Pro Android Games> Some Java develo ...
- 菜鸟玩云计算之廿二: saltstack 配置
菜鸟玩云计算之廿二: saltstack 配置 要求环境: RHEL6.4+ >=Python2.6.6, < Python 3.0 关闭salt-master/minion服务: # ...
- Mplayer 的编译
由于项目要用到mplayer,所以要对mplayer进行编译,首先我的平台如下: 系统:windows xp2 安装好mingw+msys,目录为c:/mingw,其中装的gcc是4.3.2版本的. ...
- SpriteBuilder中的碰撞分类(Categories)和掩码(Masks)
假如有2种对象player和触发器(trigger),当玩家进入到触发器区域时则由触发器对象通知所有注册过触发器通知的对象,然后由这些对象自行选择做一些事情,比如:阻碍player的前景,触发陷阱等等 ...
- 数据库用户映射到SQL Server登录名
由于不是固定在一如电脑开始,经常需要把数据备份与恢复.或者是帮助客户修改程序,接收到客户备份好的数据,需要在电脑恢复. 这样就需要将数据库用户映射到 SQL Server 登录名.如何映射?可使用下面 ...
- java集合类中的迭代器模式
不说模式的问题,看一个<<设计模式之禅>>里面的例子. 老板要看到公司了各个项目的情况.(我知道我这个概述很让人头大,看代码吧) 示例程序 v1 package Iterato ...
- HBase Bulk Loading
将数据导入到HBase有三种方式:(1) Mapreduce,输出为TableOutputFormat.(2) 用HBase API .(3)Bulk Loading.对于大量的数据入库,第三种数据是 ...
- schema workbench的操作
1.schema workbench连不上sql,如下: 看不懂,这是驱动的问题,你只要使用最新的驱动,mysql-connector-java-5.1.13-bin.jar 将对应驱动放入schem ...
- EBS R12安装升级(FRESH)(五)
7.4.5 用DBUA升级 Database Upgrade Assistant提供图形界面进行升级. 将zysong.ttf复制到 /u01/oracle/TEST/db/tech_st/11.2. ...