2.5 Výberový dopyt
Na získanie údajov z databázy používame takzvaný výberový dopyt s príkazom SELECT. Môžeme ho doplniť o selekciu riadkov klauzulou WHERE a tiež potlačiť duplicitné riadky výstupu kľúčovým slovom DISTINCT:
SELECT [DISTINCT] {stĺpce alebo výrazy} FROM {tabuľka} [WHERE {podmienka}];
V záujme prehľadnosti je vhodné každú klauzulu písať na samostatný riadok – pri krátkych výrazoch sa to zdá zbytočné, no neskôr je to priam nutnosť. Napríklad môžeme zobraziť priezvisko a plat všetkých Petrov:
SELECT priezviskopriezvisko, plat
FROM zamestnanci
WHERE meno = 'Peter';
Podmienkou WHERE filtrujeme riadky, nazývame to selekcia a voľbu stĺpcov nazývame projekcia. Pokiaľ chceme zobraziť všetky stĺpce, nemusíme ich menovať, ale môžeme použiť symbol „*“ – všetky informácie o všetkých zamestnancoch získame výrazom:
SELECT * FROM zamestnanci;
V klauzule SELECT môžeme spájať jednotlivé stĺpce a tiež ľubovoľné texty ohraničené apostrofmi ('). Oracle SQL a PostgreSQL umožňujú jednoduché spájanie operátorom „||“ – je to síce štandard, ale nefunguje v MySQL (v MariaDB len v režime Oracle). Môžeme však použiť funkciu CONCAT(), ktorá funguje vo všetkých troch SQL serveroch, napríklad:
SELECT CONCAT(meno, ' zarába mesačne ', plat)
FROM zamestnanci;
Žiaľ, v Oracle SQL môže mať funkcia CONCAT() len dva parametre, takže vyššie uvedený príklad by mal v univerzálnej podobe zložitejší tvar:
SELECT CONCAT(meno, CONCAT(' zarába mesačne ', plat))
FROM zamestnanci;
Treba dať pozor na rozdiely jednotlivých databázových systémov:
- rozlišovanie malých / veľkých písmen v texte: Oracle SQL a PostgreSQL ich rozlišujú, MySQL/MariaDB nie;
- operácia delenia celých čísel: Oracle SQL a MySQL/MariaDB vrátia výsledok ako reálne číslo, PostgreSQL vráti ako výsledok len celú časť (rovnako ako programovací jazyk C++).