设为首页 加入收藏

TOP

DB2 Alter Table简介及使用(二)
2014-11-23 22:04:45 来源: 作者: 【 】 浏览:29
Tags:DB2 Alter Table 简介 使用
EMPTY_DBCLOB() --针对DBCLOB类型的列,写入一个0长度的字符串
EMPTY_BLOB() --针对BLOG类型的列,写入一个0长度的字符串
cast_function(str)★ --针对用户自定义类型,此时DATATYPE为用户自定义类型distinct type;cast_function是自定义类型的名称,
主要就涉及基于blob、date、time、timestamp的自定义类型;
此处参数str可以为上面提到的寄存器,常量值和CURRENT SCHEMA。
★自动生成的列,不能通过alter table语句修改为序列值,换句话说,序列只能在定义表的时候指定。
db2 => create table test2(id integer generated always as identity,sex char(1) check (sex in ('F','M')))
DB20000I SQL 命令成功完成。
db2 => alter table test2 add column name varchar(20) with default 'Unknow'
DB20000I SQL 命令成功完成。
★在表中新增列或者删除列之后,记得重构下表,否则报错:
db2 => insert into test2(sex) values('F')
DB21034E 该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在
SQL 处理期间,它返回:
SQL0668N 不允许对表 "LENOVO.TEST2" 执行操作,原因码为 "7"。 SQLSTATE=57016
db2 => reorg table test2
DB20000I REORG 命令成功完成。
db2 => insert into test2(sex) values('F'),('M')
db2 => select * from test2
ID SEX NAME
----------- --- --------------------
1 F Unknow
2 M Unknow
2 条记录已选择。
db2 => alter table test2 add column col_chg timestamp not null generated always for each row on update as row change timestamp
DB20000I SQL 命令成功完成。
db2 => select * from test2
ID SEX NAME COL_CHG
----------- --- -------------------- --------------------------
1 F Unknow 0001-01-01-00.00.00.000000
2 M Unknow 0001-01-01-00.00.00.000000
2 条记录已选择。
db2 => update test2 set name='Scott' where id=2
DB20000I SQL 命令成功完成。
db2 => select * from test2
ID SEX NAME COL_CHG
----------- --- -------------------- --------------------------
1 F Unknow 0001-01-01-00.00.00.000000
2 M Scott 2013-04-01-20.09.27.954000 --★
2 条记录已选择。
db2 => alter table test2 add constraint pk_test2 primary key(id)
DB20000I SQL 命令成功完成。
2、删除
清空表:ALTER TABLE tablename ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE。
删除列:ALTER TABLE tablename DROP COLUMN column_name CASCADE | RESTRICT
CASCADE:参照此列的所有视图将会失效,所有依赖于该索引,触发器,函数,约束,都将被删除。
RESTRICT:若有其他 数据库对象依赖于此列,则不允许删除之。
删除约束:
主键:ALTER TABLE tablename DROP PRIMARY KEY
外键:ALTER TABLE tablename DROP FOREIGN KEY foreignkey_name
唯一:ALTER TABLE tablename DROP UNIQUE unique_name
检查:ALTER TABLE tablename DROP CHECK check_name
其他约束:ALTER TABLE tablename DROP CONSTRAINT constraint_name
非空:ALTER TABLE tablename ALTER COLUMN DROP NOT NULL
解除表删除:ALTER TABLE tablename DROP RESTRICT ON DROP。
删除自动生成列的表达式:ALTER TABLE tablename ALTER COLUMN DROP EXPRESSION
针对定义为自动生成值的列。
删除列的默认值:ALTER TABLE tablename ALTER COLUMN DROP DEFAULT
删除表中列的IDENTITY属性:ALTER TABLE tablename ALTER COLUMN DROP IDENTITY
每个表中只能有一个列被定义为IDENTITY列(非空、不能有默认值)。
3、修改
重命名表:RENAME TABLE tablename old_name to new_name,下面有一篇关于重命名表的文章: DB2修改表名
重命名列:ALTER TABLE tablename RENAME COLUMN old_colname TO new_colname
改变列数据类型:ALTER TABLE tablename ALTER COLUMN col_name SET DATA TYPE data_type
改变约束:
合并分区:
锁大小:
列值压缩存储:ALTER TABLE tablename ALTER COLUMN 后跟着:
1.COMPRESS SYSTEM DEFAULT:压缩存储,前提是定义表的时候指定VALUES C
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇DB2时间函数语句 下一篇db2修改表名

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: