Obcięcie vs. Usuń SQL

Obcięcie vs. Usuń SQL
Istnieją dwie główne metody usuwania danych w bazie danych SQL: obcinaj i usuń. Chociaż proces może wydawać się ściśle powiązany, zrozumienie różnicy między tymi poleceniami może być korzystne w określaniu sposobu obsługi danych.

Rozbijmy różnicę między poleceniami obcięcia i usuń w SQL.

SQL Truncate Command

Polecenie obcięte w SQL jest znane jako język definicji danych. Polecenia obcięcia usuwają dane z tabeli, zachowując strukturę tabeli. W przeciwieństwie do polecenia Usuń, nie można filtrować dla określonych rekordów za pomocą klauzuli Where.

Podobnie nie możemy wykonać wycofania po uruchomieniu obciętych poleceń, ponieważ dla tego polecenia nie są zachowane dzienniki.

Uwaga: niektóre silniki bazy danych obsługują wycofanie poleceń obrotowych, ale to nie jest uniwersalne.

Jeśli tabela jest częścią indeksowanego widoku lub odwoływania się przez klucz obce, polecenie obrotowe nie będzie działać w tej tabeli.

Składnia poleceń jest jak pokazano:

Tabela obcięcia table_name;

Polecenie obcięte jest szybsze niż usuwanie, ponieważ nie wykonuje skanowania dla rekordów przed usunięciem. Zapewnia również zablokowanie całej tabeli przed usunięciem danych, zmniejszając w ten sposób przestrzeń transakcyjną.

W zależności od silnika bazy danych, potrzebujesz wyraźnych uprawnień do wykonania obcięcia na tabeli. Na przykład na SQL Server potrzebujesz zgody na tabelę. MySQL wymaga upuszczenia upuszczenia, PostgreSQL wymaga uprawnień do obcięcia, a Oracle wymaga upuszczania dowolnej uprawnienia do tabeli.

Polecenie SQL Usuń

Polecenie Delete to polecenie manipulacji danymi. Umożliwia usuwanie rekordów z tabeli bazy danych i zwraca liczbę usuniętych rekordów. Polecenia Usuń usuwają wiersze z tabeli, a nie z całej tabeli z bazy danych.

W przeciwieństwie do polecenia obcinanego, polecenie Usuń umożliwia filtrowanie rekordów docelowych za pomocą klauzuli Where.

Składnia polecenia pokazano poniżej:

Usuń z Table_name;

Aby filtrować określone rekordy, możesz użyć składni, jak pokazano poniżej:

Usuń z nazwy Table_name, gdzie warunek;

Uwaga: Jeśli nie określisz docelowych kolumn, polecenie usunie wszystkie rekordy z podanej tabeli.

W przeciwieństwie do polecenia obcięcia, które blokuje całą tabelę, polecenie Usuń blokuje poszczególne wiersze prowadzące do wyższej przestrzeni transakcji, szczególnie na dużym stole.

Aby uruchomić polecenie Usuń na tabeli, potrzebujesz uprawnienia Usuń.

Tabela podsumowań

Poniższa tabela podsumowuje różnice między poleceniami SQL i obrotowymi.

SQL Truncate SQL Delete
Typ Język definicji danych Język manipulacji danymi
Rodzaj blokady Tabela Wiersz
Wycofanie Niektóre silniki bazy danych Tak
Dzienniki transakcyjne Cały stół Na rząd
Zastosowanie przestrzeni transakcji Mniej Wyższy
Wsparcie wyzwalające NIE Tak
Prędkość Bardzo szybki Powolny
Typ usunięcia Wszystkie rzędy Wszystkie lub określone wiersze (jak określono)
Działa z indeksowanym widokiem? NIE Tak
Reset kolumny tożsamości Niektóre silniki bazy danych NIE
Zwrot usuwa rekordy? NIE Tak

W większości przypadków wybór najlepszego rodzaju operacji będzie zależeć od twoich konkretnych potrzeb. Rozważ jednak następujące punkty:

  1. W przypadku określonych wierszy wybierz Usuń.
  2. Obcięte jest szybsze niż usuwanie; Stąd użyj obcięcia, jeśli chcesz usunąć wszystkie wiersze w tabeli.
  3. Jeśli nie dbasz o strukturę tabeli, użyj innych poleceń, takich jak upuszczenie.

Wniosek

W tym artykule omówiono dwa podstawowe polecenia usuwania danych w bazie danych SQL. Korzystając z tego przewodnika, możesz wyraźnie określić, co wykonuje polecenie obrotowe lub polecenie Delete w relacyjnej bazie danych. Mamy nadzieję, że ten artykuł jest pomocny. Sprawdź inne artykuły z Linux, aby uzyskać więcej wskazówek i samouczków.