Xóa dữ liệu trong bảng MySQL

Từ khóa DELETE được dùng để xóa dữ liệu (hàng) trong bảng.

Cú pháp xóa dữ liệu trong bảng

DELETE FROM table_name
WHERE column_name = giá_trị;

Một số ví dụ

Chúng ta có một bảng sinh_vien như sau:

(Bạn có thể bấm vào đây để download câu lệnh tạo bảng như bên dưới)

Full_nameGenderAgeCity
Nguyen Thanh Nhan Nam 19 Can Tho
Pham Thu Huong Nu 20 Vinh Long
Nguyen Nhu Ngoc Nu 20 Soc Trang
Bui Thanh Bao Nam 19 Soc Trang
Le My Nhan Nu 22 Can Tho
Tan Thuc Bao Nam 35 An Giang
Trinh Giao Kim Nam 44 Bac Lieu

Xóa những sinh viên có giới tính là nam


DELETE FROM sinh_vien
WHERE Gender = "Nam";

Sau khi thực thi, bảng sinh_vien sẽ trở thành:

Full_nameGenderAgeCity
Pham Thu Huong Nu 20 Vinh Long
Nguyen Nhu Ngoc Nu 20 Soc Trang
Le My Nhan Nu 22 Can Tho

Xóa những sinh viên có giới tính nam và tuổi là 19


DELETE FROM sinh_vien
WHERE (Gender="Nam") AND (Age=19);

Sau khi thực thi, bảng sinh_vien sẽ trở thành:

Full_nameGenderAgeCity
Pham Thu Huong Nu 20 Vinh Long
Nguyen Nhu Ngoc Nu 20 Soc Trang
Le My Nhan Nu 22 Can Tho
Tan Thuc Bao Nam 35 An Giang
Trinh Giao Kim Nam 44 Bac Lieu

Lưu ý:

Đối với câu lệnh DELETE, nếu chúng ta bỏ mệnh đề WHERE thì MySQL sẽ xóa hết tất cả dữ liệu của bảng.



Câu lệnh DELETE trong MySQL được sử dụng để xóa các bản ghi hiện có từ một bảng.

Bạn có thể sử dụng mệnh đề WHERE với truy vấn DELETE để xóa các hàng đã chọn, nếu không tất cả các bản ghi sẽ bị xóa.

Cú pháp

Cú pháp cơ bản của truy vấn DELETE với mệnh đề WHERE như sau:

DELETE FROM table_name
WHERE [condition];

Bạn có thể kết hợp N điều kiện bằng cách sử dụng các toán tử AND và OR.


Ví dụ

Hãy xem xét bảng CUSTOMERS có các bản ghi sau đây:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ha Anh   |  32 | Da Nang   |  2000.00 |
|  2 | Van Ha   |  25 | Ha Noi    |  1500.00 |
|  3 | Vu Bang  |  23 | Vinh      |  2000.00 |
|  4 | Thu Minh |  25 | Ha Noi    |  6500.00 |
|  5 | Hai An   |  27 | Ha Noi    |  8500.00 |
|  6 | Hoang    |  22 | Ha Noi    |  4500.00 |
|  7 | Binh     |  24 | Ha Noi    | 10000.00 |
+----+----------+-----+-----------+----------+

Câu lệnh trong ví dụ sau sẽ xóa một khách hàng có ID là 6.

DELETE FROM CUSTOMERS
WHERE ID = 6;

Bây giờ, bảng CUSTOMERS sẽ có các bản ghi sau đây.

Xóa dữ liệu trong bảng MySQL

Nếu bạn muốn DELETE tất cả các bản ghi từ bảng CUSTOMERS, bạn không cần phải sử dụng mệnh đề WHERE và truy vấn DELETE sẽ như sau:

Bây giờ, bảng CUSTOMERS sẽ không có bất kỳ bản ghi nào.

Xóa dữ liệu trong bảng MySQL



Xóa dữ liệu trong bảng MySQL

Từ khóa XÓA là gì?

Lệnh XÓA MySQL được sử dụng để xóa các hàng không còn cần thiết từ các bảng cơ sở dữ liệu. Nó xóa toàn bộ hàng khỏi bảng và trả về số hàng đã xóa. Lệnh Xóa có ích để xóa dữ liệu tạm thời hoặc lỗi thời khỏi cơ sở dữ liệu của bạn. Lệnh DELETE có thể xóa nhiều hơn một hàng khỏi một bảng trong một truy vấn duy nhất. Điều này chứng tỏ là lợi thế khi loại bỏ số lượng lớn các hàng khỏi bảng cơ sở dữ liệu.

Khi một hàng đã bị xóa, nó không thể được phục hồi. Do đó, rất nên thực hiện sao lưu cơ sở dữ liệu trước khi xóa bất kỳ dữ liệu nào khỏi cơ sở dữ liệu. Điều này có thể cho phép bạn khôi phục cơ sở dữ liệu và xem dữ liệu sau này nếu cần.

Xóa cú pháp lệnh

Cú pháp cơ bản của lệnh xóa như dưới đây.

DELETE FROM `table_name` [WHERE condition];

ĐÂY

  • DELETE FROM `table_name` bảo máy chủ MySQL xóa các hàng khỏi bảng ..
  • [WHERE condition] là tùy chọn và được sử dụng để đặt bộ lọc giới hạn số lượng hàng bị ảnh hưởng bởi truy vấn DELETE.

Nếu mệnh đề WHERE không được sử dụng trong truy vấn XÓA, thì tất cả các hàng trong một bảng đã cho sẽ bị xóa. Trước khi chúng ta đi vào chi tiết thảo luận về lệnh XÓA, hãy chèn một số dữ liệu mẫu vào bảng phim để làm việc.

INSERT INTO  `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('The Great Dictator', 'Chalie Chaplie', 1920, 7);
INSERT INTO `movies` (`title`, `director`, `category_id`) VALUES ('sample movie', 'Anonymous', 8);
INSERT INTO  movies (`title`, `director`, `year_released`, `category_id`) VALUES ('movie 3', 'John Brown', 1920, 8);

Thực hiện kịch bản trên sẽ thêm ba (3) phim vào bảng phim. Trước khi chúng ta đi sâu hơn vào bài học của mình, chúng ta hãy lấy tất cả các bộ phim trong bảng của chúng tôi. Kịch bản hiển thị dưới đây làm điều đó.

SELECT * FROM `movies`;

Thực hiện đoạn script trên cho chúng ta kết quả như sau.

movie_iditledirectoryear_releasedcategory_id
1 Pirates of the Caribean 4 Rob Marshall 2011 1
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code Name Black Edgar Jimz 2010 NULL
5 Daddy's Little Girls NULL 2007 8
6 Angels and Demons NULL 2007 6
7 Davinci Code NULL 2007 6
9 Honey mooners John Schultz 2005 8
16 67% Guilty NULL 2012 NULL
18 The Great Dictator Chalie Chaplie 1920 7
19 sample movie Anonymous NULL 8
20 movie 3 John Brown 1920 8

 Giả sử rằng thư viện video Myflix không còn muốn thuê "Nhà độc tài vĩ đại" cho các thành viên của mình và họ muốn xóa nó khỏi cơ sở dữ liệu. Id phim của nó là 18, chúng ta có thể sử dụng tập lệnh hiển thị bên dưới để xóa hàng của nó khỏi bảng phim.

DELETE FROM `movies` WHERE `movie_id` = 18;

Thực thi đoạn script trên trong MySQL WorkBench chống lại Myflix sẽ xóa phim với id 18 khỏi bảng cơ sở dữ liệu.

Chúng ta hãy xem trạng thái hiện tại của bảng phim.

SELECT * FROM `movies`;

kết quả như sau 

movie_idtitledirectoryear_releasedcategory_id
1 Pirates of the Caribean 4 Rob Marshall 2011 1
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code Name Black Edgar Jimz 2010 NULL
5 Daddy's Little Girls NULL 2007 8
6 Angels and Demons NULL 2007 6
7 Davinci Code NULL 2007 6
9 Honey mooners John Schultz 2005 8
16 67% Guilty NULL 2012 NULL
19 sample movie Anonymous NULL 8
20 movie 3 John Brown 1920 8

CHÚ THÍCH:

  • phim có id 18 chưa được trả về trong tập kết quả truy vấn.
  • bạn không thể xóa một cột duy nhất cho một bảng. Bạn có thể xóa toàn bộ một hàng.

Giả sử chúng ta có một danh sách các bộ phim mà chúng ta muốn xóa. Chúng ta có thể sử dụng mệnh đề WHERE cùng với IN.

DELETE FROM `movies` WHERE `movie_id`  IN (20,21);

Thực thi đoạn script trên sẽ xóa phim có ID 20 và 21 khỏi bảng phim của chúng tôi.

QUY TẮC UPDATE LÀ GÌ?

Lệnh Update được sử dụng để sửa đổi các hàng trong bảng. Lệnh cập nhật có thể được sử dụng để cập nhật một trường hoặc nhiều trường cùng một lúc. Nó cũng có thể được sử dụng để cập nhật một bảng với các giá trị từ một bảng khác.

Cú pháp cơ bản của lệnh SQL Update là như dưới đây.

UPDATE `table_name` SET `column_name` = `new_value' [WHERE condition];

ĐÂY

  • UPDATE `table_name` là lệnh yêu cầu MySQL cập nhật dữ liệu trong bảng.
  • SET `column_name` = `new_value' là tên và giá trị của các trường bị ảnh hưởng bởi truy vấn cập nhật. Lưu ý, khi đặt giá trị cập nhật, các kiểu dữ liệu chuỗi phải nằm trong dấu ngoặc đơn. Giá trị số không cần phải nằm trong dấu ngoặc kép. Kiểu dữ liệu ngày phải ở trong dấu ngoặc đơn và ở định dạng 'YYYY-MM-DD'.
  • [WHERE condition] là tùy chọn và có thể được sử dụng để đặt bộ lọc giới hạn số lượng hàng bị ảnh hưởng bởi truy vấn CẬP NHẬT.

Bây giờ chúng ta hãy xem một ví dụ thực tế cập nhật dữ liệu trong bảng thành viên. Giả sử rằng số thành viên 1 và 2 của thành viên của chúng tôi có các cập nhật sau đây sẽ được thực hiện cho hồ sơ dữ liệu của họ.

Membership number Updates required
1 Changed contact number from 999 to 0759 253 532
2 Change the name to Janet Smith Jones and physical address should be updated to Melrose 123

Chúng tôi sẽ bắt đầu với việc cập nhật cho thành viên số 1 trước khi chúng tôi thực hiện bất kỳ cập nhật nào cho dữ liệu của mình, hãy truy xuất bản ghi cho số thành viên 1. Tập lệnh hiển thị bên dưới giúp chúng tôi thực hiện điều đó.

SELECT * FROM `members` WHERE `membership_number` = 1;

Thực hiện đoạn script trên cho chúng ta kết quả như sau.

embership_numberfull_namesgenderdate_of_birthphysical_addresspostal_addresscontct_numberemail
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 999

Bây giờ chúng ta hãy cập nhật số liên lạc bằng cách sử dụng tập lệnh hiển thị bên dưới.

UPDATE `members` SET `contact_number` = '0759 253 542' WHERE `membership_number` = 1;

Thực hiện tập lệnh trên cập nhật số liên lạc từ 999 đến 0759 253 532 cho số thành viên 1. Bây giờ chúng ta hãy xem bản ghi cho thành viên số 1 sau khi thực hiện tập lệnh cập nhật.

SELECT * FROM `members` WHERE `membership_number` = 1;

Thực hiện đoạn script trên cho chúng ta kết quả như sau.

membership_numberfull_namesgenderdate_of_birthphysical_addresspostal_addresscontct_numberemail
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542

Bây giờ chúng ta hãy xem các bản cập nhật cần thiết cho thành viên số 2.

membership_numberfull_namesgenderdate_of_birthphysical_addresspostal_addresscontct_numberemail
2 Smith Jones Female 23-06-1980 Park Street NULL NULL

Kịch bản sau đây giúp chúng tôi làm điều đó.

UPDATE `members` SET `full_names` = 'Janet Smith Jones', `physical_address` = 'Melrose 123' WHERE `membership_number` = 2;

Thực hiện đoạn script trên trong việc cập nhật tên đầy đủ cho thành viên số 2 thành Janet Smith Jones và địa chỉ vật lý cho Melrose 123.

membership_numberfull_namesgenderdate_of_birthphysical_addresspostal_addresscontct_numberemail
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL

Tóm lược

  • Lệnh xóa được sử dụng để xóa dữ liệu không còn cần thiết từ bảng.
  • "Mệnh đề WHERE" được sử dụng để giới hạn số lượng hàng bị ảnh hưởng bởi truy vấn DELETE.
  • Khi dữ liệu đã bị xóa, nó không thể được phục hồi, do đó chúng tôi khuyên bạn nên sao lưu trước khi xóa dữ liệu.
  • Lệnh cập nhật được sử dụng để sửa đổi dữ liệu hiện có.
  • "Mệnh đề WHERE" được sử dụng để giới hạn số lượng hàng bị ảnh hưởng bởi truy vấn CẬP NHẬT.