Informacje o nowych artykułach oraz akcjach edukacyjnych prosto na Twojej skrzynce e-mail!

Usuwanie danych z bazy danych w SQL

Kasowanie informacji zdezaktualizowanych w bazie danych wykonujemy za pomocą zapytania DELETE. Instrukcja ta służy do kasowania wybranych wierszy z danej tabeli, jeżeli potrzebujemy na przykład wyczyścić całą tabelę to możemy zastosować instrukcję TRUNCATE TABLE.

Kasowanie wybranych rekordów

Ogólna składnia zapytania DELETE:

DELETE FROM nazwaTabeli
WHERE warunekLogiczny;

Przykład:

DELETE FROM tab1
WHERE id = '1';

Powyższa kwerenda skasuje z tabeli tab1, wiersze, które będą miały w polu ID wartość (teoretycznie powinien być to jeden rekord).

Tabela klienci na której będziemy uruchamiać przykładowe zapytania:

IDImieNazwiskoMiasto
1JanKowalskiWarszawa
2MichałŁagodaKraków
3MarcinKulczykKraków
4RadosławSikorskiKraków
5MonikaKopaczGdańsk
6PiotrGrabiecToruń
7EwaPogodnaBydgoszcz
8SebastianSzybkiWarszawa

Efekt zapytania:

DELETE FROM klienci
WHERE ID = '1';

Uruchomionego na tabeli klienci:

IDImieNazwiskoMiasto
2MichałŁagodaKraków
3MarcinKulczykKraków
4RadosławSikorskiKraków
5MonikaKopaczGdańsk
6PiotrGrabiecToruń
7EwaPogodnaBydgoszcz
8SebastianSzybkiWarszawa

Jak widać zniknął pierwszy wiersz. To samo można zrobić dając inny warunek (nie identyfikujący jednoznacznie rekordu). Skasujmy teraz wszystkich klientów z Krakowa:

DELETE FROM klienci
WHERE miasto = 'Kraków';

Efekt:

IDImieNazwiskoMiasto
5MonikaKopaczGdańsk
6PiotrGrabiecToruń
7EwaPogodnaBydgoszcz
8SebastianSzybkiWarszawa

Usuwanie całej zawartości

Kasowanie rekordu po rekordzie przy milionie pozycji może być nieco męczące. Twórcy SQL pomyśleli również i o tym aspekcie dodając instrukcję TRUNCATE TABLE. Ogólna składnia:

TRUNCATE TABLE nazwaTabeli;

Przykład:

TRUNCATE TABLE klienci;

Efekt:

IDImieNazwiskoMiasto

Tabela klienci jest pusta.

Spodobało się?

Jeśli tak, to zarejestruj się do newslettera aby otrzymywać informacje nowych artykułach oraz akcjach edukacyjnych. Gwarantuję 100% satysfakcji i żadnego spamowania!

, , , , , , , , ,

Dodaj komentarz

Komentarze (8)

  • Martin pisze:

    Dzień dobry, chce usunąć rekordy w 3 tabelach jeśli klient nie wykonał żadnego zamówienia w poprzednim miesiącu.Jak napisać zapytanie w celu usunięcia rekordów z kilku tabel t1, t2, t3 gdy warunkiem usunięcia jest where = t3.data> poprzedni miesiąc. Z góry dziękuję za odpowiedź.

    • Vules pisze:

      DELETE FROM t1 WHERE t3Id NOT IN ( SELECT id FROM t3 WHERE data >= NOW() – INTERVAL 1 MONTH );
      DELETE FROM t2 WHERE t3Id NOT IN ( SELECT id FROM t3 WHERE data >= NOW() – INTERVAL 1 MONTH );

  • Hubert pisze:

    Dzień dobry potrzebuje zapytanie do usunięcia plików starszych jak 7dni da się wogóle takie coś napisać w sql ?

  • M. pisze:

    Usuwanie plików starszych niż 7 dni (o ile to jeszcze jest komuś potrzebne):
    powershell.exe „Get-ChildItem -Path \”C:\_tutaj_folder_z_plikami_\” -Force -ea 0 | ?{ !$_PsIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-7) } | ForEach-Object { $_ | Remove-Item -Force }”

  • Lucjan pisze:

    Witam,
    a jak wyczyścić całą zawartość kolumny? Podkreślam – tylko zawartość a nie kolumnę.

Odpowiedz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Pin It on Pinterest