MySQL刪除列

在本教學中,我們將向您展示如何使用MySQL DROP COLUMN語句從表中刪除列。

MySQL DROP COLUMN語句簡介

在某些情況下,要從表中刪除一個或多個列。 在這種情況下,可以使用ALTER TABLE DROP COLUMN語句如下:

ALTER TABLE table
DROP COLUMN column;

下麵讓我們更詳細地學習上面的語法:

  • 首先,在ALTER TABLE子句之後,指定將要刪除的列的表。
  • 其次,將列的名稱放在DROP COLUMN子句之後。

請注意,關鍵字COLUMN是可選的,因此可以使用更短語句書寫形式,如下:

ALTER TABLE table
DROP column;

要同時從表中刪除多個列,請使用以下語法:

ALTER TABLE table
DROP COLUMN column_1,
DROP COLUMN column_2,
…;

在從表中刪除列之前,應該要記住一些重要的事情:

  • 從表中刪除列會使所有資料庫對象(如存儲過程視圖觸發器等)依賴於列無效。 例如,您可能有一個引用列的存儲過程。 刪除列時,存儲過程將變為無效。 要修復它,必須手動更改存儲過程的代碼。

  • 取決於已刪除列的其他應用程式的代碼也必須更改,這需要時間和精力。

  • 從大型表中刪除列可能會影響資料庫的性能。

MySQL DROP COLUMN示例

首先,為了演示創建一個名為posts的表。

USE testdb;

CREATE TABLE posts (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    excerpt VARCHAR(400),
    content TEXT,
    created_at DATETIME,
    updated_at DATETIME
);

第二,假設要刪除excerpt列,請使用ALTER TABLE語句如下:

ALTER TABLE posts
DROP COLUMN excerpt;

第三,要同時刪除created_atupdated_at列,請使用以下語句:

ALTER TABLE posts
DROP COLUMN created_at,
DROP COLUMN updated_at;

MySQL刪除一列是外鍵示例

如果您刪除作為外鍵的列,MySQL將發出錯誤。下麵我們來一步步演示這個想法。

首先,創建一個名為categories的表:

USE testdb;

CREATE TABLE categories (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255)
);

第二,將categories_id列添加到posts表中。

ALTER TABLE posts ADD COLUMN category_id INT NOT NULL;

第三,將category_id列引用categories表的id列作為外鍵。

ALTER TABLE posts
ADD CONSTRAINT fk_cat
FOREIGN KEY (category_id)
REFERENCES categories(id) ON DELETE CASCADE;

第四,從posts表中刪除category_id列。

ALTER TABLE posts
DROP COLUMN category_id;

MySQL發出錯誤消息:

Error Code: 1553. Cannot drop index 'fk_cat': needed in a foreign key constraint

為避免此錯誤,必須刪除外鍵約束才能刪除該列。

在本教學中,我們向您展示了如何使用MySQL DROP COLUMN語句從表中刪除一個或多個列。


上一篇: MySQL重命名表 下一篇: MySQL數據類型