MYSQL – THAY ĐỔI, THẢ, ĐỔI TÊN, SỬA ĐỔI
Lệnh ALTER là gì?
Như câu nói đi Thay đổi là hằng số duy nhất
Với thời gian, yêu cầu kinh doanh cũng thay đổi. Khi yêu cầu kinh doanh thay đổi, thiết kế cơ sở dữ liệu cũng cần thay đổi.
MySQL cung cấp THAY ĐỔI chức năng giúp chúng ta kết hợp các thay đổi đối với thiết kế cơ sở dữ liệu hiện có.
Lệnh thay đổi được sử dụng để sửa đổi cơ sở dữ liệu, bảng, dạng xem hoặc các đối tượng cơ sở dữ liệu khác hiện có có thể cần thay đổi trong vòng đời của cơ sở dữ liệu.
Giả sử rằng chúng ta đã hoàn thành thiết kế cơ sở dữ liệu và nó đã được triển khai. Người dùng cơ sở dữ liệu của chúng tôi đang sử dụng nó và sau đó họ nhận ra một số thông tin quan trọng đã bị bỏ sót trong giai đoạn thiết kế. Họ không muốn mất dữ liệu hiện có mà chỉ muốn kết hợp thông tin mới. Lệnh thay đổi có ích trong những tình huống như vậy. Chúng ta có thể sử dụng lệnh thay đổi để thay đổi kiểu dữ liệu của trường từ chuỗi thành số, thay đổi tên trường thành tên mới hoặc thậm chí thêm cột mới vào bảng.
Thay đổi – cú pháp
Cú pháp cơ bản được sử dụng để thêm một cột vào bảng đã có sẵn được hiển thị bên dưới
ALTER TABLE `table_name` ADD COLUMN `column_name` `data_type`;
tại ĐÂY
- “ALTER BẢNG `tên_bảng`” là lệnh cho biết MySQL máy chủ sửa đổi bảng có tên `table_name`.
- “THÊM CỘT `tên_cột` `loại_dữ liệu`” là lệnh cho biết MySQL máy chủ để thêm một cột mới có tên `column_name` với kiểu dữ liệu `data_type'.
Giả sử Myflix đã giới thiệu tính năng lập hóa đơn và thanh toán trực tuyến. Để thực hiện mục đích đó, chúng tôi được yêu cầu thêm một trường cho số thẻ tín dụng vào bảng thành viên của mình. Chúng tôi có thể sử dụng lệnh ALTER để thực hiện điều đó. Trước tiên, hãy xem cấu trúc của bảng thành viên trước khi thực hiện bất kỳ sửa đổi nào. Tập lệnh được hiển thị bên dưới giúp chúng tôi thực hiện điều đó.
SHOW COLUMNS FROM `members`;
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(350) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
Chúng ta có thể sử dụng tập lệnh hiển thị bên dưới để thêm trường mới vào bảng thành viên.
ALTER TABLE `members` ADD COLUMN `credit_card_number` VARCHAR(25);
Thực thi đoạn script trên trong MySQL chống lại Myflixdb thêm một cột mới có tên là số thẻ tín dụng vào bảng thành viên với VARCHAR là kiểu dữ liệu. Thực thi tập lệnh show columns cho chúng ta kết quả sau.
SHOW COLUMNS FROM `members`;
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(350) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL | |||
credit_card_number | varchar(25) | YES |
Như bạn có thể thấy từ kết quả trả về, số thẻ tín dụng đã được thêm vào bảng thành viên. Dữ liệu chứa trong dữ liệu của thành viên không bị ảnh hưởng khi thêm cột mới.
LỆNH THẢ LÀ GÌ?
Lệnh DROP được sử dụng để
- Xóa cơ sở dữ liệu khỏi MySQL máy chủ
- Xóa một đối tượng (như Bảng, Cột) khỏi cơ sở dữ liệu.
Bây giờ chúng ta hãy xem các ví dụ thực tế sử dụng lệnh DROP.
Trong ví dụ trước về Lệnh Thay đổi, chúng tôi đã thêm một cột có tên số thẻ tín dụng vào bảng thành viên.
Giả sử chức năng thanh toán trực tuyến sẽ mất một thời gian và chúng tôi muốn XÓA cột thẻ tín dụng
Chúng ta có thể sử dụng đoạn mã sau
ALTER TABLE `members` DROP COLUMN `credit_card_number`;
Việc thực thi đoạn script trên sẽ loại bỏ cột credit_card_number khỏi bảng thành viên
Bây giờ chúng ta hãy xem các cột trong bảng thành viên để xác nhận xem cột của chúng tôi có bị loại bỏ hay không.
SHOW COLUMNS FROM `members`;
Thực thi đoạn script trên trong MySQL workbench so với myflixdb cung cấp cho chúng ta kết quả sau.
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(350) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
Lưu ý rằng số thẻ tín dụng đã bị loại khỏi danh sách trường.
DROP BẢNG
Cú pháp DROP một bảng từ Cơ sở dữ liệu như sau -
DROP TABLE `sample_table`;
Hãy xem một ví dụ
DROP TABLE `categories_archive`;
Thực hiện đoạn mã trên sẽ xóa bảng có tên ` categories_archive ` khỏi cơ sở dữ liệu của chúng tôi.
LỆNH ĐỔI TÊN LÀ GÌ?
Lệnh đổi tên được sử dụng để thay đổi tên của đối tượng cơ sở dữ liệu hiện có (như Bảng, Cột) thành tên mới.
Đổi tên bảng không làm mất bất kỳ dữ liệu nào có trong bảng đó.
Cú pháp: -
Lệnh đổi tên có cú pháp cơ bản như sau.
RENAME TABLE `current_table_name` TO `new_table_name`;
Giả sử chúng ta muốn đổi tên bảng movierentals thành movie_rentals, chúng ta có thể sử dụng tập lệnh hiển thị bên dưới để đạt được điều đó.
RENAME TABLE `movierentals` TO `movie_rentals`;
Việc thực thi đoạn script trên sẽ đổi tên bảng `movierentals` thành `movie_rentals`.
Bây giờ chúng ta sẽ đổi tên bảng movie_rentals về tên ban đầu của nó.
RENAME TABLE `movie_rentals` TO `movierentals`;
THAY ĐỔI TỪ KHÓA
Thay đổi từ khóa cho phép bạn
- Thay đổi tên cột
- Thay đổi kiểu dữ liệu cột
- Thay đổi các ràng buộc của cột
Hãy xem một ví dụ. Trường tên đầy đủ trong bảng thành viên có kiểu dữ liệu varchar và có chiều rộng 150.
SHOW COLUMNS FROM `members`;
Thực thi đoạn script trên trong MySQL workbench so với myflixdb cung cấp cho chúng ta kết quả sau.
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
full_names | varchar(150) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
Giả sử chúng ta muốn
- Thay đổi tên trường từ “full_names” thành “fullname
- Thay đổi nó thành kiểu dữ liệu char có chiều rộng 250
- Thêm ràng buộc NOT NULL
Chúng ta có thể thực hiện điều này bằng cách sử dụng lệnh thay đổi như sau -
ALTER TABLE `members` CHANGE COLUMN `full_names` `fullname` char(250) NOT NULL;
Thực thi đoạn script trên trong MySQL workbench so với myflixdb và sau đó thực thi tập lệnh hiển thị cột được đưa ra ở trên sẽ cho kết quả sau.
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
fullnames | char(250) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
SỬA ĐỔI TỪ KHÓA
Từ khóa MODIFY cho phép bạn
- Sửa đổi kiểu dữ liệu cột
- Sửa đổi các ràng buộc cột
Trong ví dụ THAY ĐỔI ở trên, chúng ta phải thay đổi tên trường cũng như các chi tiết khác. Việc bỏ tên trường khỏi câu lệnh CHANGE sẽ gây ra lỗi. Giả sử chúng ta chỉ quan tâm đến việc thay đổi kiểu dữ liệu và các ràng buộc trên trường mà không ảnh hưởng đến tên trường, chúng ta có thể sử dụng từ khóa MODIFY để thực hiện điều đó.
Đoạn script bên dưới thay đổi độ rộng của trường “fullname” từ 250 thành 50.
ALTER TABLE `members`MODIFY `fullname` char(50) NOT NULL;
Thực thi đoạn script trên trong MySQL workbench so với myflixdb và sau đó thực thi tập lệnh show columns được đưa ra ở trên sẽ cho kết quả như bên dưới.
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
fullnames | char(50) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
SAU TỪ KHÓA
Giả sử chúng ta muốn thêm một cột mới vào một vị trí cụ thể trong bảng.
Chúng ta có thể sử dụng lệnh thay đổi cùng với từ khóa SAU.
Đoạn script bên dưới thêm “date_of_registration” ngay sau ngày sinh trong bảng thành viên.
ALTER TABLE `members` ADD `date_of_registration` date NULL AFTER `date_of_birth`;
Thực thi đoạn script trên trong MySQL workbench so với myflixdb và sau đó thực thi tập lệnh show columns được đưa ra ở trên sẽ cho kết quả như bên dưới.
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
membership_number | int(11) | NO | PRI | NULL | auto_increment |
fullnames | char(50) | NO | NULL | ||
gender | varchar(6) | YES | NULL | ||
date_of_birth | date | YES | NULL | ||
date_of_registration | date | YES | NULL | ||
physical_address | varchar(255) | YES | NULL | ||
postal_address | varchar(255) | YES | NULL | ||
contact_number | varchar(75) | YES | NULL | ||
varchar(255) | YES | NULL |
Tổng kết
- Lệnh thay đổi được sử dụng khi chúng ta muốn sửa đổi cơ sở dữ liệu hoặc bất kỳ đối tượng nào có trong cơ sở dữ liệu.
- Lệnh drop được sử dụng để xóa cơ sở dữ liệu khỏi MySQL máy chủ hoặc các đối tượng trong cơ sở dữ liệu.
- Lệnh đổi tên được sử dụng để đổi tên bảng thành tên bảng mới.
- Từ khóa Change cho phép bạn thay đổi tên cột, kiểu dữ liệu và các ràng buộc
- Từ khóa Sửa đổi cho phép bạn sửa đổi kiểu dữ liệu cột và các ràng buộc
- Từ khóa After dùng để xác định vị trí của một cột trong bảng