MySQL刪除列

2019-10-16 22:57:20

在本教學中,我們將向您展示如何使用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語句從表中刪除一個或多個列。