174
阿里云
ALTER TABLE__数据定义语言_SQL语法参考_云数据库 OceanBase-阿里云
该语句用于修改已存在的表的结构,比如:修改表及表属性、新增列、修改列及属性、删除列等。
格式
ALTER TABLE tblname
alter_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 [=] num
column_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 [=] num
partition_options:
PARTITION BY
HASH(expr)
| KEY(column_list)
[PARTITIONS num]
[partition_definition ...]
partition_definition:
COMMENT [=] 'commenttext' (暂不支持)
增加列
ALTER TABLE tblname
ADD [COLUMN] colname data_type
[NOT NULL | NULL]
[DEFAULT defaultvalue];
- data_type请参见数据类型章节
修改列属性
ALTER TABLE tblname
ALTER [COLUMN] colname
[SET DEFAULT literal| DROP DEFAULT];
修改列类型
ALTER TABLE tblname
MODIFY colname column_definition;
删除列
ALTER TABLE tblname
DROP [COLUMN] colname;
- 不允许删除主键列或者包含索引的列。
表重命名
ALTER TABLE tblname
RENAME TO newtblname;
列重命名
ALTER TABLE tblname
CHANGE [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 tblname
SET 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 tblname
SET BLOCK_SIZE [=] blocksize;
设置该表的副本数
ALTER TABLE tblname
SET REPLICA_NUM [=] num;
这里是指表的副本总数多少。
设置该表的压缩方式
ALTER TABLE tblname
SET COMPRESSION [=] '{NONE | LZ4_1.0 | LZO_1.0 | SNAPPY_1.0 | ZLIB_1.0}';
设置是否使用BloomFilter
ALTER TABLE tblname
SET USE_BLOOM_FILTER [=] {True | Flase};
设置注释信息
ALTER TABLE tblname
SET COMMENT [=] 'commentstring';
设置渐进合并步数
ALTER TABLE tblname
SET PROGRESSIVE_MERGE_NUM [=] num;
此功能是设置渐近合并步数,PROGRESSIVE_MERGE_NUM现在在限制是1~64。
设置表的ZONE属性
ALTER TABLE tblname
zone_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-阿里云