Chỉnh sửa cấu trúc column trong SQL Server

Trong bài này mình sẽ hướng dẫn bạn cách sử dụng lệnh ALTER TABLE ALTER COLUMN để chỉnh sửa cấu trúc của column trong SQL Server, lệnh nãy hữu ích khi bạn muốn chỉnh sửa các thông số như: kiểu dữ liệu, kích thước dữ liệu, NULL và NOT NULL.

1. Thay đổi kiểu dữ liệu của column

Để thay đổi kiểu dữ liệu của column thì bạn sử dụng cú pháp sau:

ALTER TABLE table_name 
ALTER COLUMN column_name new_data_type(size);

Trường hợp table đã có dữ liệu thì bạn cần phải chọn kiểu dữ liệu mới tương thích với kiểu dũ liệu cũ, nếu không bạn sẽ gặp lỗi và hành động thất bại.

Hãy xem ví dụ dưới đây.

Giả sử ta có bảng t1 có cấu trúc như sau:

CREATE TABLE t1 (c INT);

Bây giờ bổ sung một vài dòng dữ liệu bằng lệnh INSERT (sẽ học sau).

INSERT INTO t1
    VALUES
        (1),
        (2),
        (3);

Thay đổi kiểu dữ liệu của c từ INT sang VARCHAR, lệnh này hoạt động bình thường vì từ INT có thể chuyển sang VARCHAR.

ALTER TABLE t1 ALTER COLUMN c VARCHAR (2);

Mình sẽ thêm một dòng dữ liệu mới:

INSERT INTO t1
VALUES
    ('@');

Thay đổi kiểu dữ liệu từ VARCHAR sang INT, lệnh này sẽ bị lỗi vì ký tự @ không thể chuyển sang kiểu INT.

ALTER TABLE t1 ALTER COLUMN c INT;

Lỗi: Conversion failed when converting the varchar value '@' to data type int.

2. Thay đổi kích thước của column

Tương tự như ở trên, chỉ có một lưu ý là trường hợp column đã có dữ liệu thì bạn phải cân nhắc kích thước phải tương ứng, trường hợp tăng kích thước thì không sao nhưng giảm kích thước thì phải lưu ý.

Ví dụ: Giả sử ta có table sau.

CREATE TABLE t2 (c VARCHAR(10));

Tăng kích thước của c  lên thành 50.

ALTER TABLE t2 ALTER COLUMN c VARCHAR (50);<br />

Nếu bạn giảm kích thước và bị khắc với dữ liệu có sẵn thì sẽ nhận lỗi: String or binary data would be truncated.

3. Thay đổi NULL hoặc NOT NULL cho column

Cú pháp tương tự, chỉ có lưu ý như sau: Trường hợp table đã có dữ liệu và bạn muốn set từ NULL sang NOT NULL thì phải cập nhật tất cả những dòng dữ liệu nào có giá trị NULL sang rỗng trước khi thay đổi.

Giả sử có table sau.

CREATE TABLE t3 (c VARCHAR(50));

Bước 1: Lệnh cập nhật dữ liệu từ NULL sang rỗng

UPDATE t3
SET c = ''
WHERE
    c IS NULL;

Bước 2: Thay đổi từ NULL sang NOT NULL

ALTER TABLE t3 ALTER COLUMN c VARCHAR (20) NOT NULL;

Trên là một số cách sử dụng lệnh ALTER TABLE ALTER COLUMN để thay đổi cấu trúc của column trong SQL Server.

Khóa học nên xem

Nguồn: freetuts.net