Select-y
Pre odskusanie selektov je potrebna prax a priamy kontakt s nou.
Preto budeme zatial zo zaciatku pouzivat ukazkovu databazu Sakila pre MySQL .
Informacie o nej mozete najst na stranke https://dev.mysql.com/doc/sakila/en/sakila-introduction.html.
Dalsie informacie: https://www.quackit.com/mysql/tutorial/mysql_sample_database.cfm
Diagram databazy
Teória
Dátový typ NULL
Dátový typ NULL nie je zhodný s hodnotou 0, lebo 0 je určitá numerická hodnota vyjadrujúca počet. Ale hodnota NULL predstavuje "nič", ktorá môže byť použita pri ktoromkoľvek dátovom type. Vyhľadávanie hodnôt s hodnotou NULL je uskutočnované pomocou operátora IS.
SELECT * FROM table_name WHERE column_name IS NULL; SELECT * FROM table_name WHERE column_name IS NOT NULL;
Syntax SELECT
SELECT column_name,column_name FROM table_name; SELECT * FROM table_name; SELECT DISTINCT column_name FROM table_name;
Podmienka WHERE
SELECT column_name,column_name FROM table_name WHERE column_name operator value; -- Operators -- = Rovné -- <> Nerovné. V niektorích verziách SQL sa používa != -- > Väčšie ako -- < Menšie ako -- >= Väčšie alebo rovné ako -- <= Menšie alebo rovné ako -- BETWEEN z rozsahu -- LIKE hľadanie podľa výrazu -- IN výber z udaných hodnôt
Spájanie podmienok
SELECT * FROM Customers WHERE condition AND condition; SELECT * FROM Customers WHERE condition OR condition; SELECT * FROM Customers WHERE condition AND (condition OR condition);
Zoradenie údajov
SELECT column_name, column_name FROM table_name ORDER BY column_name ASC; SELECT column_name, column_name FROM table_name ORDER BY column_name DESC; SELECT column_name, column_name FROM table_name ORDER BY column_name ASC, column_name DESC;
Obmedzenie počtu zobrazených údajov
-- SQL Server / MS Access Syntax SELECT TOP number column_name(s) FROM table_name; -- MySQL Syntax SELECT column_name(s) FROM table_name LIMIT number; -- Oracle Syntax SELECT column_name(s) FROM table_name WHERE ROWNUM <= number;
Vyhľadávanie podľa vzoru
-- pattern - je retazec SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern; SELECT column_name(s) FROM table_name WHERE column_name NOT LIKE pattern; -- Špeciálne znaky -- % nula alebo viac znakov -- _ jeden znak -- [charlist] [a-c] [abc] Množina znakov, z ktorej musí jedno obsahovať -- [^charlist] Množina znakov, z ktorej nesmie ani jedno obsahovať -- [!charlist] Množina znakov, z ktorej nesmie ani jedno obsahovať
Podmienky IN a BETWEEN
SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...); SELECT column_name(s) FROM table_name WHERE column_name NOT IN (value1,value2,...); SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2; SELECT column_name(s) FROM table_name WHERE column_name NOT BETWEEN value1 AND value2;
Aliasy
-- Alias stĺpca SELECT column_name AS alias_name FROM table_name; -- Alias tabuľky SELECT column_name(s) FROM table_name AS alias_name;
Zretazenie
-- MySQL SELECT concat(column_name,' ',column_name) FROM table_name; -- Oracle SQL SELECT column_name || ' ' || column_name FROM table_name;
Operácie v select klauzule
select column_name + column_name from table_name; select column_name - column_name from table_name; select column_name * column_name from table_name; select column_name / column_name from table_name; select column_name % column_name from table_name;
Agregačné funkcie
SELECT AVG(column_name) FROM table_name; -- COUNT(column_name) vráti počet hodnôt ( NULL hodnoty nebudú započítané ) SELECT COUNT(column_name) FROM table_name; -- COUNT(*) vráti počet záznamov v tabuľke SELECT COUNT(*) FROM table_name; SELECT MAX(column_name) FROM table_name; SELECT MIN(column_name) FROM table_name; SELECT SUM(column_name) FROM table_name;
Využitie agregačných funkcií - GROUP BY, HAVING
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE condition GROUP BY column_name; SELECT column_name, aggregate_function(column_name) FROM table_name WHERE condition GROUP BY column_name HAVING aggregate_function(column_name) operator value;
CASE
-- Oracle SQL SELECT column_name1, CASE column_name2 WHEN when_value THEN statement_value WHEN when_value THEN statement_value ELSE statement_value END FROM table_name; -- MySQL SELECT column_name1, CASE column_name2 WHEN when_value THEN statement_value WHEN when_value THEN statement_value ELSE statement_value END CASE FROM table_name;
Zdroj: http://www.w3schools.com/sql/
Odporucana literatura a priklady na odskusanie
- MySQL SELECT Statement
- MySQL WHERE Clause
- Podmienku AND
- Podmienku OR
- Podmienku IN
- Podmienku BETWEEN
- Podmienku LIKE
- Podmienku IS NULL
- Podmienku EXISTS
- Zoradenie vysledkov pomocou ORDER BY
- Obmedzenie poctu vysledkov pomocou LIMIT
- Ziskanie len unikatnych vysledkov DISTINCT
- Zoskupovanie riadkov pomocou GROUP BY
- MySQL DELETE Statement
- MySQL INSERT Statement
- MySQL UPDATE Statement
- MySQL REPLACE Statement
Ulohy na precvicenie pre Sakila databazu.
- Zobraziť všetkých zákazníkov v databáze.
- Zobraziť všetky prenájmy v databáze.
- Zobraziť všetky platby v databáze.
- Zobraziť všetky obchody v databáze.
- Zobraziť všetkých členov personálu v databáze.
- Zobraziť všetky položky inventára v databáze.
- Zobraziť všetky kategórie v databáze.
- Zobraziť všetkých hercov, ktorých priezvisko začína na 'C'.
- Zobraziť všetky filmy, ktoré boli uvedené na trh v roku 2006.
- Zobraziť všetky prenájmy, ktoré sa uskutočnili v mesiaci máj.
- Zobraziť počet zákazníkov v databáze.
- Zobraziť počet prenájmov v databáze.
- Zobraziť celkovú sumu peňazí získaných obchodom.
- Zobraziť priemernú sumu peňazí získaných obchodom.
- Vyberte všetky filmy z tabuľky film, ktoré majú rating PG alebo G.
- Vyberte všetky filmy z tabuľky film, ktoré majú rating R a ich dĺžka trvania je medzi 90 a 120 minútami.
- Vyberte všetky filmy z tabuľky film, ktoré majú rating NC-17 alebo R a boli vydané v roku 2006.
- Vyberte všetky filmy z tabuľky film, ktoré majú rating PG alebo G a ich názov začína na písmeno 'S'.
- Vyberte všetky filmy z tabuľky film, ktoré majú rating PG alebo G a ich názov obsahuje slovo 'Dog'.
- Vyberte všetky filmy z tabuľky film, ktoré nemajú priradený žiadny jazyk.
- Vyberte všetky filmy z tabuľky film, ktoré majú rating NC-17, R alebo PG-13 a ich názov začína na písmeno 'C' alebo 'D'.