DELETE (Transact-SQL)

Bạn đang xem: xóa sql khỏi select

XÓA (Giao dịch-SQL)

Trong bài viết này

Áp dụng cho: SQL Server (tất cả các phiên bản được hỗ trợ) Cơ sở dữ liệu Azure SQL Azure SQL Managed Instance Azure Synapse Analytics Hệ thống phân tích nền tảng (PDW)

Xóa một hoặc nhiều hàng khỏi bảng hoặc dạng xem trong SQL Server.

Quy ước về cú pháp Transact-SQL

Cú pháp

  - Cú pháp cho SQL Server và Azure SQL Database
  
[VỚI & lt; biểu_thức chung & gt; [ ,...N ] ]
XÓA BỎ
    [HÀNG ĐẦU (biểu thức) [PERCENT]]
    [ TỪ ]
    {{table_alias
      | & lt; đối tượng & gt;
      | rowet_ function_limited
      [VỚI (table_hint_limited [... n])]}
      | @table_variable
    }
    [& lt; Điều khoản OUTPUT & gt; ]
    [FROM table_source [, ... n]]
    [WHERE {& lt; search_condition & gt;
            | {[HIỆN TẠI CỦA
                   {{[GLOBAL] cursor_name}
                       | cursor_variable_name
                   }
                ]
              }
            }
    ]
    [TÙY CHỌN (& lt; Gợi ý Truy vấn & gt; [, ... n])]
[; ]
  
& lt; đối tượng & gt; :: =
{
    [server_name.database_name.schema_name.
      | tên cơ sở dữ liệu. [schema_name].
      | schema_name.
    ]
    table_or_view_name
}
 
  - Cú pháp cho Azure Synapse Analytics

[VỚI & lt; biểu_thức chung & gt; [ ,...N ] ]
XÓA [database_name. [ lược đồ ] . | lược đồ. ] tên_bảng
TỪ [database_name. [ lược đồ ] . | lược đồ. ] tên_bảng
THAM GIA {& lt; join_table_source & gt;} [, ... n]
BẬT & lt; join_condition & gt;
[WHERE & lt; search_condition & gt; ]
[TÙY CHỌN (& lt; query_options & gt; [, ... n])]
[; ]

& lt; join_table_source & gt; :: =
{
    [ tên cơ sở dữ liệu . [schema_name]. | schema_name. ] table_or_view_name [AS] table_or_view_alias
    [& lt; tableample_clause & gt;]
    | origin_table [AS] table_alias [(column_alias [, ... n])]
}
 
  - Cú pháp cho Kho Dữ liệu Song song
  
XÓA BỎ
    [TỪ [database_name. [ lược đồ ] . | lược đồ. ] tên_bảng]
    [WHERE & lt; search_condition & gt; ]
    [TÙY CHỌN (& lt; query_options & gt; [, ... n])]
[; ]
 

Lưu ý

Để xem cú pháp Transact-SQL cho SQL Server 2014 trở về trước, hãy xem Tài liệu về các phiên bản trước .

Đối số

VỚI & lt; common_table_expression & gt;
Chỉ định tập kết quả được đặt tên tạm thời, còn được gọi là biểu thức bảng chung, được xác định trong phạm vi của câu lệnh DELETE. Tập kết quả bắt nguồn từ câu lệnh SELECT.

Các biểu thức bảng phổ biến cũng có thể được sử dụng với các câu lệnh SELECT, INSERT, UPDATE và CREATE VIEW. Để biết thêm thông tin, hãy xem VỚI common_table_expression (Transact-SQL) .

TOP ( biểu thức ) [PERCENT]
Chỉ định số lượng hoặc phần trăm các hàng ngẫu nhiên sẽ bị xóa. biểu thức có thể là một số hoặc một phần trăm của các hàng. Các hàng được tham chiếu trong biểu thức TOP được sử dụng với INSERT, UPDATE hoặc DELETE không được sắp xếp theo bất kỳ thứ tự nào. Để biết thêm thông tin, hãy xem TOP (Transact-SQL) .

TỪ
Một từ khóa tùy chọn có thể được sử dụng giữa từ khóa DELETE và table_or_view_name mục tiêu, hoặc rowet_ Chức năng_limited.

table_alias
Bí danh được chỉ định trong mệnh đề FROM table_source đại diện cho bảng hoặc chế độ xem mà từ đó các hàng sẽ bị xóa.

server_name
Áp dụng cho : SQL Server 2008 trở lên.

Tên máy chủ (sử dụng tên máy chủ được liên kết hoặc chức năng OPENDATASOURCE làm tên máy chủ) nơi đặt bảng hoặc chế độ xem. Nếu server_name được chỉ định, thì database_name và schema_name là bắt buộc.

database_name
Tên của cơ sở dữ liệu.

schema_name
Tên của lược đồ chứa bảng hoặc chế độ xem.

table_or_view_name
Tên của bảng hoặc chế độ xem mà từ đó các hàng sẽ bị xóa.

Một biến bảng, trong phạm vi của nó, cũng có thể được sử dụng làm nguồn bảng trong câu lệnh DELETE.

Chế độ xem được tham chiếu bởi table_or_view_name phải có thể cập nhật và tham chiếu chính xác một bảng cơ sở trong mệnh đề FROM của định nghĩa chế độ xem. Để biết thêm thông tin về các chế độ xem có thể cập nhật, hãy xem TẠO CHẾ ĐỘ XEM (Transact-SQL) .

rowset_ Chức năng_limited
Áp dụng cho : SQL Server 2008 trở lên.

Chức năng OPENQUERY hoặc OPENROWSET , tùy thuộc vào khả năng của nhà cung cấp.

VỚI ( & lt; table_hint_limited & gt; [… n] )
Chỉ định một hoặc nhiều gợi ý bảng được phép cho một bảng đích. Từ khóa WITH và dấu ngoặc đơn là bắt buộc. NOLOCK và READUNCOMMITTED không được phép. Để biết thêm thông tin về các gợi ý về bảng, hãy xem Gợi ý về Bảng (Giao dịch-SQL) .

& lt; OUTPUT_Clause & gt;
Trả về các hàng hoặc biểu thức đã xóa dựa trên chúng, như một phần của thao tác DELETE. Mệnh đề OUTPUT không được hỗ trợ trong bất kỳ câu lệnh DML nào nhắm mục tiêu các khung nhìn hoặc bảng từ xa. Để biết thêm thông tin về các đối số và hành vi của điều khoản này, hãy xem Điều khoản OUTPUT (Giao dịch-SQL) .

TỪ table_source
Chỉ định một mệnh đề FROM bổ sung. Tiện ích mở rộng Transact-SQL này cho DELETE cho phép chỉ định dữ liệu từ & lt; table_source & gt; và xóa các hàng tương ứng khỏi bảng trong mệnh đề FROM đầu tiên.

Tiện ích mở rộng này, chỉ định một phép nối, có thể được sử dụng thay cho một truy vấn con trong mệnh đề WHERE để xác định các hàng sẽ bị xóa.

Để biết thêm thông tin, hãy xem FROM (Transact-SQL) .

WHERE
Chỉ định các điều kiện được sử dụng để giới hạn số hàng bị xóa. Nếu mệnh đề WHERE không được cung cấp, DELETE sẽ xóa tất cả các hàng khỏi bảng.

Có hai hình thức thao tác xóa dựa trên những gì được chỉ định trong mệnh đề WHERE:

  • Các thao tác xóa đã tìm kiếm chỉ định điều kiện tìm kiếm để đủ điều kiện xóa các hàng. Ví dụ: WHERE column_name = value.

  • Các thao tác xóa được định vị sử dụng mệnh đề CURRENT OF để chỉ định một con trỏ. Thao tác xóa xảy ra ở vị trí hiện tại của con trỏ. Điều này có thể chính xác hơn câu lệnh DELETE được tìm kiếm sử dụng mệnh đề WHERE search_condition để đủ điều kiện xóa các hàng. Câu lệnh DELETE được tìm kiếm sẽ xóa nhiều hàng nếu điều kiện tìm kiếm không xác định duy nhất một hàng.

& lt; search_condition & gt;
Chỉ định các điều kiện hạn chế để xóa các hàng. Không có giới hạn về số lượng vị từ có thể được đưa vào một điều kiện tìm kiếm. Để biết thêm thông tin, hãy xem Điều kiện tìm kiếm (Giao dịch-SQL) .

Xem Thêm  Kiểu nút CSS - Di chuột, Màu và Nền - cách thay đổi màu di chuột trong css

HIỆN TẠI CỦA
Chỉ định rằng DELETE được thực hiện ở vị trí hiện tại của con trỏ được chỉ định.

TOÀN CẦU
Chỉ định rằng cursor_name tham chiếu đến một con trỏ chung.

cursor_name
Là tên của con trỏ đang mở mà từ đó tìm nạp được thực hiện. Nếu tồn tại cả con trỏ toàn cục và con trỏ cục bộ với tên cursor_name, thì đối số này tham chiếu đến con trỏ toàn cục nếu GLOBAL được chỉ định; nếu không, nó tham chiếu đến con trỏ cục bộ. Con trỏ phải cho phép cập nhật.

cursor_variable_name
Tên của một biến con trỏ. Biến con trỏ phải tham chiếu đến con trỏ cho phép cập nhật.

TÙY CHỌN ( & lt; query_hint & gt; [, … n] )
Các từ khóa cho biết gợi ý trình tối ưu hóa nào được sử dụng để tùy chỉnh cách Công cụ cơ sở dữ liệu xử lý câu lệnh. Để biết thêm thông tin, hãy xem Gợi ý truy vấn (Giao dịch-SQL) .

Các phương pháp hay nhất

Để xóa tất cả các hàng trong bảng, hãy sử dụng BẢNG TRUNCATE . TRUNCATE TABLE nhanh hơn DELETE và sử dụng ít tài nguyên hệ thống và nhật ký giao dịch hơn. TRUNCATE TABLE có các hạn chế, ví dụ: bảng không thể tham gia vào quá trình sao chép. Để biết thêm thông tin, hãy xem BẢNG TRUNCATE (Transact-SQL)

Sử dụng hàm @@ ROWCOUNT để trả lại số hàng đã xóa cho ứng dụng khách. Để biết thêm thông tin, hãy xem @@ ROWCOUNT (Giao dịch-SQL) .

Xử lý Lỗi

Bạn có thể triển khai xử lý lỗi cho câu lệnh DELETE bằng cách chỉ định câu lệnh trong cấu trúc TRY ... CATCH .

Câu lệnh DELETE có thể không thành công nếu vi phạm trình kích hoạt hoặc cố gắng xóa một hàng được tham chiếu bởi dữ liệu trong bảng khác có ràng buộc FOREIGN KEY . Nếu DELETE xóa nhiều hàng và bất kỳ hàng nào bị xóa vi phạm trình kích hoạt hoặc ràng buộc, thì câu lệnh sẽ bị hủy, trả về lỗi và không có hàng nào bị xóa.

Khi câu lệnh DELETE gặp lỗi số học (tràn, chia cho không hoặc lỗi miền) xảy ra trong quá trình đánh giá biểu thức, Công cụ cơ sở dữ liệu sẽ xử lý các lỗi này như thể SET ARITHABORT được BẬT. Phần còn lại của lô bị hủy và thông báo lỗi được trả lại.

Khả năng tương tác

DELETE có thể được sử dụng trong phần nội dung của một hàm do người dùng định nghĩa nếu đối tượng được sửa đổi là một biến bảng.

Khi bạn xóa một hàng có chứa cột FILESTREAM, bạn cũng xóa các tệp hệ thống tệp cơ bản của nó. Các tệp bên dưới sẽ bị bộ thu gom rác FILESTREAM loại bỏ. Để biết thêm thông tin, hãy xem Truy cập dữ liệu FILESTREAM bằng Transact-SQL .

Mệnh đề FROM không thể được chỉ định trong câu lệnh DELETE tham chiếu, trực tiếp hoặc gián tiếp, một dạng xem có trình kích hoạt INSTEAD OF được xác định trên đó. Để biết thêm thông tin về INSTEAD OF trigger, hãy xem TẠO TRIGGER (Transact-SQL) .

Hạn chế và Hạn chế

Khi TOP được sử dụng với DELETE , các hàng được tham chiếu không được sắp xếp theo bất kỳ thứ tự nào và không thể chỉ định trực tiếp mệnh đề ORDER BY trong tuyên bố này. Nếu bạn cần sử dụng TOP để xóa các hàng theo thứ tự thời gian có ý nghĩa, bạn phải sử dụng TOP cùng với mệnh đề ORDER BY trong câu lệnh chọn con. Xem phần Ví dụ tiếp theo trong chủ đề này.

TOP không thể được sử dụng trong câu lệnh DELETE đối với các dạng xem được phân vùng.

Hành vi khóa

Theo mặc định, câu lệnh DELETE luôn có được một khóa dành riêng cho mục đích (IX) trên đối tượng bảng và các trang mà nó sửa đổi, một khóa riêng (X) trên các hàng mà nó sửa đổi và giữ các khóa đó cho đến khi giao dịch hoàn tất.

Với khóa dành riêng cho mục đích (IX), không có giao dịch nào khác có thể sửa đổi cùng một bộ dữ liệu; các hoạt động đọc chỉ có thể diễn ra khi sử dụng gợi ý NOLOCK hoặc đọc mức cách ly không cam kết. Bạn có thể chỉ định các gợi ý bảng để ghi đè hành vi mặc định này trong suốt thời gian của câu lệnh DELETE bằng cách chỉ định một phương pháp khóa khác, tuy nhiên, chúng tôi khuyên bạn chỉ nên sử dụng các gợi ý làm phương sách cuối cùng bởi các nhà phát triển và quản trị cơ sở dữ liệu có kinh nghiệm. Để biết thêm thông tin, hãy xem Gợi ý về Bảng (Giao dịch-SQL) .

Khi các hàng bị xóa khỏi một đống, Công cụ Cơ sở dữ liệu có thể sử dụng khóa hàng hoặc trang cho hoạt động. Do đó, các trang trống bởi thao tác xóa vẫn được phân bổ vào heap. Khi các trang trống không được phân bổ, không gian liên quan không thể được sử dụng lại bởi các đối tượng khác trong cơ sở dữ liệu.

Để xóa các hàng trong một trang heap và phân bổ theo thỏa thuận, hãy sử dụng một trong các phương pháp sau.

  • Chỉ định gợi ý TABLOCK trong câu lệnh DELETE. Sử dụng gợi ý TABLOCK khiến thao tác xóa thực hiện khóa IX trên đối tượng thay vì khóa hàng hoặc khóa trang. Điều này cho phép các trang được phân bổ. Để biết thêm thông tin về gợi ý TABLOCK, hãy xem Gợi ý về Bảng (Giao dịch-SQL) .

  • Sử dụng BẢNG TRUNCATE nếu tất cả các hàng được xóa khỏi bảng.

  • Tạo một chỉ mục theo nhóm trên heap trước khi xóa các hàng. Bạn có thể bỏ chỉ mục theo nhóm sau khi các hàng bị xóa. Phương pháp này tốn nhiều thời gian hơn các phương pháp trước và sử dụng nhiều tài nguyên tạm thời hơn.

Lưu ý

Có thể xóa các trang trống khỏi đống bất kỳ lúc nào bằng cách sử dụng ALTER TABLE & lt; table_name & gt; REBUILD tuyên bố.

Hành vi ghi nhật ký

Câu lệnh DELETE luôn được ghi lại đầy đủ.

Bảo mật

Quyền

DELETE quyền được yêu cầu trên bảng đích. Các quyền SELECT cũng được yêu cầu nếu câu lệnh chứa mệnh đề WHERE.

Xem Thêm  HTML - Phông chữ - mã html cho phông chữ verdana

Quyền DELETE mặc định cho các thành viên của vai trò máy chủ cố định sysadmin , vai trò cơ sở dữ liệu cố định db_owner db_datawriter và chủ sở hữu bảng. Thành viên của các vai trò sysadmin , db_owner db_securityadmin và chủ sở hữu bảng có thể chuyển quyền cho người dùng khác.

Ví dụ

Cú pháp cơ bản

Các ví dụ trong phần này thể hiện chức năng cơ bản của câu lệnh DELETE bằng cách sử dụng cú pháp bắt buộc tối thiểu.

A. Sử dụng DELETE không có mệnh đề WHERE

Ví dụ sau đây xóa tất cả các hàng khỏi bảng SalesPersonQuotaHistory trong cơ sở dữ liệu AdventureWorks2012 vì mệnh đề WHERE không được sử dụng để giới hạn số hàng bị xóa.

  XÓA khỏi Sales.SalesPersonQuotaHistory;
ĐI
 

Giới hạn các hàng đã xóa

Các ví dụ trong phần này trình bày cách giới hạn số lượng hàng sẽ bị xóa.

B. Sử dụng mệnh đề WHERE để xóa một tập hợp các hàng

Ví dụ sau đây xóa tất cả các hàng khỏi bảng ProductCostHistory trong cơ sở dữ liệu AdventureWorks2012, trong đó giá trị trong cột StandardCost nhiều hơn 1000.00 .

  XÓA khỏi Production.ProductCostHistory
WHERE StandardCost & gt; 1000,00;
ĐI
 

Ví dụ sau đây cho thấy một mệnh đề WHERE phức tạp hơn. Mệnh đề WHERE xác định hai điều kiện phải được đáp ứng để xác định các hàng cần xóa. Giá trị trong cột StandardCost phải nằm trong khoảng từ 12.00 đến 14.00 và giá trị trong cột SellEndDate phải rỗng . Ví dụ này cũng in giá trị từ hàm @@ ROWCOUNT để trả về số hàng đã xóa.

  DELETE Production.ProductCostHistory
Ở đâu Chi phí tiêu chuẩn GIỮA 12,00 VÀ 14,00
      VÀ Ngày kết thúc LÀ KHÔNG ĐỦ;
IN 'Số hàng bị xóa là' + CAST (@@ ROWCOUNT dưới dạng char (3));
 

C. Sử dụng con trỏ để xác định hàng cần xóa

Ví dụ sau đây xóa một hàng khỏi bảng EmployeePayHistory trong cơ sở dữ liệu AdventureWorks2012 bằng cách sử dụng con trỏ có tên complex_cursor . Thao tác xóa chỉ ảnh hưởng đến một hàng hiện được tìm nạp từ con trỏ.

  DECLARE complex_cursor CURSOR FOR
    CHỌN a.BusinessEntityID
    TỪ HumanResources.EpriseePayHistory AS a
    WHERE RateChangeDate & lt; & gt;
         (CHỌN TỐI ĐA (RateChangeDate)
          TỪ HumanResources.EpriseePayHistory AS b
          WHERE a.BusinessEntityID = b.BusinessEntityID);
MỞ con trỏ phức hợp;
Tìm kiếm từ con trỏ phức hợp;
XÓA khỏi HumanResources.EpriseePayHistory
HIỆN TẠI CỦA CON trỏ phức hợp;
CLOSE con trỏ phức hợp;
DEALLOCATE con trỏ phức hợp;
ĐI
 

D. Sử dụng các phép nối và truy vấn con tới dữ liệu trong một bảng để xóa các hàng trong bảng khác

Các ví dụ sau đây cho thấy hai cách để xóa các hàng trong một bảng dựa trên dữ liệu trong một bảng khác. Trong cả hai ví dụ, các hàng từ bảng SalesPersonQuotaHistory trong cơ sở dữ liệu AdventureWorks2012 bị xóa dựa trên doanh số hàng năm được lưu trữ trong bảng SalesPerson . Câu lệnh DELETE đầu tiên hiển thị giải pháp truy vấn con tương thích với ISO và câu lệnh DELETE thứ hai hiển thị phần mở rộng Transact-SQL FROM để kết hợp hai bảng.

  - Truy vấn con Chuẩn SQL-2003
  
XÓA KHỎI Sales.SalesPersonQuotaHistory
DOANH NGHIỆPEntityID Ở ĐÂU
    (CHỌN BusinessEntityID
     TỪ Sales.SalesPerson
     NƠI Bán hàngYTD & gt; 2500000,00);
ĐI
 
  - Tiện ích mở rộng Transact-SQL
  
XÓA KHỎI Sales.SalesPersonQuotaHistory
TỪ Sales.SalesPersonQuotaHistory AS spqh
INNER THAM GIA Bán hàng. Người bán hàng AS sp
ON spqh.BusinessEntityID = sp.BusinessEntityID
WHERE sp.SalesYTD & gt; 2500000,00;
ĐI
 
  - Không cần phải đề cập đến bảng đích nhiều hơn một lần.
  
XÓA spqh
  TỪ
        Sales.SalesPersonQuotaHistory AS spqh
    INNER THAM GIA Bán hàng. Người bán hàng AS sp
        ON spqh.BusinessEntityID = sp.BusinessEntityID
  WHERE sp.SalesYTD & gt; 2500000,00;
 

E. Sử dụng TOP để giới hạn số hàng bị xóa

Khi mệnh đề TOP (n) được sử dụng với DELETE, thao tác xóa được thực hiện trên một lựa chọn ngẫu nhiên gồm n số hàng. Ví dụ sau đây xóa các hàng ngẫu nhiên 20 khỏi bảng PurchaseOrderDetail trong cơ sở dữ liệu AdventureWorks2012 có ngày đến hạn sớm hơn ngày 1 tháng 7 năm 2006.

  XÓA ĐẦU (20)
TỪ Mua hàng. Mua hàngĐặt hàngDetail
WHERE Ngày đến hạn & lt; '20020701';
ĐI
 

Nếu bạn phải sử dụng TOP để xóa các hàng theo thứ tự thời gian có ý nghĩa, bạn phải sử dụng TOP cùng với ORDER BY trong câu lệnh chọn con. Truy vấn sau sẽ xóa 10 hàng của bảng PurchaseOrderDetail có ngày đến hạn sớm nhất. Để đảm bảo rằng chỉ 10 hàng bị xóa, cột được chỉ định trong câu lệnh chọn con ( PurchaseOrderID ) là khóa chính của bảng. Việc sử dụng cột không phải khóa trong câu lệnh chọn con có thể dẫn đến việc xóa hơn 10 hàng nếu cột được chỉ định chứa các giá trị trùng lặp.

  XÓA KHỎI Mua hàng.PurchaseOrderDetail
MUA HÀNG Ở ĐÂU
   (CHỌN TOP 10 PurchaseOrderDetailID
    TỪ Mua hàng. Mua hàngĐặt hàngDetail
    ĐẶT HÀNG THEO ASC ngày đáo hạn);
ĐI
 

Xóa hàng khỏi bảng từ xa

Các ví dụ trong phần này trình bày cách xóa các hàng khỏi bảng từ xa bằng cách sử dụng máy chủ được liên kết hoặc chức năng bộ hàng để tham chiếu đến bảng từ xa. Bảng từ xa tồn tại trên một máy chủ hoặc phiên bản SQL Server khác.

Áp dụng cho: SQL Server 2008 trở lên.

F. Xóa dữ liệu khỏi bảng từ xa bằng cách sử dụng máy chủ được liên kết

Ví dụ sau đây xóa các hàng khỏi một bảng từ xa. Ví dụ bắt đầu bằng cách tạo liên kết đến nguồn dữ liệu từ xa bằng cách sử dụng sp_addlinkedserver . Sau đó, tên máy chủ được liên kết, MyLinkServer , được chỉ định như một phần của tên đối tượng gồm bốn phần trong biểu mẫu server.catalog.schema.object.

  SỬ DỤNG chính;
ĐI
- Tạo liên kết đến nguồn dữ liệu từ xa.
- Chỉ định tên máy chủ hợp lệ cho @datasrc là 'server_name' hoặc 'server_name \ instance_name'.
  
EXEC sp_addlinkedserver @server = N'MyLinkServer ',
    @srvproduct = N '',
    @provider = N'SQLNCLI ',
    @datasrc = N'server_name ',
    @catalog = N'AdventureWorks2012 ';
ĐI
 
  - Chỉ định nguồn dữ liệu từ xa bằng cách sử dụng tên gồm bốn phần
- ở dạng linked_server.catalog.schema.object.
  
XÓA MyLinkServer.AdventureWorks2012.HumanResources.Department
Nơi nào DepartmentID & gt; 16;
ĐI
 

G. Xóa dữ liệu khỏi bảng từ xa bằng cách sử dụng chức năng OPENQUERY

Ví dụ sau đây xóa các hàng khỏi một bảng từ xa bằng cách chỉ định hàm bộ hàng OPENQUERY . Tên máy chủ được liên kết được tạo trong ví dụ trước được sử dụng trong ví dụ này.

  XÓA THIẾT BỊ MỞ (MyLinkServer, 'SELECT Name, GroupName
TỪ AdventureWorks2012.HumanResources.Department
WHERE DepartmentID = 18 ');
ĐI
 

H. Xóa dữ liệu khỏi bảng từ xa bằng cách sử dụng hàm OPENDATASOURCE

Ví dụ sau đây xóa các hàng khỏi bảng từ xa bằng cách chỉ định hàm bộ hàng OPENDATASOURCE . Chỉ định tên máy chủ hợp lệ cho nguồn dữ liệu bằng cách sử dụng định dạng server_name hoặc server_name \ instance_name.

  XÓA khỏi OPENDATASOURCE ('SQLNCLI',
    'Nguồn Dữ liệu = & lt; server_name & gt ;; Bảo mật tích hợp = SSPI ')
    .AdventureWorks2012.HumanResources.Department
WHERE DepartmentID = 17;
 

Chụp kết quả của câu lệnh DELETE

Tôi. Sử dụng DELETE với mệnh đề OUTPUT

Ví dụ sau đây cho thấy cách lưu kết quả của câu lệnh DELETE vào một biến bảng trong cơ sở dữ liệu AdventureWorks2012.

  XÓA Sales.ShoppingCartItem
ĐẦU RA ĐÃ XÓA. *
WHERE ShoppingCartID = 20621;
  
--Xác minh các hàng trong bảng khớp với mệnh đề WHERE đã bị xóa.
CHỌN ĐẾM (*) NHƯ [Hàng trong bảng]
TỪ Sales.ShoppingCartItem
WHERE ShoppingCartID = 20621;
ĐI
 

J. Sử dụng OUTPUT với & lt; from_table_name & gt; trong câu lệnh DELETE

Ví dụ sau đây xóa các hàng trong bảng ProductProductPhoto trong cơ sở dữ liệu AdventureWorks2012 dựa trên tiêu chí tìm kiếm được xác định trong mệnh đề FROM của câu lệnh DELETE . Mệnh đề OUTPUT trả về các cột từ bảng đang bị xóa, DELETED.ProductID , DELETED.ProductPhotoID và các cột từ Product bảng. Điều này được sử dụng trong mệnh đề FROM để chỉ định các hàng cần xóa.

  Bảng DECLARE @MyTableVar (
    ProductID int NOT NULL,
    ProductName nvarchar (50) KHÔNG ĐỦ,
    ProductModelID int NOT NULL,
    PhotoID int NOT NULL);
  
XÓA Sản xuất. Sản phẩmSản phẩm Ảnh
OUTPUT ĐÃ BỊ XÓA.ProductID,
       p.Name,
       p.ProductModelID,
       ĐÃ XÓA. Sản phẩmPhotoID
    VÀO @MyTableVar
TỪ Sản xuất. Sản phẩmSản phẩm Ảnh AS ph
Tham gia sản xuất. Sản phẩm với tư cách là p
    ON ph.ProductID = p.ProductID
    WHERE p.ProductModelID GIỮA 120 và 130;
  
--Hiển thị kết quả của biến bảng.
CHỌN ProductID, ProductName, ProductModelID, PhotoID
TỪ @MyTableVar
ĐẶT HÀNG BẰNG ProductModelID;
ĐI
 

Ví dụ: Phân tích Azure Synapse và Hệ thống Nền tảng Analytics (PDW)

K. Xóa tất cả các hàng khỏi bảng

Ví dụ sau đây xóa tất cả các hàng khỏi bảng Table1 vì mệnh đề WHERE không được sử dụng để giới hạn số hàng bị xóa.

  XÓA khỏi Bảng1;
 

L. XÓA một tập hợp các hàng khỏi bảng

Ví dụ sau đây xóa tất cả các hàng khỏi bảng Table1 có giá trị lớn hơn 1000,00 trong cột StandardCost .

 XÓA khỏi Bảng1
WHERE StandardCost & gt; 1000,00;
 

M. Sử dụng LABEL với câu lệnh DELETE

Ví dụ sau sử dụng nhãn có câu lệnh DELETE.

  XÓA khỏi Bảng 1
TÙY CHỌN (LABEL = N'label1 ');
  
 

N. Sử dụng nhãn và gợi ý truy vấn với câu lệnh DELETE

Truy vấn này hiển thị cú pháp cơ bản để sử dụng gợi ý kết hợp truy vấn với câu lệnh DELETE. Để biết thêm thông tin về gợi ý tham gia và cách sử dụng điều khoản TÙY CHỌN, hãy xem Điều khoản TÙY CHỌN (Giao dịch-SQL) .

  - Sử dụng AdventureWorks
  
XÓA khỏi dbo.FactInternetSales
NƠI ProductKey IN (
    CHỌN T1.ProductKey TỪ dbo.DimProduct T1
    THAM GIA dbo.DimProductSubcategory T2
    TRÊN T1.ProductSubcategoryKey = T2.ProductSubcategoryKey
    WHERE T2.EnglishProductSubcategoryName = 'Xe đạp đường trường')
TÙY CHỌN (LABEL = N'CustomJoin ', HASH THAM GIA);
 

O. Xóa bằng mệnh đề WHERE

Truy vấn này cho biết cách xóa bằng mệnh đề WHERE và không sử dụng mệnh đề FROM.

  XÓA tableA Ở ĐÂU TỒN TẠI (
CHỌN ĐẦU 1 1 TỪ tableB tb WHERE tb.col1 = tableA.col1
)
 

P. Xóa dựa trên kết quả của việc tham gia với một bảng khác

Ví dụ này cho thấy cách xóa khỏi một bảng dựa trên kết quả từ việc ghép nối với một bảng khác.

  TẠO BẢNG dbo.Table1
    (ColA int NOT NULL, ColB thập phân (10,3) NOT NULL);
ĐI

TẠO BẢNG dbo.Table2
    (ColA int PRIMARY KEY NOT NULL, ColB decimal (10,3) NOT NULL);
ĐI
CHÈN VÀO CÁC GIÁ TRỊ dbo.Table1 (1, 10.0), (1, 20.0);
CHÈN VÀO CÁC GIÁ TRỊ dbo.Table2 (1, 0.0);
ĐI

XÓA dbo.Table2
TỪ dbo.Table2
    INNER THAM GIA dbo.Table1
    BẬT (dbo.Table2.ColA = dbo.Table1.ColA)
    WHERE dboTable2.ColA = 1;
 

Xem thêm

TẠO TRIGGER (Giao dịch-SQL)
INSERT (Transact-SQL)
CHỌN (Giao dịch-SQL)
BẢNG TRUNCATE (Transact-SQL)
CẬP NHẬT (Giao dịch-SQL)
VỚI common_table_expression (Transact-SQL)
@@ ROWCOUNT (Giao dịch-SQL)


Xem thêm những thông tin liên quan đến chủ đề xóa sql khỏi lựa chọn

The SQL DELETE Statement

  • Tác giả: itgeared
  • Ngày đăng: 2011-11-11
  • Đánh giá: 4 ⭐ ( 5324 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: This video tutorial covers how to use the SQL DELETE Statement. More guides and tutorials: http://www.itgeared.com/. The SQL DELETE Statement is used to delete rows from a database table.

Cách gỡ bỏ hoàn toàn SQL Server 2014 trong 1 nốt nhạc! (CỰC DỄ)

  • Tác giả: hostingviet.vn
  • Đánh giá: 4 ⭐ ( 7161 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Cách gỡ bỏ hoàn toàn SQL Server 2014 Cực Nhanh Và Dễ Dàng

  • Tác giả: zhost.vn
  • Đánh giá: 3 ⭐ ( 9481 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Khi không muốn dùng SQL thì bạn nên gỡ bỏ chúng ra khỏi hệ thống. ZHost sẽ hướng dẫn bạn cách gỡ bỏ hoàn toàn SQL Server 2014 Cực Nhanh.

Tổng quan về câu lệnh xóa SQL

  • Tác giả: helpex.vn
  • Đánh giá: 4 ⭐ ( 9335 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Bài viết này về SQL Delete là một phần của loạt bài cần thiết về SQL về các câu lệnh, hàm và hoạt động chính trong SQL Server. Để xóa một hàng khỏi bảng được thực hiện thông qua Ngôn ngữ…

Cách Gỡ Bỏ Hoàn Toàn Sql Server 2008 R2 X64 Đã Được Gỡ Cài Đặt Không Chính Xác?

  • Tác giả: ucozfree.com
  • Đánh giá: 3 ⭐ ( 2106 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hướng dẫn cách gỡ cài đặt SQL Server 2008 hiệu quả bằng hình ảnh để bạn loại bỏ hoàn toàn SQL Server ra khỏi máy tính, Sau khi cài đặt SQL Server nếu bạn không muốn sử dụng và muốn gỡ cài đặt sẽ rất khó khăn

Xóa dữ liệu có lựa chọn từ cơ sở dữ liệu khác

  • Tác giả: isolution.pro
  • Đánh giá: 3 ⭐ ( 7429 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Cách Xóa Sql Server 2008 Bản Chuẩn, Cách Gỡ Cài Đặt Sql Server Hoàn Toàn

  • Tác giả: peaceworld.com.vn
  • Đánh giá: 4 ⭐ ( 4904 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Bạn chưa biết cách làm sao để gỡ bỏ hoàn toàn SQL Server 2014, Vậy thì hãy xem ngay bài viết hướng dẫn sau đây của Hosting Việt

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

By ads_php