生成列:

CREATE TABLE t1 (c1 INT,
                 c2 DOUBLE,
                 c3 DOUBLE GENERATED ALWAYS AS (c1 + c2)
                 c4 GENERATED ALWAYS AS (CASE WHEN c1 > c2 THEN 1 ELSE NULL END)
)

定义标识列:

CREATE TABLE table (col1 INT,
                    col2 DOUBLE,
                    col3 INT NOT NULL GENERATED ALWAYS AS IDENTITY(START WITH 100, INCREMENT BY 5)
                    )

not logged initially特性:如果经常对一个表进行批量插入、更新和删除操作,可以考虑在创建表的时候使用

not logged initially特性,这样做可以提高批量插入、更新和删除的性能。

db2 => create table nolog_tab(id int, name char(20)) not logged initially

使用activate not logged initially清空表而不产生日志:

db2 => alter  table nolog_tab activate not logged initially with empty table

append on特性:

在数据库中,当表中数据被删除时,空间并不会释 放,而是在该行原来的位置做个“DELETED”的标志,

表示该空间可以被重用。当DB2执行INSERT操作时,会扫描整个表的空闲空间并将新行置入空槽。而如果

我们启用了append on特性,那么当插入新行时,DB2就不必搜索空槽再插入而是直接插入到表的最后。

例如:

CREATE TABLE appen_on_tab LIKE RECEIPTS IN SLOW_DISK_TBSP

可以通过将该表改变成APPEND ON来通知DB2在执行INSERT时不必搜索空槽:

ALTER TABLE appen_on_tab APPEND ON

这将使INSERT更快。这适合用于大批量追加 插入一些历史表。如果启用这种特性,考虑定期reorg表。

--------------------------------

数据行压缩(表压缩):

CREATE TABLE table_name . . . COMPRESS YES

OR

ALTER TABLE tablename COMPRESS YES

要使压缩生效,我们需要要构建压缩字典并接着压缩表(表中需要有数据,不能是空表),

为了构建压缩字典,我们可以使用REORG命令,执行脱机重组。第一次压缩一个表(或者

你需要重新构建压缩字典)你可以使用如下命令:

REORG table table_name resetdictionary

以后如果你需要运行一个正常的表重组,但是又不希望重新构建压缩字典,可以运行下面的命令:

REORG table table_name keepdictionary

如果想估计对表使用表压缩(数据行压缩)比不使用表压缩节省了多少空间,可以通过

INSPECT ROWCOMPESTIMATE语句进行评估分析。记住,这个命令只是估计压缩的效果,而不是查看

最终实际的压缩效果,如果想查看实际的压缩效果,需要查看系统表SYSIBM.SYSTABLES。

带压缩估计选项(ROWCOMPESTIMATE)的INSPECT命令,将生成一份报告,描述节省了多少页。

语法如下:

DB2 INSPECT ROWCOMPESTIMATE TABLE NAME table_name RESULTS KEEP file_name

由于INSPECT命令生成的文件是二进制的,无法直接查看,所以我们需要使用DB2INSPF命令

将此文件格式转成可读模式才能查看,具体语法如下:

DB2INSPF file_name output_file_name

-----------------------------

值压缩:

如果使用了VALUE COMRESSION,那么还可以使用可选 COMPRSS SYSTEM DEFAULT 选项来

进一步减少磁盘空间的使用量。

下面我们创建示例表TEST3,其使用VALUE COMRESSION对整个表的空值进行压缩,对每个列

使用COMPRESS SYSTEM DEFAULT选项对数据类型默认的系统缺省值进行压缩。

DB2 CREATE TABLE TEST3 ( ID INTEGER COMPRESS SYSTEM DEFAULT ,
                         NAME VARCHAR ( 10 ) COMPRESS SYSTEM DEFAULT ,
                         NOTE VARCHAR ( 100 ) COMPRESS SYSTEM DEFAULT
                        ) IN TABLESPACE1 VALUE COMPRESSION

可以使用 DEACTIVATE VALUE COMPRESSION 来指定表将不再对表中数据使用节省空间技术。

如果使用DEACTIVATE VALUE COMPRESSION,这将显式禁用与该表中的列相关联的

所有 COMPRESS SYSTEM DEFAULT 选项。

DB2 ALTER TABLE TEST3 ALTER COLUMN ID COMPRESS OFF

DB2 ALTER TABLE TEST3 DEACTIVATE VALUE COMPRESSION

DB2 ALTER TABLE TEST3 ACTIVATE VALUE COMPRESSION

DB2 ALTER TABLE TEST3 ALTER id COMPRESS SYSTEM DEFAULT

创建临时表:

DECLARE GLOBAL TEMPORARY TABLE gbl_temp
LIKE empltabl
ON COMMIT DELETE ROWS
NOT LOGGED
IN usr_tbsp

更改列:

ALTER TABLE SALES ADD COLUMN SOLD_QTY SMALLINT NOT NULL DEFAULT 0

ALTER TABLE SALES DROP COLUMN SOLD_QTY

修改表列的长度:

ALTER TABLE <table_name> ALTER COLUMN <column_name> <modification_type>

ALTER TABLE t1 ALTER COLUMN colnam1 SET DATA TYPE VARCHAR(4000)

ALTER TABLE t1 ALTER COLUMN colnamt1 ADD SCOPE typtab1

ALTER TABLE <table_name> ALTER COLUMN <column_name> SET DEFAULT ’new_default_value’

ALTER TABLE t1 ALTER COLUMN colnam1 SET DEFAULT ’123’

重命名表rename:

显示表: db2 list tables

修改表名:db2 rename b to a

删除表:DROP TABLE <table_name>

----------------------

约束:

NOT NULL :未知状态

ALTER TABLE EMPLOYEE ADD CONSTRAINT NEWID UNIQUE(EMPNO,HIREDATE)

ALTER TABLE <name> ADD CONSTRAINT <column_name> PRIMARY KEY <column_name>

ALTER TABLE EMPLOYEE ADD CONSTRAINT REVENUE CHECK (SALARY + COMM > 25000)

ALTER TABLE <name> ADD CONSTRAINT <column_name> FOREIGN KEY <column_name> ON DELETE <action_type> ON UPDATE <action_type>

ON UPDATE:NO ACTION  RESTRICT

ON DELETE:NO ACTION    RESTRICT    CASCADE    SET NULL

删除约束:

ALTER TABLE <table-name> DROP UNIQUE <constraint-name>

ALTER TABLE <table-name> DROP PRIMARY KEY

ALTER TABLE <table_name> DROP CHECK <check_constraint_name>

ALTER TABLE <table-name> DROP FOREIGN KEY <foreign_key_name>

索引:

CREATE UNIQUE INDEX EMP_IX ON EMPLOYEE(EMPNO)

RENAME INDEX <source index name> TO <target index name>

DROP INDEX <index_name>

db2 list node directory(查看存在的节点名)
 
db2 list database directory (查看存在的数据库别名)
 
db2 terminate (刷新)

db2表的更多相关文章

  1. DB2 表空间监控

    默认DB2 缓冲池信息监控是OFF, 需要开启(DB2表空间是由缓冲池分配的) CollBufferpool : ============ The CollBufferpool collector c ...

  2. DB2表不活动的处理方法

    DB2表不活动的处理方法(转载)首先查一下: db2 57016 SQLSTATE 57016: 因为表不活动,所以不能对其进行访问. 解决方法为:执行命令:reorg table XXX:即可. 参 ...

  3. db2 表空间扩容

    DB2表空间扩容 1 - Detect what tablespace has size issues db2 list tablespaces show detail 2 - Check the p ...

  4. DB2表空间

    https://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0902yuancg/ 临时表空间的使用 (sorts or jo ...

  5. DB2表的重组

    DB2在存储大数据的时候,遇到一个问题,将数据导入表中保存不了,最后是重组后才解决. 下面是从IBM官网上搜集的资料: 官网地址:http://publib.boulder.ibm.com/infoc ...

  6. DB2 表空间和缓冲池

    简介 对于刚涉足 DB2 领域的 DBA 或未来的 DBA 而言,新数据库的设计和性能选择可能会很令人困惑.在本文中,我们将讨论 DBA 要做出重要选择的两个方面:表空间和缓冲池.表空间和缓冲池的设计 ...

  7. db2 表空间容器调整

    1.查看当前容器的分布,并确定如何调整 db2look -d sample -l -cor -dp -o dd.sql 2.给表空间添加容器 db2 "alter tablespace tb ...

  8. db2 表关联查询

    今天在MapReduce的练习中看到了一个题目: file: CHILD PARENT ---------- ---------- tom lucy tom jack jone lucy jone j ...

  9. DB2表被锁,如何解锁

    原因与解决方案 1.原因:修改表结构表结构发生变化后再对表进行任何操作都不被允许,SQLState为57016(因为表不活动,所以不能对其进行访问),由于修改了表字段权限,导致表处于不可用状态 2.解 ...

  10. db2 表空间容量

    Db2 connect to xxx Db2 “LIST TABLESPACES SHOW DETAIL” Tablespace ID = 7 Name = TSASNAA Type = Databa ...

随机推荐

  1. TensorFlow学习——入门篇

    本文主要通过一个简单的 Demo 介绍 TensorFlow 初级 API 的使用方法,因为自己也是初学者,因此本文的目的主要是引导刚接触 TensorFlow 或者 机器学习的同学,能够从第一步开始 ...

  2. Linux:使用awk命令获取文本的某一行,某一列

    无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点 这里 可以跳转到教程.”. 1.打印文件的第一列( ...

  3. 解决Layui数据表格中checkbox位置不居中

    1.情景 使用方法渲染的方式生成数据表格,添加了checkbox,但发现checkbox位置不居中,如下图所示  2.解决办法 通过layui官方社区,找到如下代码,只需要添加如下样式即可解决 < ...

  4. RabbitMQ数据同步一致性解决方案

    1.概述 我们知道在使用RabbitMQ时,生产者将消息发布出去之后,消息是否顺利到达broker代理服务器呢?默认情况下发布操作没有任何信息返回给生产者,也就是生产者是不知道消息有没有顺利到达bro ...

  5. python range和arange

    range:自带函数,返回一个序列 range(起始点,终止点(不包含),步长(整数))   起始点和步长都可以省略,起始点默认为0,步长默认为1 range(1,11,2) [1,3,5,7,9] ...

  6. centos6.5 相关命令

    挂载U盘 1.进入mnt目录: #cd /mnt 2.新建一个USB目录: #mkdir usb 3.查看U盘的目录: #fdisk –l 4.挂载: #mount –t vfat /dev/sdb1 ...

  7. js插件-图片椭圆轮播效果

    插件效果图: html 代码如下: <div id="container"> <img src="images/cartoon/1.jpg" ...

  8. sql 连接的使用说明

    SQL中的left outer join,inner join,right outer join用法详解 使用关系代数合并数据 关系代数 合并数据集合的理论基础是关系代数,它是由E.F.Codd于19 ...

  9. vue和php-前后台交互

    vue和php-前后台交互 前端主要代码: <template> <div class="main-member-info"> <form @subm ...

  10. (选做)实现mypwd

    选做 实现mypwd 实验内容: 1.学习pwd命令. 2.研究pwd实现需要的系统调用(man -k; grep),写出伪代码. 3.实现mypwd. 4.测试mypwd. 实验步骤: 学习pwd命 ...