现有方案:
1)字段描述
userid varchar(12) Primary Key
2)表包含数百万用户(数据)。
我想在不影响现有数据,约束和结构的情况下将用户ID大小更改为varchar(20)?
如何在 oracle,mssql and mysql
中实现这一目标?
答案 0 :(得分:1)
首先不要将VARCHAR用于主键。它显着减慢了Oracle搜索查询的速度。使用Long或int作为相同的
您可以使用此语句修改MySql中任何列的大小
ALTER TABLE <table_name> MODIFY <col_name> VARCHAR(20)
它不会改变或改变现有数据
答案 1 :(得分:0)
在Oracle中,只需发出ALTER table MODIFY
-
alter table table_name modify (column_name varchar2(20))
例如,
SQL> create table t(text varchar2(12), constraint t_pk primary key (text));
Table created.
SQL> insert into t(text) values ('text');
1 row created.
SQL> commit;
Commit complete.
SQL> alter table t modify(text varchar2(20));
Table altered.
SQL>
答案 2 :(得分:0)
varchar
不会为&#34;额外的&#34;消耗空间。超出您实际拥有的数据的能力。您应该只需更改表格即可调整列的大小而不会产生任何不利影响:
ALTER TABLE mytable MODIFY COLUMN userid VARCHAR(20)
答案 3 :(得分:0)
FOR MYSQL:
ALTER TABLE `mdl_user` CHANGE `userid` `userid` VARCHAR( 20 );
如果要减小列的大小,可能会丢失数据。