ALTER TABLE ALTER COLUMN trong SQL Server
Trong hướng dẫn này, bạn sẽ học cách sử dụng câu lệnh ALTER TABLE ALTER COLUMN
trong SQL Server để sửa đổi một cột của bảng.
SQL Server cho phép bạn thực hiện các thay đổi sau đối với cột hiện có của bảng:
- Thay đổi kiểu dữ liệu.
- Thay đổi kích thước.
- Thêm ràng buộc
NOT NULL
.
Thay đổi kiểu dữ liệu của cột
Để thay đổi kiểu dữ liệu của một cột, bạn sử dụng câu lệnh sau:
ALTER TABLE table_name
ALTER COLUMN column_name new_data_type(size);
Kiểu dữ liệu mới phải tương thích với kiểu cũ, nếu không, bạn sẽ gặp lỗi chuyển đổi kiểu dữ liệu trong trường hợp cột có dữ liệu và nó không chuyển đổi được.
Hãy xem ví dụ sau.
Đầu tiên, hãy tạo một bảng mới với một cột có kiểu dữ liệu là INT
:
CREATE TABLE t1 (c INT);
Thứ hai, insert một số dòng dữ liệu vào bảng:
INSERT INTO t1
VALUES
(1),
(2),
(3);
Thứ ba, thay đổi kiểu dữ liệu của cột từ INT
thành VARCHAR
:
ALTER TABLE t1 ALTER COLUMN c VARCHAR (2);
Thứ tư, chèn một dòng dữ liệu mới với dữ liệu chuỗi ký tự:
INSERT INTO t1
VALUES ('@');
Cuối cùng, sửa đổi kiểu dữ liệu của cột từ VARCHAR
trở lại thành INT
:
ALTER TABLE t1 ALTER COLUMN c INT;
SQL Server sẽ báo lỗi sau:
Conversion failed when converting the varchar value '@' to data type int.
Thay đổi kích thước của một cột
Câu lệnh sau tạo một bảng mới với một cột có kiểu dữ liệu là VARCHAR(10)
:
CREATE TABLE t2 (c VARCHAR(10));
Hãy chèn một số dữ liệu mẫu vào bảng t2:
INSERT INTO t2
VALUES
('SQL Server'),
('Modify'),
('Column')
Bạn có thể tăng kích thước của cột như sau:
ALTER TABLE t2 ALTER COLUMN c VARCHAR (50);
Tuy nhiên, khi bạn giảm kích thước của cột, SQL Server sẽ kiểm tra dữ liệu hiện có để xem liệu nó có thể chuyển đổi dữ liệu dựa trên kích thước mới hay không. Nếu chuyển đổi không thành công, SQL Server chấm dứt câu lệnh và đưa ra thông báo lỗi.
Ví dụ: nếu bạn giảm kích thước của cột c
xuống còn 5 ký tự:
ALTER TABLE t2 ALTER COLUMN c VARCHAR (5);
SQL Server sẽ báo lỗi sau:
String or binary data would be truncated.
Thêm ràng buộc NOT NULL vào một cột cho phép NULL
Câu lệnh sau tạo một bảng mới với một cột có thể NULL:
CREATE TABLE t3 (c VARCHAR(50));
Câu lệnh sau chèn một số dữ liệu vào bảng:
INSERT INTO t3
VALUES
('Nullable column'),
(NULL);
Nếu bạn muốn thêm ràng buộc NOT NULL
vào cột c
, trước tiên bạn phải cập nhật các giá trị NULL thành không null, ví dụ:
UPDATE t3
SET c = ''
WHERE
c IS NULL;
Và sau đó thêm ràng buộc NOT NULL
:
ALTER TABLE t3 ALTER COLUMN c VARCHAR (20) NOT NULL;
Trong hướng dẫn này, bạn đã học cách sử dụng câu lệnh ALTER TABLE ALTER COLUMN
trong SQL Server để sửa đổi một số thuộc tính của một cột hiện có.