Date post: | 13-Apr-2017 |
Category: |
Data & Analytics |
Upload: | peckadesigncz |
View: | 796 times |
Download: | 1 times |
FB: facebook.com/peckadesign TW: @peckadesign
ZÁKLADY SQL
Lukáš Brázdil
FB: facebook.com/peckadesign TW: @peckadesign
FB: facebook.com/peckadesign TW: @peckadesign
FB: facebook.com/peckadesign TW: @peckadesign
FB: facebook.com/peckadesign TW: @peckadesign
TŘÍVRSTVÁ ARCHITEKTURA
FB: facebook.com/peckadesign TW: @peckadesign
PREZENTAČNÍ APLIKAČNÍ
DATOVÁ
FB: facebook.com/peckadesign TW: @peckadesign
DATABÁZE
FB: facebook.com/peckadesign TW: @peckadesign
FB: facebook.com/peckadesign TW: @peckadesign
A DATABASE IS AN ORGANIZED COLLECTION OF DATA.
https://en.wikipedia.org/wiki/Database
FB: facebook.com/peckadesign TW: @peckadesign
TABULKA:)
FB: facebook.com/peckadesign TW: @peckadesign
TVORBA DATABÁZE
FB: facebook.com/peckadesign TW: @peckadesign
ERD - SCHÉMA RELAČNÍ DATABÁZE
FB: facebook.com/peckadesign TW: @peckadesign
NORMÁLNÍ FORMY
https://cs.wikipedia.org/wiki/Normalizace_datab%C3%A1ze
0. NF 1. NF
hodnoty je možní rozdělit hodnoty jsou nedělitelné
FB: facebook.com/peckadesign TW: @peckadesign
PRIMÁRNÍ VS. CIZÍ KLÍČ
FB: facebook.com/peckadesign TW: @peckadesign
VAZBY
FB: facebook.com/peckadesign TW: @peckadesign
VAZBY M:N
FB: facebook.com/peckadesign TW: @peckadesign
VAZBY M:N
FB: facebook.com/peckadesign TW: @peckadesign
DBMS
FB: facebook.com/peckadesign TW: @peckadesign
FB: facebook.com/peckadesign TW: @peckadesign
Jakou zvolit licenci: http://www.tomas-solar.com/blog/webinar/co-nevite-o-licencich-placenem-supportu-oracle/
FB: facebook.com/peckadesign TW: @peckadesign
SQL
http://www.w3schools.com/sql/
FB: facebook.com/peckadesign TW: @peckadesign
FB: facebook.com/peckadesign TW: @peckadesign
• DDL • DML • DQL
FB: facebook.com/peckadesign TW: @peckadesign
PAUZA?
FB: facebook.com/peckadesign TW: @peckadesign
WORKSHOP
http://lukasbrazdil.com/workshop/
FB: facebook.com/peckadesign TW: @peckadesign
• phpMyAdmin • Adminer
Jednoduchý online DB simulátor: http://sqlfiddle.com/
APLIKACE PRO SPRÁVU DB
FB: facebook.com/peckadesign TW: @peckadesign
DATOVÝ TYP
• varchar (pro text) • int (pro číslo)
FB: facebook.com/peckadesign TW: @peckadesign
DDL (DATA DEFINITION LANGUAGE)
• CREATE • ALTER • DROP
http://www.w3schools.com/sql/
FB: facebook.com/peckadesign TW: @peckadesign
DML (DATA MANIPULATION LANGUAGE)
• INSERT • UPDATE • DELETE
FB: facebook.com/peckadesign TW: @peckadesign
DQL (DATA QUERY LANGUAGE)
• SELECT
http://www.w3schools.com/sql
FB: facebook.com/peckadesign TW: @peckadesign
TESTOVACI DB
link na: http://lukasbrazdil.com/workshop/
FB: facebook.com/peckadesign TW: @peckadesign
SELECT
SELECT * FROM firma [další nepovinné příkazy];
FB: facebook.com/peckadesign TW: @peckadesign
SELECT - PODMÍNKY
např. SELECT * FROM firma WHERE id=1;
WHERE
FB: facebook.com/peckadesign TW: @peckadesign
SELECT - ŘAZENÍ
např. SELECT * FROM firma ORDER BY id DESC
ORDER BY
FB: facebook.com/peckadesign TW: @peckadesign
SELECT - OMEZENÍ
např. SELECT * FROM firma LIMIT 2 [OFFSET 1]
LIMIT
FB: facebook.com/peckadesign TW: @peckadesign
SELECT
DISTINCT
např. SELECT DISTINCT jmeno FROM zamestnanec
FB: facebook.com/peckadesign TW: @peckadesign
SELECT - AGREGAČNÍ FUNKCE
AVG() - Returns the average value COUNT() - Returns the number of rows FIRST() - Returns the first value LAST() - Returns the last value MAX() - Returns the largest value MIN() - Returns the smallest value SUM() - Returns the sum
např. SELECT AVG(mzda) FROM zamestnanec
FB: facebook.com/peckadesign TW: @peckadesign
SELECT - FUNKCE
SELECT jmeno, count(jmeno) pocet FROM zamestnanec GROUP BY jmeno
GROUP BY
FB: facebook.com/peckadesign TW: @peckadesign
SELECT - FUNKCE
SELECT jmeno, count(jmeno) pocet FROM zamestnanec GROUP BY jmeno HAVING jmeno=“Jan”
HAVING
FB: facebook.com/peckadesign TW: @peckadesign
SELECT - SKALÁRNÍ FUNKCE
UCASE() - Converts a field to upper case LCASE() - Converts a field to lower case LENGTH() - Returns the length of a text field ROUND() - Rounds a numeric field to the number NOW() - Returns the current system date and time
např. SELECT jmeno, LENGTH(jmeno) delka_jmena FROM zamestnanec
FB: facebook.com/peckadesign TW: @peckadesign
SELECT - KOMENTÁŘE
Dají se dělat komentáře?
#dajínenápadný znak užitečný např. při SQL injection:)
FB: facebook.com/peckadesign TW: @peckadesign
SELECT
Duplicitní sloupce a zkrácené názvy
tabulka_a a ANEBO tabulka_a as a
FB: facebook.com/peckadesign TW: @peckadesign
SELECT - SPOJOVÁNÍ TABULEK
• horizontální • vertikální
FB: facebook.com/peckadesign TW: @peckadesign
SELECT - SPOJOVÁNÍ TABULEK (HORIZONTÁLNÍ)
JOIN
FB: facebook.com/peckadesign TW: @peckadesign
SELECT - JOIN
FB: facebook.com/peckadesign TW: @peckadesign
SELECT - (INNER) JOIN
SELECT * FROM zamestnanec z JOIN firma f ON f.id=z.id_firmy
FB: facebook.com/peckadesign TW: @peckadesign
SELECT - LEFT JOIN
SELECT * FROM pozice p LEFT JOIN zamestnanec z ON p.id=z.id_pozice
FB: facebook.com/peckadesign TW: @peckadesign
SELECT - RIGHT JOIN
SELECT * FROM zamestnanec z RIGHT JOIN firma f ON f.id=z.id_firmy
FB: facebook.com/peckadesign TW: @peckadesign
SELECT - SPOJOVÁNÍ TABULEK (VERTIKÁLNÍ)
UNION A UNION ALL
FB: facebook.com/peckadesign TW: @peckadesign
SELECT - UNION, UNION ALL
SELECT * FROM zamestnanec2 z2 RIGHT JOIN pozice p ON z2.id_pozice=p.id
UNION
SELECT * FROM zamestnanec2 z2 LEFT JOIN pozice p ON z2.id_pozice=p.id
FB: facebook.com/peckadesign TW: @peckadesign
SELECT
subselect
SELECT * FROM zamestnanec WHERE mzda>(SELECT AVG(mzda) FROM zamestnanec)
FB: facebook.com/peckadesign TW: @peckadesign
PŘÍKLADY
Kolik je zaměstnanců v tabulce zaměstnanec?
Kolik zaměstnanců má každá z firmem?
Průměrná mzda v Praze?
FB: facebook.com/peckadesign TW: @peckadesign
DÍKY ZA POZORNOST