174
windows
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-阿裏雲