MySQL修改表結構


在本教學中,您將了解並使用MySQL ALTER TABLE語句來更改現有表結構(如新增或刪除列,更改列屬性等)。

MySQL ALTER TABLE語句簡介

可以使用ALTER TABLE語句來更改現有表的結構。 ALTER TABLE語句可用來新增列刪除列,更改列的資料型別新增主鍵重新命名表等等。 以下說明了ALTER TABLE語句語法:

ALTER TABLE table_name action1[,action2,…]

要更改現有表的結構:

  • 首先,在ALTER TABLE子句之後指定要更改的表名稱。
  • 其次,列出一組要應用於該表的操作。操作可以是新增新列,新增主鍵,重新命名表等任何操作。ALTER TABLE語句允許在單個ALTER TABLE語句中應用多個操作,每個操作由逗號()分隔。

讓我們建立一個用於練習ALTER TABLE語句的新表。

我們將在範例資料庫(yiibaidb)中建立一個名為tasks的新表。 以下是建立tasks表的指令碼。

DROP TABLE IF EXISTS tasks;

CREATE TABLE tasks (
    task_id INT NOT NULL,
    subject VARCHAR(45) NULL,
    start_date DATE NULL,
    end_date DATE NULL,
    description VARCHAR(200) NULL,
    PRIMARY KEY (task_id),
    UNIQUE INDEX task_id_unique (task_id ASC)
);

使用MySQL ALTER TABLE語句更改列

使用MySQL ALTER TABLE語句來設定列的自動遞增屬性

假設您希望在任務表中插入新行時,task_id列的值會自動增加1。那麼可以使用ALTER TABLE語句將task_id列的屬性設定為AUTO_INCREMENT,如下所示:

ALTER TABLE tasks
CHANGE COLUMN task_id task_id INT(11) NOT NULL AUTO_INCREMENT;

可以通過在tasks表中插入一些行資料來驗證更改。

INSERT INTO tasks(subject,
                  start_date,
                  end_date,
   description)
VALUES('Learn MySQL ALTER TABLE',
       Now(),
       Now(),
      'Practicing MySQL ALTER TABLE statement');

INSERT INTO tasks(subject,
                  start_date,
                  end_date,
           description)
VALUES('Learn MySQL CREATE TABLE',
       Now(),
       Now(),
      'Practicing MySQL CREATE TABLE statement');

您可以查詢資料以檢視每次插入新行時task_id列的值是否增加1

SELECT 
    task_id, description
FROM
    tasks;

使用MySQL ALTER TABLE語句將新的列新增到表中

由於新的業務需求,需要新增一個名為complete的新列,以便在任務表中儲存每個任務的完成百分比。 在這種情況下,您可以使用ALTER TABLE將新列新增到tasks表中,如下所示:

ALTER TABLE tasks 
ADD COLUMN complete DECIMAL(2,1) NULL
AFTER description;

使用MySQL ALTER TABLE從表中刪除列

假設您不想將任務的描述儲存在tasks表中了,並且必須將其刪除。 以下語句允許您刪除tasks表的description列:

ALTER TABLE tasks
DROP COLUMN description;

使用MySQL ALTER TABLE語句重新命名表

可以使用ALTER TABLE語句重新命名表。請注意,在重新命名表之前,應該認真考慮以了解更改是否影響資料庫和應用程式層,不要因為重新命名表之後,應用程式因未找到資料庫表而出錯。

以下語句將tasks表重新命名為work_items表:

ALTER TABLE tasks
RENAME TO work_items;

在本教學中,您學習了如何使用MySQL ALTER TABLE語句來更改現有的表結構並重新命名表。