SQL – databázový jazyk, příkazy, syntaxe a použití.
Obecně
SQL – strukturovaný dotazovací jazyk. SQL je tzv. jazyk deklarativní. Zatímco u imperativních jazyků počítači vlastně říkáme krok po kroku, co má udělat, u jazyků deklarativních pouze říkáme co má být výsledkem a již nás nezajímá, jak tohoto výsledku počítač dosáhne. Díky tomu jsou databázové dotazy zjednodušeny na příkaz typu „Vrať mi 10 uživatelů s nejvyšším hodnocením“. Databáze takový dotaz pochopí, rozloží si ho na nějaké své instrukce a tak jej zpracuje. Nám poté opravdu vrátí výsledek, aniž bychom tušili, jak k němu došla.
Příkazy
SELECT
Základní použití
Příkaz SELECT slouží k získání dat z tabulky nebo pohledu v požadované podobě.
Získání všech řádků a sloupců z tabulky
SELECT * FROM Person.Contact
Vrací všechny všechny řádky a sloupce (*) z tabulky Person.Contact (Person je schéma do kterého tabulka Contact patří, je-li tabulka v jiném schématu než dbo, je třeba uvádět v jejím názvu toto schéma)
Získání všech řádků a vybraných sloupců z tabulky
SELECT FirstName, LastName FROM Person.Contact
Vrací všechny řádky z tabulky, ale jen zvolné sloupce
Aplikace filtru na vracené řádky
SELECT * FROM Person.Contact WHERE Title = ‚Mr.‘
Vrací pouze řádky, kde hodnota sloupce
Title je rovna řetězci ‚Mr.‘ Podmínky lze seskupovat logickými operátory (AND, OR, NOT)
SELECT * FROM Person.Contact WHERE Title = ‚Mr.‘ AND Suffix = ‚Jr.‘
Práce s řetězci v podmínce
Pokud potřebujeme použít zástupné symboly v řetězci, musíme použít klíčové slovo LIKE
SELECT * FROM Person.Contact WHERE Title NOT LIKE ‚M%‘
Dotaz vrací všechny řádky z dané tabulky, kde ve sloupci Title není (NOT) řetězec začínající písmenem M, které je následované 0-n libovolnými symboly.
- % – 0..n libolných symbolů
- _ – 1 libolný symbol
- [abc] – množina symbolů (aplikován 1x)
- [^abc] -všechny symboly, kromě určených (aplikován 1x)
SELECT * FROM Person.Contact WHERE ContactID < 10
Vrací řádky, kde je ContactID < 10
Podmínka na test hodnoty NULL
SELECT * FROM Sales.SalesOrderHeader WHERE CreditCardID IS NULL
Na hodnotu NULL se v podmínce musíme dotazovat klíčovým slovem IS
Modifikace dat
Vkládání dat
INSERT INTO Sales.CreditCard VALUES (‚Maestro‘,’5464654654′,12,2009)
Do specifikované tabulky vložíme hodnoty uvedené za VALUES. Pořadí se bere ze schématu tabulky a jsou vynechány vypočítané sloupce a sloupce s IDENTITY.
INSERT INTO Sales.CreditCard (CardType, CardNumber) VALUES (‚Maestro‘,’5464654654′)
Možnost specifikovat pořadí sloupců a případně možnost některé vynechat.
Modifikace dat
UPDATE Sales.CreditCard SET CardNumber = ‚45646546‘ WHERE CardNumber = ‚45646547‘
Ve vybrané tabulce aktualizujeme záznamy splňující podmínku (pokud není podmínka, aktualizace se provede nad všemi záznamy!)
Odstranění dat
DELETE FROM Sales.CreditCard WHERE CardNumber = ‚45646547‘
Odstraníme záznamy splňující podmínku (není-li podmínka, vymažou se všechny záznamy)
Datové typy
Celá čísla
Typ | Rozsah |
TINYINT | 8bitové číslo |
SMALLINT | 16bitové číslo |
MEDIUMINT | 24b číslo |
INT | 32b |
BIGINT | 64b |
Pozn. pokud hledáte datový typ boolean (hodnoty true/false), tak k ukládání této hodnoty se zpravidla používá TINYINT (0/1).
Texty
Typ | Rozsah |
TINYTEXT | max. 255 B |
TEXT | max. 64 KB (to je opravdu dlouhý text, třeba článku) |
MEDIUMTEXT | max. 224 B |
LONGTEXT | max. 232 B |
VARCHAR (max. počet znaků) | počet znaků jaký si zvolíte, max. 64 KB |
CHAR (počet znaků) | pevný počet znaků jaký si zvolíte, max. 255 |
Ostatní
Typ | Rozsah |
DATE | Datum jako textový řetězec ve tvaru ‚rrrr-mm-dd‘, rozsah od ‚1000-01-01‘
do ‚9999-12-31‘ |
TIME | Čas jako textový řetězec ve tvaru ‚hh:mm:ss‘ |
DATETIME | Prakticky je to zřetězení data a času: ‚rrrr-mm-dd hh:mm:ss‘ |
TIMESTAMP | Navenek se chová stejně jako Datetime, ale interně je to dword s počtem
sekund uplynulých od 1.1.1970. Rozsah mu končí v lednu 2038, takže tenhle typ moc nedoporučuji a uvádím ho jenom pro úplnost. |
BLOB a spol. | Obecná data v binárním tvaru, použití analogické k typům TEXT.
Umožňují do databáze ukládat např. obrázky nebo zvuky. |
Napsat komentář
Pro přidávání komentářů se musíte nejdříve přihlásit.