六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 118|回复: 0

DB2中修改表结构

[复制链接]

升级  56%

8

主题

8

主题

8

主题

童生

Rank: 1

积分
28
 楼主| 发表于 2013-1-13 18:26:52 | 显示全部楼层 |阅读模式
1、增加一个字段
alter table table_name add column column_name datatype
例如:db2 "alter table SUPPORT_UAPROFILE add manufacturer varchar(20)"  
2、更改表得定义,将某个字段设为主键
alter table table_name add primary key (column_name)
3、把主键定义删除
alter table table_name drop primary key (column_name)
4、删除表中的字段
说明:db2数据库没有直接删除表中字段的SQL,但是可以通过多条SQL来删除表中的字段
步骤为:先创建一个临时表,将原表中的的数据插入到临时表中,然后将原表删除,把临时表改名为原名,然后增加其主键及其它约束。(注意:前提你必须了解到原表中包含的所有约束)
例子:
CREATE TABLE "DB2INST1"."TMP_PORTALSYSPARAM_DJPLH" (
  "PARAMNAME"VARCHAR(64)NOT NULL,
  "MODULEID"INTEGERNOT NULL,
  "MODULETYPE"INTEGERNOT NULL,
  "PARAMTITLE"VARCHAR(128)NOT NULL,
  "PARAMVALUE"VARCHAR(750)NOT NULL,
  "PARAMDESC"VARCHAR(250),
  "EFFECTIVETYPE"INTEGERNOT NULL,
  "VALIDATERULE"VARCHAR(1024)NOT NULL
)
  IN "USERSPACE1";

ALTER TABLE "DB2INST1"."TMP_PORTALSYSPARAM_DJPLH"
  DATA CAPTURE NONE
  LOCKSIZE ROW
  APPEND OFF
  NOT VOLATILE;

INSERT INTO "DB2INST1"."TMP_PORTALSYSPARAM_DJPLH"( "PARAMNAME", "MODULEID", "MODULETYPE", "PARAMTITLE", "PARAMVALUE", "PARAMDESC", "EFFECTIVETYPE", "VALIDATERULE" )
SELECT "PARAMNAME", "MODULEID", "MODULETYPE", "PARAMTITLE", "PARAMVALUE", "PARAMDESC", "EFFECTIVETYPE", "VALIDATERULE"
FROM "DB2INST1"."PORTALSYSPARAM";

DROP TABLE "DB2INST1"."PORTALSYSPARAM";

RENAME TABLE "DB2INST1"."TMP_PORTALSYSPARAM_DJPLH" TO "PORTALSYSPARAM";

ALTER TABLE "DB2INST1"."PORTALSYSPARAM"
  ADD CONSTRAINT "PK_PORTALSYSPARAM" PRIMARY KEY
    ("PARAMNAME", "MODULEID", "MODULETYPE");


COMMIT;

RUNSTATS ON TABLE "DB2INST1"."PORTALSYSPARAM"
  AND INDEXES ALL
  ALLOW READ ACCESS;

COMMIT;
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

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