Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Khái niệm cơ bản về câu lệnh SQL Server ALTER TABLE

Bài viết này tập trung vào câu lệnh ALTER TABLE trong SQL Server và các tác vụ sau trên bảng SQL Server:

  1. Thêm một hoặc nhiều cột vào bảng hiện có.
  2. Sửa đổi một hoặc nhiều cột của bảng, cụ thể là:
    • Thêm các ràng buộc vào cột.
    • Thay đổi kiểu dữ liệu của cột.
  3. Thả cột của bảng SQL.

Với mục đích trình diễn, tôi đã tạo cơ sở dữ liệu có tên VSDatabase sẽ chèn dữ liệu của bệnh nhân. Ở đó, tôi đã thêm một bảng có tên tblPatients . Cấu trúc bảng như sau:

Sau đây là tập lệnh để tạo bảng:

Use VSDatabase
Go
create table tblpatients
(
Patient_ID varchar(10),
Patient_name varchar(50),
Address varchar(500),
City varchar(50),
AppointmentDate datetime
)

Tập lệnh sau sẽ chèn dữ liệu giả vào tblPatients bảng:

insert into tblpatients (Patient_ID,Patient_name,Address,City,AppointmentDate)
values
('OPD00001','Nisarg Upadhyay','AB-14, Akshardham Flats','Mehsana','2021-02-10'),
('OPD00002','Nirali Upadhyay','AB-14, Akshardham Flats','Mehsana','2021-02-11'),
('OPD00003','Manushi Bhatt ','B-50, Suramya Flats','Surat','2021-02-10'),
('OPD00004','Arjun Bhatt','B-50, Suramya Flats','Surat','2021-02-12'),
('OPD00005','Dixit Upadhyay','AB-14, Akshardham Flats','Mehsana','2021-02-09')

Bây giờ, chúng ta hãy hiểu câu lệnh ALTER TABLE bằng các ví dụ.

Thêm một hoặc nhiều cột vào bảng hiện có

Chúng ta có thể thêm một hoặc nhiều cột bằng lệnh ALTER TABLE. Cú pháp để thêm các cột như sau:

ALTER TABLE tbl_name ADD column_name_1 datatype, column_name_2 datatype ..

Ở đâu,

  1. tbl_name :chỉ định tên của bảng mà bạn muốn thêm cột mới.
  2. Kiểu dữ liệu Column_name_1 :chỉ định tên cột và kiểu dữ liệu của nó. Khi bạn thêm nhiều cột, mỗi cột phải được phân tách bằng dấu phẩy (,)

Ví dụ

Tôi muốn thêm một cột mới có tên first_name tới tblPatients . Để thêm cột, chúng tôi chạy truy vấn sau:

ALTER TABLE tblpatients ADD first_name VARCHAR(50)

Bây giờ chúng tôi thêm nhiều cột, middle_name last_name cột vào tblPatients bàn. Để làm điều đó, chúng tôi chạy truy vấn sau:

ALTER TABLE tblpatients ADD middle_name VARCHAR(50),last_name VARCHAR(50)

Chúng tôi có thể truy vấn information_schema.columns hoặc sys.columns bảng để kiểm tra các cột mới được thêm vào. Các truy vấn như sau:

Để truy vấn information_schema.columns :

select TABLE_NAME,COLUMN_NAME,IS_NULLABLE,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,COLLATION_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='tblpatients'

Đầu ra:

Để truy vấn Sys.columns:

select object_name(object_id) [Table Name],name,max_length from sys.columns where object_id =object_id('tblpatients')

Đầu ra:

Như bạn có thể thấy, các cột đã được thêm vào.

Sửa đổi các cột của bảng

Bây giờ chúng ta muốn khám phá việc sửa đổi các cột của một bảng. Trước tiên, chúng tôi phải hiểu cách chúng tôi có thể thay đổi tên của cột của bảng.

Thay đổi kiểu dữ liệu của bảng hiện có

Cú pháp của ALTER TABLE để thay đổi kiểu dữ liệu của cột là:

ALTER TABLE tbl_name ALTER COLUMN column_name datatype

Ở đâu,

  • tbl_name :tên của bảng mà bạn cần thay đổi kiểu dữ liệu của cột.
  • Column_name :tên cột và kiểu dữ liệu. Chúng ta phải chỉ định kiểu dữ liệu mới sau từ khóa ALTER COLUMN.

Hãy để chúng tôi thay đổi kiểu dữ liệu của cột địa chỉ. Độ dài hiện tại của cột Địa chỉ là varchar (1000). Chúng ta phải thay đổi độ dài cột thành varchar (50).

Truy vấn để sửa đổi kiểu dữ liệu như sau:

Alter table tblpatients alter column address varchar(50)

Khi chúng tôi chạy truy vấn SQL, chúng tôi nhận được lỗi sau:

Msg 2628, Level 16, State 1, Line 1
String or binary data would be truncated in table 'VSDatabase.dbo.tblpatients', column 'Address'. Truncated value: ''.

Vì vậy, trong khi giảm độ dài của cột, chúng tôi phải xem xét độ dài tối đa của bản ghi và dựa vào đó thay đổi độ dài đó. Trong trường hợp của chúng tôi, chúng tôi chạy truy vấn sau để xác định độ dài tối đa của bản ghi trong Địa chỉ cột:

select len(Address) [Maximum length of column],Address from tblpatients

Đầu ra:

Theo đầu ra, độ dài tối thiểu của cột địa chỉ phải là varchar (25).

Chạy truy vấn sau để thay đổi độ dài của cột:

Alter table tblpatients alter column address varchar(25)

Chạy truy vấn sau để xác minh độ dài:

select TABLE_NAME,COLUMN_NAME,IS_NULLABLE,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,COLLATION_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='tblpatients'

Đầu ra:

Như bạn có thể thấy, độ dài cột đã được thay đổi thành công.

Thêm ràng buộc trên cột

Chúng ta có thể thêm một ràng buộc vào cột bằng cách sử dụng câu lệnh ALTER TABLE. Cú pháp ALTER TABLE như sau:

ALTER TABLE tbl_name ALTER COLUMN column_name datatype constraint_name

Ở đâu,

  • tbl_name :tên của bảng mà bạn cần thay đổi kiểu dữ liệu của cột.
  • Column_name :tên cột và kiểu dữ liệu. Chỉ định loại dữ liệu mới sau từ khóa ALTER COLUMN.
  • Constraint_name :kiểu ràng buộc. Nó phải là bất kỳ ràng buộc nào sau đây:
    • ĐỘC ĐÁO
    • KHÔNG ĐẦY ĐỦ
    • KIỂM TRA
    • DEFAULT
    • TỪ KHÓA CHÍNH
    • TỪ KHÓA NGOẠI TỆ

Giả sử bạn muốn thêm NOT NULL ràng buộc đối với thành phố cột. Chạy ALTER TABLE sau tuyên bố:

Alter table tblpatients alter column Patient_name varchar(50) not null

Cú pháp thêm KHÓA CHÍNH ràng buộc khác nếu bạn muốn thêm khóa chính trên bệnh nhân_id cột. Để thêm ràng buộc, hãy thực hiện truy vấn sau:

Alter table tblpatients add primary key (Patient_ID)

Bạn sẽ nhận được lỗi sau:

Msg 8111, Level 16, State 1, Line 17
Cannot define PRIMARY KEY constraint on nullable column in table 'tblpatients'.
Msg 1750, Level 16, State 0, Line 17
Could not create constraint or index. See previous errors.

Để sửa lỗi, chúng tôi phải tạo ràng buộc KHÔNG ĐẦY ĐỦ trên Bệnh nhân_ID cột. Chạy truy vấn sau:

Alter table tblpatients alter column Patient_ID varchar(50) not null

Sau khi ràng buộc được thêm vào, chúng tôi thêm khóa chính bằng cách chạy truy vấn sau:

Alter table tblpatients add primary key (Patient_ID)

Khóa chính sẽ được thêm thành công.

Để xem ràng buộc trên bảng, hãy chạy truy vấn sau:

SELECT OBJECT_NAME(object_id) AS ConstraintName,
SCHEMA_NAME(schema_id) AS SchemaName,
type_desc AS ConstraintType
FROM sys.objects
WHERE type_desc LIKE '%CONSTRAINT' AND OBJECT_NAME(parent_object_id)='tblpatients'

Đầu ra:

Bằng cách này, ràng buộc khóa chính đã được tạo.

Thả một cột của bảng

Chúng ta có thể bỏ một cột bằng cách sử dụng câu lệnh ALTER TABLE. Cú pháp là:

ALTER TABLE tbl_name DROP Column column_name

Ở đâu,

  • tbl_name :tên của bảng mà bạn muốn thả một cột.
  • Column_name:cột bạn muốn xóa khỏi bảng.

Chúng tôi đã thêm first_name last_name cột vào tblPatients bàn. Do đó, chúng tôi không yêu cầu tên_bệnh nhân cột.

Để bỏ cột, hãy chạy truy vấn sau:

Alter table tblpatients drop column Patient_name

Lưu ý: Nếu bạn đang loại bỏ một cột có ràng buộc CHÍNH hoặc KEY NGOÀI, bạn phải loại bỏ ràng buộc trước khi bỏ cột.

Tóm tắt

Bài viết đã tìm hiểu mục đích của câu lệnh ALTER TABLE và các trường hợp sử dụng cơ bản. Chúng ta có thể thêm, sửa đổi và bỏ các cột của bảng, cũng như thêm các ràng buộc trong bảng bằng cách sử dụng câu lệnh ALTER TABLE. Trong bài viết tiếp theo, tôi sẽ trình bày một số tùy chọn quản lý nâng cao.

Đọc thêm

Hiểu SQL Server ALTER TABLE ADD COLUMN Statement


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đánh giá thiết lập giám sát hiệu suất cơ sở dữ liệu của bạn

  2. Cắt ngắn (không làm tròn) các vị trí thập phân trong SQL Server

  3. Cách liệt kê các tệp bên trong một thư mục với SQL Server

  4. SQL Server BẤT KỲ Người khai thác nào được giải thích

  5. Cách tăng kích thước tệp đính kèm được phép khi gửi email trong SQL Server (T-SQL)