Dokumentacja SQL pod egzamin INF.03. Każda sekcja zawiera opis, zastosowanie, przykłady i najczęstsze błędy.
Co robi? Pobiera dane z tabeli.
Częstotliwość: ~90%
SELECT * FROM produkty;
SELECT nazwa, cena FROM produkty;
SELECT nazwa AS Produkt FROM produkty;
SELECT DISTINCT miasto FROM klienci;
Błędy: brak FROM, brak kolumn po SELECT.
Filtrowanie rekordów.
SELECT * FROM produkty WHERE id = 1;
SELECT * FROM produkty WHERE cena > 100;
SELECT * FROM produkty WHERE cena < 100;
SELECT * FROM produkty WHERE cena >= 100;
SELECT * FROM produkty WHERE cena <= 100;
SELECT * FROM produkty WHERE cena <> 100;
Częstotliwość: ~65%
Wybór rekordów z zakresu.
SELECT * FROM produkty WHERE cena BETWEEN 100 AND 500;
Sprawdza czy wartość znajduje się na liście.
SELECT * FROM produkty WHERE id IN (1,2,3);
Wyszukiwanie tekstu.
WHERE nazwa LIKE '%kot%';
WHERE nazwa LIKE 'Kot%';
WHERE nazwa LIKE '%Kot';
SELECT * FROM produkty WHERE cena > 100 AND cena < 500;
SELECT * FROM produkty WHERE id = 1 OR id = 2;
SELECT * FROM produkty WHERE NOT cena > 100;
Sortowanie wyników.
ORDER BY nazwa ASC;
ORDER BY cena DESC;
Ograniczenie liczby rekordów.
SELECT * FROM produkty LIMIT 5;
SELECT * FROM produkty LIMIT 5,5;
Liczenie rekordów.
SELECT COUNT(*) FROM produkty;
SELECT COUNT(*) FROM produkty WHERE cena > 100;
SELECT AVG(cena) FROM produkty;
SELECT MIN(cena) FROM produkty;
SELECT MAX(cena) FROM produkty;
SELECT SUM(cena) FROM produkty;
Grupowanie rekordów.
SELECT kategoria, COUNT(*) FROM produkty GROUP BY kategoria;
Typowe zadanie CKE: policz elementy w każdej kategorii.
Warunek dla GROUP BY.
SELECT kategoria, COUNT(*) FROM produkty GROUP BY kategoria HAVING COUNT(*) > 5;
Łączenie tabel.
Częstotliwość: ~80%
SELECT * FROM produkty JOIN kategorie ON produkty.idKat = kategorie.id;
SELECT * FROM produkty INNER JOIN kategorie ON produkty.idKat = kategorie.id;
SELECT * FROM produkty LEFT JOIN kategorie ON produkty.idKat = kategorie.id;
Dodawanie rekordów.
INSERT INTO produkty(nazwa,cena) VALUES('Laptop',5000);
UPDATE produkty SET cena = 4000 WHERE id = 1;
DELETE FROM produkty WHERE id = 1;
ALTER TABLE produkty ADD opis VARCHAR(255);
CREATE TABLE produkty(
id INT PRIMARY KEY, nazwa VARCHAR(100), cena FLOAT
);
SELECT CURRENT_DATE;
SELECT CURRENT_TIME;
SELECT DATE_ADD(CURRENT_DATE, INTERVAL 7 DAY);
SELECT produkty.nazwa, kategorie.nazwa FROM produkty JOIN kategorie ON produkty.idKat = kategorie.id WHERE produkty.cena > 100 ORDER BY produkty.nazwa ASC;
SELECT kategoria, COUNT(*) AS liczba FROM produkty GROUP BY kategoria;