W budowie
Materiał edukacyjny · Informatyka Zapis, edycja i usuwanie rekordów z formularza (INSERT, UPDATE, DELETE)

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);
1. Co dodaje INSERT INTO?
2. Czy podajemy id przy AUTO_INCREMENT?
3. Jak zapisać wartość tekstową?

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;
4. Co się stanie bez WHERE w UPDATE?
5. Do czego służy SET?
6. Co robi SET punkty = punkty + 5?

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;
7. Co usuwa DELETE FROM?
8. Co robi DROP TABLE?
9. Na czym polega miękkie usuwanie?

Ćwiczenia