DB2 Alter Table简介及使用
DB2 Alter Table简介及使用对于普通表的修改造作,需要考虑下面两种情况:1.表中有数据当表中存放着数据的时候,对列的修改仅限于将该列的数据类型修改为相应兼容的数据类型,或者保持原来的数据类型不变,长度变小了(不能小于存储值的最大长度),或表长了。2.表中无数据列的修改还是只能在相互兼容的数据类型之间,有check约束的列不能修改数据类型。对于表的修改操作,主要就是增加、修改、删除,下面分别从这三个方面去介绍。1、增加增加列:ALTER TABLE tablename ADD COLUMN colname DATATYPE对表的列有如下的一些设置,约束,控制,压缩存储等:1.CONSTRAINT constraint_name PRIMARY KEY | UNIQUE |CHECK (colname IN (check_list)) DEFAULT list |REFERENCES table_name (colname)2.NOT NULL:非空3.COMPRESS SYSTEM DEFAULT:对列指定当前数据类型的默认值,若insert时未提供此列的值的时候;且压缩存储该列值;该压缩存储的列,不能为DATE,TIME,TIMESTAMP,XML,或者结构化类型;需要注意的是,该选项会影响insert和update的性能。增加约束:主键:ALTER TABLE tablename ADD CONSTRAINT constraint_name PRIMARY KEY(colname)。外键:ALTER TABLE talename ADD CONSTRAINT constraint_name FOREIGN KEY(colname1)REFERENCES tablename (colname2) 后面跟着:1.ON DELETE NO ACTION:当删除colname2的时候,colname1不做任何操作2.ON DELETE RESTRICT | CASCADE | SET NULL:但删除colname2的时候,restrict限制不让删除,cascade级联删除colname1的行,set null置colname1为空。3.ON UPDATE NO ACTION:当colname2被更新的时候,colname1不进行任何操作4.ON UPDATE RESTRICT:当有参照完整性的时候,不允许先更新父表。唯一:ALTER TABLE tablename ADD CONSTRAINT constraint_name UNIQUE(colnamme)。检查:ALTER TABLE tablename ADD CONSTRAINT constraint_name CHECK 后面跟着:1.(colname IN (check_list)):限定列的取值为列表中的一个,如易做图 in ('F','M')。2.(colname1 DETERMINED BY colname2):colname1完全依赖于colname2。3.(expression):此表达式为一个判断,如:alter table test1 add constraint chk_sal check ((salary + comm) > 80000),对于违反此表达式约束的操作,将会出现如下错误:db2 => insert into test1 select * from employee order by salary descDB21034E 该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在SQL 处理期间,它返回:SQL0545N 因为行不满足检查约束"LENOVO.TEST1.CHK_SAL",所以不允许所请求的操作。SQLSTATE=23513db2 => select salary + comm from test11------------156970.0097550.00101310.0083389.0099063.0092130.0088242.007 条记录已选择。不能删除表:ALTER TABLE tablename ADD RESTRICT ON DROP表不能被删除,表所在的表空间也不可以被删除。自动生成数据的列:ALTER TABLE tablename ADD COLUMN col_name DATATYPE 后面跟着:1.时间戳:GENERATED ALWAYS|BY DEFAYLT FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP,该列必须为not null。2.表达式:GENERATED ALWAYS expression,通过表达式产生此列的值,如,员工总的工资为:... GENERATED ALWAYS (salary + comm)。3.固定值:WITH DEFAULT constant --常量datetime-special-register --特殊寄存器:current_timestamp(current timestamp),current_date(current date),current_time(current time).user-special-register --与用户有关的寄存器:current_user(current user),session_user(session user),system_user(system user).CURRENT SCHEMA --当前模式NULL --空值EMPTY_CLOB() --针对CLOB类型的列,写入一个0长度的字符串EMPTY_DBCLOB()上一个:db2修改表名
下一个:DB2中列的唯一值的定义
- 更多DB2疑问解答:
- sql语句 从DB2移动到其他数据库
- DB2 character类型更新报错
- db2 怎么查看执行的sql语句需要多少系统临时表空间?
- db2数据库的table表里,一money字段中的数据显示为:56000,00 本人想要用sql语句将它修改为56,000,000
- DB2导出表结构,能不能只导出指定的表结构。求大神指教,给出命令哈
- DB2数据库,增加数据表空间容量需要重启数据库吗?
- cognos连接db2,为什么启动不了服务啊, 连接Oracle可以启动服务。。
- PostgreSQL对比DB2
- db2如何查看编写好的存储过程?
- db2数值截取
- 谁知道关于DB2怎么看系统日志,归档日志的位置。并且怎么修改日志呢?
- db2怎样重组表结构?
- 求一本【牛新庄的DB2运维教程】?
- db2 的 SECADM权限 是干什么的
- DB2怎么删除表空间所以数据