Skip to main content

向表中添加一列

我们将使用 clickhouse-local:
假设我们有如下表:
添加一条记录:
现在查询 events 表:

添加新列

现在假设我们要新增一个名为 favoriteNumber 的列,类型为 Float64。 我们可以使用 ALTER TABLE...ADD COLUMN 子句来实现:
如果查询 events 表,将看到以下输出:
Alexey 这一行的默认值为 7,因为添加这一行时,该列还不存在。 接下来,再添加一列:
如果查询 events 表,将看到如下输出:

修改列的默认值

如果我们使用 ALTER TABLE...MODIFY COLUMN 子句将 favoriteNumber 列改为另一种类型,就会出现一些有意思的情况:
如果再次查询 events,会看到以下输出:
Tyler 的值仍为 7,这是创建该行时的默认值。 Alexey 则会使用新的默认值 99,因为创建该行时,favoriteNumber 列还不存在。 如果我们希望 Alexey 这一行立即使用当前默认值,就需要调用 OPTIMIZE TABLE ,强制将当前默认值写入磁盘:
完成后,假设我们再次修改默认值:
然后再插入一行:
最后,再查询一次 events
Tanya 使用的是新的默认值 21,而 Alexey 使用的是旧的默认值 99

控制表中列的位置

添加新列时,默认会将其追加到表末尾。 不过,我们可以使用 FIRSTAFTER 子句来控制列的位置。 例如,如果想在 name 列之后添加一个名为 favoriteColor 的列,可以这样做:
查询 events
如果我们想添加一个列 favoriteDatabase,并让它显示在列表第一位,可以这样做:
再来看看表定义:
最后修改于 2026年7月3日