一般常用的数据库大致可以分为两大类,一类是结构化数据库,另一类是非结构化数据库。无论是那种数据库,在设计的时候都需要字段的类型,一般情况下,我们都会提前设计好数据库所需要的字段、类型等,然后通过评审会进行评审所设计的数据库是否合理,但是有时候在使用一段时间后,会突然发现当初自己设计的某个字段的类型不合理,此时就需要更改下这个字段的数据类型,虽然很麻烦,但是为了业务的需要,我们必须呀更改,所以我们在设计数据库时一定要有未来性,不能只局限于当下。
在oracle中有时候我们会遇到需要更新字段的类型,此时大致可以分为两类
这种更新比较简单,可以直接更新字段的类型
alter table USER modify status varchar2(10);
当字段有值的时候,这个时候更新起来就比较麻烦 ,但是还是可以操作的
-- 先更新要改变类型的字段名称
alter table user rename column DATE_TIME to DATE_TIME_OLD;
-- 新建一个字段,为复制值做准备
alter table user add DATE_TIME VARCHAR2(200);
-- 复制 , 把需要改变类型字段的值复制到新添加的字段中
UPDATE user SET DATE_TIME = DATE_TIME_OLD;
-- 删除原字段
alter table user drop column DATE_TIME_OLD;
注:一般情况下也不需要更换字段的类型,前提是前期的设计必须合理.
在mysql中不会想oracle中那么麻烦。无论字段是否有值,都可以直接更新
alter table coc_company modify EXIST_DIAGRAM int(2);
无论采用那种方式更改字段的类型,按理来说都是不合理的,因为字段的类型一旦定下来,就基本不会改变,如果需要改变,那么只能说一方面技术还不太成熟,另一方面说明没有前瞻性,所以我们在设计数据库时一定要具有前瞻性和未来性,避免更改字段的类型。