列操作
seekdb 下的列操作包括尾部添加列、非尾部添加列、删除列、重命名列、重排列、修改列类型、管理列的默认值、管理约束、修改自增列值。
添加列
seekdb 下添加列的操作分为 尾部添加列 和 非尾部添加列,下文分别进行介绍。
尾部添加列
在表的尾部添加列的语法如下:
ALTER TABLE table_name ADD COLUMN column_name data_type;
相关参数说明如下:
-
table_name:指定待添加列的表的表名。 -
column_name:指定待添加列的列名。 -
data_type:指定待添加列的数据类型。
此处假设数据库中存在表 tbl1,以在表 tbl1 的尾部添加列 c1 为例介绍如何执行添加列的语句。
-
查看表 tbl1 的表结构信息
DESCRIBE tbl1;输出如下,可以看出该表中存在
id、name、age三列。+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(50) | NO | | NULL | |
| age | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+ -
在表的尾部添加列
c1,并指定该列的数据类型为 INTALTER TABLE tbl1 ADD COLUMN c1 INT; -
再次查看表 tbl1 的表结构信息
DESCRIBE tbl1;输出如下,可以看出该表的尾部新增了
c1列。+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(50) | NO | | NULL | |
| age | int(11) | YES | | NULL | |
| c1 | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
非尾部添加列
在表的非尾部添加列的语法如下:
ALTER TABLE table_name
ADD COLUMN new_column_name data_type
{FIRST | BEFORE | AFTER} column_name;
相关参数说明如下:
-
table_name:指定待添加列的表的表名。 -
new_column_name:指定待添加列的列名。 -
data_type:指定待添加列的数据类型。 -
FIRST | BEFORE | AFTER:指定待添加列的位置,可以添加在表首(FIRST)、column_name之前(BEFORE)或column_name之后(AFTER)。提示使用
FIRST将列添加到表首时,无需设置column_name,否则会执行报错。 -
column_name:指定与待添加列位置相关的列名。
假设数据库中存在表 tbl1,tbl1 表结构信息如下所示:
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(50) | NO | | NULL | |
| age | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
此处以在 tbl1 表的表首添加 c1 列,name 列前添加 c2 列,name 列后添加 c3 列为例,介绍如何执行添加列的语句。
-
在 tbl1 表的表首添加
c1列,并指定该列的数据类型为 INTALTER TABLE tbl1 ADD COLUMN c1 INT FIRST; -
在 tbl1 表的 name 列前添加
c2列,并指定该列的数据类型为 VARCHARALTER TABLE tbl1 ADD COLUMN c2 VARCHAR(50) BEFORE name; -
在 tbl1 表的 name 列后添加
c3列,并指定该列的数据类型为 VARCHAR,且约束该列不能为空ALTER TABLE tbl1 ADD COLUMN c3 VARCHAR(25) NOT NULL AFTER name; -
再次查看 tbl1 表的表结构信息
DESCRIBE tbl1;输出如下,
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| c1 | int(11) | YES | | NULL | |
| id | int(11) | NO | PRI | NULL | |
| c2 | varchar(50) | YES | | NULL | |
| name | varchar(50) | NO | | NULL | |
| c3 | varchar(25) | NO | | NULL | |
| age | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
删除列
删除列的语法如下:
ALTER TABLE table_name DROP COLUMN column_name
其中,table_name 指定待删除列所在表的表名;column_name 指定待删除列的列名。
假设数据库中存在表 tbl1,tbl1 表结构信息如下所示:
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(50) | NO | | NULL | |
| age | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
此处以删除 name 列为例介绍如何执行删除列的语句。
ALTER TABLE tbl1 DROP COLUMN name;
删除后再次执行 DESCRIBE tbl1; 命令查看 tbl1 表的表结构,输出如下,表 tbl1 中已无 name 列。
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| age | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
删除多列
语法如下:
ALTER TABLE table_name DROP COLUMN column_name1, DROP COLUMN column_name2, ...;
与删除单列相同,table_name 指定待删除列所在表的表名;column_name 指定待删除列的列名。
假设数据库中存在表 tbl1,tbl1 表结构信息如下所示:
+-------+--------------+------+------+---------+-------+
| FIELD | TYPE | NULL | KEY | DEFAULT | EXTRA |
+-------+--------------+------+------+---------+-------+
| C1 | NUMBER(30) | NO | PRI | NULL | NULL |
| C2 | VARCHAR(50) | YES | NULL | NULL | NULL |
| C3 | NUMBER(30) | YES | NULL | NULL | NULL |
| C4 | NUMBER(30) | YES | NULL | NULL | NULL |
| C5 | NUMBER(30) | YES | NULL | NULL | NULL |
+-------+--------------+------+------+---------+-------+
此处以删除 tbl1 表的中 C4、C5 列为例,介绍如何使用 ALTER TABLE table_name DROP COLUMN column_name1, column_name2, ... 删除表中的多列。
ALTER TABLE tbl1 DROP COLUMN C4, DROP COLUMN C5;
再次执行 DESCRIBE tbl1; 命令查看 tbl1 表的表结构,输出如下,表 tbl1 中已无 C4、C5 列。
+-------+--------------+------+------+---------+-------+
| FIELD | TYPE | NULL | KEY | DEFAULT | EXTRA |
+-------+--------------+------+------+---------+-------+
| C1 | NUMBER(30) | NO | PRI | NULL | NULL |
| C2 | VARCHAR(50) | YES | NULL | NULL | NULL |
| C3 | NUMBER(30) | YES | NULL | NULL | NULL |
+-------+--------------+------+------+---------+-------+
清除废弃列
清除废弃列的语法,如下所示:
ALTER TABLE TABLE_NAME FORCE;
此处以清除 tbl1 表的中 C2、C3、C4、C5 列为例,介绍如何清除表中的废弃列。
ALTER TABLE tbl1 FORCE;
重命名列
重命名列的语法有如下两种:
-
重命名列的同时修改列的数据类型
ALTER TABLE table_name CHANGE old_col_name new_col_name data_type;相关参数说明如下:
-
table_name:指定待重命名的列所在表的表名。 -
old_col_name:指定待重命名的列的列名。 -
new_col_name:指定重命名后列的列名。 -
data_type:指定待重命名的列的数据类型,您可指定为当前数据类型,也可指定将该列修改为其他数据类型,支持修改的数据类型可参见下文 修改列类型。
-
-
仅重命名列
ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name相关参数说明如下:
-
table_name:指定待重命名的列所在表的表名。 -
old_col_name:指定待重命名的列的列名。 -
new_col_name:指定重命名后列的列名。
-
假设数据库中存在表 tbl1,tbl1 表结构信息如下所示:
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(50) | NO | | NULL | |
| age | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
此处分别以修改 name 列名为 c2、修改 age 列名为 c3,并修改 age 列数据类型为 VARCHAR 为例介绍如何执行重命名列的语句。
-
修改
name列名为c2ALTER TABLE tbl1 RENAME COLUMN name TO c2; -
修改
age列名为c3,并修改age列数据类型为 VARCHARALTER TABLE tbl1 CHANGE age c3 VARCHAR(50); -
再次执行
DESCRIBE tbl1;命令查看 tbl1 表的表结构输出如下,tbl1 表中只有
id、c2、c3三列,且c3列的数据类型为 VARCHAR。+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| c2 | varchar(50) | YES | | NULL | |
| c3 | varchar(50) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+