Thêm cột trong SQL Server bằng lệnh gì? Cách đổi tên cột trong SQL Server như thế nào? Hãy cùng Quantrimang.com tìm hiểu nhé!
SQL Server là một phần mềm ứng dụng cho hệ thống quản trị cơ sở dữ liệu do Microsoft phát triển. Hiện nó được sử dụng rộng rãi trong lĩnh vực này bởi mang tới những tính năng vô cùng hữu ích.
Sử dụng SQL Server, bạn có thể:
- Chèn, cập nhật, xóa các hàng trong một quan hệ dữ liệu.
- Chỉnh sửa thoải mái đối tượng trong database.
- Kiểm soát truy cập tới database.
- Bảo đảm tính nhất quán và mối quan hệ ràng buộc của database.
Lệnh ALTER trong SQL Server được dùng để tiến hành chỉnh sửa trong một bảng hiện tại. Những thay đổi có thể thực hiện là thêm một cột, xóa một cột, thay đổi kích thước, chỉnh sửa kiểu dữ liệu, thêm hoặc loại bỏ index, thêm hoặc xóa các giới hạn trong một định nghĩa bảng. Nó cũng cho phép người dùng đổi lại tên hoặc xây dựng lại các phân vùng, vô hiệu hoặc kích hoạt giới hạn và nhiều hơn thế nữa. Dưới đây là những điều bạn cần biết về lệnh ALTER trong SQL Server.
Các hướng dẫn được thực hiện trên Microsoft SQL System Sever Management Studio 18 và SQL Server 19.
Các ví dụ trong bài viết này ta sẽ sử dụng cùng một bảng dữ liệu Quantrimang sau, được tạo bằng lệnh Create table. Để xem bảng Quantrimang trong MS SSMS bạn có thể sử dụng truy vấn Select * from Quantrimang, thay Quantrimang bằng tên bảng bạn cần xem nhé.
Dưới đây là bảng Quantrimang:
-+-------------+--------------+-------------+-------+
| IDChuyenmuc | Chuyenmuccon |Chuyenmuclon | Sobai |
+-------------+--------------+-------------+-------+
| 1 | SQL Server | Lap trinh | 101 |
| 2 | Facebook | Mang xa hoi| 152 |
| 3 | Python | Lap trinh | 101 |
| 4 | JavaScript | Lap trinh | 122 |
| 5 | Chrome | Web | 94 |
| 6 | Instagram | Mang xa hoi| 165 |
+-------------+--------------+-------------+-------+
Thêm cột vào bảng trong SQL Server
Cú pháp
ALTER TABLE ten_bang
ADD ten_cot dinh_nghia_cot;
Ví dụ
ALTER TABLE Quantrimang
ADD Luotxem FLOAT(10);
Lệnh ALTER TABLE trên đây sẽ thêm cột Luotxem vào bảng Quantrimang.
Sau khi chạy lệnh trên thì đây là kết quả của mình:


Thêm nhiều cột vào bảng trong SQL Server
Cú pháp
ALTER TABLE ten_bang
ADD cot1 dinh_nghia_cot,
cot2 dinh_nghia_cot,
…
cot_n dinh_nghia_cot;
Ví dụ
ALTER TABLE Quantrimang
ADD Bientap VARCHAR(50),
Trangthai VARCHAR(50);
Lệnh ALTER TABLE ở ví dụ này sẽ thêm 2 cột là Bientap với trường VARCHAR(50) và Trangthai với trường VARCHAR(50) vào bảng Quantrimang.
Ta có kết quả như sau:
Chỉnh sửa cột trong bảng trong SQL Server
Cú pháp
ALTER TABLE ten_bang
ALTER COLUMN ten_cot kieu_cot;
Ví dụ
ALTER TABLE Quantrimang
ALTER COLUMN Trangthai VARCHAR(75) NOT NULL;
Lệnh trên sẽ sửa cột Trangthai sang kiểu dữ liệu VARCHAR(75) và không chấp nhận giá trị NULL.
Xóa cột của bảng trong SQL Server
Cú pháp
ALTER TABLE ten_bang
DROP COLUMN ten_cot;
Ví dụ
ALTER TABLE Quantrimang
DROP COLUMN Bientap;
Lệnh ALTER TABLE trên đây sẽ xóa cột Bientap khỏi bảng Quantrimang.


Đổi tên cột của bảng trong SQL Server
Có thể dùng lệnh ALTER TABLE để đổi tên cột trong bảng. Có thể dùng sp_rename nhưng Microsoft khuyến khích xóa và tạo lại bảng để kịch bản và các quy trình lưu trữ không bị hỏng.
Cú pháp
sp_rename 'ten_bang.ten_cot_cu', 'ten_cot_moi', 'COLUMN';
Ví dụ
sp_rename 'Quantrimang.Chuyenmuccon', 'Muccon','COLUMN';
Ví dụ này sử dụng sp_rename để đổi tên cột Chuyenmuccon trong bảng Quantrimang thành Muccon.


Đổi tên bảng trong SQL Server
Không thể dùng lệnh ALTER TABLE để đổi tên bảng trong SQL Server. Dù vậy bạn có thể dùng sp_rename, nhưng Microsoft khuyến khích xóa và tạo lại bảng để kịch bản và các quy trình lưu trữ không bị hỏng.
Cú pháp
sp_rename ‘ten_bang_cu’, ‘ten_bang_moi’;
Ví dụ
sp_rename 'Quantrimang','Quantrimang.com';
Lệnh này đổi tên bảng Quantrimang thành Quantrimang.com.
Thêm chỉ mục
Bạn có thể thêm chỉ mục vào cột hiện tại của bảng bằng lệnh ADD INDEX cùng với lệnh sửa côt SQL ALTER.
ALTER TABLE table_name ADD INDEX index_name [index_type] (key_part,...) [index_option] .
Ví dụ:
+----------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+-------+ | Name | varchar(255) | YES | | NULL | | | Salary | int | NO | | NULL | | | Location | varchar(255) | YES | | NULL | | | Address | varchar(50) | YES | | NULL | | | Phone | int | YES | | NULL | | +----------+--------------+------+-----+---------+-------+ 5 rows in set (0.15 sec)
Truy vấn sau thêm chỉ mục vào cột Name và Salary:
ALTER TABLE Employee ADD INDEX sample_index (Name, Salary);
Kết quả:
Kết quả sẽ được hiện như sau:
(0 rows affected)
Xác minh:
Bạn có thể xác minh các chỉ số của bảng bằng lệnh EXEC sp_helpindex như bên dưới. Nó tương đương với lệnh SHOW INDEX trong MySQL.
EXEC sp_helpindex Employee;
Giờ cấu trúc của các index được chỉnh sửa trong bảng sẽ hiện như bên dưới:
+----------+------------+--------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression | +----------+------------+--------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+ | employee | 1 | sample_index | 1 | Name | A | 0 | NULL | NULL | YES | BTREE | | | YES | NULL | | employee | 1 | sample_index | 2 | Salary | A | 0 | NULL | NULL | | BTREE | | | YES | NULL | +----------+------------+--------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+ 2 rows in set (0.32 sec)
Thêm khóa chính
Sau đây là cú pháp thêm khóa chính trên bảng hiện tại của database:
ALTER TABLE table_name ADD CONSTRAINT MyPrimaryKey PRIMARY KEY (column1, column2...);
Ví dụ:
Tạo một cột ID được đặt tên trong bảng Employee:
ALTER TABLE Employee ADD COLUMN ID INT FIRST;
Kết quả:
(0 rows affected)
Truy vấn sau tạo một khóa chính trên cột ID:
ALTER TABLE Employee ADD CONSTRAINT MyPrimaryKey PRIMARY KEY(ID);
Kết quả:
(0 rows affected)
Xác minh:
Để xác minh truy vấn trên khi bạn mô tả bảng bằng lệnh EXEC sp_help, bạn có thể quan sát PRI dựa trên trường ID trong cột Key:
EXEC sp_help employee;
Kết quả:
+----------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+-------+ | ID | int | NO | PRI | NULL | | | Name | varchar(255) | YES | MUL | NULL | | | Salary | int | NO | | NULL | | | Location | varchar(255) | YES | | NULL | | | Address | varchar(50) | YES | | NULL | | | Phone | int | YES | | NULL | | +----------+--------------+------+-----+---------+-------+ 6 rows in set (0.00 sec)
Bài trước: Khóa chính PRIMARY KEY trong SQL Server
Bài sau: Lệnh DROP TABLE trong SQL Server