CZĘŚĆ 14
SQL: modyfikacja danych (INSERT, UPDATE, DELETE)
PPrezentacja dla nauczyciela
Wprowadzanie zmian w bazie opiera się na trzech operacjach: wstawieniu nowego rekordu (INSERT), zmianie istniejącego (UPDATE) oraz jego usunięciu (DELETE). Kluczem do punktów na egzaminie jest walidacja danych wejściowych przed zapisem oraz obowiązkowy warunek WHERE przy edycji i usuwaniu.
Dodawanie danych INSERT
INSERT INTO dodaje nowy wiersz. Podajemy nazwy kolumn i wartości w tej samej kolejności — wtedy nie zależy nam na fizycznej kolejności kolumn w tabeli.
Wartości tekstowe i daty bierzemy w apostrofy, liczby bez. Kolumnę id z AUTO_INCREMENT pomijamy, bo baza nada numer sama.
Można dodać kilka wierszy jednym poleceniem, podając kolejne zestawy wartości po przecinku. Jest to szybsze niż wiele osobnych zapytań.
INSERT INTO uczniowie (imie, klasa, punkty)
VALUES ('Ola', '3TI', 18);
INSERT INTO uczniowie (imie, klasa, punkty)
VALUES ('Jan', '3TI', 12), ('Ewa', '3TI', 20);
Zmiana danych UPDATE
UPDATE zmienia istniejące wiersze. Po słowie SET podajemy kolumnę i nową wartość, a po WHERE wskazujemy, których wierszy zmiana dotyczy.
Brak WHERE to klasyczny błąd: zmieni się wtedy każdy wiersz w tabeli. Dlatego przed uruchomieniem warto sprawdzić warunek zapytaniem SELECT.
Można zmieniać kilka kolumn naraz, oddzielając przypisania przecinkami. Wartość można też wyliczyć, np. dodać punkty: punkty = punkty + 5.
UPDATE uczniowie
SET punkty = punkty + 5
WHERE klasa = '3TI';
UPDATE uczniowie
SET imie = 'Aleksandra', klasa = '4TI'
WHERE id = 7;
Usuwanie danych DELETE
DELETE FROM usuwa wiersze wskazane warunkiem WHERE. Podobnie jak w UPDATE, brak warunku opróżnia całą tabelę.
Struktura tabeli zostaje — znikają tylko dane. Jeśli chcesz usunąć tabelę razem z danymi, użyj DROP TABLE.
W aplikacji rzadko usuwamy dane bezpowrotnie. Częściej dodajemy kolumnę aktywny i ustawiamy ją na 0 — to tak zwane miękkie usuwanie, które pozwala odzyskać rekord.
DELETE FROM uczniowie
WHERE punkty = 0;
DELETE FROM uczniowie
WHERE klasa = '1TI' AND punkty < 5;
Ćwiczenia
- 1Podstawowy INSERT INTOpierwszy INSERT INTOZadanie i podpowiedzi →
- 2INSERT z formularza POSTINSERT z formularza POSTZadanie i podpowiedzi →
- 3Walidacja wymaganych pól przed INSERTwalidacja przed zapisemZadanie i podpowiedzi →
- 4Walidacja liczb i cen przed zapisemwalidacja ceny dodatniejZadanie i podpowiedzi →
- 5Pobranie ID nowego rekordu mysqli_insert_ididentyfikator mysqli_insert_idZadanie i podpowiedzi →
- 6Pole opcjonalne w INSERTpole opcjonalne w INSERTZadanie i podpowiedzi →
- 7Obsługa błędów i status zapisustatus zapisu w bazieZadanie i podpowiedzi →
- 8Podstawowy UPDATE ze stałym warunkiempierwszy UPDATE z WHEREZadanie i podpowiedzi →
- 9UPDATE z parametrem z formularzaUPDATE z parametrem z POSTZadanie i podpowiedzi →
- 10Aktualizacja wielu kolumn narazaktualizacja wielu kolumnZadanie i podpowiedzi →
- 11Niebezpieczeństwo braku WHERE w UPDATEpułapka braku WHEREZadanie i podpowiedzi →
- 12Kontrola edycji mysqli_affected_rowskontrola mysqli_affected_rowsZadanie i podpowiedzi →
- 13Podstawowy DELETE po identyfikatorzeusunięcie DELETE po idZadanie i podpowiedzi →
- 14Kontrola usuwania z mysqli_affected_rowskontrola usuwania rekordówZadanie i podpowiedzi →
- 15Formularz edycji z pobranymi danymiformularz edycji z danymiZadanie i podpowiedzi →
- 16Panel operacji na danych DMLpanel operacji na danych DMLZadanie i podpowiedzi →