如何更改表的varchar长度,这是复合主键?

时间:2015-01-13 10:19:19

标签: mysql sql-server oracle

现有方案:

1)字段描述

userid      varchar(12) Primary Key

2)表包含数百万用户(数据)。

我想在不影响现有数据,约束和结构的情况下将用户ID大小更改为varchar(20)?

如何在 oracle,mssql and mysql 中实现这一目标?

4 个答案:

答案 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 );

如果要减小列的大小,可能会丢失数据。