5. PHÁT BIỂU SQL
5.9. Phát biểu SQLd ạng DELETE
Với phát biểu SQL dạng DELETE thì đơn giản hơn. Khi thực hiện lệnh xoá mẩu tin trong bảng chúng ta chỉ cần quan tâm đến tên bảng, và mệnh đề WHERE để xoá với những mẩu tin đã chọn lọc nếu có. Cú pháp của Delete:
Delete from <table name> Where <condition>
Với mệnh đề WHERE giống nhƣ bất kỳ mệnh đề WHERE nào trong phát biểu SELECT hay UPDATE và INSERT của bất kỳứng dụng cơ sở dữ liệu nào có sử dụng SQL.
Conditions có thể là phép toán giữa các cột và giá trị, nhƣng cũng có thể giá trị là kết
quả trả về từ một phát biểu SELECT khác.
Ghi chú: Không có khái niệm xóa giá trị trong một cột, vì xóa giá trị một cột đồng nghĩa
với cập nhật cột đó bằng giá trị rỗng.
Ví dụ 8-19: Xóa mẩu tin với phát biểu SQL dạng DELETE
/* Xoá mẩu tin từ bảng với điều kiện */
Delete from tblCustomers Where CustName is null
Trong trƣờng hợp có ràng buộc về quan hệ của dữ liệu, thì xóa mẩu tin phải tuân thủ
theo quy tắc: Xoá mẩu tin con trƣớc rồi mới xoá mẩu tin cha.
Chẳng hạn, trong trƣờng hợp ta có 2 bảng: hợp đồng bán hàng (tblOrders) và hợp đồng bán hàng chi tiết (tblOrderDetails).
Để xoá một hợp đồng bạn cần xóa mẩu tin trong bảng tblOrders trƣớc rồi mới đến các mẩu tin trong bảng tblOrderDetails.
Ví dụ 8-20: Xoá mẩu tin với Delete
/* Xoá mẩu tin từ bảng con */
Delete from tblOrderDetails where OrderID=123
/* Xoá mẩu tin từ bảng cha */
Delete from tblOrders where OrderID=123
Bạn có thể thực hiện một phát biểu SQL dạng DELETE với điều kiện trong mệnh đề
Trang 140 lực trong cơ sở dữ liệu MySQL phiên bản 8.1 trở về sau hay trong cơ sở dữ liệu SQL Server và Oracle.
Ví dụ 8-21: Xoá mẩu tin theo quy tắc có ràng buộc quan hệ
/* Xoá mẩu tin từ bảng với điều kiện lấy giá trị từ bảng khác */
Delete from tblOrderDetails where ItemID in (select ItemID from tblItems where ItemName like 'IT%')