10.2 SQL CRUD: SELECT, INSERT, UPDATE, DELETE

Tavs šīs stundas izaicinājums: Apgūt visu četru SQL CRUD operāciju sintaksi un izpildīt tās praktiski savā datubāzē.

SR 2.4.17. Darbs ar failiem un ārējām datu krātuvēm SR 2.4.13. Mainīgie un datu tipi

Teorija: CRUD — datu pārvaldības četri stūrakmeņi

CRUD ir akronīms četrām pamata datu operācijām:

-- INSERT (var ievadīt vairākas rindas reizē)
INSERT INTO speletaji (vards, punkti) VALUES ('Anna', 120), ('Jānis', 95);

-- SELECT (filtrēšana, kārtošana, ierobežošana)
SELECT vards, punkti FROM speletaji
WHERE punkti > 100
ORDER BY punkti DESC
LIMIT 5;

-- UPDATE (vienmēr ar WHERE — citādi atjaunina visu!)
UPDATE speletaji SET punkti = punkti + 10 WHERE vards = 'Anna';

-- DELETE (uzmanīgi! vienmēr ar WHERE)
DELETE FROM speletaji WHERE punkti < 50;

1. uzdevums: INSERT — ievadi datus

Aizpildi tabulu ar testa datiem.

Izpildes soļi:

  1. Atver pgAdmin Query Tool.
  2. Pievieno 5 spēlētājus: INSERT INTO speletaji (vards, punkti) VALUES ('Anna', 120), ('Jānis', 95), ('Eva', 145), ('Pēteris', 60), ('Marta', 200);
  3. Pārbaudi: SELECT * FROM speletaji; — vajadzētu būt 5 rindām.
  4. Pamēģini ievadīt dublikātu (ja vārds ir UNIQUE): kāda kļūda?

2. uzdevums: SELECT ar filtriem

Atrod konkrētus datus pēc nosacījumiem.

Izpildes soļi:

  1. Visus, kam punkti virs 100: SELECT * FROM speletaji WHERE punkti > 100;
  2. TOP 3 spēlētāji: SELECT vards, punkti FROM speletaji ORDER BY punkti DESC LIMIT 3;
  3. Saskaiti, cik kopā: SELECT COUNT(*) FROM speletaji;
  4. Vidējie punkti: SELECT AVG(punkti) FROM speletaji;
  5. Saskaņa pēc vārda: SELECT * FROM speletaji WHERE vards LIKE 'A%'; (sākas ar A)

3. uzdevums: UPDATE un DELETE

Maina un dzēš ierakstus, sapratoties ar WHERE svarīgumu.

Izpildes soļi:

  1. Pievieno Annai 50 punktus: UPDATE speletaji SET punkti = punkti + 50 WHERE vards = 'Anna';
  2. Pārliecinies, ka mainījies tikai Annai (SELECT...).
  3. Dzēš spēlētājus ar mazāk par 70 punktiem: DELETE FROM speletaji WHERE punkti < 70;
  4. EKSPERIMENTS: Mēģini izpildīt UPDATE speletaji SET punkti = 0; bez WHERE — tas atjauninās VISUS! (Lai atgrieztu, vēlreiz INSERT.)
  5. Saglabā skriptu kā crud_demo.sql.

Papildus uzdevums: Agregātu funkcijas

Apgūsti SUM, MIN, MAX, GROUP BY.

Izpildes soļi:

  1. Maksimālais rezultāts: SELECT MAX(punkti) FROM speletaji;
  2. Vārds ar maksimālo rezultātu: SELECT vards, punkti FROM speletaji ORDER BY punkti DESC LIMIT 1;
  3. Pievieno kolonnu limenis INTEGER DEFAULT 1 un grupē: SELECT limenis, COUNT(*) FROM speletaji GROUP BY limenis;

Biežākās kļūdas

Koda piemērs

-- Pilns CRUD demo
INSERT INTO speletaji (vards, punkti) VALUES ('Anna', 120), ('Jānis', 95);

SELECT vards, punkti FROM speletaji
ORDER BY punkti DESC LIMIT 3;

UPDATE speletaji SET punkti = punkti + 10 WHERE vards = 'Anna';

DELETE FROM speletaji WHERE punkti < 50;

-- Statistika
SELECT COUNT(*), AVG(punkti), MAX(punkti) FROM speletaji;
vards | punkti
------|-------
Anna | 130
Jānis | 95
(skaits, vidējais, maks)
⬅ Iepriekšējā stunda Nākamā stunda ➡