返回首页

gbase数据、南大通用产品文档:GBase8sVARCHAR(m,r) 数据类型

更新日期:2024年09月11日

- 111 -

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 V

onconfig.std 值
EXT_DIRECTIVES 0

0(缺省)= 关。即使 IFX_EXTDIRECTIVES 为开,也不可启用指令。
1 = 开。如果 IFX_EXTDIRECTIVES 为开,则为会话启用指令。

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 84 -
2 = 开。即使 IFX_EXTDIRECTIVES 未设置,也可使用指令。
生效
编辑 onconfig 文件并重启数据库服务器之后。
用法
EXT_DIRECTIVES 配置参数启用或禁用外部查询优化器指令的使用。通过与客户端侧
IFX_EXTDIRECTIVES 环境变量组合在一起,
使用 EXT_DIRECTIVES 配置参数启用外部指令,
如下:
IFX_EXTDIRECTIVES 环境变量的设置取代 EXT_DIRECTIVES 配置参数的设置。如果您不设
置 IFX_EXTDIRECTIVES 环境变量,
则客户端的所有会话继承数据库服务器处理外部指令的
配置。
SQL 的 SET ENVIRONMENT EXTDIRECTIVES 语句指定的设置取代(仅对于当前用户会话)
IFX_EXTDIRECTIVES 环境变量和 EXT_DIRECTIVES 配置参数二者的设置。

语法格式
ALTER TABLE [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
| CHANGE [COLUMN] old_col_name new_col_name VARCHAR(length)
| MODIFY [COLUMN] col_name column_definition
FIRST | AFTER col_name
| MODIFY [COLUMN] col_name VARCHAR(length)
FIRST | AFTER col_name
| RENAME [TO] new_table_name
| DROP [COLUMN] col_name
| DROP NOCOPIES
| SHRINK SPACE
参数说明

ADD [COLUMN] (column_definition,...):用于增加新的数据列,如果使用
FIRST,则新增加的列位于所有数据列的前面;如果使用AFTER,则新增加的
列,位于指定数据列的后面。默认不使用FIRST、AFTER,则将增加的新列追
加到末尾处。

CHANGE [COLUMN] old_col_name new_col_name column_definition:
修改列名
称。不支持修改列定义。

CHANGE [COLUMN] old_col_name new_col_name VARCHAR(length):当字段
为VARCHAR 类型时,
使用CHANGE 除修改列名称外还可以增加字段的长度。
具体使用方式及限制,参见“4.1.2.2.3 ALTER
TABLE…CHANGE|MODIFY…VARCHAR(LENGTH)”章节。

MODIFY [COLUMN] col_name column_definition COMMENT comment_value
FIRST | AFTER col_name :修改表中存在列的位置和列注释。除varchar 类型
以外,其他类型的列定义不支持修改。

MODIFY col_name VARCHAR(length) FIRST | AFTER col_name :当字段为
varchar 类型时,使用MODIFY 除修改列位置外还可以增加字段的长度。具体
使用方式及限制,参见“5.3.5.2.4.3 ALTER TABLE…CHANGE|MODIFY…
VARCHAR(LENGTH)”章节。

RENAME [TO] new_table_name:修改表名称为new_table_name。

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 625

DROP [COLUMN] col_name:删除表中存在的列。

SHRINK SPACE:释放被删除的数据文件所占的磁盘空间。
补充说明:
修改nocopies 表的语法和普通表一样,不必使用关键字NOCOPIES。
修改列顺序时如果不填写原有的列注释信息,相当于将列注释修改为空。
示例
示例1:增加列,并指定增加列的位置。
gbase> CREATE TABLE t (f_1 int);
Query OK, 0 rows affected
gbase> DESC t;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| f_1 | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set
gbase> ALTER TABLE t ADD COLUMN name1 varchar(20) AFTER f_1;
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
gbase> DESC t;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| f_1 | int(11) | YES | | NULL | |
| name1 | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set
示例2:增加列,不写AFTER 和FIRST,默认追加到末尾。

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 626
gbase> ALTER TABLE t ADD COLUMN name2 varchar(10);
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
gbase> DESC t;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| f_1 | int(11) | YES | | NULL | |
| name1 | varchar(20) | YES | | NULL | |
| name2 | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set
示例3:一次性增加多列。
gbase> ALTER TABLE t ADD COLUMN (name3 varchar(30),address varchar(40));
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
gbase> DESC t;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| f_1 | int(11) | YES | | NULL | |
| name1 | varchar(20) | YES | | NULL | |
| name2 | varchar(10) | YES | | NULL | |
| name3 | varchar(30) | YES | | NULL | |
| address | varchar(40) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
5 rows in set
示例4:删除多列。
gbase> ALTER TABLE t DROP COLUMN name3,DROP COLUMN name2;
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
gbase> DESC t;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| f_1 | int(11) | YES | | NULL | |
| name1 | varchar(20) | YES | | NULL | |
| address | varchar(40) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
3 rows in set
示例5:同时增加多列,删除一列。

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 627
gbase> ALTER TABLE t ADD COLUMN(phone varchar(20), sex int), DROP COLUMN f_1;
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
gbase> DESC t;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name1 | varchar(20) | YES | | NULL | |
| address | varchar(40) | YES | | NULL | |
| phone | varchar(20) | YES | | NULL | |
| sex | int(11) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
4 rows in set
示例6:变更表名称。
gbase> SHOW TABLES;
+----------------+
| Tables_in_test |
+----------------+
| products |
| t |
+----------------+
2 rows in set
gbase> ALTER TABLE t RENAME ttt2;
Query OK, 0 rows affected
gbase> SHOW TABLES;
+----------------+
| Tables_in_test |
+----------------+
| products |
| ttt2 |
+----------------+
2 rows in set
示例7:变更列名b 为新列名d。

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 628
gbase> CREATE TABLE t (a int DEFAULT 1,b varchar(10), c varchar(10));
Query OK, 0 rows affected
gbase> DESC t;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| a | int(11) | YES | | 1 | |
| 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 |
+-------+-------------+------+-----+---------+-------+
| a | int(11) | YES | | 1 | |
| d | varchar(10) | YES | | NULL | |
| c | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set
示例8:变更列的位置至最前。

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 629
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
示例9:变更某列的位置到指定列的后面。
gbase> ALTER TABLE t MODIFY b varchar(10) AFTER c;
Query OK, 0 rows affected
Records: 0 Duplicates: 0 Warnings: 0
gbase> DESC t;
+-------+-------------+------+-----+---------+-------+
| 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