01/10/2018, 16:40

Bài 18: Câu lệnh DELETE trong MySQL

Để xóa dữ liệu từ một bảng, bạn sử dụng câu lệnh MySQL DELETE. MySQL DELETE cho phép bạn loại bỏ những bản ghi từ một bảng duy nhất hoặc từ nhiều bảng. 1. Xóa dữ liệu từ một bảng. Để xóa dữ liệu từ một bảng duy nhất, bạn sử dụng câu lệnh DELETE sau đây: DELETE FROM [Tên_Bảng] [WHERE ] ...

Để xóa dữ liệu từ một bảng, bạn sử dụng câu lệnh MySQL DELETE. MySQL DELETE cho phép bạn loại bỏ những bản ghi từ một bảng duy nhất hoặc từ nhiều bảng.

1. Xóa dữ liệu từ một bảng.

Để xóa dữ liệu từ một bảng duy nhất, bạn sử dụng câu lệnh DELETE sau đây:

DELETE FROM [Tên_Bảng]   
[WHERE ] [ORDER BY ...] [LIMIT rows]

Trong đó:

Đầu tiên bạn cần xác định một tên bảng sau mênh đề DELETE FROM để xóa dữ liệu tại bảng nào.

Mệnh đề WHERE sử dụng một điều kiện để xác định số bản ghi mà bạn muốn xóa. Nếu một bản ghi đáp ứng các điều kiện WHERE, nó sẽ bị xóa vĩnh viễn khỏi bảng. Nếu bạn không sử dụng mệnh đề WHERE, Mặc định tất cả các bản ghi trong bảng sẽ bị xóa.

Câu lệnh DELETE trả về số hàng bị xóa theo quy định của hàm ROW_COUNT().

Chúng ta sẽ sử dụng bảng employees trong CSDL mẫu để thực hiện một số ví dụ như sau.

Ví dụ: Xóa tất cả các bản ghi có officeCode=1

DELETE FROM employees 
WHERE officeCode = 1;

Để xóa tất cả các bản ghi từ bảng nhân viên, bạn sử dụng câu lệnh DELETE không có mệnh đề WHERE như sau:

DELETE FROM employees;

Ngay lập tức các bản ghi trong bảng employees sẽ bị xóa !

2. Xóa dữ liệu từ nhiều bảng.

Để xóa các bản ghi từ nhiều bảng, bạn sử dụng một trong các lệnh DELETE sau.

DELETE [Tên_Bảng_1],[Tên_Bảng_2],...
FROM [Bảng_Tham_Chiếu]   
[WHERE ]
 
DELETE FROM [Tên_Bảng_1],[Tên_Bảng_2],...
USING [Bảng_Tham_Chiếu]
[WHERE ]

Trong đó:

  • Cả hai lệnh DELETE đều cho phép xóa các bản ghi từ nhiều bảng.
  • Câu lênh DELETE đầu tiên sử dụng mệnh đề FROM trong khi lệnh còn lại sử dụng mệnh đề USING.
  • Mệnh đề WHERE được dùng để xác định số bản ghi được phép xóa.
  • Cẩ hai câu lệnh đều trả về số bản ghi đã xóa từ nhiều bảng.

Chú ý: Nếu bạn bỏ qua điều kiện trong mệnh đề WHERE thì mặc đinh các bản ghi trong các bảng đều bị xóa. Nếu điểu kiện chỉ được xác định cho một bảng hoặc một nhóm bảng có quan hệ thì các bảng còn lại được hiểu là không có điều kiện sẽ bị xóa hết.

Ví dụ: Xóa toàn bộ dữ liệu trong hai bảng customers và suppliers

DELETE suppliers, 
    customers
FROM suppliers, 
 customers

Sau khi thực hiện lệnh thì toàn bộ dữ liệu trong hai bảng sẽ bị xóa hết !

Ví dụ: Xóa các bản ghi trong hai bảng riêng bảng khách hàng phải phù hợp với điều kiện khách hàng này tới từ USA.

DELETE suppliers, 
    customers
FROM suppliers, 
 customers
WHERE customers.country='USA'

Sau khi thực hiện lệnh thì dữ liệu trong bảng customers chỉ xóa các bản ghi có country='USA' trong khi đó các bản ghi trong bảng suppliers sẽ bị xóa hết.

Tiếp tục ta sẽ thêm một cột country cho bảng suppliers để lưu trữ dữ liệu quốc gia của Nhà cung cấp.

ALTER TABLE suppliers 
ADD COLUMN country CHAR(255) NOT NULL

Đồng thời ta sẽ thêm hai nhà cung cấp khác tới từ USA.

INSERT INTO suppliers(name,phone,address,email,country) 
VALUES ('HostGator','(866) 964 - 2867','Houston, TX 77092 United States of America','sale1@hostgator.com','USA')

Ví dụ: Xóa các khách hàng và Nhà cung cấp tới từ USA.

DELETE suppliers, 
    customers
FROM suppliers, 
 customers
WHERE customers.country='USA' AND suppliers.country='USA'

Chúng ta hãy xem sét hai bảng sau officces và employees.

Yêu cầu: Mỗi khi tôi xóa bỏ một văn phòng thì đồng thời tôi sẽ xóa hết các nhân viên đã làm việc tại văn phòng đó.

Ví dụ: Tôi muốn xóa văn phòng trong bảng offices có officeCode=1 và tất cả các nhân viên trong bảng employees có officeCode=1.

DELETE employees, 
    offices 
FROM employees, 
 offices 
WHERE employees.officeCode = offices.officeCode  AND 
      offices.officeCode = 1

P/s: Trong trường hợp này tôi cần một dàng buộc đảm bảo tính toàn vẹn dữ liệu employees.officeCode = offices.officeCode dựa vào điều kiện này MySQL chỉ xóa những cái gì thỏa mãn với điều kiện mà thôi.

3. Tổng kết

Chúng ta đã được học câu lênh SELECT, INSERT, UPDATE và hôm nay chúng ta đã được học DELETE một trong 4 thành phần quan trọng bậc nhất trong MySQL. Hy vọng với các bài viết này sẽ giúp các bạn dễ dàng thao tác và quản lý MySQL hiệu quả.

Trần Trung Dũng

15 chủ đề

2610 bài viết

Cùng chủ đề
0