ALTER
ALTER 可以用来修改数据库的设置,表的设置或表的元数据,包括:
- 修改数据库选项
- 添加/删除/修改列
- 设置/取消列默认值
- 重命名表
- 修改表选项
ALTER DATABASE
ALTER DATABASE 语句可以用来修改数据库的选项。
语法
ALTER DATABASE db
[SET <option_name>=<option_value> [, ...]
| UNSET <option_name> [, ...]
]
当前支持修改以下数据库选项:
ttl: 数据库中数据的默认保留时间。过期的数据会被异步删除。- 如果之前未设置 ttl,通过
ALTER设置新的 ttl 后,超过保留时间的数据将被删除。 - 如果之前已设置过 ttl,通过
ALTER修改 ttl 后,新的保留时间将立即生效,超过新保留时间的数据将被删除。 - 如果之前已设置过 ttl,通过
ALTER取消 ttl 设置后,新增的数据将不会被删除,但已被删除的数据无法恢复。
- 如果之前未设置 ttl,通过
示例
修改数据库中数据的默认保留时间
修改数据库中数据的默认保留时间为 1 天:
ALTER DATABASE db SET 'ttl'='1d';
取消数据库中数据的默认保留时间设置:
ALTER DATABASE db UNSET 'ttl';
ALTER TABLE
语法
ALTER TABLE [db.]table
[ADD COLUMN name1 type1 [options], ADD COLUMN name2 type2 [options], ...
| DROP COLUMN name
| MODIFY COLUMN name type
| MODIFY COLUMN name SET DEFAULT value
| MODIFY COLUMN name DROP DEFAULT
| MODIFY COLUMN name SET FULLTEXT INDEX [WITH <options>]
| MODIFY COLUMN name UNSET FULLTEXT INDEX
| RENAME name
| SET <option_name>=<option_value> [, ...]
]
增加列
在表中增加新列:
ALTER TABLE monitor ADD COLUMN load_15 double;
列的定义和 CREATE 中的定义方式一样。
我们可以在表中同时增加多个列:
ALTER TABLE monitor ADD COLUMN disk_usage double, ADD COLUMN disk_free double;
我们可以设置新列的位置。比如放在第一位:
ALTER TABLE monitor ADD COLUMN load_15 double FIRST;
或者放在某个已有列之后:
ALTER TABLE monitor ADD COLUMN load_15 double AFTER memory;
增加一个带默认值的 Tag 列(加入 Primary key 约束):
ALTER TABLE monitor ADD COLUMN app STRING DEFAULT 'shop' PRIMARY KEY;
移除列
从表中移除列:
ALTER TABLE monitor DROP COLUMN load_15;
后续的所有查询立刻不能获取到被移除的列。
修改列类型
修改列的数据类型
ALTER TABLE monitor MODIFY COLUMN load_15 STRING;
被修改的的列不能是 tag 列(primary key)或 time index 列,同时该列必须允许空值 NULL 存在来保证数据能够安全地进行转换(转换失败时返回 NULL)。
设置列默认值
为现有列设置默认值:
ALTER TABLE monitor MODIFY COLUMN load_15 SET DEFAULT 0.0;
设置字符串默认值:
ALTER TABLE monitor MODIFY COLUMN `status` SET DEFAULT 'active';
默认值将在插入新行时使用,当该列没有显式提供值时。
移除列的默认值:
ALTER TABLE monitor MODIFY COLUMN load_15 DROP DEFAULT;
删除默认值后,该列将使用 NULL 作为默认值。数据库只允许对可为空的列删除默认值。