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:
1 2 3 | 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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:
1 2 3 | 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ąć:
1 2 | 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:
1 | Truncate Table TABELA_DO_DELETE; |
Strona producenta programu opisująca zagadnienie delete.