有多種方法可以使用 SQL 陳述式來修改分區表格;可以使用 ALTER TABLE
陳述式的分區擴充功能來新增、刪除、重新定義、合併或分割現有的分區。 還有一些方法可以取得有關分區表格和分區的資訊。 我們將在後續章節中討論這些主題。
有關依
RANGE
或LIST
分區的表格的分區管理資訊,請參閱第 26.3.1 節「RANGE 和 LIST 分區的管理」。有關管理
HASH
和KEY
分區的討論,請參閱第 26.3.2 節「HASH 和 KEY 分區的管理」。有關 MySQL 8.4 中提供的取得分區表格和分區資訊的機制討論,請參閱第 26.3.5 節「取得分區資訊」。
有關對分區執行維護操作的討論,請參閱第 26.3.4 節「分區維護」。
分區表格的所有分區都必須具有相同數量的子分區;表格建立後就無法變更子分區。
若要變更表格的分區架構,只需要使用具有 partition_options
選項的 ALTER TABLE
陳述式,其語法與使用 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
來移除表格的分區;請參閱第 15.1.9 節「ALTER TABLE 陳述式」。
在給定的 ALTER TABLE
陳述式中,只能使用單一的 PARTITION BY
、ADD PARTITION
、DROP PARTITION
、REORGANIZE PARTITION
或 COALESCE PARTITION
子句。 如果您(例如)想要刪除一個分區並重新組織表格的其餘分區,則必須在兩個不同的 ALTER TABLE
陳述式中執行此操作(一個使用 DROP PARTITION
,然後第二個使用 REORGANIZE PARTITION
)。
您可以使用 ALTER TABLE ... TRUNCATE PARTITION
刪除一個或多個選定分區中的所有列。