在本教學中,我們將向您展示如何使用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,
…;
在從表中刪除列之前,應該要記住一些重要的事情:
從表中刪除列會使所有資料庫物件(如儲存過程,檢視,觸發器等)依賴於列無效。 例如,您可能有一個參照列的儲存過程。 刪除列時,儲存過程將變為無效。 要修復它,必須手動更改儲存過程的程式碼。
取決於已刪除列的其他應用程式的程式碼也必須更改,這需要時間和精力。
首先,為了演示建立一個名為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_at
和updated_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
語句從表中刪除一個或多個列。