返回首页

gbase数据、南大通用产品文档:GBase8aALTER TABLE

更新日期:2024年09月11日

语法格式
ALTER TABLE [vc_name.][database_name.]table_name
alter_specification [, alter_specification] ...
alter_specification:
ADD [COLUMN] column_definition [FIRST | AFTER col_name ]
| ADD [COLUMN] (column_definition,...)
| CHANGE [COLUMN] old_col_name new_col_name column_definition
| MODIFY [COLUMN] col_name column_definition
[FIRST | AFTER col_name]
| RENAME [TO] new_table_name
| DROP [COLUMN] col_name
表5- 56 参数说明
参数名称


vc_name
虚拟集群名称,可选项。
database_name
数据库名称,可选项。
ADD
[COLUMN]
(column_definition,...)
用于增加新的数据列,如果使用FIRST,则新增加的列位于
所有数据列的前面;如果使用AFTER,则新增加的列,位于
指定数据列的后面。默认不使用FIRST、AFTER,则将新增
加的列追加到末尾处。
CHANGE
[COLUMN]
old_col_name
new_col_name
column_definition
修改列名称。不支持修改列定义。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
966
参数名称


MODIFY
[COLUMN]
col_name
column_definition
FIRST
|
AFTER
col_name
修改表中存在列的位置。不支持修改列定义。
RENAME
[TO]
new_table_name
修改表名称为new_table_name。
DROP
[COLUMN]
col_name
删除表中存在的列。
注意

目前已经支持的有增加列、删除列、改表名、改列名、改变列的位
置;

不支持的有ORDER BY、
改变列的数据类型、
改变列的属性
(NOT
NULL,默认值)、改变表的字符集;

新增列的限制有:

对于新增加的列,如果设置了NOT NULL,则需要同时设置
默认值,否则报错;

不允许非EXPRESS 引擎的表与EXPRESS 表互转。
示例
示例1:增加列:
gbase> DROP TABLE IF EXISTS t;
Query OK, 0 rows affected
gbase> CREATE TABLE t (a int NOT NULL DEFAULT 1, b varchar(10));
Query OK, 0 rows affected
gbase> DESC t;
+-------+-------------+------+-----+---------+-------+
| Field | Type
| Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| a
| int(11)
| NO
|
| 1
|
|

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
967
| b
| varchar(10) | YES
|
| NULL
|
|
+-------+-------------+------+-----+---------+-------+
2 rows in set
gbase> ALTER TABLE t ADD column c varchar(10) null;
Query OK, 0 rows affected
Records: 0
Duplicates: 0
Warnings: 0
gbase> DESC t;
+-------+-------------+------+-----+---------+-------+
| Field | Type
| Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| a
| int(11)
| NO
|
| 1
|
|
| b
| varchar(10) | YES
|
| NULL
|
|
| c
| varchar(10) | YES
|
| NULL
|
|
+-------+-------------+------+-----+---------+-------+
3 rows in set
示例2:删除列。
gbase> DROP TABLE IF EXISTS t;
Query OK, 0 rows affected
gbase> CREATE TABLE t (a int NOT NULL DEFAULT 1, b varchar(10));
Query OK, 0 rows affected
gbase> DESC t;
+-------+-------------+------+-----+---------+-------+
| Field | Type
| Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| a
| int(11)
| NO
|
| 1
|
|
| b
| varchar(10) | YES
|
| NULL
|
|
+-------+-------------+------+-----+---------+-------+
2 rows in set
gbase> ALTER TABLE t DROP column b;
Query OK, 0 rows affected
Records: 0
Duplicates: 0
Warnings: 0
gbase> DESC t;
+-------+---------+------+-----+---------+-------+
| Field | Type
| Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| a
| int(11) | NO
|
| 1
|
|
+-------+---------+------+-----+---------+-------+

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
968
1 row in set
示例3:变更表名称。
gbase> SHOW TABLES;
+--------------+
| Tables_in_ty |
+--------------+
| t
|
+--------------+
1 row in set
gbase> ALTER TABLE t RENAME ttt2;
Query OK, 0 rows affected
gbase> SHOW TABLES;
+--------------+
| Tables_in_ty |
+--------------+
| ttt2
|
+--------------+
1 row in set
示例4:变更列名b 为新列名d。
gbase> CREATE TABLE t (a int not null,b varchar(10),c varchar(10));
Query OK, 0 rows affected
gbase> DESC t;
+-------+-------------+------+-----+---------+-------+
| Field | Type
| Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| a
| int(11)
| NO
|
| NULL
|
|
| b
| varchar(10) | YES
|
| NULL
|
|
| c
| varchar(10) | YES
|
| NULL
|
|
+-------+-------------+------+-----+---------+-------+
3 rows in set
gbase> ALTER TABLE t
CHANGE
b
d varchar(10);
Query OK, 0 rows affected
Records: 0
Duplicates: 0
Warnings: 0
gbase> DESC t;
+-------+-------------+------+-----+---------+-------+
| Field | Type
| Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
969
| a
| int(11)
| NO
|
| NULL
|
|
| d
| varchar(10) | YES
|
| NULL
|
|
| c
| varchar(10) | YES
|
| NULL
|
|
+-------+-------------+------+-----+---------+-------+
3 rows in set
示例5:变更列的位置至最前。
gbase> DROP TABLE IF EXISTS t;
Query OK, 0 rows affected
gbase> CREATE TABLE t(a int ,b varchar(10),c bool);
Query OK, 0 rows affected
gbase> DESC t;
+-------+-------------+------+-----+---------+-------+
| Field | Type
| Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| a
| int(11)
| YES
|
| NULL
|
|
| b
| varchar(10) | YES
|
| NULL
|
|
| c
| tinyint(1)
| YES
|
| NULL
|
|
+-------+-------------+------+-----+---------+-------+
3 rows in set
gbase> ALTER TABLE t
MODIFY b varchar(10) FIRST;
Query OK, 0 rows affected
Records: 0
Duplicates: 0
Warnings: 0
gbase> DESC t;
+-------+-------------+------+-----+---------+-------+
| Field | Type
| Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| b
| varchar(10) | YES
|
| NULL
|
|
| a
| int(11)
| YES
|
| NULL
|
|
| c
| tinyint(1)
| YES
|
| NULL
|
|
+-------+-------------+------+-----+---------+-------+
3 rows in set
示例6:变更某列的位置到指定列的后面。
gbase> ALTER TABLE t MODIFY b varchar(10) AFTER c;
Query OK, 0 rows affected
Records: 0
Duplicates: 0
Warnings: 0
gbase> DESC t;
+-------+-------------+------+-----+---------+-------+

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
970
| Field | Type
| Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| a
| int(11)
| YES
|
| NULL
|
|
| c
| tinyint(1)
| YES
|
| NULL
|
|
| b
| varchar(10) | YES
|
| NULL
|
|
+-------+-------------+------+-----+---------+-------+
3 rows in set

参数说明:指定包含CA 信息的文件的名称,其相对路径是相对于数据目录的。
该参数属于POSTMASTER 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:字符串,其中空字符串表示没有CA 文件被加载,不进行客户端证书验证。
默认值:cacert.pem

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1163

|
4 | 2016-06-02 | B
|
153 |