CREATE TABLE Stipendia (
ID INT IDENTITY(1,1) PRIMARY KEY,
RodneCislo VARCHAR(11),
Datum DATE,
Castka DECIMAL(10,2),
FOREIGN KEY (RodneCislo) REFERENCES Studenti(RodneCislo) ON DELETE CASCADE
);
3) Vytvoření indexu
CREATE INDEX – Index na Příjmení
CREATE INDEX idx_prijmeni ON Studenti(Prijmeni);
4) Výběr dat s podmínkou
SELECT ... WHERE ... IN / IS NULL – Studenti podle PSČ
SELECT RodneCislo, Jmeno, Prijmeni
FROM Studenti
WHERE PSC IN ('10000', '30000') OR PSC IS NULL
ORDER BY Prijmeni;
5) JOIN + podmínka
SELECT + JOIN + WHERE – Štipendium > 10 000 Kč
SELECT DISTINCT s.RodneCislo, s.Jmeno, s.Prijmeni
FROM Studenti s
JOIN Stipendia st ON s.RodneCislo = st.RodneCislo
WHERE st.Castka > 10000;
6) LEFT JOIN + agregace
LEFT JOIN + SUM + COALESCE – Studenti na A bez štipendia
SELECT s.RodneCislo, s.Jmeno, s.Prijmeni,
COALESCE(SUM(st.Castka), 0) AS CelkovaCastka
FROM Studenti s
LEFT JOIN Stipendia st ON s.RodneCislo = st.RodneCislo
WHERE s.Prijmeni LIKE 'A%'
AND st.ID IS NULL
GROUP BY s.RodneCislo, s.Jmeno, s.Prijmeni;
7) Studenti bez štipendia
LEFT JOIN + IS NULL
SELECT s.RodneCislo, s.Jmeno, s.Prijmeni
FROM Studenti s
LEFT JOIN Stipendia st ON s.RodneCislo = st.RodneCislo
WHERE st.RodneCislo IS NULL
ORDER BY s.Prijmeni;
8) Přidání záznamu
INSERT INTO
INSERT INTO Studenti (RodneCislo, Jmeno, Prijmeni, Mesto, PSC)
VALUES ('123456/7890', 'Jan', 'Novák', 'Ostrava', '70000');
9) Úprava záznamu
UPDATE ... SET ... WHERE
UPDATE Studenti
SET PSC = '11000'
WHERE Mesto = 'Praha';
10) Smazání záznamu
DELETE FROM ... WHERE
DELETE FROM Stipendia
WHERE Castka = 1000
AND Datum = '2015-01-01';
Základní syntaxe příkazů (MSSQL)
SELECT (kompletní struktura)
SELECT sloupce / *
FROM tabulka
JOIN tabulka2 ON podmínka
WHERE podmínky
GROUP BY sloupce
HAVING podmínky
ORDER BY sloupce;
⚡ Cheatsheet – Operátory v podmínkách (WHERE)
Operátor
Příklad
Význam
=
WHERE Mesto = 'Praha'
Rovná se
> >= < <=
WHERE Castka > 10000
Porovnání čísel / dat
<> nebo !=
WHERE PSC <> '10000'
Nerovná se
BETWEEN
WHERE Castka BETWEEN 5000 AND 15000
V rozmezí (včetně)
IN
WHERE PSC IN ('10000','30000','70000')
Hodnota je v seznamu
IS NULL / IS NOT NULL
WHERE PSC IS NULL
Prázdná hodnota
LIKE
WHERE Prijmeni LIKE 'Nov%'
Textový vzor (% = libovolný počet znaků, _ = jeden znak)
AND / OR / NOT
WHERE Prijmeni LIKE 'A%' AND Castka > 0
Spojení podmínek
Tipy pro LIKE:
• 'A%' → začíná na A
• '%ova' → končí na ova
• '%Nov%' → obsahuje Nov kdekoli
• 'Novák_' → přesně 6 znaků po Novák