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語句來更改現有的表結構並重命名錶。