moje weby:    Eshop - internetový obchod kde seženete parádní věcičky    www.imlok.net    elektrika (schémata, značky, postupy)    návody na deskové hry    Wordpress

iMlok.net
vodMobilPocket PCPClnkyLicenn ujednnKontakt
  

SQL III.- Výběr dat

Máme tabulku, navkládaná data, nyní je potřeba s nimi pracovat s výběry.

Základní syntaxe

Syntaxe:


Po klíčovém slovu SELECT následuje výčet sloupců (viz. níže selekce sloupců), potom klíčové slovo FROM a z jaké tabulky. Zde můžeme dát alias, pod kterým bude toto jméno v selectu vystupovat.
Např.

nebo s podmínkou

A nakonec zadaná podmínka která nám ovládá to co se nám vybere. Rozebereme podmínky samostatně níže.

ORDER BY nám zajištujě dle čeho se tabulka seřadí vzestupně ASC, nebo sestupně DESC. Pořadí napsaných sloupců určuje kritéria řazení.

Selekce sloupců

Selekce sloupsů probíhá tak, že můžeme buď jednotlivé sloupce vypsat a to i včetně toho že si můžeme zpřeházet jejich pořadí tak jak nám vyhovuje. Např.

Vypíše tabulku v zadaném pořadí.
Nebo použijeme pro výpis VŠECH sloupců z tabulky/lek * (hvězdičku).

Vypíše tabulku přesně tak jak je.
Tuto hvěždičku můžeme použít i tak že ji přímo připojíme na alias za tečku např.

Alias nám také určuje ze které tabulky se konkrétně má sloupec vzít a nedochází k tomu že y ji převzal z jiné.

Další možnosti při výběru sloupců

Můžeme použít klíčová slova: - DISTINCT Výběr se nám bude snažit zobrazit pouze řádky které nejsou stejné, takže ty stejné záznamy jakoby odhodí.

- SUM Pokud to půjde (hodnota na řádku a sloupci bude číslo), bude se snažit ve výběru zobrazenou hodnotu sumarizovat.

- Count Vrátí nám počet řádků odpovídající podmínce.

- UPPER Vrátí nám v řeězci všechny znaky velké.

Podmínky WHERE

WHERE je klíčové slovo které označuje sadu podmínek a to nejen pro selekci dat, ale také třeba při jejich mazání, úpravě.

AND, OR

Podmínky mezi sebou mají další klíčová slova a to AND což znamená že musí platit nejen předchozí podmínka ale i tato. Nebo OR a to znamená NEBO, čili buď platí předchozí podmínka, nebo tato, obě jsou přípustné. Ukážeme si na příkladech.

Zde v tomto příkladu budu podmínky družit, takže musí zároveň platit obě.


Zde v tomto příkladu bude platit podmínka jedna, nebo druhá, takže stačí bude-li platit aspoň jedna z nich.


Podmínky je možné dávat do závorek a tím skládat jejich různé variace viz příklad:


Samozřejmě ze podmínky se nemusí rovnat ale mohou mít také znaménko různé / mimo toto. To označíme šipkami větší a menší. Pokud by jsme chtěli mít jenom větší, nebo menší dáme POUZE jeden ukazatel nahoru nebo dolů (viz. v příkladu druhý řádek).

hromadná selekce IN a negovani

Mám konkrétně na mysli, pokud máte nějakou skupinu prvků v jednom sloupci a chcete vybrat řádek, pokud kterýkoliv z těchto prvků se rovná tak je nesmysl aby jste to vypisovali po jednom jako v příkladu:


ale mnohem efektivnější a elegantnější je použít podmínku IN, ukážeme si na příkladu:


Do závorky si umístíte ty hodnoty které sse mají vybrat hezky oddělené čárkou.

Může nastat případ že je to ale právě skupina kterou nechcete vybrat, potom to tzv. znegujeme slovíčkem NOT.


A vyberou se řádky které tyto hodnoty neobsahují.

BETWEEN

Tato podmínka se používá pokud chceme zadat rovnou sovislý rozsah a nechceme jednotlivé hodnoty vypisovat, nahrazuje nám tohle:


Můžeme to napsat i takto s BETWEEN


Ale tady pozor! U některých Databází tohle nefunguje, případně výběr nezačíná na rovno, ale pouze na větší a menší než.

LIKE

Pokud má sloupec textovou hodnotu, je možné použít klauzuli LIKE.
LIKE funguje tak že vyhodnocuje porovnáním zda řetězec odpovídá. Navíc máte výhodu že lze mezi uvozovky dát znak % (procento). Za procento dosazuje dotaz při výběru jakékoliv znaky a jakýkoliv počet do slova COSI. Můžete procento použít jenom na jedné strane (vpravo, vlevo), nebo na obou. Nebo můžete použít znak _ (podtržítko) a za něj je dosazen jeden jakýkoliv znak, lze jich dát více.



Samožrějmě i zde lze znegovat slovem NOT.

GROUP BY a HAVING

Při sumarizaci, nebo COUNTovacích funkcích, musíme použít GROUP BY, kde napíšeme názvy ostatních sloupců které nejsou těmito funkcemi sumarizovány, ale chceme je zobrazit v selectu.
Můžeme u podmínky použít dopodmínku třeba jako brát při sumarizaci pouze vždy první dva řádky. A to uděláme podmínkou HAVING.
Např.

Výběr ze dvou a více tabulek

SELECTem můžeme vybírat i z více tabulek zaráz. Ukážeme si to na dvou stejných tabulkách pokus a pokus_detail.
Pokud by jsme je neopodmínkovali, potom vezme výběr N x N záznamů ze každé tabulky a napasuje jej na každý záznam z druhé tabulky. To by nebylo příliš šikovné mimoto že pokud máte opravdu hodně dat v tabulkách mohlo by to i chvíli trvat.



Proto raději je opodmínkujeme a zajistíme tím i smysluplný výstup. Nejprve tabulky mezi sebou propojíme (dejme tomu že je to master a detail tabulka).


Takže se nám vyberou pouze záznamy kde se shodují na řádcích ve sloupci cislo

No a nyní můžeme přidávat podmínky dle libosti, jak jsme zvykli, jen nesmíte zapomenout před tečkou říct ze které tabulky chcete sloupec brát (u unikátních sloupců to neplatí, ale je lépe si na to zvyknout)!


UNION ALL

UNION ALL sloučí více selectů dohromady, používá se tehdy, pokud v každém selectu máte podmínku, která by se vylučovala na předchozí SELECT, ale chcete to mít ve výstupu / zobrazí spolu.
Jediná podmínka je že sloupce MUSÍ mít stejné datové typy a stejný rozměr jako první select!



21.04.2008 - Mlok -


Copyright   - MLOK -
Poet nvtev: 39713.213