OceanBase 数据库支持新增列、修改列及其属性、删除列等。

  • 新增列,支持在表中新增列,但不支持增加主键列。

    • MySQL 模式下的新增列示例

    • Oracle 模式下的新增列示例

      1. obclient> DESCRIBE test;
      2. +-------+--------------+------+-----+---------+-------+
      3. | FIELD | TYPE | NULL | KEY | DEFAULT | EXTRA |
      4. +-------+--------------+------+-----+---------+-------+
      5. | C1 | NUMBER(38) | NO | PRI | NULL | NULL |
      6. | C2 | VARCHAR2(50) | YES | NULL | NULL | NULL |
      7. +-------+--------------+------+-----+---------+-------+
      8. 2 rows in set (0.01 sec)
      9. obclient> ALTER TABLE test ADD c3 int;
      10. Query OK, 0 rows affected (0.03 sec)
      11. obclient> DESCRIBE test;
      12. +-------+--------------+------+-----+---------+-------+
      13. | FIELD | TYPE | NULL | KEY | DEFAULT | EXTRA |
      14. +-------+--------------+------+-----+---------+-------+
      15. | C1 | NUMBER(38) | NO | PRI | NULL | NULL |
      16. | C2 | VARCHAR2(50) | YES | NULL | NULL | NULL |
      17. | C3 | NUMBER(38) | YES | NULL | NULL | NULL |
      18. +-------+--------------+------+-----+---------+-------+
      19. 3 rows in set (0.00 sec)
  • 修改列属性,支持修改列名称和列类型。

    • MySQL 模式下的修改列示例

      1. obclient> DESCRIBE test;
      2. +-------+-------------+------+-----+---------+-------+
      3. | Field | Type | Null | Key | Default | Extra |
      4. +-------+-------------+------+-----+---------+-------+
      5. | c1 | int(11) | NO | PRI | NULL | |
      6. +-------+-------------+------+-----+---------+-------+
      7. 2 rows in set (0.01 sec)
      8. obclient>ALTER TABLE test CHANGE COLUMN c2 c CHAR(60);
      9. Query OK, 0 rows affected (0.03 sec)
      10. obclient> DESCRIBE test;
      11. +-------+----------+------+-----+---------+-------+
      12. | Field | Type | Null | Key | Default | Extra |
      13. +-------+----------+------+-----+---------+-------+
      14. | c1 | int(11) | NO | PRI | NULL | |
      15. | c | char(60) | YES | | NULL | |
      16. +-------+----------+------+-----+---------+-------+
      17. 2 rows in set (0.00 sec)
    • Oracle 模式下的修改列示例

      1. obclient> DESCRIBE test;
      2. +-------+--------------+------+-----+---------+-------+
      3. | FIELD | TYPE | NULL | KEY | DEFAULT | EXTRA |
      4. +-------+--------------+------+-----+---------+-------+
      5. | C1 | NUMBER(38) | NO | PRI | NULL | NULL |
      6. | C2 | VARCHAR2(50) | YES | NULL | NULL | NULL |
      7. +-------+--------------+------+-----+---------+-------+
      8. 2 rows in set (0.01 sec)
      9. obclient> ALTER TABLE test MODIFY COLUMN c2 CHAR(60);
  • 删除列,支持删除表中的列,但不允许删除主键列或包含索引的列。

    • MySQL 模式下的删除列示例

    • Oracle 模式下的删除列示例

      1. obclient> DESCRIBE test;
      2. +-------+--------------+------+-----+---------+-------+
      3. | FIELD | TYPE | NULL | KEY | DEFAULT | EXTRA |
      4. +-------+--------------+------+-----+---------+-------+
      5. | C1 | NUMBER(38) | NO | PRI | NULL | NULL |
      6. | C2 | VARCHAR2(50) | YES | NULL | NULL | NULL |
      7. +-------+--------------+------+-----+---------+-------+
      8. obclient> ALTER TABLE test DROP COLUMN c2;
      9. Query OK, 0 rows affected (0.04 sec)
      10. obclient> DESCRIBE test;
      11. +-------+--------------+------+-----+---------+-------+
      12. | FIELD | TYPE | NULL | KEY | DEFAULT | EXTRA |
      13. +-------+--------------+------+-----+---------+-------+
      14. | C1 | NUMBER(38) | NO | PRI | NULL | NULL |
      15. +-------+--------------+------+-----+---------+-------+
      16. 1 rows in set (0.00 sec)
  • OceanBase 数据库的 MySQL 模式支持增加唯一索引和普通索引,同时还支持修改索引的属性。

    • 增加唯一索引

      OceanBase 数据库支持在创建表后为表增加唯一索引。如果创建表时同时设置了主键,OceanBase 数据库会默认为主键列创建一个唯一索引。

      增加唯一索引的示例如下:

      1. obclient> CREATE TABLE test (c1 int PRIMARY KEY, c2 VARCHAR(50));
      2. Query OK, 0 rows affected (0.04 sec)
      3. obclient> ALTER TABLE test ADD UNIQUE INDEX index_name(c2);
      4. Query OK, 0 rows affected (0.53 sec)
    • 增加普通索引

      OceanBase 数据库的 MySQL 模式支持一次增加多个索引,索引关键字用INDEXKEY均可以。

      1. obclient> CREATE TABLE test (c1 int PRIMARY KEY, c2 VARCHAR(50));
      2. Query OK, 0 rows affected (0.04 sec)
      3. obclient> ALTER TABLE test ADD INDEX myidx(c1,c2);
      4. Query OK, 0 rows affected (0.55 sec)
    • 修改索引属性

      OceanBase 数据库的 MySQL 模式支持将索引修改为可见或不可见,默认索引均可见,您可以将索引修改为不可见。

      语法如下:

  • Oracle 模式

    示例如下:

    • 增加唯一索引

      1. obclient> CREATE TABLE test (c1 int PRIMARY KEY, c2 VARCHAR(50));
      2. Query OK, 0 rows affected (0.04 sec)
      3. obclient> ALTER TABLE test ADD UNIQUE(c2);

表创建成功后,您可以更改表名。

OceanBase 数据库的 MySQL 模式和 Oracle 模式均支持重命名表。

示例如下:

  1. obclient> ALTER TABLE test RENAME TO t1;

OceanBase 数据库的 MySQL 模式支持删除表所属的表组。

MySQL 模式下删除表组的示例如下:

  1. obclient> ALTER TABLE test DROP TABLEGROUP grp1;

更多表组相关信息,请参见 章节。

OceanBase 数据库的 MySQL 模式和 Oracle 模式均支持删除表的外键。

  • MySQL 模式下删除表的外键示例