SQL základy 1. část

Pokračujeme v seriálu základům Testingu. Do poručují si přečíst předchozí články Základy testování 1. část a Základy testování 2. část. Pokud vás bude zajímat pouze SQL nemusíte základy testovaní číst. Všechny příklady jsem dělal v SQL Developer od Oracle který využívá Javu Oracle. Pokud budete chtít využít produktů Oracle je potřeba registrace a zdarma si je stáhnout, nabízí je pro Windows, Mac i Linux. Nebo můžete využit třeba MySQL nebo SQL od jiného výrobce. Rozdíly by oproti SQL Developer měli být minimální. Vždy doporučuji používat poslední verze software. SQL základy 1. část: Relační databáze
  • Skládá se z tabulek
  • Využívá dotazovací jazyk SQL
  • MySQL, Oracle
SQL= Structured Query Language SQL - DDL = Data Defintion Language - Create table, Drop table DML = Data Manipulation Language >  není case sensitive - nerozlišuje malá a velká písmena >  pro lepší čitelnost se doporučuje psát velkými písmeny >  dotaz může být rozdělen na více řádků >  čísla se píší normálně, text musí být v rovných uvozovkách ‘apostrof' >  každý příkaz končí středníkem ; >  klíčové slovo jazyka SQL nesmí být název tabulky nebo sloupce Datové typy > NUMBER (p,s) - číslo, p = počet celých čísel, s = počet desetinných čísel  (2,1- 99,9) > CHAR (n) - řetězec s pevnou délkou n, využívá se pro logické hodnoty 0/1, N/Y > VARCHAR2 - řetězec, až n znaků > DATE - datum 2017-01-01 > TIMESTAMP - datum a čas 2017-01-01 12:00:00 Primární klíč
  • Jednoznačný a jedinečný identifikátor řádků tabulky, standardně sloupce ID.
  • Název obvykle ID, generované sekvencí.
  • Může být, rodné číslo, číslo OP…….
  • Nejlepší uměle vytvořený klíč.
SQL základní příkazy Tabulka uzivatel
ID Jméno Prijmeni Vek
1 Pavel Novák 35
2 Jana Malá 27
  • INSERT - vložení řádku
INSERT INTO <tabulka> (<sloupec>) VALUES (<hodnota>) INSERT INTO Uzivatel (ID, Jmeno, Prijmeni, Vek ) VALUES (4, ‘Jan’, ‘Svoboda’, 40);
  • UPDATE - změna řádku - změna/aktualizace řádku
   ! bez WHERE změní všechny řádky, WHERE - kde, podmínka ! UPDATE <tabulka> SET <sloupec> = <hodnota> [WHERE <podminka>]; UPDATE Uzivatel SET Vek=41 WHERE ID=3;
  • DELETE FROM - smazání řádku
DELETE FROM <tabulka> [WHERE <podminka>]; DELETE FROM Uzivatel WHERE ID=3; *  SELECT - vyhledávání řádků SELECT <sloupce> FROM <tabulka> SELECT * FROM <uzivatel>; všechny sloupce v tabulce uživatel SELECT ID, Jmeno, Prijmeni, Vek FROM Uzivatel; vypíše sloupce podle kritérii v tabulce uživatel * COMMIT - potvrdí změnu, musí být po INSERT, UPDATE, DELETE. Po SELECT zbytečné. Může se použít buď příkaz nebo tlačítko
  • ROLLBACK - vrátí změnu k poslednímu COMMIT, buď příkaz nebo tlačítko
  • TRANSAKCE - více SQL příkazu na jednou, všechno nebo nic
na konci nutno potvrdit COMMIT pokud dojde k chybě ROLLBACK
  • WHERE - podmínka
  • =, >, <, <=, >=
  • Je různo <> nebo !=  SELECT * FROM Uzivatel WHERE Vek<>35;
  • IS NULL výběr řádku bez hodnoty ve sloupci SELECT * FROM Uzivatel WHERE Vek IS NULL;
  • IS NOT NULL výběr řádku z hodnotou ve sloupci
SELECT * FROM Uzivatel WHERE Vek IS NOT NULL;
  • BETWEEN (Bitvín) : Mezi dvěmi hodnotami                                                                                   SELECT * FROM Uzivatel WHERE Vek BETWEEN 27 AND 40;
Lze take zadat jako >= minimum AND <= maximum -  LIKE - vyhledávání v textu % zástupný znak = žolík SELECT * FROM Uzivatel WHERE Jmeno LIKE ‘Jan%'; můzě třeba být ‘%a%’, najde vše v řádku jméno - jména co obsahují a.
  • IN přesně definované hodnoty
  • SELECT * FROM Uzivatel WHERE Jmeno IN ‘Pavel’;
  • SELECT * FROM Uzivatel WHERE Vek IN (35, 27,40);
  • AND - logické A
Musí být splněny obě podmínky
AND NEPRAVDA PRAVDA
NEPRAVDA NEPRAVDA NEPRAVDA
PRAVDA NEPRAVDA PRAVDA
SELECT * FROM Uzivatel WHERE Vek >=27 AND Vek <=41; najde uživatele od 27 do 41 let.
  • OR - logické nebo
  • Musí být splněna aspoň jedna podmínka
OR NEPRAVDA PRAVDA
NEPRAVDA NEPRAVDA PRAVDA
PRAVDA PRAVDA PRAVDA
 SELECT * FROM Uzivatel WHERE Prijmeni='Svobodová'OR Prijmeni='Malá'; Typ: nahraď Malá jiným přímením, aby bylo vidět OR. Aritmické operace
  • sčítání +
  • odčítání -
  • násobení *
  • dělení /
SELECT Pocet*Cena_za_kus FROM Produkt; vynásobí cenu x počet Agregační funkce
  • SUM - součet  SELECT SUM (Vek) FROM Uzivatel; sečte věk všech uživatelů
  • COUNT - počet řádků
  • AVG - průměr
  • MIN
  • MAX
SELECT MAX (Vek) FROM Uzivatel; - maximální věk SELECT COUNT * FROM Uzivatel; - počet řádků v tabulce SELECT COUNT (Vek) FROM Uzivatel; - vrátí počet ne nula hodnot uživatele ORDER BY
  • řazení výsledku
  • ORDER BY <sloupec> ASC/DSEC
  • ASC - řazení vzestupně , defaultně, ale i tak by jsme měli psát
  • DESC - sestupně, nutné uvést
SELECT Jmeno FROM Uzivatel ORDER BY Jmeno DESC; seřadí uživatele podle abecedy po zpátku Alias sloupce
  • AS <sloupce>
  • Pro lepší pojmenování sloupců
SELECT COUNT (*) AS Pocet_radku FROM Uzivatel; hodnota COUNT se přepíše na Pocet_radku pro lepší orientaci. SQL Developer
  • nástroj na prohlížení a provádění operací s databází
www.demo-1.sql-vyuka.cz - zde si můžete ozkoušet SQL Časté pohovorové otázky
  • Napsat INSERT nebo UPDATE
  • Co je to primární klíč a zda je vhodné používat např. rodné číslo, email, telefonní číslo
  • Vyhledávání řádku bez hodnoty - IS NULL
  • Co je to transakce. Co se stane, když nastane v průběhu vykonávání transakce chyba - ROLLBACK