使用SQL语句修改分区表的方法有多种。可以使用ALTER TABLE语句的分区扩展来添加,删除,重新定义,合并或拆分现有分区 。还有一些方法可以获取有关分区表和分区的信息。
要更改表的分区方案,只需要使用ALTER TABLE带有partition_options选项的 语句,该 选项的语法与CREATE TABLE创建分区表所用的语法相同;此选项(也)始终以关键字开头PARTITION BY。假设以下 CREATE TABLE语句用于创建按范围分区的表:
CREATE TABLE trb3 (id INT, name VARCHAR(50), purchased DATE)
PARTITION BY RANGE( YEAR(purchased) ) (
PARTITION p0 VALUES LESS THAN (1990),
PARTITION p1 VALUES LESS THAN (1995),
PARTITION p2 VALUES LESS THAN (2000),
PARTITION p3 VALUES LESS THAN (2005)
);
要对该表进行重新分区,以便使用键将id列值作为键的基础,按键将其分为两个分区,可以使用以下语句:
ALTER TABLE trb3 PARTITION BY KEY(id) PARTITIONS 2;
这与删除表并使用创建表的效果相同,对表的结构具有相同的作用CREATE TABLE trb3 PARTITION BY KEY(id) PARTITIONS 2;。
ALTER TABLE ... ENGINE = ...仅更改表使用的存储引擎,并保持表的分区方案不变。仅当目标存储引擎提供分区支持时,该语句才会成功。您可以 ALTER TABLE ... REMOVE PARTITIONING用来删除表的分区;请参见第13.1.9节“ ALTER TABLE语句”。
重要
只有一个单一的PARTITION BY,ADD PARTITION,DROP PARTITION, REORGANIZE PARTITION,或COALESCE PARTITION子句可以在给定的使用 ALTER TABLE说明。例如,如果您希望删除一个分区并重组表的其余分区,则必须在两个单独的 ALTER TABLE语句中进行操作(一个使用DROP PARTITION,然后另一个使用 REORGANIZE PARTITION)。
您可以使用删除一个或多个选定分区中的所有行 ALTER TABLE ... TRUNCATE PARTITION。