Jak usunąć rekordy z tabeli w SQL Server?
Delete w SQL Server jest kolejnym poleceniem DML, obok Update i Insert które poznasz w kursie. Delete służy do usuwania rekordów z tabeli. Możesz usuwać zarówno wszystkie rekordy, jak i tylko wybrane. Składnia polecenia Delete wygląda następująco:
DELETE [ FROM ] nazwa_tabeli [ WHERE < warunki > ]
Zróbmy krótki przykład użycia Delete w SQL Server. Potrzebna nam będzie do tego przykładowa tabela z danymi, która możemy szybko utworzyć tym skryptem np na bazie AdventureWorks:
Create table TABELA_DO_DELETE ( ID bigint , FULL_NAME varchar(100), CITY varchar(50), INSERT_DATE datetime default getdate() ); go INSERT INTO TABELA_DO_DELETE values (1, 'Adam Małysz', 'Warszawa', '20170714'); INSERT INTO TABELA_DO_DELETE values (2, 'Robert Kubica', 'Monaco', '20170715'); INSERT INTO TABELA_DO_DELETE values (3, 'Adam Małysz', 'Nowy Jork', '20170716'); INSERT INTO TABELA_DO_DELETE values (4, 'Adam Kowalski', 'Warszawa', getdate()); go select * from TABELA_DO_DELETE; go
Jeśli chcesz usunąć wszystkie rekordy z tabeli zastosuj polecenie, które wyczyści wszystkie dane, a więc:
Delete from TABELA_DO_DELETE; --lub Delete TABELA_DO_DELETE;
Jeśli chcesz usunąć tylko wybrane rekordy, wpisz warunek w klauzuli WHERE, ograniczając część danych w tabeli, które chcesz usunąć:
Delete from TABELA_DO_DELETE where id = 1;
Do usuwania rekordów w tabeli służy także poleceni Truncate Table. W poleceniu Truncate nie możemy już wprowadzić warunku WHERE. Polecenie jest o wiele szybsze od Delete. Usuwa wszystkie dane z wybranej tabeli. Jakie są inne różnice pomiędzy Truncate i Delete w SQL Server? Truncate służy do resetowania tabeli. Nie tylko kasuje dane. Usuwa także klucze Identity z całej tabeli. Przykład użycia Truncate zamieszczam poniżej:
Truncate Table TABELA_DO_DELETE;
Strona producenta programu opisująca zagadnienie delete.