SQL · INSERT, UPDATE, DELETE

SQL INSERT, UPDATE i DELETE — ćwiczenia z modyfikowania danych

INSERT, UPDATE i DELETE na tabeli uczestników. Rola WHERE, sprawdzanie zakresu zmiany i stan tabeli po każdym kroku.

45 minutPoziom podstawowyPliki i rozwiązania

Materiał redakcyjny TablicaPro · liceum i technikum

DELETE FROM uczestnicy
WHERE punkty < 20;
3 wiersze po zmianach.
Brak WHERE obejmuje całą tabelę.

Dotąd zapytania tylko czytały dane. Instrukcje INSERT, UPDATE i DELETE je zmieniają — a pomyłka (zwłaszcza brak WHERE) potrafi zniszczyć całą tabelę. Dlatego lekcja uczy prostego nawyku: przed zmianą sprawdź, które wiersze zostaną objęte, a po zmianie zweryfikuj wynik.

Scenariusz jest przeznaczony na 45 minut dla klasy znającej SELECT i WHERE — na przykład po lekcji o WHERE. Ćwiczenia wykonuj tylko na bazie ćwiczeniowej.

Przygotowanie stanowisk

Potrzebna jest baza MySQL 8 lub MariaDB (na przykład w XAMPP) i narzędzie do wykonywania zapytań, np. phpMyAdmin. Utwórz pustą bazę ćwiczeniową i zaimportuj raz plik baza.sql z pakietu. Plik nie usuwa tabel, więc ponowny import zgłosi błąd istniejącej tabeli. Zapytania zapisuj w start.sql; rozwiązania są w rozwiazania.sql. Ponieważ zadania zmieniają dane, przed drugim podejściem wyczyść bazę i zaimportuj baza.sql jeszcze raz (usuń tabelę poleceniem DROP TABLE uczestnicy;).

Cele i plan lekcji

Po zajęciach uczeń potrafi:

  • dodać wiersz instrukcją INSERT ... VALUES z jawną listą kolumn;
  • zmienić dane instrukcją UPDATE ... SET ... WHERE;
  • usunąć wiersze instrukcją DELETE ... WHERE;
  • sprawdzić zakres zmiany zapytaniem SELECT z tym samym warunkiem przed UPDATE i DELETE.
CzasPraca na lekcji
0–5 minProblem: dane trzeba aktualizować
5–15 minINSERT i UPDATE
15–22 minDELETE i znaczenie WHERE
22–37 minCztery zadania samodzielne
37–42 minSprawdzenie stanu tabeli po każdym kroku
42–45 minPytania kontrolne

Tabela uczestnicy

Kolumny: id, imie, klasa, punkty. Na początku tabela ma cztery wiersze.

idimieklasapunkty
1Anna2A15
2Bartek2B30
3Celina2A25
4Damian2B5

INSERT, UPDATE, DELETE

INSERT INTO tabela (kolumny) VALUES (wartości) dodaje wiersz; listę kolumn warto zawsze podawać, aby kolejność wartości nie zależała od budowy tabeli. UPDATE tabela SET kolumna = wartość WHERE warunek zmienia wybrane wiersze, a wyrażenie po prawej stronie może korzystać ze starej wartości (punkty = punkty + 10). DELETE FROM tabela WHERE warunek usuwa wiersze.

Brak WHERE w UPDATE lub DELETE obejmuje wszystkie wiersze tabeli. Dobry nawyk: najpierw zapisz SELECT * FROM uczestnicy WHERE ... z tym samym warunkiem, sprawdź, które wiersze zostaną zmienione, i dopiero potem zamień SELECT * na UPDATE lub DELETE. W systemach produkcyjnych dodatkowo stosuje się transakcje i kopie zapasowe; w ćwiczeniach wystarczy możliwość ponownego zaimportowania baza.sql.

Zadania

Zadanie 1. Dodaj uczestniczkę Ewa z klasy 2A, o id 5 i z 0 punktów. Sprawdź liczbę wierszy.

Zadanie 2. Zwiększ o 10 punktów wszystkich uczestników z klasy 2A. Najpierw wypisz wiersze, których dotyczy zmiana.

Zadanie 3. Usuń uczestników, którzy mają mniej niż 20 punktów. Najpierw sprawdź ich zapytaniem SELECT.

Zadanie 4. Wypisz wszystkich pozostałych uczestników według id.

Dla chętnych: opisz własnymi słowami, co stałoby się z tabelą po wykonaniu UPDATE uczestnicy SET punkty = 0; bez WHERE (nie wykonuj tego na tabeli, którą chcesz zachować).

Rozwiązanie i wyniki

-- Zadanie 1
INSERT INTO uczestnicy (id, imie, klasa, punkty)
VALUES (5, 'Ewa', '2A', 0);

-- Zadanie 2
UPDATE uczestnicy
SET punkty = punkty + 10
WHERE klasa = '2A';

-- Zadanie 3
DELETE FROM uczestnicy
WHERE punkty < 20;

-- Zadanie 4
SELECT id, imie, klasa, punkty
FROM uczestnicy
ORDER BY id;

Stan tabeli po kolejnych krokach (sprawdzony na SQLite z tą samą tabelą):

  • po zadaniu 1: pięć wierszy (Ewa z 0 punktów);
  • po zadaniu 2: Anna 25, Celina 35, Ewa 10, Bartek 30 i Damian 5 punktów;
  • po zadaniu 3: usunięto dwa wiersze (Damian — 5 punktów i Ewa — 10 punktów).

Wynik zadania 4:

idimieklasapunkty
1Anna2A25
2Bartek2B30
3Celina2A35

Zadanie 2 zmienia trzy wiersze (Anna, Celina i nowo dodana Ewa), więc Ewa po zmianie ma 10 punktów i trafia pod warunek z zadania 3. To dobry przykład na to, że kolejność instrukcji ma znaczenie.

Typowe błędy

ObjawCo sprawdzić
Zmieniły się wszystkie wierszeW UPDATE lub DELETE brakuje WHERE.
Błąd: Duplicate entry for key PRIMARYINSERT z id, które już istnieje.
Wartości trafiają do złych kolumnBrak listy kolumn w INSERT albo inna kolejność wartości.
Tekst nie jest dodawanyNapis musi być w apostrofach: 'Ewa'.
Usunięto za mało wierszyWarunek < 20 pominął wiersze z dokładnie 20 punktami.
Nie da się cofnąć zmianyBez transakcji zmiana jest trwała; zaimportuj bazę ponownie.

Pytania kontrolne i punktacja

  1. Co zrobi DELETE FROM uczestnicy; bez WHERE?
  2. Jak zwiększyć punkty Anny o 5?
  3. Dlaczego warto wykonać SELECT z tym samym warunkiem przed UPDATE?

Odpowiedzi: Usunie wszystkie wiersze tabeli (sama tabela zostanie). UPDATE uczestnicy SET punkty = punkty + 5 WHERE imie = 'Anna';. Aby zobaczyć, które wiersze zostaną zmienione, i uniknąć pomyłki.

Proponowana punktacja (razem 10 punktów): zadanie 1 — INSERT z listą kolumn 2 pkt; zadanie 2 — UPDATE z wyrażeniem 1 pkt, WHERE 1 pkt, wcześniejszy SELECT 1 pkt; zadanie 3 — DELETE z warunkiem 2 pkt; zadanie 4 — poprawny stan końcowy 2 pkt, wyjaśnienie wpływu kolejności 1 pkt. Zadanie dla chętnych nie jest wymagane do pełnej oceny.

Materiały do pobrania

Rozpakuj ZIP przed otwarciem plików. Materiały są dostępne bez logowania; publiczne rozwiązanie służy nauce i samodzielnemu sprawdzeniu, a nie poufnemu sprawdzianowi.

Co dalej?

Następne kroki to transakcje, klucze obce i projektowanie tabel. Ten materiał rozwija dział o modyfikowaniu danych w kursie SQL w TablicaPro, gdzie znajdziesz prezentacje, ćwiczenia i testy do prowadzenia lekcji.

Źródła techniczne: INSERT w dokumentacji MySQL, UPDATE oraz DELETE. Zobacz też lekcję o WHERE.

Poprowadź kolejne lekcje SQL

Pełny kurs: prezentacje, ćwiczenia i testy do pracy z klasą.

Kup dostęp do kursu SQL →

Zobacz program kursu