设为首页 收藏本站
查看: 878|回复: 0

[经验分享] db2表

[复制链接]

尚未签到

发表于 2016-11-18 00:29:51 | 显示全部楼层 |阅读模式
  生成列:
  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 (刷新)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-301672-1-1.html 上篇帖子: DB2错误代码 下篇帖子: DB2 存储过程开发最佳实践
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表