10.2 SQL CRUD: SELECT, INSERT, UPDATE, DELETE
Stundas uzdevums: Apgūt visu četru SQL CRUD operāciju sintaksi un izpildīt tās praktiski savā datubāzē.
70 min plāns: Teorija un paraugs (~10 min) · 1. uzdevums (~15 min) - ievadi datus ar INSERT · 2. uzdevums (~25 min) - filtrē un kārto ar SELECT · 3. uzdevums (~20 min) - droši lieto UPDATE un DELETE. Papildu uzdevumu sāc tikai tad, ja pārējie trīs ir gatavi.
Pirms sāc: atver savu datubāzi spele no 10.1 stundas. Brīdinājums: UPDATE un DELETE bez WHERE maina visas rindas.
Teorija: CRUD - datu pārvaldības četri stūrakmeņi
CRUD ir akronīms četrām pamata datu operācijām:
- Create -
INSERT - Read -
SELECT - Update -
UPDATE - Delete -
DELETE
-- 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;
Praktiskie uzdevumi
1. uzdevums -
Ievadi datus ar INSERT
Beigās tabulā būs pietiekami daudz datu, ar ko strādāt.
- Izpildi
INSERT INTO speletaji (vards, punkti) VALUES ('Anna', 120), ('Jānis', 95);. - Pievieno vēl četrus spēlētājus vienā komandā.
- Izpildi
SELECT COUNT(*) FROM speletaji;. - Pārbaudi, vai skaitlis sakrīt ar ievadīto rindu skaitu.
- Izpildi
SELECT * FROM speletaji;un apskatiidkolonnu. - Pieraksti, kas piešķīra
idvērtības, ja tu tās neievadīji.
Gatavs, kad: tabulā ir vismaz 6 spēlētāji, un katram ir automātiski piešķirts unikāls id.
2. uzdevums -
Filtrē un kārto ar SELECT
Beigās tu izvilksi tieši tos datus, kas vajadzīgi, nevis visus.
- Izpildi
SELECT vards, punkti FROM speletaji WHERE punkti > 100;. - Pievieno
ORDER BY punkti DESCun izpildi vēlreiz. - Pievieno
LIMIT 3un pieraksti, cik rindu atgriezās. - Uzraksti vaicājumu, kas atrod spēlētājus ar punktiem no 50 līdz 100.
- Uzraksti vaicājumu, kas atrod spēlētāju pēc vārda.
- Izpildi
SELECT AVG(punkti) FROM speletaji;. - Pieraksti vidējo punktu skaitu.
Gatavs, kad: TOP 3 vaicājums atgriež tieši trīs rindas, sakārtotas no lielākā punktu skaita.
3. uzdevums -
Droši lieto UPDATE un DELETE
Beigās tu zināsi, kā nesabojāt visu tabulu ar vienu komandu.
- Izpildi vispirms
SELECT * FROM speletaji WHERE vards = 'Anna';. - Pārliecinies, ka atgriežas tieši viena rinda.
- Izpildi
UPDATE speletaji SET punkti = punkti + 10 WHERE vards = 'Anna';. - Pārbaudi rezultātu ar
SELECT. - Izpildi
SELECT * FROM speletaji WHERE punkti < 50;. - Izdzēs tieši šīs rindas ar
DELETE FROM speletaji WHERE punkti < 50;. - Pieraksti vienu secinājumu: kāpēc pirms
UPDATEvienmēr jāizpildaSELECT.
Gatavs, kad: Annas punkti pieauga tieši par 10, un dzēstas tikai tās rindas, ko iepriekš redzēji SELECT rezultātā.
Papildu uzdevums - Izmēģini transakciju
Ja pamatdarbs ir gatavs, iemācies atsaukt kļūdainu komandu.
- Izpildi
BEGIN;. - Izpildi
DELETE FROM speletaji;bezWHERE. - Pārbaudi ar
SELECT, ka tabula ir tukša. - Izpildi
ROLLBACK;. - Pārbaudi ar
SELECTvēlreiz.
Gatavs, kad: pēc ROLLBACK visi dati ir atgriezušies, it kā dzēšana nekad nebūtu notikusi.
Biežākās kļūdas
- UPDATE bez WHERE atjaunina visu: Vienmēr divreiz pārbaudi
WHERE. - Jaucās virkņu pēdiņas: SQL lieto
'pēdiņas', nevis dubultās"pēdiņas". - Trūkst semikola: Katrs SQL paziņojums beidzas ar
;.
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;
------|-------
Anna | 130
Jānis | 95
(skaits, vidējais, maks)