[TOC] # 表操作 ## 创建表 使用`CREATE TABLE`语句在数据库中创建新表。 示例如下: ~~~ obclient> CREATE TABLE test (c1 int primary key, c2 VARCHAR(3)); ~~~ 更多`CREATE TABLE`语句相关的语法说明请参见《SQL 参考(MySQL 模式)》中[CREATE TABLE](https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.0/create-table)章节。 ## 查看表 使用`SHOW CREATE TABLE`语句查看建表语句。 示例如下: ~~~ obclient> SHOW CREATE TABLE test; ~~~ 使用`SHOW TABLES`语句查看指定数据库中的所有表。 示例如下: ~~~ obclient> SHOW TABLES FROM my_db; ~~~ ## 修改表 使用`ALTER TABLE`语句来修改已存在的表的结构,包括修改表及表属性、新增列、修改列及属性、删除列等。 示例如下: * 把表`test`的字段`c2`改名为`c3`,并同时修改其字段类型。 ~~~ obclient> DESCRIBE test; +-------+------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+------------+------+-----+---------+-------+ | c1 | int(11) | NO | PRI | NULL | | | c2 | varchar(3) | YES | | NULL | | +-------+------------+------+-----+---------+-------+ obclient> ALTER TABLE test CHANGE COLUMN c2 c3 CHAR(10); Query OK, 0 rows affected (0.08 sec) obclient> DESCRIBE test; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | c1 | int(11) | NO | PRI | NULL | | | c3 | char(10) | YES | | NULL | | +-------+----------+------+-----+---------+-------+ ~~~ * 增加、删除列 * 增加列前,执行`DESCRIBE test``;`命令查看表信息。 ~~~ obclient> DESCRIBE test; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | c1 | int(11) | NO | PRI | NULL | | | c2 | varchar(3) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.01 sec) ~~~ * 执行以下命令,增加`c3`列。 ~~~ obclient> ALTER TABLE test ADD c3 int; Query OK, 0 rows affected (0.08 sec) ~~~ * 增加列后,执行`DESCRIBE test;`命令查看表信息。 ~~~ obclient> DESCRIBE test; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | c1 | int(11) | NO | PRI | NULL | | | c2 | varchar(3) | YES | | NULL | | | c3 | int(11) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) ~~~ * 执行以下命令,删除`c3`列。 ~~~ obclient> ALTER TABLE test DROP c3; Query OK, 0 rows affected (0.08 sec) ~~~ * 删除列后,执行`DESCRIBE test;`命令查看表信息。 ~~~ obclient> DESCRIBE test; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | c1 | int(11) | NO | PRI | NULL | | | c2 | varchar(50) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) ~~~ * 设置表`test`的副本数,并且增加列`c5`。 ~~~ obclient> ALTER TABLE test SET REPLICA_NUM=2, ADD COLUMN c5 INT; Query OK, 0 rows affected (0.06 sec) obclient> DESCRIBE test; +-------+------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+------------+------+-----+---------+-------+ | c1 | int(11) | NO | PRI | NULL | | | c2 | varchar(3) | YES | | NULL | | | c5 | int(11) | YES | | NULL | | +-------+------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) ~~~ 更多`ALTER TABLE`语句相关的语法说明请参见《SQL 参考(MySQL 模式)》中[ALTER TABLE](https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.0/alter-table)章节。 ## 删除表 使用`DROP TABLE`语句删除表。 示例如下: ~~~ obclient> DROP TABLE test; ~~~ 或者 ~~~ obclient> DROP TABLE IF EXISTS test; ~~~ 更多`DROP TABLE`语句相关的语法说明请参见《SQL 参考(MySQL 模式)》中[DROP TABLE](https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.0/drop-table)章节。