Po opanowaniu selekcji danych z tabeli za pomocą polecenia SELECT, nadszedł czas, aby nauczyć się, jak modyfikować i usuwać dane z bazy. W tej lekcji omówimy, jak używać poleceń UPDATE do aktualizacji istniejących rekordów oraz DELETE do usuwania danych z tabel. Dowiemy się również, jak zachować ostrożność przy wykonywaniu tych operacji, aby uniknąć przypadkowego usunięcia lub zmiany danych.
Aktualizacja danych za pomocą UPDATE
Polecenie UPDATE pozwala na modyfikowanie wartości w istniejących rekordach tabeli. Możesz zmienić wartości w jednej lub kilku kolumnach, używając tego polecenia. Aby upewnić się, że zmiany są wprowadzone tylko do określonych rekordów, zwykle dodajemy klauzulę WHERE, aby określić warunek, który muszą spełniać rekordy do aktualizacji.
Składnia:
UPDATE nazwa_tabeli SET kolumna1 = nowa_wartosc1, kolumna2 = nowa_wartosc2, ... WHERE warunek;
- nazwa_tabeli – nazwa tabeli, w której chcemy zaktualizować dane.
- kolumna1, kolumna2, … – nazwy kolumn, które chcemy zmienić.
- nowa_wartosc1, nowa_wartosc2, … – nowe wartości, które chcemy przypisać do tych kolumn.
- warunek – opcjonalna klauzula WHERE, która określa, które rekordy mają zostać zmienione.
Przykład: Aktualizacja pojedynczego rekordu
Załóżmy, że chcemy zaktualizować adres e-mail użytkownika o ID = 1 w tabeli Uzytkownicy. Możemy to zrobić za pomocą następującego zapytania:
UPDATE Uzytkownicy SET Email = 'nowy.email@example.com' WHERE ID = 1;
To zapytanie zmieni adres e-mail użytkownika z ID równym 1 na nowy.email@example.com
.
Aktualizacja wielu kolumn
Jeśli chcesz zmienić wartości w więcej niż jednej kolumnie jednocześnie, możesz to zrobić, wymieniając kilka kolumn w zapytaniu UPDATE:
UPDATE Uzytkownicy SET Imie = 'Tomasz', Email = 'tomasz.nowy@example.com' WHERE ID = 2;
W tym przykładzie zapytanie zmienia zarówno imię, jak i adres e-mail użytkownika z ID = 2.
Aktualizacja wszystkich rekordów
Jeżeli nie dodasz klauzuli WHERE, polecenie UPDATE zaktualizuje wszystkie rekordy w tabeli. Zwykle nie jest to pożądane, więc należy być ostrożnym, aby zawsze dodać klauzulę WHERE, chyba że masz pewność, że chcesz zmodyfikować wszystkie dane.
Przykład:
UPDATE Uzytkownicy SET Status = 'aktywny';
To zapytanie ustawi wartość Status
na aktywny
dla wszystkich użytkowników w tabeli Uzytkownicy. Używaj tego typu zapytań ostrożnie, ponieważ brak klauzuli WHERE może prowadzić do niechcianych zmian w całej tabeli.
Zabezpieczenia przed niechcianymi aktualizacjami
Podczas pracy z poleceniem UPDATE ważne jest, aby stosować odpowiednie filtry, zwłaszcza gdy aktualizujesz tylko niektóre rekordy. Zawsze warto sprawdzić zapytanie SELECT przed wykonaniem aktualizacji, aby upewnić się, że modyfikujesz odpowiednie rekordy.
Na przykład przed wykonaniem aktualizacji:
UPDATE Uzytkownicy SET Email = 'aktualny.email@example.com' WHERE Nazwisko = 'Nowak';
Możesz najpierw użyć SELECT, aby sprawdzić, czy zapytanie zwróci właściwe rekordy:
SELECT * FROM Uzytkownicy WHERE Nazwisko = 'Nowak';
Dzięki temu możesz upewnić się, że zmiany zostaną zastosowane do odpowiednich danych.
Usuwanie danych za pomocą DELETE
Polecenie DELETE służy do usuwania rekordów z tabeli. Podobnie jak w przypadku UPDATE, należy zachować szczególną ostrożność, aby nie usunąć przypadkowo wszystkich danych z tabeli. Kluczowe jest użycie klauzuli WHERE, aby usunąć tylko te rekordy, które spełniają określone warunki.
Składnia:
DELETE FROM nazwa_tabeli WHERE warunek;
- nazwa_tabeli – nazwa tabeli, z której chcesz usunąć dane.
- warunek – klauzula WHERE określająca rekordy, które mają zostać usunięte.
Przykład: Usuwanie pojedynczego rekordu
Załóżmy, że chcesz usunąć użytkownika o ID = 3 z tabeli Uzytkownicy. Możesz to zrobić za pomocą następującego zapytania:
DELETE FROM Uzytkownicy WHERE ID = 3;
To zapytanie usunie tylko rekord użytkownika z ID = 3.
Usuwanie wielu rekordów
Możesz również użyć klauzuli WHERE, aby usunąć więcej niż jeden rekord na raz. Na przykład, jeśli chcesz usunąć wszystkich użytkowników o nazwisku „Kowalski”:
DELETE FROM Uzytkownicy WHERE Nazwisko = 'Kowalski';
To zapytanie usunie wszystkich użytkowników o nazwisku „Kowalski” z tabeli Uzytkownicy.
Usuwanie wszystkich rekordów
Jeśli nie podasz klauzuli WHERE, polecenie DELETE usunie wszystkie rekordy z tabeli. Ponieważ jest to nieodwracalna operacja, należy być bardzo ostrożnym przy jej użyciu. Jeśli chcesz usunąć wszystkie dane, ale zachować tabelę, możesz użyć następującego zapytania:
DELETE FROM Uzytkownicy;
To zapytanie usunie wszystkie rekordy z tabeli Uzytkownicy, ale tabela pozostanie nienaruszona.
Różnica między DELETE
a TRUNCATE
Oprócz polecenia DELETE, SQL oferuje również polecenie TRUNCATE, które usuwa wszystkie rekordy z tabeli. Różnica między DELETE a TRUNCATE polega na tym, że TRUNCATE jest szybsze i nie można go cofnąć za pomocą ROLLBACK w systemach z obsługą transakcji.
Przykład:
TRUNCATE TABLE Uzytkownicy;
To zapytanie szybko usuwa wszystkie rekordy z tabeli Uzytkownicy, a także resetuje licznik AUTO_INCREMENT, jeśli taki istnieje. TRUNCATE usuwa wszystkie dane z tabeli, ale sama tabela oraz jej struktura pozostają nietknięte.
Zabezpieczenia przed niechcianymi usunięciami
Podobnie jak w przypadku aktualizacji danych, przed usunięciem danych warto upewnić się, że usuwasz tylko te rekordy, które chcesz usunąć. Możesz to zrobić, testując zapytanie SELECT z tym samym warunkiem WHERE, który planujesz użyć w zapytaniu DELETE.
Na przykład:
SELECT * FROM Uzytkownicy WHERE ID = 3;
Jeśli wyniki są zgodne z tym, co chcesz usunąć, możesz bezpiecznie wykonać polecenie DELETE.
Usuwanie danych w phpMyAdmin
Jeśli korzystasz z phpMyAdmin, możesz łatwo usuwać rekordy z tabeli za pomocą graficznego interfejsu:
- Wybierz tabelę, z której chcesz usunąć dane.
- Kliknij zakładkę Przeglądaj.
- Zaznacz rekordy, które chcesz usunąć.
- Na dole strony kliknij Usuń, aby usunąć zaznaczone rekordy.
Możesz również wykonać zapytanie DELETE ręcznie, przechodząc do zakładki SQL i wpisując odpowiednie polecenie.
Podsumowanie
W tej lekcji nauczyliśmy się, jak modyfikować i usuwać dane w bazach danych za pomocą poleceń UPDATE i DELETE. Te operacje są bardzo potężne, ale wymagają ostrożności, aby uniknąć przypadkowych zmian lub usunięcia danych. Ważne jest, aby zawsze używać klauzuli WHERE, aby precyzyjnie określić, które rekordy mają zostać zmienione lub usunięte. Testowanie zapytań za pomocą SELECT przed wykonaniem aktualizacji lub usunięcia jest dobrą praktyką, która pomoże Ci uniknąć błędów.
W następnej lekcji omówimy operacje na danych, takie jak łączenie tabel za pomocą JOIN oraz bardziej zaawansowane techniki filtrowania i grupowania wyników.
Gratulacje! Ukończyłeś lekcję 6.
Przejdź teraz do lekcji 7 >> Operacje na danych (JOIN)
Spis Treści - darmowy kurs SQL
Wprowadzenie: Czym jest baza danych?
Lekcja 1: Instalacja dedykowanego środowiska dla SQL
Lekcja 2: Tworzenie bazy danych
Lekcja 3: Tworzenie tabel w SQL
Lekcja 4: Wstawianie danych do bazy danych SQL
Lekcja 5: Pobieranie danych z bazy danych SQL
Lekcja 6: Aktualizacja i usuwanie danych SQL
Lekcja 7: Operacje na danych (JOIN)
Lekcja 8: Funkcje agregujące i grupowanie danych (GROUP BY)
Lekcja 9: Podzapytania (Subqueries)
Lekcja 10: Indeksy w bazach danych
Lekcja 11: Optymalizacja zapytań SQL
Lekcja 12: Transakcje w bazach danych
Lekcja 13: Zarządzanie blokadami (Locks) i dostępem do danych
Lekcja 14: Replikacja danych w bazach danych
Lekcja 15: Partycjonowanie danych SQL
Lekcja 16: Widoki (Views) w bazach danych
Lekcja 17: Procedury składowane (Stored Procedures) i funkcje w SQL
Lekcja 18: Wyzwalacze (Triggers) w bazach danych
Lekcja 19: Zaawansowane indeksowanie w bazach danych
Lekcja 20: Narzędzia do zarządzania dużymi danymi (Big Data) w SQL
Lekcja 21: Bezpieczeństwo baz danych
Dodatki:
- Spis najważniejszych funkcji SQL