Łapka LogoŁapka Infa
📝
Bazy Danych

Modyfikacja Danych (INSERT, UPDATE, DELETE)

Jak dodawać, usuwać i zmieniać rekordy w relacyjnej bazie danych. Pełny pakiet komend DML pod egzamin zawodowy INF.03.

Modyfikacja Danych w SQL (DML)

Do tej pory używaliśmy polecenia SELECT, które pozwala tylko patrzeć na dane (jest jak lustro weneckie). Jednak na egzaminach zawodowych, a czasem też pod kątem logiki aplikacji, musisz umieć modyfikować zawartość bazy (tzw. język DML - Data Manipulation Language).

1. Dodawanie rekordów (INSERT INTO)

Aby wstawić nowy wiersz (rekord) do tabeli, używamy komendy INSERT INTO. Wymieniamy w niej kolumny do których chcemy wstawić dane, a następnie używając słówka VALUES podajemy w nawiasie wartości w tej samej kolejności.

INSERT INTO Uczniowie (Imie, Nazwisko, Klasa)
VALUES ('Jan', 'Kowalski', '3A');

Zwróć uwagę, że stringi (napisy) zawsze owijamy w pojedynczy cudzysłów '. Liczb nie musimy.

🗄️

Interaktywna Konsola: Wstawianie rekordu (INSERT INTO)

Wstaw nowego pracownika do tabeli 'pracownicy', a następnie sprawdź stan bazy!

Symbole:

Jeśli dodajemy dane do WSZYSTKICH kolumn w tabeli dokładnie po kolei, możemy pominąć wymienianie kolumn i napisać po prostu:

INSERT INTO Uczniowie VALUES (1, 'Jan', 'Kowalski', '3A', 19);

2. Aktualizowanie rekordów (UPDATE)

Jeśli Janek przeszedł z klasy 3A do klasy 3B, musimy zaktualizować (zmodyfikować) jego rekord używając komendy UPDATE.

UPDATE Uczniowie
SET Klasa = '3B'
WHERE Imie = 'Jan' AND Nazwisko = 'Kowalski';
🗄️

Interaktywna Konsola: Modyfikacja danych (UPDATE)

Podnieś pensję wszystkim pracownikom w dziale IT o 500 zł!

Symbole:

[!CAUTION] Nigdy nie zapomnij o klauzuli WHERE! Jeśli napiszesz samo UPDATE Uczniowie SET Klasa = '3B'; (bez warunku WHERE na dole), to baza z uśmiechem na twarzy przerzuci WSZYSTKICH uczniów w szkole do klasy 3B. Z tego powodu serwery bazodanowe w poważnych firmach są specjalnie konfigurowane w tryb tzw. safe-updates, żeby blokować głupie próby update bez WHERE.

3. Usuwanie rekordów (DELETE)

Użycie DELETE jest bardzo podobne do SELECT i UPDATE, ale wyrzuca całe wiersze w kosmos.

DELETE FROM Uczniowie
WHERE Imie = 'Jan' AND Nazwisko = 'Kowalski';

Tutaj również zasada "nie zapomnij o WHERE" obowiązuje w 100%. Użycie samego DELETE FROM Uczniowie; sprawi, że stracicie całą bazę uczniów i pan informatyk z firmy wyleci z pracy (o ile nie miał backupu).

[!TIP] Dla dociekliwych: TRUNCATE vs DELETE Jeśli z jakiegoś powodu NAPRAWDĘ chcesz całkowicie opróżnić (wyczyścić) jakąś tabelę, o wiele szybszym i polecanym sposobem jest komenda TRUNCATE TABLE Uczniowie;. W przeciwieństwie do DELETE, TRUNCATE po prostu "formatuje" tabelę, zamiast usuwać jeden wiersz po drugim (co przy milionach rekordów zająłoby minuty).