有多種方法可以使用 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 刪除一個或多個選定分區中的所有列。