Xóa column trong SQL Server

Trong bài này mình sẽ hướng dẫn bạn cách xóa một hoặc nhiều column ra khỏi table trong SQL Server, lệnh này hữu ích khi bạn muốn loại bõ những column không còn dùng tới trong database.

1. Lênh ALTER TABLE DROP COLUMN

Để xóa column ra khỏi table thì ta sư dụng lệnh ALTER TABLE DROP COLUMN với cú pháp như sau:

ALTER TABLE table_name
DROP column_name;

Trong đó:

  • table_name là bảng muốn xóa column
  • table_name là tên column muốn xóa

Bạn phải kiểm tra điều kiện ràng buộc trước khi xóa bởi vì nếu column cần xóa là khóa ngoại thì rất huy hiểm, sẽ ảnh hướng đến ràng buộc toàn vẹn. Tuy nhiên bạn yên tâm vì nếu column đó là foreign key hoặc primary key thì SQL Server sẽ không cho bạn xóa.

Nếu bạn muốn xóa một lúc nhiều column thì sử dụng cú pháp sau:

ALTER TABLE table_name
DROP column_name_1, column_name_2,...;

Danh sách các column sẽ được ngăn cách nhau bởi đấu phẩy.

2. Ví dụ xóa column trong SQL Server

Trước tiên bạn hãy tạo một table băng câu lệnh SQL sau:

CREATE TABLE sales.price_lists(
    product_id int,
    valid_from DATE,
    price DEC(10,2) NOT NULL CONSTRAINT ck_positive_price CHECK(price >= 0),
    discount DEC(10,2) NOT NULL,
    surcharge DEC(10,2) NOT NULL,
    note VARCHAR(255),
    PRIMARY KEY(product_id, valid_from)
); 

Xóa column note

Bây giờ mình muốn xóa column note ra khỏi table price_lists.

ALTER TABLE sales.price_lists
DROP COLUMN note;

Xóa column price

Column price có CHECK tên là ck_positive_price nên khi xóa column này ta phải xóa ck_positive_price trước, nếu không sẽ bị báo lỗi: The object 'ck_positive_price' is dependent on column 'price'.

Xóa Check
ALTER TABLE sales.price_lists
DROP CONSTRAINT ck_positive_price;

Xóa price
ALTER TABLE sales.price_lists
DROP COLUMN price;

Xóa column discount, surcharge

Vì hai column này không có ràng buộc gì nên xóa bình thường.

ALTER TABLE sales.price_lists
DROP COLUMN discount, surcharge;

Bạn hãy tự thực hành bằng cách xóa các column còn lại nhé, thử xóa luôn primary key xem có nhận được thông báo lôi gì không.

Khóa học nên xem

Nguồn: freetuts.net