全部产品
云市场

ALTER TABLE

更新时间:2019-10-18 10:25:45

ALTER TABLE用于修改表。

注意:AnalyticDB for MySQL暂不支持更改列的类型。

语法

  1. ALTER TABLE table_name
  2. ADD COLUMN (column_name column_definition,...)
  3. | ADD {INDEX|KEY} [index_name] (column_name,...)
  4. | ADD CLUSTERED [INDEX|KEY] [index_name] (column_name,...)
  5. | DROP COLUMN column_name
  6. | DROP {INDEX|KEY} index_name
  7. | DROP CLUSTERED [INDEX|KEY] index_name
  8. | MODIFY COLUMN column_name column_definition
  9. | RENAME new_table_name
  10. | TRUNCATE PARTITION {partition_names | ALL}

增加列

语法

  1. ALTER TABLE db_name.table_name ADD column_name data_type;

示例

在CUSTOMER表中增加一列province,数据类型为VARCHAR

  1. ALTER TABLE adb_demo.customer ADD COLUMN province varchar comment '省份';

删除列

语法

  1. ALTER TABLE db_name.table_name DROP column_name data_type;

示例

在CUSTOMER表中删除类型为VARCHARprovince列。

  1. ALTER TABLE adb_demo.customer DROP COLUMN province;

更改COMMENT

语法

  1. ALTER TABLE db_name.table_name MODIFY COLUMN column_name data_type comment 'new_comment';

示例

将CUSTOMER表中province列的COMMENT修改为顾客所属省份

  1. ALTER TABLE adb_demo.customer MODIFY COLUMN province varchar comment '顾客所属省份';

设置NULL

仅支持将NOT NULL变更为NULL。

语法

  1. ALTER TABLE db_name.table_name MODIFY COLUMN column_name data_type {NULL}

示例

将CUSTOMER表中province列的值更改为可为空(NULL)。

  1. ALTER TABLE adb_demo.customer MODIFY COLUMN province varchar NULL;

更改DEFAULT值

语法

  1. ALTER TABLE db_name.table_name MODIFY COLUMN column_name data_type DEFAULT 'default'

示例

将CUSTOMER表中性别sex的默认值设置为0(性别为男)。

  1. ALTER TABLE adb_demo.customer MODIFY COLUMN sex int(11) NOT NULL DEFAULT 0;

新增聚集索引

一张表仅支持创建一个聚集索引。

语法

  1. ALTER TABLE db_name.table_name ADD CLUSTERED KEY index_name(column_name1,column_name2);
  1. ALTER TABLE db_name.table_name ADD CLUSTERED KEY index_name(column_name1);

示例

在CUSTOMER表中,为customer_idid_number建立索引。

  1. ALTER TABLE adb_demo.customer ADD CLUSTERED KEY c_k(customer_id, id_number);

删除索引

语法

  1. ALTER TABLE db_name.table_name DROP CLUSTERED KEY index_name;

示例

删除CUSTOMER表中的索引。

  1. ALTER TABLE adb_demo.customer DROP CLUSTERED KEY c_k;

更改列名

注意:不支持更改主键列的列名。

语法

  1. ALTER TABLE db_name.table_name rename column column_name to column_newname

示例

将CUSTOMER表中的age列名更新为new_age

  1. ALTER TABLE customer rename column age to new_age;