Udostępnij za pośrednictwem


Deleting Rows by Using DELETE

Instrukcja DELETE Usuwa jeden lub więcej wierszy w tabela lub widoku.

Uproszczone formie DELETE Składnia jest:

DELETE table_or_view

FROM table_sources

WHERE search_condition

Parametr table_or_view Określa nazwę tabela lub widoku, z której wiersze mają zostać usunięte. Wszystkie wiersze table_or_view które spełniają kwalifikacji warunek WHERE wyszukiwania zostaną usunięte. Jeśli klauzula WHERE nie jest określony, wszystkie wiersze table_or_view zostaną usunięte. Klauzula FROM Określa dodatkowe tabele lub widoki i warunków łączyć, które mogą być używane przez predykaty warunek wyszukiwania klauzuli WHERE w celu zakwalifikowania wiersze, które mają zostać usunięte z table_or_view. Wiersze nie są usuwane z tabel wymienionych w klauzuli FROM, tylko z wymienionych w tabela table_or_view.

Tabela, w której wszystkie wiersze są usuwane pozostaje w bazie danych.Instrukcja DELETE Usuwa tylko wiersze z tabela, w tabela muszą być usunięte z bazy danych przy użyciu instrukcji DROP tabela.

Usuwanie wierszy z sterty

Gdy wiersze są usuwane z sterty. the Database Engine mogą używać wiersza lub strona blokowania dla tej operacji. W rezultacie wprowadzone puste przez operację usuwania stron pozostają przydzielonego do sterty.W przypadku pustych stron nie są przydziałów, skojarzone miejsca nie mogą być ponownie użyte przez inne obiekty w bazie danych.

Aby usunąć wiersze w sterty i Cofnij przydzielanie strony, należy użyć jednej z następujących metod.

  • Określ wskazówkę dotyczącą TABLOCK w instrukcja DELETE.Za pomocą wskazówka TABLOCK powoduje, że operacja usuwania zostały udostępnione blokadę tabela, a nie wiersz lub blokowanie strona.Dzięki temu stron, aby być przydziałów.Aby uzyskać więcej informacji na temat TABLOCK wskazówki zobacz Wskazówki do tabela (języka Transact-SQL).

  • Jeśli wszystkie wiersze mają zostać usunięte z tabela za pomocą OBCINANIA tabela.

  • Tworzenie indeks klastrowany na stercie przed usunięciem wierszy.Po usunięciu wierszy, można usunąć indeks klastrowany.Ta metoda jest bardziej czasochłonne niż wcześniejsze metody i wykorzystuje więcej zasobów tymczasowych.

Aby uzyskać więcej informacji na temat blokowania Zobacz Blokowanie w aparat bazy danych.

Przykłady

W następującym przykładzie usunięto wszystkie wiersze z SalesPersonQuotaHistory Tabela, ponieważ klauzulę WHERE nie jest używana do ograniczania liczby wierszy usunięte.

W następującym przykładzie usunięto wszystkie wiersze z ProductCostHistory Tabela, w którym wartość StandardCost Kolumna jest więcej niż 1000.00.

W poniższym przykładzie Transact-SQL rozszerzenie służy do usuwania rekordów z podstawowej tabela, która jest oparta na sprzężeniu lub skorelowana podkwerenda. Pierwszy DELETE Instrukcja zawiera rozwiązania zgodne podkwerenda ISO, a drugi DELETE Pokazuje zestawienie Transact-SQL rozszerzenie. Zarówno kwerendy Usuń wiersze z SalesPersonQuotaHistory Tabela oparta na sprzedaż od początku roku, przechowywane w SalesPerson Tabela.