DELETE FROM - Xóa dòng trong SQL
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:
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:
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:
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:
- UPDATE - cú pháp cập nhật dữ liệu
- INSERT INTO SELECT - Insert dữ liệu từ câu lệnh select
- INSERT INTO - cú pháp thêm dữ liệu
- SELECT UNIQUE - Select loại bỏ trùng
- SQL AS - Gán bí danh cho bảng
- SQL HAVING - Lọc kết quả theo group by