SQL - select: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
(Vytvorená stránka „{{Skripta_dbs}} {{Draft}} Príkaz SELECT sa používa pre výber dát z databázy. Výsledok je uložený v tabuľke výsledkov. ==Syntax príkazu SELECT== Základná synta…“)
 
Riadok 7: Riadok 7:
 
   SELECT názvy_stĺpcov_tabuľky FROM názov_tabuľky
 
   SELECT názvy_stĺpcov_tabuľky FROM názov_tabuľky
 
</source>
 
</source>
Kompletná syntax je nasledujúca:
+
Kompletná syntax je nasledujúca<ref>SQL syntax - http://dev.mysql.com/doc/refman/5.5/en/select.html</ref>:
 
<source lang="sql">
 
<source lang="sql">
 
SELECT  
 
SELECT  
Riadok 43: Riadok 43:
 
Výsledok:
 
Výsledok:
 
[[Súbor:SQL - select2.png|center]]
 
[[Súbor:SQL - select2.png|center]]
 +
===SELECT eliminácia duplicitných záznamov===
 +
Pre elimináciu duplicitných záznamov vo výsledku dotazu slúži kľúčové slovo DISTINCT.
 +
 +
'''Úloha:''' Vyber všetky kódy krajín z tabuľky city.
 +
 +
Riešenie:
 +
<source lang="sql">
 +
  SELECT DISTINCT CountryCode FROM city
 +
</source>
 +
 +
Výsledok:
 +
[[Súbor:SQL - select11.png|center]]
 +
 +
 +
'''Úloha:''' Aké formy vlády sú na jednotlivých kontinentoch?
 +
 +
Vysvetlenie: Údaje o krajinách sú v tabuľke country. Pri každej krajine sú okrem iných aj informácie o forme vlády (GovernmentForm),  kontinente, na ktorom sa nachádza (Continent). Keďže nás nezaujímajú samotné krajiny ale len kontinenty na ktorých ležia, dotazom ''SELECT Continent, GovernmentForm FROM country'' by sme dostali  duplicitné záznamy, pretože na danom kontinente sú krajiny, ktoré majú rovnaké formy vlády.
 +
 +
Riešenie:
 +
<source lang="sql">
 +
  SELECT DISTINCT Continent, GovernmentForm FROM country
 +
</source>
 +
 +
Výsledok:
 +
[[Súbor:SQL - select12.png|center]]
  
 
===SELECT obmedzenie výberu===
 
===SELECT obmedzenie výberu===
Riadok 182: Riadok 207:
  
 
===SELECT - usporiadanie výsledku===
 
===SELECT - usporiadanie výsledku===
===SELECT - zoskupovanie===
+
Výsledok SQL dotazu môžeme usporiadať podľa ľubovoľného stĺpca a to zostupne alebo vzostupne. Kľúčové slovo pre takého usporiadanie je ORDER BY. Poradie je určené slovom ASC (vzostupne) alebo DESC (zostupne)
====SELECT - obmedzenie zoskupovania====
+
 
 +
 
 +
'''Úloha:''' Vyber všetky mestá zo Slovenska a z Čiech, ktoré majú menej ako 100 tisíc obyvateľov. Výsledok usporiadaj podľa počtu obyvateľov vzostupne.
 +
 
 +
Riešenie:
 +
<source lang="sql">
 +
  SELECT * FROM city WHERE (CountryCode like "SVK" or CountryCode like "CZE") and population<100000 ORDER BY Population ASC
 +
</source>
 +
Poznámka: V prípade, ak usporiadavame údaje vzostupne kľúčové slovo ASC je nepovinné.
 +
 
 +
Výsledok:
 +
[[Súbor:SQL - select13.png|center]]
 +
 
 +
'''Úloha:''' Vyber všetky mestá zo Slovenska a z Čiech, ktoré majú menej ako 100 tisíc obyvateľov. Výsledok usporiadaj podľa názvu mesta zostupne.
  
'''Úloha:'''
+
Riešenie:  
Riešenie:
 
 
<source lang="sql">
 
<source lang="sql">
 
+
  SELECT * FROM city WHERE (CountryCode like "SVK" or CountryCode like "CZE") and population<100000 ORDER BY Name DESC
 
</source>
 
</source>
 +
Poznámka: V prípade, ak usporiadavame údaje vzostupne kľúčové slovo ASC je nepovinné.
  
 
Výsledok:
 
Výsledok:
 +
[[Súbor:SQL - select14.png|center]]
 +
 +
 +
===SELECT - zoskupovanie===
 +
====SELECT - obmedzenie zoskupovania====
 +
 +
  
 
'''Úloha:'''
 
'''Úloha:'''
Riadok 200: Riadok 245:
  
 
Výsledok:
 
Výsledok:
 +
==Literatúra a odkazy==
 +
<references/>

Verzia zo dňa a času 09:32, 7. október 2010

Imbox draft.png
Toto je projekt, na ktorom sa ešte stále pracuje!!

Aj keď sú v tomto dokumente použiteľné informácie, ešte nie je dokončený. Svoje návrhy môžete vyjadriť v diskusii o tejto stránke.

Príkaz SELECT sa používa pre výber dát z databázy. Výsledok je uložený v tabuľke výsledkov.

Syntax príkazu SELECT

Základná syntax (zjednodušená) je

  SELECT názvy_stĺpcov_tabuľky FROM názov_tabuľky

Kompletná syntax je nasledujúca[1]:

SELECT 
[ALL | DISTINCT | DISTINCTROW ]
select_expr, ... 
	[FROM table_references 
	[WHERE where_condition] 
	[GROUP BY {col_name | expr | position} 
		[ASC | DESC], ... [WITH ROLLUP]] 
	[HAVING where_condition] 
	[ORDER BY {col_name | expr | position} [ASC | DESC], ...] 
	[LIMIT {[offset,] row_count | row_count OFFSET offset}] [PROCEDURE procedure_name(argument_list)] 
	[INTO OUTFILE 'file_name' export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name]] 
	[FOR UPDATE | LOCK IN SHARE MODE]]

Poznámka: Výrazy v hranatých zátvorkách sú nepovinné, hodnoty oddelené čiarou (|) v zložených zátvorkách znamenajú výberj jednoej hodnoty z viacerých.

SELECT výber všetkých údajov

Úloha: vyberte všetky záznamy z tabuľky city.

Riešenie:

  SELECT * from city

Výsledok:

Úloha: vyberte všetky záznamy z tabuľkt city. Vo výbere bude len názov mesta a populácia.

Riešenie:

  SELECT Name, Population from city

Výsledok:

SELECT eliminácia duplicitných záznamov

Pre elimináciu duplicitných záznamov vo výsledku dotazu slúži kľúčové slovo DISTINCT.

Úloha: Vyber všetky kódy krajín z tabuľky city.

Riešenie:

   SELECT DISTINCT CountryCode FROM city

Výsledok:


Úloha: Aké formy vlády sú na jednotlivých kontinentoch?

Vysvetlenie: Údaje o krajinách sú v tabuľke country. Pri každej krajine sú okrem iných aj informácie o forme vlády (GovernmentForm), kontinente, na ktorom sa nachádza (Continent). Keďže nás nezaujímajú samotné krajiny ale len kontinenty na ktorých ležia, dotazom SELECT Continent, GovernmentForm FROM country by sme dostali duplicitné záznamy, pretože na danom kontinente sú krajiny, ktoré majú rovnaké formy vlády.

Riešenie:

   SELECT DISTINCT Continent, GovernmentForm FROM country

Výsledok:

SELECT obmedzenie výberu

Pre obmedzenie počtu výsledkov sa v príkaze SQL používa kľúčové slovo WHERE. Za kľúčové slovo sa píše logická podmienka. Výsledkom dotazu sú záznamy, ktoré vyhovujú danej logickej podmienke. Syntax je nasledovná:

  SELECT názvy_stĺpcov_tabuľky FROM názov_tabuľky WHERE logicka_podmienka

Logická podmienka je výraz, ktorého výsledok môže byť pravda (true) alebo nepravda (false). V logickej podmienke sa používajú relačné operátory:

= porovnanie
>= väčší rovný
> väčší
<= menší rovný
< menší
IS NULL Test na hodnotu NULL
IS Test na logickú hodnotu true/false
LIKE Porovnávanie reťazcov
!=, <> Operátor nerovnsti
NOT LIKE Negácia pri porovnávaní reťazcov
BETWEEN Výber hodnoty z daného intervalu

Úloha: Vyberte všetky mestá, v ktorých je populácia väčšia ako 5 000 000.

Riešenie:

  SELECT * FROM city WHERE Population>5000000

Výsledok:

Úloha: Vyber všetky mestá, ktoré majú kód krajiny "SVK"

Riešenie:

  SELECT * FROM city WHERE CountryCode like "SVK"

Výsledok:


Úloha: Vyber všetky mestá v ktorých je populácia medzi 1 a 2 miliónmi obyvateľov

Riešenie:

  SELECT * FROM city WHERE Population between 1000000 and 2000000

Výsledok:


Úloha: Vyber všetky mestá, ktorých názov začína na "Bra"

Riešenie:

  SELECT * FROM city WHERE Name LIKE 'Bra%'

Výsledok:

Poznámka: Znak % (percento) zastupuje ľubovoľný počet znakov.


Úloha: Vyber všetky mestá, ktorých kód krajiny začína na "N" a končí na "L"

Riešenie:

  SELECT * FROM city WHERE CountryCode LIKE "N_L"

Výsledok:

Poznámka: Znak _ (podčiarkovník) zastupuje jeden znak.

Spájanie viacerých podmienok

Pre vytváranie komplikovanejších logických podmienok v príkaze SELECT slúžia logické spojky. Existujú dve logické spojky:

  • AND
    • Výraz x AND y je pravdivý vtedy a len vtedy ak je pravdivý výrok x A ZÁROVEŇ je pravdivý výrok y
  • OR
    • Výraz x OR y je pravdivý vtedy ak je pravdivý výrok x ALEBO je pravdivý výrok y

Úloha: Vyber všetky mestá vo Veľkej britácii, v ktorých je populácia menšia ako 100tisíc obyvateľov.

Riešenie:

  SELECT * FROM city WHERE CountryCode like "GBR" and Population<100000

Výsledok:


Úloha: Vyber všetky mestá zo Slovenska a z Čiech

Riešenie:

  SELECT * FROM city WHERE CountryCode like "SVK" or CountryCode like "CZE"

Výsledok:


Úloha: Vyber všetky mestá zo Slovenska a z Čiech, ktoré majú menej ako 100 tisíc obyvateľov

Riešenie:

    SELECT * FROM city WHERE (CountryCode like "SVK" or CountryCode like "CZE") and population<100000

Výsledok:

SELECT - usporiadanie výsledku

Výsledok SQL dotazu môžeme usporiadať podľa ľubovoľného stĺpca a to zostupne alebo vzostupne. Kľúčové slovo pre takého usporiadanie je ORDER BY. Poradie je určené slovom ASC (vzostupne) alebo DESC (zostupne)


Úloha: Vyber všetky mestá zo Slovenska a z Čiech, ktoré majú menej ako 100 tisíc obyvateľov. Výsledok usporiadaj podľa počtu obyvateľov vzostupne.

Riešenie:

   SELECT * FROM city WHERE (CountryCode like "SVK" or CountryCode like "CZE") and population<100000 ORDER BY Population ASC

Poznámka: V prípade, ak usporiadavame údaje vzostupne kľúčové slovo ASC je nepovinné.

Výsledok:

Úloha: Vyber všetky mestá zo Slovenska a z Čiech, ktoré majú menej ako 100 tisíc obyvateľov. Výsledok usporiadaj podľa názvu mesta zostupne.

Riešenie:

   SELECT * FROM city WHERE (CountryCode like "SVK" or CountryCode like "CZE") and population<100000 ORDER BY Name DESC

Poznámka: V prípade, ak usporiadavame údaje vzostupne kľúčové slovo ASC je nepovinné.

Výsledok:


SELECT - zoskupovanie

SELECT - obmedzenie zoskupovania

Úloha: Riešenie:

Výsledok:

Literatúra a odkazy