ALTER TABLE__数据定义语言_SQL语法参考_云数据库 OceanBase-阿里云
该语句用于修改已存在的表的结构,比如:修改表及表属性、新增列、修改列及属性、删除列等。
格式
ALTER TABLE tblnamealter_specification [, alter_specification]... ;alter_specification:ADD [COLUMN] colname column_definition| ADD [COLUMN] (colname column_definition,...)| ADD [UNIQUE]{INDEX|KEY} [indexname] (index_col_name,...) [index_options]| ADD PRIMARY KEY (index_col_name,...) [index_options](暂不支持)| ALTER [COLUMN] colname {SET DEFAULT literal | DROP DEFAULT}| CHANGE [COLUMN] oldcolname newcolname column_definition| MODIFY [COLUMN] colname column_definition| DROP [COLUMN] colname| DROP PRIMARY KEY (暂不支持)| DROP {INDEX | KEY} indexname| RENAME [TO] newtblname| ORDER BY colname (暂不支持)| CONVERT TO CHARACTER SET charsetname [COLLATE collationname] (暂不支持)| [DEFAULT] CHARACTER SET charsetname [COLLATE collationname] (暂不支持)| table_options| partition_options| DROP TABLEGROUP| AUTO_INCREMENT [=] numcolumn_definition:data_type [NOT NULL | NULL] [DEFAULT defaultvalue][AUTO_INCREMENT] [UNIQUE [KEY]](暂不支持) [[PRIMARY] KEY] (暂不支持)[COMMENT 'string']table_options:[SET] table_option [[,] table_option]...table_option:[DEFAULT] {CHARACTER SET | CHARSET} [=] charsetname| [DEFAULT] COLLATE [=] collationname| COMMENT [=] 'string'| COMPRESSION [=] '{NONE | LZ4_1.0 | LZO_1.0 | SNAPPY_1.0 |ZLIB_1.0}'| EXPIRE_INFO [=] (expr)| REPLICA_NUM [=] num| TABLE_ID [=] id| BLOCK_SIZE [=] size| USE_BLOOM_FILTER [=] {True | False}| PROGRESSIVE_MERGE_NUM [=] num| TABLEGROUP [=] tablegroupname| PRIMARY_ZONE [=] zone| AUTO_INCREMENT [=] numpartition_options:PARTITION BYHASH(expr)| KEY(column_list)[PARTITIONS num][partition_definition ...]partition_definition:COMMENT [=] 'commenttext' (暂不支持)
增加列
ALTER TABLE tblnameADD [COLUMN] colname data_type[NOT NULL | NULL][DEFAULT defaultvalue];
- data_type请参见数据类型章节
修改列属性
ALTER TABLE tblnameALTER [COLUMN] colname[SET DEFAULT literal| DROP DEFAULT];
修改列类型
ALTER TABLE tblnameMODIFY colname column_definition;
删除列
ALTER TABLE tblnameDROP [COLUMN] colname;
- 不允许删除主键列或者包含索引的列。
表重命名
ALTER TABLE tblnameRENAME TO newtblname;
列重命名
ALTER TABLE tblnameCHANGE [COLUMN] oldcolname newcolname column_definition;
注意:
- 对于varchar类型的列,只允许将varchar的长度变大,不允许减小。
- 在 OceanBase 0.5 里列重命名是用 ALTER TABLE tblname RENAME [COLUMN] oldcolname TO newcolname,OceanBase 1.0的实现与MySQL兼容。
例1:
#把表t2的字段d改名为c,并同时修改了字段类型ALTER TABLE t2 CHANGE COLUMN d c CHAR(10);
设置过期数据删除
ALTER TABLE tblnameSET EXPIRE_INFO [ = ] expr;
例2:
CREATE TABLE example_1(custid INT, thedate TIMESTAMP, cost INT, PRIMARY KEY(custid, thedate)) EXPIRE_INFO = (thedate < date_sub(merging_frozen_time(), INTERVAL 2 DAY)),USE_BLOOM_FILTER = FALSE;
(thedate < date_sub(merging_frozen_time(), INTERVAL 2 DAY)),表示删除(过期)thedate字段值为冻结时间2天前的数据,删除数据动作在数据合并时候真正执行。
修改过期条件
# 删除(过期)thedate字段值为1天前的数据。alter table example_1 set EXPIRE_INFO = (thedate < date_sub(merging_frozen_time(), INTERVAL 1 DAY))
设置Partition表BLOCK大小
ALTER TABLE tblnameSET BLOCK_SIZE [=] blocksize;
设置该表的副本数
ALTER TABLE tblnameSET REPLICA_NUM [=] num;
这里是指表的副本总数多少。
设置该表的压缩方式
ALTER TABLE tblnameSET COMPRESSION [=] '{NONE | LZ4_1.0 | LZO_1.0 | SNAPPY_1.0 | ZLIB_1.0}';
设置是否使用BloomFilter
ALTER TABLE tblnameSET USE_BLOOM_FILTER [=] {True | Flase};
设置注释信息
ALTER TABLE tblnameSET COMMENT [=] 'commentstring';
设置渐进合并步数
ALTER TABLE tblnameSET PROGRESSIVE_MERGE_NUM [=] num;
此功能是设置渐近合并步数,PROGRESSIVE_MERGE_NUM现在在限制是1~64。
设置表的ZONE属性
ALTER TABLE tblnamezone_specification...;zone_specification:PRIMARY_ZONE [=] zone
修改AUTO_INCREMENT字段的起始值
可在create talbe时指定AUTO_INCREMENT的起始值,也可用alter table tbl_name AUTO_INCREMENT=n命令来重设自增的起始值,但是如果设置的n比AUTO_INCREMENT字段的当前值小的话,执行的sql不会报错,但是不会生效!
Oceanbase>create table t1(id int auto_increment primary key,name varchar(10)) auto_increment=100;Query OK, 0 rows affected (0.10 sec)Oceanbase>alter table t1 auto_increment=50;Query OK, 0 rows affected (0.04 sec)#用alter table语句把t1表的auto_increment起始值调整为50,由于50小于100,修改无效Oceanbase>show create table t1;+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| Table | Create Table |+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| t1 | CREATE TABLE `t1` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(10) DEFAULT NULL,PRIMARY KEY (`id`)) AUTO_INCREMENT = 100 DEFAULT CHARSET = utf8mb4 REPLICA_NUM = 3 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE |+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+Oceanbase>alter table t1 auto_increment=110;Query OK, 0 rows affected (0.03 sec)Oceanbase>show create table t1;+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| Table | Create Table |+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| t1 | CREATE TABLE `t1` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(10) DEFAULT NULL,PRIMARY KEY (`id`)) AUTO_INCREMENT = 110 DEFAULT CHARSET = utf8mb4 REPLICA_NUM = 3 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE |+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.01 sec)
最后更新:2016-11-24 11:23:47
上一篇:
CREATE TABLE__数据定义语言_SQL语法参考_云数据库 OceanBase-阿里云
下一篇:
DROP TABLE__数据定义语言_SQL语法参考_云数据库 OceanBase-阿里云
Dubbo 标签兼容能力__EDAS 中的 Dubbo 开发_开发者指南_企业级分布式应用服务 EDAS-阿里云
管理执行计划__执行计划_用户指南_E-MapReduce-阿里云
创建 Job__SchedulerX for EDAS_二方服务_企业级分布式应用服务 EDAS-阿里云
删除水印模板__水印模板接口_API使用手册_媒体转码-阿里云
Dubbo 开发注意事项__EDAS 中的 Dubbo 开发_开发者指南_企业级分布式应用服务 EDAS-阿里云
DomainGroupType__数据类型_API文档_云解析-阿里云
RDS数据源配置__数据源配置_数据同步手册_用户操作指南_大数据开发套件-阿里云
API说明__产品简介_推荐引擎-阿里云
OSS转储快速使用__快速入门_归档存储-阿里云
GetRow__API 概览_API 参考_表格存储-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云