DELETE FROM - Xóa dòng trong SQL

2022-11-02 13:52:22

Câu lệnh DELETE FROM trong SQL được sử dụng để xóa các bản ghi khỏi bảng.

Xin lưu ý rằng lệnh DELETE FROM không thể xóa bất kỳ hàng dữ liệu nào vi phạm FOREIGN KEY hoặc các ràng buộc khác.

Cú pháp

Cú pháp cho câu lệnh DELETE FROM như sau:

DELETE FROM "table_name"
WHERE "condition";

The WHERE clause is important here. Without specifying a condition, all records from the table will be deleted.

"Điều kiện" có thể đơn giản (chẳng hạn như "Doanh số> 500") hoặc phức tạp (chẳng hạn như từ kết quả của một truy vấn con).

Examples

Dưới đây là hai ví dụ về cách sử dụng câu lệnh DELETE FROM .

Ví dụ 1: XÓA TỪ bằng một điều kiện đơn giản

Chúng tôi sử dụng bảng sau làm điểm bắt đầu.

Table Store_Information

 Store_Name  Sales  Txn_Date 
 Los Angeles 1500  Jan-05-1999 
 San Diego 250  Jan-07-1999 
 Los Angeles 300  Jan-08-1999 
 Boston 700  Jan-08-1999 

Chúng tôi quyết định không giữ bất kỳ thông tin nào về Los Angeles trong bảng này. Để thực hiện điều này, chúng tôi gõ SQL sau:

DELETE FROM Store_Information
WHERE Store_Name = 'Los Angeles';

Bây giờ bảng trở thành,

Table Store_Information

 Store_Name  Sales  Txn_Date 
 San Diego 250  Jan-07-1999 
 Boston 700  Jan-08-1999 

Ví dụ 2: XÓA TỪ bằng cách sử dụng kết quả từ một truy vấn con

Trong ví dụ 1, tiêu chí chúng tôi sử dụng để xác định hàng nào cần xóa khá đơn giản. Chúng ta cũng có thể sử dụng một điều kiện phức tạp hơn. Dưới đây là một ví dụ trong đó chúng tôi sử dụng một truy vấn con làm điều kiện. Giả sử chúng ta có hai bảng sau:

Table Store_Information

 Store_Name  Sales  Txn_Date 
 Los Angeles 1500  Jan-05-1999 
 San Diego 250  Jan-07-1999 
 Los Angeles 300  Jan-08-1999 
 Boston 700  Jan-08-1999 

Bảng Địa lý

 Region_Name  Store_Name 
 East  Boston 
 East  New York 
 West  Los Angeles 
 West  San Diego 

Chúng tôi muốn xóa dữ liệu cho tất cả các cửa hàng ở khu vực phía Đông khỏi Store_Information (giả sử rằng một cửa hàng ở khu vực phía Đông hoặc khu vực phía Tây — cửa hàng đó không thể ở nhiều hơn một khu vực). Chúng tôi sử dụng câu lệnh SQL sau để thực hiện điều này:

DELETE FROM Store_Information
WHERE Store_Name IN
(SELECT Store_Name FROM Geography
WHERE Region_Name = 'East');

Khi thực thi, bảng Store_Information sẽ trở thành,

 Store_Name  Sales  Txn_Date 
 Los Angeles 1500  Jan-05-1999 
 San Diego 250  Jan-07-1999 
 Los Angeles 300  Jan-08-1999 

Nếu chúng ta bỏ đi mệnh đề WHERE trong lệnh DELETE FROM , chúng ta sẽ xóa tất cả các hàng khỏi bảng. Hầu hết các lần, đây không phải là những gì chúng tôi dự định làm. Để ngăn chặn điều này, cách tốt nhất trong quản lý cơ sở dữ liệu là luôn chạy câu lệnh SELECT tương ứng trước để đảm bảo các hàng được chọn là những hàng chúng ta định xóa khỏi bảng. Điều này có thể được thực hiện bằng cách thay thế "DELETE" bằng "SELECT *".

Exercises

Đối với các câu hỏi bên dưới, chúng tôi sử dụng bảng sau làm điểm bắt đầu:

Khách hàng trên bàn

 Customer_ID  Last_Name  First_Name  City  State  Join_Date 
 2  Larry  Kerr  Seattle  WA  Oct-15-2001 
 5  Aaron  Wallace  Denver  CO  Oct-18-2001 
 6  Jayson  Fortran  Raleigh  NC  Oct-24-2001 
 12  Jill  Dobbs  Buffalo  NY  Nov-15-2001 
 13  Lisa  Yamaguchi  San Diego  CA  Nov-15-2001 
 20  Ally  Smith  Seattle  WA  Nov-25-2001 
 67  Teyu  Lee  Cupertino  CA  Jan-11-2002 

1. Which of the following SQL statements is valid? (Có thể có nhiều hơn một câu trả lời)
a) DELETE * FROM Clients WHERE State = 'CO';
b) XÓA khỏi khách hàng WHERE State = 'CO';
c) XÓA KHỎI KHÁCH HÀNG HAVING State = 'CO';
d) XÓA KHỎI Khách hàng KHI Khách hàng_ID <10;

2. Có bao nhiêu hàng bị xóa sau khi câu lệnh SQL sau được thực thi?
XÓA khỏi khách hàng WHERE State = 'CO';

3. Tác dụng của SQL sau là gì?
XÓA khỏi máy khách WHERE 1 = 1;



Xem thêm:


Chia sẻ: