Syntea software group a.s. marian.kamenicky. MFFUK Praha

Podobné dokumenty
Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Databázové systémy Cvičení 5.3

KIV/ZIS cvičení 6. Tomáš Potužák

Úvod do databázových systémů

Databázové systémy a SQL

Informační systémy ve zdravotnictví. 10. cvičení

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

Databáze SQL SELECT. David Hoksza

Úvod do databázových systémů 3. cvičení

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12

Marian Kamenický. Syntea software group a.s. marian.kamenicky. MFFUK Praha 2012/13

Operátory ROLLUP a CUBE

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

KIV/ZIS - SELECT, opakování

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

Úvod do databázových systémů

Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Úvod do databázových systémů

Obsah. SQL konstrukce select join Rekurze (rekurzivní with) Analytické funkce, group by Pivoting

6. blok část C Množinové operátory

Informační systémy ve zdravotnictví. 8. cvičení

Databázové a informační systémy

Databázové systémy I

Informační systémy ve zdravotnictví. 6. cvičení

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Úvod do databázových systémů

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

U koly na procvic ení jazyka T-SQL

Databázové systémy Cvičení 5

Databázové systémy. Cvičení 6: SQL

PG 9.5 novinky ve vývoji aplikací

Jazyk SQL 2. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c M.Valenta, 2011 BI-DBS, ZS 2011/12

XMW4 / IW4 Pokročilé SELECT dotazy. Štefan Pataky

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

8.2 Používání a tvorba databází

Distanční opora předmětu: Databázové systémy Tématický blok č. 1: Dotazovací jazyk SQL Autor: RNDr. Jan Lánský, Ph.D.

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Kapitola 4: SQL. Základní struktura

Dotazovací jazyky I. Datová krychle. Soběslav Benda

Databáze I. Přednáška 2

Analýza a modelování dat 3. přednáška. Helena Palovská

Uložené procedury Úvod ulehčit správu zabezpečení rychleji

Úvod do SQL v systému SAS Martin Branda

SQL SQL-SELECT. Informační a znalostní systémy. Informační a znalostní systémy SQL- SELECT

6. blok část B Vnořené dotazy

Mechanismus obarvení řádků browse

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

RNDr. Jakub Lokoč, Ph.D. RNDr. Michal Kopecký, Ph.D. Katedra softwarového inženýrství Matematicko-Fyzikální fakulta Univerzita Karlova v Praze

Databázové systémy BIK-DBS

Databázové systémy. Dotazovací jazyk SQL - II

KIV/ZIS cvičení 5. Tomáš Potužák

Řešené příklady STUDENT(RČ, JMÉNO, SPECIALIZACE) PŘEDMĚT(KÓD, NÁZEV, SYLLABUS, GARANT) ZÁPIS(RČ, KÓD, SEMESTR, ZNÁMKA)

Databáze 2011/2012 SQL SELECT II. RNDr.David Hoksza, Ph.D.

Instalace. Produkt je odzkoušen pro MS SQL server 2008 a Windows XP a Windows 7. Pro jiné verze SQL server a Windows nebyl testován.

KIV/ZIS - SQL dotazy. stáhnout soubor ZIS- 04_TestovaciDatabaze accdb. SQL dotazy. budeme probírat pouze SELECT

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Databázové systémy I

DJ2 rekurze v SQL. slajdy k přednášce NDBI001. Jaroslav Pokorný

DUM 12 téma: Příkazy pro tvorbu databáze

8. Zpracování dotazu. J. Zendulka: Databázové systémy 8 Zpracování dotazu 1

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

- sloupcové integritní omezení

SQL tříhodnotová logika

Databázové systémy Tomáš Skopal

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

10 Algoritmizace Příklad 2 Word 2007/ VBA

4. blok část A Logické operátory

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Analýza a modelování dat. Přednáška 9

Dotazování v relačním modelu a SQL

Relační model dat (Codd 1970)

RNDr. Michal Kopecký, Ph.D. Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague

J. Zendulka: Databázové systémy 4 Relační model dat 1

Dolování asociačních pravidel

Vzorové příklady SQL. Tabulka: Kniha CREATE TABLE kniha (id INTEGER, název VARCHAR(50), PRIMARY KEY (id))

6. SQL složitější dotazy, QBE

Fakulta elektrotechniky a informatiky Databázové systémy 2. Leden 2010 souhrn. Červené dobře (nejspíš), modré možná

Virtual private database. Antonín Steinhauser

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Analýza a modelování dat. Přednáška 8

Jazyk S Q L základy, příkazy pro práci s daty

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

J. Zendulka: Databázové systémy 8 Zpracování dotazu Podstata optimalizace zpracování dotazu

SQL. strukturovaný dotazovací jazyk. Structured Query Language (SQL)

Databázové systémy a SQL

Násobení pomocí sčítání

SQL - úvod. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 6

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Úvod do lineární algebry

Základní přehled SQL příkazů

Datové a procesní modely. A zpět k PEPOvi

Program a životní cyklus programu

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Transkript:

[ Relační databáze ] Přednáška 4 Marian Kamenický Syntea software group a.s. marian.kamenicky kamenicky@syntea.cz MFFUK Praha 2013/14 1

Jednotabulkov tabulkové dotazy PK FK1 Oso Jmeno Plat IdOdd Oso Jmeno Plat IdOdd 10 000 100 Pepa 20 000 200 Fany 30 000 300 Gaby 25 000 100 Karel 20 000 200 Select * From Oso Oso Jmeno Oso Plat IdOdd 10 000 100 Pepa 20 000 200 Fany 30 000 300 Gaby 25 000 100 Karel 20 000 200 Select * From Oso Oso Where IdOdd = 200 200 Jmeno Pepa Karel Oso Plat 20 000 20 000 IdOdd 200 200 Select Jmeno, Plat Plat From Oso Oso Where IdOdd = 100 100 Oso Jmeno Plat 10 000 Gaby 25 000

Vícetabulkové dotazy vícetabulkový dotaz = klauzule FROM == více tabulek == spojování tabulek Jmeno Pepa Oso Plat IdOdd dr Mesto Ulice Cislo Brno Chlum Karel Select... From Oso Oso,, dr dr Jmeno Plat IdOdd Mesto Ulice Cislo Brno Pepa Chlum Karel

Vícetabulkové dotazy vícetabulkový dotaz = klauzule FROM == více tabulek == spojování tabulek Jmeno Pepa Oso Plat IdOdd dr Mesto Ulice Cislo Brno Chlum Karel Select... From Oso Oso,, dr dr Jmeno Plat IdOdd Mesto Ulice Cislo Brno Pepa Chlum Karel

Vícetabulkové dotazy spojováním tabulek se spojí sloupce řádku jedné tabulky [Oso] chceme doplnit o informace z druhé tabulky [dr] propojením jejich sloupců [ Mesto, Ulice, Cislo] Jmeno Pepa Karel Jmeno Pepa Karel Oso Plat Plat IdOdd IdOdd dr Mesto Ulice Cislo Brno Chlum Mesto Ulice Cislo Brno Chlum spojování tabulek == obohacování řádek jedné tabulky o data jiné tabulky Select... From Oso Oso,, dr dr

Vícetabulkové dotazy spojováním tabulek se spojí sloupce obou tabulek zároveň však dojde ke spojování řádek řádky jedné tablky se spojí se všemi / či některými řádky druhé tabulky Oso dr Jmeno Plat IdOdd Mesto Ulice Cislo Brno Chlum Pepa Karel Jmeno Plat IdOdd Mesto Ulice Cislo Brno Pepa Brno Chlum Karel

Vícetabulkové dotazy 2 způsoby spojování tabulek explicitní Select... From Oso Oso...... Join...... dr dr...... implicitní Select... From Oso Oso,, dr dr jakmile v klauzuli FROM jsou dvě či více tabulek jde vždy o spojování [join] explicitní / implicitní

kartézský součin popsal poprvé Standhal v knize Kartouza parmská [ [ nebo snad ne ne? ] ]

Spojování tabulek přirozené (NTURL JOIN) křížové (CROSS JOIN) vnitřní (INNER JOIN) vnější (OUTER JOIN) úplné vnější (FULL OUTER JOIN) částečné vnější z z leva (LEFT JOIN) z z prava (RIGHT JOIN) 9

Cross Join Select * From Tab1 Cross Join Tab2 1 2 3 Tab 1 1 2 3 Tab 2 Z Tab 1 1 radka z Tab 2 1 r. 1 radka 2 r. 1 radka 3 r. 2 radka 1 r. 2 radka 2 r. 2 radka 3 r. 3 radka 1 r. 3 radka 2 r. 3 radka 3 r.

Cross Join 1 2 3 Tab 1 1 2 3 Tab 2 Select * From Tab1 Cross Join Tab2 Tab 1 Jm RokNar 1960 Pepa 1970 Vojta 1990 Tab 2 Ovoce Barva banan zluty jablko zelene jahoda ruda Jm RokNar Ovoce Barva 1960 banan zluty 1960 jablko zelene 1960 jahoda ruda Pepa 1970 banan zluty Pepa 1970 jablko zelene Pepa 1970 jahoda ruda Vojta 1990 banan zluty Vojta 1990 jablko zelene Vojta 1990 jahoda ruda

Cross Join 1 2 3 Tab 1 1 2 3 Tab 2 Select * From Tab1 Cross Join Tab2 Tab 1 Jm RokNar 1960 Pepa 1970 Vojta 1990 Tab 2 Ovoce Barva banan zluty jablko zelene jahoda ruda Jm RokNar Ovoce Barva 1960 banan zluty 1960 jablko zelene 1960 jahoda ruda Pepa 1970 banan zluty Pepa 1970 jablko zelene Pepa 1970 jahoda ruda Vojta 1990 banan zluty Vojta 1990 jablko zelene Vojta 1990 jahoda ruda

Cross Join 1 2 3 Tab 1 1 2 3 Tab 2 Select * From Tab1 Cross Join Tab2 Tab 1 Jm RokNar 1960 Pepa 1970 Vojta 1990 Tab 2 Ovoce Barva banan zluty jablko zelene jahoda ruda Jm RokNar Ovoce Barva 1960 banan zluty 1960 jablko zelene 1960 jahoda ruda Pepa 1970 banan zluty Pepa 1970 jablko zelene Pepa 1970 jahoda ruda Vojta 1990 banan zluty Vojta 1990 jablko zelene Vojta 1990 jahoda ruda

Cross Join 1 2 3 Tab 1 1 2 3 Tab 2 Select * From Tab1 Cross Join Tab2 Tab 1 Jm RokNar 1960 Pepa 1970 Vojta 1990 Tab 2 Ovoce Barva banan zluty jablko zelene jahoda ruda Jm RokNar Ovoce Barva 1960 banan zluty 1960 jablko zelene 1960 jahoda ruda Pepa 1970 banan zluty Pepa 1970 jablko zelene Pepa 1970 jahoda ruda Vojta 1990 banan zluty Vojta 1990 jablko zelene Vojta 1990 jahoda ruda

Cross Join 1 2 3 Tab 1 1 2 3 Tab 2 Select * From Tab1, Tab2 Tab 1 Jm RokNar 1960 Pepa 1970 Vojta 1990 Tab 2 Ovoce Barva banan zluty jablko zelene jahoda ruda Jm RokNar Ovoce Barva 1960 banan zluty 1960 jablko zelene 1960 jahoda ruda Pepa 1970 banan zluty Pepa 1970 jablko zelene Pepa 1970 jahoda ruda Vojta 1990 banan zluty Vojta 1990 jablko zelene Vojta 1990 jahoda ruda

Cross Join 1 2 3 Tab 1 1 2 3 Tab 2 Select * From Tab1 Cross Join Tab2 explicitní křížové spojení Tab 1 Jm RokNar 1960 Pepa 1970 Vojta 1990 Tab 2 Ovoce Barva banan zluty jablko zelene jahoda ruda Jm RokNar Ovoce Barva 1960 banan zluty 1960 jablko zelene 1960 jahoda ruda Pepa 1970 banan zluty Pepa 1970 jablko zelene Pepa 1970 jahoda ruda Vojta 1990 banan zluty Vojta 1990 jablko zelene Vojta 1990 jahoda ruda

Cross Join 1 2 3 Tab 1 1 2 3 Tab 2 Select * From Tab1, Tab2 implicitní křížové spojení Tab 1 Jm RokNar 1960 Pepa 1970 Vojta 1990 Tab 2 Ovoce Barva banan zluty jablko zelene jahoda ruda Jm RokNar Ovoce Barva 1960 banan zluty 1960 jablko zelene 1960 jahoda ruda Pepa 1970 banan zluty Pepa 1970 jablko zelene Pepa 1970 jahoda ruda Vojta 1990 banan zluty Vojta 1990 jablko zelene Vojta 1990 jahoda ruda

Spojení Cross Oso Odd Oso Odd PK Jmeno PK IdOdd Jmeno Plat IdOdd IdOdd Nazev KodBudovy FK1 Plat IdOdd FK1 Nazev KodBudovy 10 000 100 Pepa 20 000 200 100 200 Nakup Prodej B 300 Propagace Select Oso.*,, Odd.* From Oso, Odd Odd implicitní Cross Join Jmeno Plat IdOdd IdOdd Nazev KodBudovy explicitní Cross Join Select Oso.*,, Odd.* From Oso Oso Cross Join Join Odd Odd kartézský součin tabulek

Spojení Cross Oso Odd Oso Odd PK Jmeno PK IdOdd Jmeno Plat IdOdd IdOdd Nazev KodBudovy FK1 Plat IdOdd FK1 Nazev KodBudovy 10 000 100 Pepa 20 000 200 100 200 Nakup Prodej B 300 Propagace Select Oso.*,, Odd.* From Oso, Odd Odd Select Oso.*,, Odd.* From Oso Oso Cross Join Join Odd Odd Jmeno Plat IdOdd IdOdd Nazev KodBudovy 10 000 100 100 Nakup 10 000 100 200 Prodej B 10 000 100 300 Propagace kartézský součin tabulek

Spojení Cross Oso Odd Oso Odd PK Jmeno PK IdOdd Jmeno Plat IdOdd IdOdd Nazev KodBudovy FK1 Plat IdOdd FK1 Nazev KodBudovy Pepa 10 000 20 000 100 200 100 200 Nakup Prodej B 300 Propagace Select Oso.*,, Odd.* From Oso, Odd Odd Select Oso.*,, Odd.* From Oso Oso Cross Join Join Odd Odd Jmeno Plat IdOdd IdOdd Nazev KodBudovy 10 000 100 100 Nakup 10 000 100 200 Prodej B 10 000 100 300 Propagace Pepa 20 000 200 100 Nakup Pepa 20 000 200 200 Prodej B Pepa 20 000 200 300 Propagace kartézský součin tabulek

Spojení Cross Oso Odd Oso Odd PK Jmeno PK IdOdd Jmeno Plat IdOdd IdOdd Nazev KodBudovy FK1 Plat IdOdd FK1 Nazev KodBudovy Pepa 10 000 20 000 100 200 100 200 Nakup Prodej B 300 Propagace Select Oso.*,, Odd.* From Oso, Odd Odd Select Oso.*,, Odd.* From Oso Oso Cross Join Join Odd Odd Jmeno Plat IdOdd IdOdd Nazev KodBudovy 10 000 100 100 Nakup 10 000 100 200 Prodej B 10 000 100 300 Propagace Pepa 20 000 200 100 Nakup Pepa 20 000 200 200 Prodej B Pepa 20 000 200 300 Propagace kartézský součin tabulek

Spojení Cross Oso Odd Oso Odd PK Jmeno PK IdOdd Jmeno Plat IdOdd IdOdd Nazev KodBudovy FK1 Plat IdOdd FK1 Nazev KodBudovy Pepa 10 000 20 000 100 200 100 200 Nakup Prodej B 300 Propagace Select Oso.*,, Odd.* From Oso, Odd Odd Select Oso.*,, Odd.* From Oso Oso Cross Join Join Odd Odd Jmeno Plat IdOdd IdOdd Nazev KodBudovy 10 000 100 100 Nakup 10 000 100 200 Prodej B 10 000 100 300 Propagace Pepa 20 000 200 100 Nakup Pepa 20 000 200 200 Prodej B Pepa 20 000 200 300 Propagace kartézský součin tabulek Jmeno Plat Nazev 10 000 Nakup Select Jmeno,, Plat, Plat, Nazev From Oso, Oso, Odd Odd [From Oso Oso Cross Join Join Odd] Pepa Pepa Pepa 10 000 10 000 20 000 20 000 20 000 Prodej Propagace Nakup Prodej Propagace

Spojení Cross Oso Odd Budova PK Jmeno PK IdOdd PK KodBudovy FK1 Plat IdOdd FK1 Nazev KodBudovy Barva dresa Oso Odd Budova Jmeno Plat IdOdd 10 000 100 IdOdd 100 Nazev Nakup KodBudovy KodBudovy Barva žlutá dresa Krátká 10 Pepa 20 000 200 200 Prodej B B modrá Dlouhá 16 300 Propagace C bílá korát 20

Spojení Cross Oso Jmeno Plat IdOdd 10 000 100 IdOdd 100 Nakup Pepa 20 000 200 200 Prodej B 300 Nazev Odd Propagace KodBudovy KodBudovy B C PK Oso Jmeno Plat FK1 IdOdd PK Budova Barva žlutá modrá bílá Odd IdOdd Nazev FK1 KodBudovy PK dresa Budova KodBudovy Barva dresa Krátká 10 Dlouhá 16 korát 20 Select Select O.Jmeno, O.Plat, O.Plat, D.Nazev, B.* B.* From From Oso Oso as as O, O, Odd Odd as as D, D, Budova Budova as as B implicitní Cross Jmeno Plat Nazev KodBudovy Barva drresa Select Select O.Jmeno, O.Plat, O.Plat, D.Nazev, B.* B.* From From Oso Oso as as O Cross Cross Join Join Odd Odd as as D Cross Cross Join Join Budova Budova as as B explicitní Cross kartézský součin dvou prvních tabulek Oso Oso a Odd Odd

Spojení Cross Oso Jmeno Plat IdOdd 10 000 100 IdOdd 100 Nakup Pepa 20 000 200 200 Prodej B 300 Nazev Odd Propagace KodBudovy KodBudovy B C PK Oso Jmeno Plat FK1 IdOdd PK Budova Barva žlutá modrá bílá Odd IdOdd Nazev FK1 KodBudovy PK dresa Budova KodBudovy Barva dresa Krátká 10 Dlouhá 16 korát 20 Select Select O.Jmeno, O.Plat, O.Plat, D.Nazev, B.* B.* From From Oso Oso as as O, O, Odd Odd as as D, D, Budova Budova as as B Jmeno Plat 10 000 10 000 10 000 Nazev Nakup Prodej Propagace KodBudovy Barva drresa Select Select O.Jmeno, O.Plat, O.Plat, D.Nazev, B.* B.* From From Oso Oso as as O Cross Cross Join Join Odd Odd as as D Cross Cross Join Join Budova Budova as as B kartézský součin dvou prvních tabulek Oso Oso a Odd Odd

Spojení Cross Oso Jmeno Plat IdOdd 10 000 100 IdOdd 100 Nakup Pepa 20 000 200 200 Prodej B 300 Nazev Odd Propagace KodBudovy KodBudovy B C PK Oso Jmeno Plat FK1 IdOdd PK Budova Barva žlutá modrá bílá Odd IdOdd Nazev FK1 KodBudovy PK dresa Budova KodBudovy Barva dresa Krátká 10 Dlouhá 16 korát 20 Select Select O.Jmeno, O.Plat, O.Plat, D.Nazev, B.* B.* From From Oso Oso as as O, O, Odd Odd as as D, D, Budova Budova as as B Jmeno Pepa Pepa Plat 10 000 10 000 10 000 20 000 20 000 Nazev Nakup Prodej Propagace Nakup Prodej KodBudovy Barva drresa Select Select O.Jmeno, O.Plat, O.Plat, D.Nazev, B.* B.* From From Oso Oso as as O Cross Cross Join Join Odd Odd as as D Cross Cross Join Join Budova Budova as as B Pepa 20 000 Propagace kartézský součin dvou prvních tabulek Oso Oso a Odd Odd

Spojení Cross Oso Jmeno Plat IdOdd 10 000 100 IdOdd 100 Nakup Pepa 20 000 200 200 Prodej B 300 Nazev Odd Propagace KodBudovy KodBudovy B C PK Oso Jmeno Plat FK1 IdOdd PK Budova Barva žlutá modrá bílá Odd IdOdd Nazev FK1 KodBudovy PK dresa Budova KodBudovy Barva dresa Krátká 10 Dlouhá 16 korát 20 Select Select O.Jmeno, O.Plat, O.Plat, D.Nazev, B.* B.* From From Oso Oso as as O, O, Odd Odd as as D, D, Budova Budova as as B Jmeno Pepa Pepa Plat 10 000 10 000 10 000 20 000 20 000 Nazev Nakup Prodej Propagace Nakup Prodej KodBudovy Barva drresa Select Select O.Jmeno, O.Plat, O.Plat, D.Nazev, B.* B.* From From Oso Oso as as O Cross Cross Join Join Odd Odd as as D Cross Cross Join Join Budova Budova as as B Pepa 20 000 Propagace kartézský součin dvou prvních tabulek Oso Oso a Odd Odd spojíme s každým řádkem 3. 3.

Spojení Cross Oso Jmeno Plat IdOdd 10 000 100 IdOdd 100 Nakup Pepa 20 000 200 200 Prodej B 300 Nazev Odd Propagace KodBudovy KodBudovy B C PK Oso Jmeno Plat FK1 IdOdd PK Budova Barva žlutá modrá bílá Odd IdOdd Nazev FK1 KodBudovy PK dresa Budova KodBudovy Barva dresa Krátká 10 Dlouhá 16 korát 20 Select Select O.Jmeno, O.Plat, O.Plat, D.Nazev, B.* B.* From From Oso Oso as as O, O, Odd Odd as as D, D, Budova Budova as as B Jmeno Pepa Pepa Plat 10 000 10 000 10 000 20 000 20 000 Nazev Nakup Prodej Propagace Nakup Prodej KodBudovy Barva žlutá žlutá žlutá žlutá žlutá drresa Krátká 10 Krátká 10 Krátká 10 Krátká 10 Krátká 10 Select Select O.Jmeno, O.Plat, O.Plat, D.Nazev, B.* B.* From From Oso Oso as as O Cross Cross Join Join Odd Odd as as D Cross Cross Join Join Budova Budova as as B Pepa 20 000 Propagace žlutá Krátká 10 kartézský součin dvou prvních tabulek Oso Oso a Odd Odd spojíme s každým řádkem 3. 3.

Spojení Cross Oso Jmeno Plat IdOdd 10 000 100 IdOdd 100 Nakup Pepa 20 000 200 200 Prodej B 300 Nazev Odd Propagace KodBudovy KodBudovy B C PK Oso Jmeno Plat FK1 IdOdd PK Budova Barva žlutá modrá bílá Odd IdOdd Nazev FK1 KodBudovy PK dresa Budova KodBudovy Barva dresa Krátká 10 Dlouhá 16 korát 20 Select Select O.Jmeno, O.Plat, O.Plat, D.Nazev, B.* B.* From From Oso Oso as as O, O, Odd Odd as as D, D, Budova Budova as as B Jmeno Pepa Pepa Plat 10 000 10 000 10 000 20 000 20 000 Nazev Nakup Prodej Propagace Nakup Prodej KodBudovy Barva žlutá žlutá žlutá žlutá žlutá drresa Krátká 10 Krátká 10 Krátká 10 Krátká 10 Krátká 10 Select Select O.Jmeno, O.Plat, O.Plat, D.Nazev, B.* B.* From From Oso Oso as as O Cross Cross Join Join Odd Odd as as D Cross Cross Join Join Budova Budova as as B Pepa Pepa Pepa 20 000 10 000 10 000 10 000 20 000 20 000 Propagace Nakup Prodej Propagace Nakup Prodej žlutá Krátká 10 kartézský součin dvou prvních tabulek Oso Oso a Odd Odd spojíme s každým řádkem 3. 3. Pepa 20 000 Propagace

Spojení Cross Oso Jmeno Plat IdOdd 10 000 100 IdOdd 100 Nakup Pepa 20 000 200 200 Prodej B 300 Nazev Odd Propagace KodBudovy KodBudovy B C PK Oso Jmeno Plat FK1 IdOdd PK Budova Barva žlutá modrá bílá Odd IdOdd Nazev FK1 KodBudovy PK dresa Budova KodBudovy Barva dresa Krátká 10 Dlouhá 16 korát 20 Select Select O.Jmeno, O.Plat, O.Plat, D.Nazev, B.* B.* From From Oso Oso as as O, O, Odd Odd as as D, D, Budova Budova as as B Jmeno Pepa Pepa Plat 10 000 10 000 10 000 20 000 20 000 Nazev Nakup Prodej Propagace Nakup Prodej KodBudovy Barva žlutá žlutá žlutá žlutá žlutá drresa Krátká 10 Krátká 10 Krátká 10 Krátká 10 Krátká 10 Select Select O.Jmeno, O.Plat, O.Plat, D.Nazev, B.* B.* From From Oso Oso as as O Cross Cross Join Join Odd Odd as as D Cross Cross Join Join Budova Budova as as B Pepa Pepa Pepa 20 000 10 000 10 000 10 000 20 000 20 000 Propagace Nakup Prodej Propagace Nakup Prodej B B B B B žlutá modrá modrá modrá modrá modrá Krátká 10 Dlouhá 16 Dlouhá 16 Dlouhá 16 Dlouhá 16 Dlouhá 16 kartézský součin dvou prvních tabulek Oso Oso a Odd Odd spojíme s každým řádkem 3. 3. Pepa 20 000 Propagace B modrá Dlouhá 16

Spojení Cross Oso Jmeno Plat IdOdd 10 000 100 IdOdd 100 Nakup Pepa 20 000 200 200 Prodej B 300 Nazev Odd Propagace KodBudovy KodBudovy B C Oso PK Jmeno Plat FK1 IdOdd PK Budova Barva žlutá modrá bílá Odd IdOdd Nazev FK1 KodBudovy PK dresa Budova Krátká 10 Dlouhá 16 korát 20 KodBudovy Barva dresa Select Select O.Jmeno, O.Plat, O.Plat, D.Nazev, B.* B.* From From Oso Oso as as O, O, Odd Odd as as D, D, Budova Budova as as B Jmeno Pepa Pepa Plat 10 000 10 000 10 000 20 000 20 000 Nazev Nakup Prodej Propagace Nakup Prodej KodBudovy Barva žlutá žlutá žlutá žlutá žlutá drresa Krátká 10 Krátká 10 Krátká 10 Krátká 10 Krátká 10 Select Select O.Jmeno, O.Plat, O.Plat, D.Nazev, B.* B.* From From Oso Oso as as O Cross Cross Join Join Odd Odd as as D Cross Cross Join Join Budova Budova as as B Pepa Pepa Pepa 20 000 10 000 10 000 10 000 20 000 20 000 Propagace Nakup Prodej Propagace Nakup Prodej B B B B B žlutá modrá modrá modrá modrá modrá Krátká 10 Dlouhá 16 Dlouhá 16 Dlouhá 16 Dlouhá 16 Dlouhá 16 kartézský součin dvou prvních tabulek Oso Oso a Odd Odd spojíme s každým řádkem 3. 3. Pepa 20 000 Propagace B modrá Dlouhá 16

Spojení Cross Oso Jmeno Plat IdOdd 10 000 100 IdOdd 100 Nakup Pepa 20 000 200 200 Prodej B 300 Nazev Odd Propagace KodBudovy KodBudovy B C PK Oso Jmeno Plat FK1 IdOdd PK Budova Barva žlutá modrá bílá Odd IdOdd Nazev FK1 KodBudovy PK dresa Budova KodBudovy Barva dresa Krátká 10 Dlouhá 16 korát 20 Select Select O.Jmeno, O.Plat, O.Plat, D.Nazev, B.* B.* From From Oso Oso as as O, O, Odd Odd as as D, D, Budova Budova as as B Jmeno Pepa Pepa Plat 10 000 10 000 10 000 20 000 20 000 Nazev Nakup Prodej Propagace Nakup Prodej KodBudovy Barva žlutá žlutá žlutá žlutá žlutá drresa Krátká 10 Krátká 10 Krátká 10 Krátká 10 Krátká 10 kartézský součin dvou prvních tabulek Oso Oso a Odd Odd spojíme s každým řádkem 3. 3. Pepa Pepa Pepa Pepa 20 000 10 000 10 000 10 000 20 000 20 000 20 000 Propagace Nakup Prodej Propagace Nakup Prodej Propagace B B B B B B žlutá modrá modrá modrá modrá modrá modrá Krátká 10 Dlouhá 16 Dlouhá 16 Dlouhá 16 Dlouhá 16 Dlouhá 16 Dlouhá 16 10 000 Nakup C bílá korát 20 celkem řádek 2 [Oso] [Oso] xx3 [Odd] [Odd] xx3 [Budova] ---> ---> 18 18 Pepa Pepa Pepa 10 000 10 000 20 000 20 000 20 000 Prodej Propagace Nakup Prodej Propagace C C C C C bílá bílá bílá bílá bílá korát 20 korát 20 korát 20 korát 20 korát 20

příklad skoro reálný

Spojení Cross - příklad Pan Jm Bobo Pepa Dama Jm Ema Jana Lucy Tanec Nazev polka čača tango vytvořte podklady pro testování dvojic z tanců řešte řešte Test Pan Dama Tanec............ Pan Bobo Bobo Bobo Dama Ema Jana Lucy Test Tanec Znamka Znamka Select P.Jm P.Jm Pan, Pan, D.Jm D.Jm Dama, T. T. Nazev Tanec, '' '' Znamka From Pan Pan P Cross Join Join Dama D Cross Join Join Tanec T

Spojení Cross - příklad Pan Jm Bobo Pepa Dama Jm Ema Jana Lucy Tanec Nazev polka čača tango vytvořte podklady pro testování dvojic z tanců Select P.Jm P.Jm Pan, Pan, D.Jm D.Jm Dama, T. T. Nazev Tanec, '' '' Znamka From Pan Pan P Cross Join Join Dama D Cross Join Join Tanec T řešte řešte Test Pan Dama Tanec............ Pan Bobo Bobo Bobo Pepa Pepa Pepa Dama Ema Jana Lucy Ema Jana Lucy Test Tanec Znamka Znamka

Spojení Cross - příklad Pan Jm Bobo Pepa Dama Jm Ema Jana Lucy Tanec Nazev polka čača tango vytvořte podklady pro testování dvojic z tanců Select P.Jm P.Jm Pan, Pan, D.Jm D.Jm Dama, T. T. Nazev Tanec, '' '' Znamka From Pan Pan P Cross Join Join Dama D Cross Join Join Tanec T řešte řešte Test Pan Dama Tanec............ Pan Bobo Bobo Bobo Pepa Pepa Pepa Dama Ema Jana Lucy Ema Jana Lucy Test Tanec polka polka polka polka polka polka Znamka Znamka

Spojení Cross - příklad Pan Jm Bobo Pepa Dama Jm Ema Jana Lucy Tanec Nazev polka čača tango vytvořte podklady pro testování dvojic z tanců Select P.Jm P.Jm Pan, Pan, D.Jm D.Jm Dama, T. T. Nazev Tanec, '' '' Znamka From Pan Pan P Cross Join Join Dama D Cross Join Join Tanec T řešte řešte Test Pan Dama Tanec............ Pan Bobo Bobo Bobo Pepa Pepa Pepa Bobo Bobo Bobo Pepa Pepa Pepa Dama Ema Jana Lucy Ema Jana Lucy Ema Jana Lucy Ema Jana Lucy Test Tanec polka polka polka polka polka polka čača čača čača čača čača čača Znamka Znamka

Spojení Cross - příklad Pan Jm Bobo Pepa Dama Jm Ema Jana Lucy Tanec Nazev polka čača tango vytvořte podklady pro testování dvojic z tanců Select P.Jm P.Jm Pan, Pan, D.Jm D.Jm Dama, T. T. Nazev Tanec, '' '' Znamka From Pan Pan P Cross Join Join Dama D Cross Join Join Tanec T řešte řešte Test Pan Dama Tanec Znamka............ Pan Dama Test Tanec Znamka Bobo Ema polka Bobo Jana polka Bobo Lucy polka Pepa Ema polka Pepa Jana polka Pepa Lucy polka Bobo Ema čača Bobo Jana čača Bobo Lucy čača Pepa Ema čača Pepa Jana čača Pepa Lucy čača Bobo Ema tango Bobo Jana tango Bobo Lucy tango Pepa Ema tango Pepa Jana tango Pepa Lucy tango

Spojení Cross - příklad Pan Jm Bobo Pepa Dama Jm Ema Jana Lucy Tanec Nazev polka čača tango vytvořte podklady pro testování dvojic z tanců Select P.Jm P.Jm Pan, Pan, D.Jm D.Jm Dama, T. T. Nazev Tanec, '' '' Znamka From Pan Pan P Cross Join Join Dama D Cross Join Join Tanec T řešte řešte Test Pan Dama Tanec Znamka............ Pan Dama Test Tanec Znamka Bobo Ema polka Bobo Jana polka Bobo Lucy polka Pepa Ema polka Pepa Jana polka Pepa Lucy polka Bobo Ema čača Bobo Jana čača Bobo Lucy čača Pepa Ema čača Pepa Jana čača Pepa Lucy čača Bobo Ema tango Bobo Jana tango Bobo Lucy tango Pepa Ema tango Pepa Jana tango Pepa Lucy tango

mrkněmě se na to jinak

Vztahy mezi tabulkami Oso Odd Budova PK FK1 Jmeno Plat IdOdd PK FK1 IdOdd Nazev KodBudovy PK KodBudovy Barva dresa vraťme se se zpět zpět!!!! Oso Odd Budova Jmeno Plat IdOdd 10 000 100 IdOdd 100 Nakup Pepa 20 000 200 200 Prodej B 300 Nazev Propagace KodBudovy KodBudovy B C Barva žlutá modrá bílá dresa Krátká 10 Dlouhá 16 korát 20 mezi tabulkami [entitami modelu] existují vztahy chceme vztahy využít a "obohatit" řádky o data zpřízněných řádek z jiných tabulek

Vztahy mezi tabulkami Oso Odd Budova PK FK1 Jmeno Plat IdOdd PK FK1 IdOdd Nazev KodBudovy PK KodBudovy Barva dresa vraťme se se zpět zpět!!!! Oso Odd Budova Jmeno Plat IdOdd 10 000 100 IdOdd 100 Nakup Pepa 20 000 200 200 Prodej B 300 Nazev Propagace KodBudovy KodBudovy B C Barva žlutá modrá bílá dresa Krátká 10 Dlouhá 16 korát 20 mezi tabulkami [entitami modelu] existují vztahy chceme vztahy využít a "obohatit" řádky o data zpřízněných řádek z jiných tabulek

Vztahy mezi tabulkami Oso Odd Budova PK FK1 Jmeno Plat IdOdd PK FK1 IdOdd Nazev KodBudovy PK KodBudovy Barva dresa vraťme se se zpět zpět!!!! Oso Odd Budova Jmeno Plat IdOdd 10 000 100 IdOdd 100 Nakup Pepa 20 000 200 200 Prodej B 300 Nazev Propagace KodBudovy KodBudovy B C Barva žlutá modrá bílá dresa Krátká 10 Dlouhá 16 korát 20 mezi tabulkami [entitami modelu] existují vztahy chceme vztahy využít a "obohatit" řádky o data zpřízněných řádek z jiných tabulek spojování tabulek [řádek] podmíníme výrazem popisujícím vzájemný vztah tabulek

Spojování tabulek přirozené (NTURL JOIN) křížové (CROSS JOIN) vnitřní (INNER JOIN) vnější (OUTER JOIN) úplné vnější (FULL OUTER JOIN) částečné vnější z z leva (LEFT JOIN) z z prava (RIGHT JOIN) 44

Vnitřní spojení - Inner Oso Odd Oso Odd PK Jmeno PK IdOdd Jmeno Plat IdOdd IdOdd Nazev KodBudovy FK1 Plat IdOdd FK1 Nazev KodBudovy 10 000 100 100 Nakup Pepa 20 000 200 200 Prodej B 300 Propagace Select O.Jmeno, O.Plat, O.IdOdd, Jmeno Plat IdOdd Nazev KodBudovy D.Nazev, O.KodBudovy From Oso Oso as as O Inner Join Join Odd Odd D On On O.IdOdd = D.IdOdd Select O.Jmeno, O.Plat, O.IdOdd, D.Nazev, O.KodBudovy From Oso Oso as as O Join Join Odd Odd D On On O.IdOdd = D.IdOdd

Vnitřní spojení - Inner PK FK1 Oso Jmeno Plat IdOdd PK FK1 Odd IdOdd Nazev KodBudovy Select O.Jmeno, O.Plat, O.IdOdd, D.Nazev, O.KodBudovy From Oso Oso as as O Join Join Odd Odd D On On O.IdOdd = D.IdOdd Oso Jmeno Plat IdOdd 10 000 100 IdOdd 100 Nakup Pepa 20 000 200 200 Prodej B Jmeno Plat 300 IdOdd Nazev Odd Propagace Nazev KodBudovy KodBudovy vnitřní spojení způsobem kartézského součinu při spojování řádek z obou tabulek kontrola je-li splněna spojovací podmínka spojeny pouze řádky pro něž podmínka vyhovuje

Vnitřní spojení - Inner PK FK1 Oso Jmeno Plat IdOdd PK FK1 Odd IdOdd Nazev KodBudovy Select O.Jmeno, O.Plat, O.IdOdd, D.Nazev, O.KodBudovy From Oso Oso as as O Join Join Odd Odd D On On O.IdOdd = D.IdOdd Oso Jmeno Plat IdOdd 10 000 100 IdOdd 100 Nakup Pepa 20 000 200 200 Prodej B Jmeno Plat 10 000 300 IdOdd 100 Nazev Odd Propagace Nazev Nakup KodBudovy KodBudovy

Vnitřní spojení - Inner PK FK1 Oso Jmeno Plat IdOdd PK FK1 Odd IdOdd Nazev KodBudovy Select O.Jmeno, O.Plat, O.IdOdd, D.Nazev, O.KodBudovy From Oso Oso as as O Join Join Odd Odd D On On O.IdOdd = D.IdOdd Oso Jmeno Plat IdOdd 10 000 100 IdOdd 100 Nakup Pepa 20 000 200 200 Prodej B Jmeno Pepa Plat 10 000 20 000 300 IdOdd 100 200 Nazev Odd Propagace Nazev Nakup Prodej KodBudovy KodBudovy B

Vnitřní spojení - Inner Oso Odd Budova Jmeno Plat IdOdd IdOdd Nazev KodBudovy KodBudovy Barva dresa 10 000 100 100 Nakup žlutá Krátká 10 Pepa 20 000 200 200 Prodej B B modrá Dlouhá 16 300 Propagace C bílá korát 20 Jmeno Plat IdOdd Nazev KodBudovy Barva dresa Select O.Jmeno, O.Plat, O.IdOdd, D.Nazev, O.KodBudovy, B.Barva, B.dresa From Oso Oso as as O Join Join Odd Odd D On On O.IdOdd = D.IdOdd Join Join Budova B On On B.KodBudovy = D. D. KodBudovy

Vnitřní spojení - Inner Budova Jmeno Plat IdOdd Nazev KodBudovy KodBudovy Barva dresa 10 000 100 Nakup žlutá Krátká 10 Pepa 20 000 200 Prodej B B modrá Dlouhá 16 C bílá korát 20 Jmeno Plat IdOdd Nazev KodBudovy Barva dresa 10 000 100 Nakup žlutá Krátká 10 Select O.Jmeno, O.Plat, O.IdOdd, D.Nazev, O.KodBudovy, B.Barva, B.dresa From Oso Oso as as O Join Join Odd Odd D On On O.IdOdd = D.IdOdd Join Join Budova B On On B.KodBudovy = D. D. KodBudovy

Vnitřní spojení - Inner Budova Jmeno Plat IdOdd Nazev KodBudovy KodBudovy Barva dresa 10 000 100 Nakup žlutá Krátká 10 Pepa 20 000 200 Prodej B B modrá Dlouhá 16 C bílá korát 20 Jmeno Plat IdOdd Nazev KodBudovy Barva dresa 10 000 100 Nakup žlutá Krátká 10 Pepa 20 000 200 Prodej B modrá Dlouhá 16 Select O.Jmeno, O.Plat, O.IdOdd, D.Nazev, O.KodBudovy, B.Barva, B.dresa From Oso Oso as as O Join Join Odd Odd D On On O.IdOdd = D.IdOdd Join Join Budova B On On B.KodBudovy = D. D. KodBudovy

Vnitřní spojení - Inner Oso Odd Budova Jmeno Plat IdOdd IdOdd Nazev KodBudovy KodBudovy Barva dresa 10 000 100 100 Nakup žlutá Krátká 10 Pepa 20 000 200 200 Prodej B B modrá Dlouhá 16 300 Propagace C bílá korát 20 Select O.Jmeno, O.Plat, O.IdOdd, D.Nazev, O.KodBudovy, B.Barva, B.dresa From Oso Oso as as O Join Join Odd Odd D On On O.IdOdd = D.IdOdd Join Join Budova B On On B.KodBudovy = D. D. KodBudovy Jmeno Plat IdOdd Nazev KodBudovy Barva dresa 10 000 100 Nakup žlutá Krátká 10 Pepa 20 000 200 Prodej B modrá Dlouhá 16

Vnitřní spojení - Inner Oso Odd Budova Jmeno Plat IdOdd IdOdd Nazev KodBudovy KodBudovy Barva dresa 10 000 100 100 Nakup žlutá Krátká 10 Pepa 20 000 200 200 Prodej B B modrá Dlouhá 16 300 Propagace C bílá korát 20 Select O.Jmeno, O.Plat, O.IdOdd, From D.Nazev, O.KodBudovy, B.Barva, B.dresa Oso as O Join Join pokud On podmínka je "=" [rovnost] a jména sloupců obou tabulek shodná lze užít podmínku Using Odd D On O.IdOdd = D.IdOdd Budova B On B.KodBudovy = D. KodBudovy

Vnitřní spojení - Inner Oso Odd Budova Jmeno Plat IdOdd IdOdd Nazev KodBudovy KodBudovy Barva dresa 10 000 100 100 Nakup žlutá Krátká 10 Pepa 20 000 200 200 Prodej B B modrá Dlouhá 16 300 Propagace C bílá korát 20 Select O.Jmeno, O.Plat, O.IdOdd, From D.Nazev, O.KodBudovy, B.Barva, B.dresa Oso as O Join Odd D Using (IdOdd( IdOdd) Join Budova B pokud On podmínka je "=" [rovnost] a jména sloupců obou tabulek shodná lze užít podmínku Using Using (KodBudovy( KodBudovy);

Vnitřní spojení - Inner Oso Odd Budova Jmeno Plat IdOdd IdOdd Nazev KodBudovy KodBudovy Barva dresa 10 000 100 100 Nakup žlutá Krátká 10 Pepa 20 000 200 200 Prodej B B modrá Dlouhá 16 300 Propagace C bílá korát 20 Select O.Jmeno, O.Plat, O.IdOdd, D.Nazev, O.KodBudovy, B.Barva, B.dresa From Oso as O Join Odd D Using (IdOdd( IdOdd) Join Budova B Using (KodBudovy( KodBudovy);

Vnitřní spojení - Inner Dluh Oso Id Dat Castka Jm Pr Jm Pr Mesto Ulice Cis 1 10.1.12 10 000 Pepa Pudil Jara Juda z Mala 10 2 20.2.12 5 000 Jara Juda Karel Kren Brno Velka 20 3 30.3.12 40 000 Karel Kren Pepa Pudil Praha Bila 30 Zdenek Zvara Praha Modra 40 Id Dat Castka Jm Pr Mesto Ulice Cis Select D.*, D.*, O.Mesto, O.Ulice, O.Cislo From Dluh Dluh D Join Join Oso Oso O On On D.Jm =O.Jm ND D.Pr D.Pr =O.Pr ; ; podmínka On může být složená pokud podmínky jsou ND z rovností a shodná jména lze užít podmínku Using(,, )

Vnitřní spojení - Inner Dluh Oso Id Dat Castka Jm Pr Jm Pr Mesto Ulice Cis 1 10.1.12 10 000 Pepa Pudil Jara Juda z Mala 10 2 20.2.12 5 000 Jara Juda Karel Kren Brno Velka 20 3 30.3.12 40 000 Karel Kren Pepa Pudil Praha Bila 30 Zdenek Zvara Praha Modra 40 Id Dat Castka Jm Pr Mesto Ulice Cis Select D.*, D.*, O.Mesto, O.Ulice, O.Cislo From Dluh Dluh D Join Join Oso Oso O Using (Jm, (Jm, Pr); Pr); podmínka On může být složená pokud podmínky jsou ND z rovností a shodná jména lze užít podmínku Using(,, )

Vnitřní spojení - Inner Dluh Oso Id Dat Castka Jm Pr Jm Pr Mesto Ulice Cis 1 10.1.12 10 000 Pepa Pudil Jara Juda z Mala 10 2 20.2.12 5 000 Jara Juda Karel Kren Brno Velka 20 3 30.3.12 40 000 Karel Kren Pepa Pudil Praha Bila 30 Zdenek Zvara Praha Modra 40 Select D.*, From O.Mesto, O.Ulice, O.Cisllo Dluh D Join Oso O Using (Jm,Pr); podmínka On může být složená pokud podmínky jsou ND z rovností a shodná jména lze užít podmínku Using(,, )

Vnitřní spojení - Inner Dluh Oso Id Dat Castka Jm Pr Jm Pr Mesto Ulice Cis 1 10.1.12 10 000 Pepa Pudil Jara Juda z Mala 10 2 20.2.12 5 000 Jara Juda Karel Kren Brno Velka 20 3 30.3.12 40 000 Karel Kren Pepa Pudil Praha Bila 30 Zdenek Zvara Praha Modra 40 Select D.*, D.*, O.Mesto, O.Ulice, O.Cisllo From Dluh Dluh D Join Join Oso Oso O Using (Jm,Pr); podmínka On může být složená pokud podmínky jsou ND z rovností a shodná jména lze užít podmínku Using(,, )

Vnitřní spojení - Inner Oso PK Jmeno Plat FK1 IdOdd Odd PK IdOdd Oso Odd Jmeno Plat IdOdd IdOdd Nazev KodBudovy 10 000 100 100 Nakup Nazev FK1 KodBudovy Pepa 20 000 200 200 Prodej? B 300 Propagace Select Oso.*,, Odd.* From Oso Oso Join Join Odd Odd ON ON 1 = 1; 11; Jmeno Plat IdOdd IdOdd Nazev KodBudovy 10 000 100 100 Nakup 10 000 100 200 Prodej B 10 000 100 300 Propagace Pepa 20 000 200 100 Nakup Pepa 20 000 200 200 Prodej B Pepa 20 000 200 300 Propagace podmínka vždy splněna výsledek == kartézský součin

Vnitřní spojení - Inner Oso PK Jmeno Plat FK1 IdOdd Odd PK IdOdd Oso Odd Jmeno Plat IdOdd IdOdd Nazev KodBudovy 10 000 100 100 Nakup Nazev FK1 KodBudovy Pepa 20 000 200 200 Prodej? B 300 Propagace Select Oso.*,, Odd.* From Oso Oso Join Join Odd Odd ON ON 1 = 0; 0; Jmeno Plat IdOdd IdOdd Nazev KodBudovy podmínka vždy nesplněna výsledek == prázdná tabulka

Vnitřní spojení - Inner PPan DDama Jm dam Vyska 180 Bobo 165 David 177 193 Honza Jan 182 159 Kamil 169 Jm Ema Gaby Jana Lucy Nada Vyska 170 159 164 180 199? Pan Pan dam dam David David VyskaP VyskaP 180 180 177 177 Dama Dama Gaby Jana Gaby Jana VyskaD VyskaD 159 164 159 164 Select P.Jm P.Jm Pan, Pan, P.Vyska VyskaP, D.Jm D.Jm Dama, D.Vyska VyskaD From PPan PPan P Join Join DDama D On On P.Vyska > D.Vyska+10; Honza Honza Honza 193 193 193 193 182 182 182 Ema Gaby Jana Lucy Ema Gaby Jana 170 159 164 180 170 159 164

Vnitřní spojení - Inner PPan DDama Jm dam Vyska 180 Bobo 165 David 177 193 Honza Jan 182 159 Kamil 169 Jm Ema Gaby Jana Lucy Nada Vyska 170 159 164 180 199? Pan Pan dam dam David David VyskaP VyskaP 180 180 177 177 Dama Dama Gaby Jana Gaby Jana VyskaD VyskaD 159 164 159 164 Select P.Jm P.Jm Pan, Pan, P.Vyska VyskaP, D.Jm D.Jm Dama, D.Vyska VyskaD From PPan PPan P Join Join DDama D On On P.Vyska > D.Vyska+10; Honza Honza Honza 193 193 193 193 182 182 182 Ema Gaby Jana Lucy Ema Gaby Jana 170 159 164 180 170 159 164

Vnitřní spojení - Inner Jm PPan DDama dam 180 Bobo 165 David 177 193 Honza Jan 159 Kamil Vyska 182 169 Jm Ema Gaby Jana Lucy Nada Select P.Jm P.Jm Pan, Pan, P.Vyska VyskaP, D.Jm D.Jm Dama, D.Vyska VyskaD Jan a Kamil si si ani neškrtnoun ale nedovědí se se to to From PPan PPan P Join Join DDama D nebylo On On by P.Vyska slušný > D.Vyska+10; to tam Vyska lenit i "nespojené" Pan VyskaP řádky 170? 159 164 Pan VyskaP 180 dam 180 199 dam 180 David 177 David 177 193 193 193 193 krtnou Honza 182 Honza 182 jak do do výsledku začlenit i i "nespojené" řádky s indikací že e se se nespojili vnějším m spojením Honza nebylo by slušný to to tam ňák k naznačit načit??? 182 Dama Dama Gaby Jana Gaby Jana Ema Gaby Jana Lucy Ema Gaby Jana VyskaD VyskaD 159 164 159 164 170 159 164 180 170 159 164

Spojování tabulek přirozené (NTURL JOIN) křížové (CROSS JOIN) vnitřní (INNER JOIN) vnější (OUTER JOIN) úplné vnější (FULL OUTER JOIN) částečné vnější z z leva (LEFT JOIN) z z prava (RIGHT JOIN) 65

Vnitřní spojení - Inner Jm PPan Vyska DDama Jm Vyska Pan VyskaP Dama VyskaD dam 180 Ema 170 Bobo 165 David 177 193 Honza Jan 182 159 Kamil 169 Gaby Jana Lucy Nada 159 164 180 199 Pan dam dam David David VyskaP 180 180 177 177 193 Dama Gaby Jana Gaby Jana Ema VyskaD 159 164 159 164 170 Select P.Jm P.Jm Pan, Pan, P.Vyska VyskaP, D.Jm D.Jm Dama, D.Vyska VyskaD Honza Honza 193 193 193 182 182 Gaby Jana Lucy Ema Gaby 159 164 180 170 159 From PPan PPan P Join Join DDama D On On P.Vyska > D.Vyska+10; Honza 182 Jana 164

Vnější spojení - Outer Jm PPan Vyska DDama Jm Vyska Pan VyskaP Dama VyskaD dam 180 Ema 170 Bobo 165 David 177 193 Honza Jan 182 159 Kamil 169 Gaby Jana Lucy Nada 159 164 180 199 Pan dam dam David David VyskaP 180 180 177 177 193 Dama Gaby Jana Gaby Jana Ema VyskaD 159 164 159 164 170 Select P.Jm P.Jm Pan, Pan, P.Vyska VyskaP, D.Jm D.Jm Dama, D.Vyska VyskaD Honza Honza 193 193 193 182 182 Gaby Jana Lucy Ema Gaby 159 164 180 170 159 From PPan PPan P Left Left Join Join DDama D On On P.Vyska > D.Vyska+10; Honza Jan Kamil 182 159 169 Jana 164

Vnější spojení - Outer Jm PPan Vyska DDama Jm Vyska Pan VyskaP Dama VyskaD dam 180 Ema 170 Bobo 165 David 177 193 Honza Jan 182 159 Kamil 169 Gaby Jana Lucy Nada 159 164 180 199 Pan dam dam David David VyskaP 180 180 177 177 193 Dama Gaby Jana Gaby Jana Ema VyskaD 159 164 159 164 170 Select P.Jm P.Jm Pan, Pan, P.Vyska VyskaP, D.Jm D.Jm Dama, D.Vyska VyskaD Honza Honza 193 193 193 182 182 Gaby Jana Lucy Ema Gaby 159 164 180 170 159 From PPan PPan P Right Join Join DDama D On On P.Vyska > D.Vyska+10; Honza 182 Jana Nada 164 199

Vnější spojení - Outer Jm PPan Vyska DDama Jm Vyska Pan VyskaP Dama VyskaD dam 180 Ema 170 Bobo 165 David 177 193 Honza Jan 182 159 Kamil 169 Gaby Jana Lucy Nada 159 164 180 199 Pan dam dam David David VyskaP 180 180 177 177 193 Dama Gaby Jana Gaby Jana Ema VyskaD 159 164 159 164 170 Select P.Jm P.Jm Pan, Pan, P.Vyska VyskaP, D.Jm D.Jm Dama, D.Vyska VyskaD Honza Honza 193 193 193 182 182 Gaby Jana Lucy Ema Gaby 159 164 180 170 159 From PPan PPan P Full Full Join Join DDama D On On P.Vyska > D.Vyska+10; Honza Jan Kamil 182 159 169 Jana Nada 164 199

Vnější spojování tabulek - outer join vnitřní spojení vyřadí z výsledku řádky pro které se se v druhé tabulce nenalezne žádná spojovací shoda nespojené řádky z výsledku vypadnou někdy žádoucí ponechat nespojené řádky ve ve výsledku s indikací nespojení s druhou tabulkou nespojené řádky se se spojí se se simulovanou NULL řádkou druhé tabulky to to je je vnější spojení [outer join]

Spojování tabulek přirozené (NTURL JOIN) křížové (CROSS JOIN) vnitřní (INNER JOIN) vnější (OUTER JOIN) úplné vnější (FULL OUTER JOIN) částečné vnější z z leva (LEFT JOIN) z z prava (RIGHT JOIN) 71

Spojování tabulek přirozené (NTURL JOIN) křížové (CROSS JOIN) vnitřní (INNER JOIN) vnější (OUTER JOIN) úplné vnější (FULL OUTER JOIN) částečné vnější z z leva (LEFT JOIN) z z prava (RIGHT JOIN) 72

Vnitřní spojení - Inner Oso Odd Budova Jmeno Plat IdOdd IdOdd Nazev KodBudovy KodBudovy Barva dresa 10 000 100 100 Nakup žlutá Krátká 10 Pepa 20 000 200 200 Prodej B B modrá Dlouhá 16 300 Propagace C bílá korát 20 Select O.Jmeno, O.Plat, O.IdOdd, D.Nazev, O.KodBudovy, B.Barva, B.dresa From Oso Oso as as O Natural Join Join Odd Odd D Natural Join Join Budova B; B; žádné podmínky nezadány sloupce tabulek stejně se jmenující se porovnají na rovnost

Přirozené spojení Oso Odd Budova Jmeno Plat IdOdd IdOdd Nazev KodBudovy KodBudovy Barva dresa 10 000 100 100 Nakup žlutá Krátká 10 Pepa 20 000 200 200 Prodej B B modrá Dlouhá 16 300 Propagace C bílá korát 20 Select O.Jmeno, O.Plat, O.IdOdd, D.Nazev, O.KodBudovy, B.Barva, B.dresa From Oso Oso as as O Natural Join Join Odd Odd D Natural Join Join Budova B; B; Jmeno Plat IdOdd Nazev KodBudovy Barva dresa 10 000 100 Nakup žlutá Krátká 10 Pepa 20 000 200 Prodej B modrá Dlouhá 16

Přirozené spojení Jm PPan Vyska DDama Jm Vyska Pan VyskaP Dama VyskaD dam 180 Ema 170 Bobo 165 David 177 Gaby Jana 159 164 Pan VyskaP Dama VyskaD 193 Lucy 180 Honza 182 Nada 199 Jan 159 Kamil 169 Select P.Jm P.Jm Pan, Pan, P.Vyska VyskaP, D.Jm D.Jm Dama, D.Vyska VyskaD From PPan PPan P Natural Join Join DDama D; D;

Přirozené spojení Jm PPan Vyska DDama Jm Vyska Pan VyskaP Dama VyskaD dam 180 Ema 170 Bobo 165 David 177 Gaby Jana 159 164 Pan VyskaP Dama VyskaD 193 Lucy 180 Honza 182 Nada 199 Jan 159 Kamil 169 Select P.Jm P.Jm Pan, Pan, P.Vyska VyskaP, D.Jm D.Jm Dama, D.Vyska VyskaD From PPan PPan P Natural Join Join DDama D; D; Select Select P.Jm P.Jm Pan, Pan, P.Vyska P.Vyska VyskaP, VyskaP, D.Jm D.Jm Dama, Dama, D.Vyska D.Vyska VyskaD VyskaD From From PPan PPan P Join Join DDama DDama D; D; ON ON P.Jm P.Jm = D.Jm D.Jm ND ND P.Vyska = D.Vyska;

Přirozené spojení JmP PPan Vyska JmD DDama Vyska Pan VyskaP Dama VyskaD dam 180 Ema 170 Bobo 165 David 177 193 Gaby Jana Lucy 159 164 180 Pan dam VyskaP 180 Dama Lucy VyskaD 180 Honza 182 Nada 199 Jan 159 Kamil 169 Select P.Jm P.Jm Pan, Pan, P.Vyska VyskaP, D.Jm D.Jm Dama, D.Vyska VyskaD From PPan PPan P Natural Join Join DDama D; D;

Přirozené spojení JmP PPan Vyska JmD DDama Vyska Pan VyskaP Dama VyskaD dam 180 Ema 170 Bobo 165 David 177 193 Gaby Jana Lucy 159 164 180 Pan dam VyskaP 180 Dama Lucy VyskaD 180 Honza 182 Nada 199 užívání Natural l Join lze posuzovat jako trestný čin Jan 159 Kamil lze 169 posuzovat jako trestný Select P.Jm P.Jm Pan, Pan, P.Vyska VyskaP, D.Jm D.Jm Dama, D.Vyska VyskaD From PPan PPan P Natural Join Join DDama D; D;

Přirozené spojování tabulek - natural join natural join použití v aplikaci je je závažným trestním činem techniku přirozeného spojení ihned po po přednášce zapomeneme kdo u zkoušky bude vědět co co to to je je natural join dopouští se se přestupku držení nebezpečné zbraně a nemůže být klasifikován dostatečně!!!!!!

Spojování tabulek přirozené (NTURL JOIN) křížové (CROSS JOIN) vnitřní (INNER JOIN) vnější (OUTER JOIN) úplné vnější (FULL OUTER JOIN) částečné vnější z z leva (LEFT JOIN) z z prava (RIGHT JOIN) výlučné spojení (neexistuje klauzule --exclusion) 80

Výlučné spojení - exclusion zjištění něčeho co není co nemá nějakou vlastnost co nemá nějakou vazbu zjištění pánů [dam] DDama Jm Vyska Ema 170 Gaby 159 Jana 164 Lucy 180 Nada 199 kteří / které si dle daných pravidel nezatancují PPan Jm dam Vyska 180 Bobo 165 David 177 193 Honza Jan 182 159 Kamil 169 užije se vnější spojení [pravé, levé, úplné]

Vnější spojení - Outer Jm PPan Vyska DDama Jm Vyska Pan VyskaP Dama VyskaD dam 180 Ema 170 Bobo 165 David 177 193 Honza Jan 182 159 Kamil 169 Gaby Jana Lucy Nada 159 164 180 199 Pan dam dam David David VyskaP 180 180 177 177 193 Dama Gaby Jana Gaby Jana Ema VyskaD 159 164 159 164 170 Select P.Jm P.Jm Pan, Pan, P.Vyska VyskaP, D.Jm D.Jm Dama, D.Vyska VyskaD Honza Honza 193 193 193 182 182 Gaby Jana Lucy Ema Gaby 159 164 180 170 159 From PPan PPan P Left Left Join Join DDama D On On P.Vyska > D.Vyska+10; Honza Jan Kamil 182 159 169 Jana 164

Vnější spojení - Outer Jm PPan Vyska DDama Jm Vyska Pan VyskaP Dama VyskaD dam 180 Ema 170 Bobo 165 David 177 193 Honza Jan 182 159 Kamil 169 Gaby Jana Lucy Nada 159 164 180 199 Pan dam dam David David VyskaP 180 180 177 177 193 Dama Gaby Jana Gaby Jana Ema VyskaD 159 164 159 164 170 Select P.Jm P.Jm Pan, Pan, P.Vyska VyskaP, D.Jm D.Jm Dama, D.Vyska VyskaD Honza Honza 193 193 193 182 182 Gaby Jana Lucy Ema Gaby 159 164 180 170 159 From PPan PPan P Left Left Join Join DDama D On On P.Vyska > D.Vyska+10; Honza Jan Kamil 182 159 169 Jana NULL NULL 164 NULL NULL

Vnější spojení - Outer PPan Jm dam Vyska 180 Bobo 165 David 177 193 Jm Ema Gaby Jana DDama Vyska 170 159 164 Pan VyskaP Dama VyskaD Honza 182 Jan 159 Kamil 169 Lucy Nada 180 199 Pan dam VyskaP 180 Dama Gaby VyskaD 159 Select Pan, Pan, VyskaP From (( Select P.Jm P.Jm Pan, Pan, P.Vyska VyskaP, D.Jm D.Jm Dama, D.Vyska VyskaD dam David David Honza 180 177 177 193 193 193 193 182 Jana Gaby Jana Ema Gaby Jana Lucy Ema 164 159 164 170 159 164 180 170 From PPan PPan P Left Left Join Join DDama D On On P.Vyska > D.Vyska+10 )) as as TT TT Where Dama IS IS NULL; Honza Honza Jan Kamil 182 182 159 169 Gaby Jana NULL NULL 159 164 NULL NULL

Vnější spojení - Outer PPan Jm dam Vyska 180 Bobo 165 David 177 193 Jm Ema Gaby Jana DDama Vyska 170 159 164 Pan VyskaP Dama VyskaD Honza 182 Lucy 180 Jan 159 Kamil 169 Nada 199 Select Pan, Pan, VyskaP From (( Select P.Jm P.Jm Pan, Pan, P.Vyska VyskaP, D.Jm D.Jm Dama, D.Vyska VyskaD From PPan PPan P Left Left Join Join DDama D On On P.Vyska > D.Vyska+10 )) as as TT TT Where Dama IS IS NULL; Pan Jan Kamil VyskaP 159 169

Vnější spojení - Outer PPan Jm dam Vyska 180 Bobo 165 David 177 193 Honza Jan 182 159 Kamil 169 Jm Ema Gaby Jana Lucy Nada DDama Vyska 170 159 164 180 199 Pan dam... Honza VyskaP 180... 182 Dama Gaby... Jana VyskaD 159... 164 Select Dama, VyskaD From (( Select P.Jm P.Jm Pan, Pan, P.Vyska VyskaP, D.Jm D.Jm Dama, D.Vyska VyskaD Null Dama Nada Null VyskaD 199 Nada 199 From PPan PPan P Right Join Join DDama D On On P.Vyska > D.Vyska+10 )) as as TT TT Where Pan PanIS IS NULL;

a co normy

Spojování tabulek a nsi normy SQL 89 89 / SQL1 implicitní spojení pomocí WHERE SQL 92 92 / SQL2 SQL 2003 SELECT SELECT...... FROM FROM Tab1, Tab1, Tab2 Tab2 WHERE WHERE Tab1. Tab1. Sloup Sloup = Tab2.SloupB Tab2.SloupB explicitní operátor JOIN v klauzuli FROM SELECT SELECT...... FROM FROM Tab1 Tab1Join JoinTab2 On On Tab1. Tab1. Sloup Sloup = Tab2.SloupB Tab2.SloupB [ [ On On...... > <!=!= In In Betwwen Betwwen en...... ] ] [ [ Using Using (IdXxxx) (IdXxxx) ] ] explicitní JOIN implicitní JOIN 88

Spojování tabulek Select Oso.*,, Odd.* From Oso, Oso, Odd Odd Where Oso.IdOdd = Odd.IdOdd kartézský součin tabulek Jmeno Plat IdOdd IdOdd Nazev KodBudovy 10 000 100 100 Nakup 10 000 100 200 Prodej B 10 000 100 300 Propagace Pepa 20 000 200 100 Nakup Pepa 20 000 200 200 Prodej B Pepa 20 000 200 300 Propagace Po WHERE Jmeno Plat IdOdd IdOdd Nazev KodBudovy 10 000 100 100 Nakup Pepa 20 000 200 200 Prodej B mě se se to to ňák k metodicky nelíbí pane metodický učiteliu do do klauzule WHERE jsme dávali d podmínky výběru vylučovací to to něnín fér fér dát t tam [[ i i ]] podmínky spojovací

JOIN - klauzule spojování klauzule klauzule JOIN JOIN spojování se se zadává zadáváklauzulí klauzulífrom Select Oso.*,, Odd.* From Oso Oso JOIN Odd Odd ON ON Oso. IdOdd = Odd.IdOdd Where Oso.IdOdd = Odd.IdOdd Oso Odd Jmeno Plat IdOdd IdOdd Nazev KodBudovy Jmeno Plat IdOdd IdOdd Nazev KodBudovy 10 000 100 100 Nakup 10 000 100 100 Nakup Pepa dam 20 000 30 000 200 200 200 300 Prodej Propagace B Pepa 20 000 200 200 Prodej B dam 30 000 200 200 Prodej B Karel 20 000 300 Karel 20 000 300 300 Propagace Fany 30 000 200 Fany 30 000 200 200 Prodej B Select Oso.*,, Odd.* From Oso Oso JOIN Odd Odd USING (IdOdd)

JOIN - klauzule spojování klauzule klauzule JOIN JOIN Select...... From Tab1 JOIN Tab2 podmínky spojování Where podmínky filtrování [výběru / / vylučování]

a zas něco caseovního

lgoritmizace dotazu Zakaznici Firma MaxUver lfa 700 000 Beta sro 20 000 Firma lfa Beta sro MaxUver 700 000 20 000 Trida B D BMV 1000 000 BMV 1000 000 výši úvěru označte jeho třídou dle rozpětí Výše > 900 000 Definice třídy úvěru Od 900 001 Do Třída > 500 000 500 001 900 000 B řešte řešte > 100 000 <= 100 000 100 001 1 500 000 100 000 C D pane učiteli, u to to nejde,, dyť dyťto to je je algoritmus to to se se bude muset naprogramovat ňákejma IF-ama v ňákym programovacim jazyku sakra, to to bude ale ale dřina d!!!!!!!! do do vánoc v je je co co dělatd 93

lgoritmizace dotazu Zakaznici Firma MaxUver lfa 700 000 Beta sro 20 000 Firma lfa Beta sro MaxUver 700 000 20 000 Trida B D BMV 1000 000 BMV 1000 000 výši úvěru označte jeho třídou dle rozpětí Výše > 900 000 Definice třídy úvěru Od 900 001 Do Třída > 500 000 500 001 900 000 B řešte řešte > 100 000 <= 100 000 100 001 1 500 000 100 000 C D umíte vybrat řádky s třídou t? -- --vyrobte je je!!!!!! Select Firma, MaxUver, '' Trida From Zakaznici Where MaxUver > 900000; Firma MaxUver Trida BMV 1000 000 94

lgoritmizace dotazu Zakaznici Firma MaxUver lfa 700 000 Beta sro 20 000 Firma lfa Beta sro MaxUver 700 000 20 000 Trida B D BMV 1000 000 BMV 1000 000 výši úvěru označte jeho třídou dle rozpětí Výše > 900 000 Definice třídy úvěru Od 900 001 Do Třída > 500 000 500 001 900 000 B řešte řešte > 100 000 <= 100 000 100 001 1 500 000 100 000 C D umíte vybrat řádky s třídou t B? -- --vyrobte je je!!!!!! Select Firma, MaxUver, 'B' Trida From Zakaznici Where MaxUver > 500000 nd MaxUver <= 900000; Firma lfa MaxUver 700 000 Trida B 95

lgoritmizace dotazu Zakaznici Firma MaxUver lfa 700 000 Beta sro 20 000 Firma lfa Beta sro MaxUver 700 000 20 000 Trida B D BMV 1000 000 BMV 1000 000 výši úvěru označte jeho třídou dle rozpětí Výše > 900 000 Definice třídy úvěru Od 900 001 Do Třída > 500 000 500 001 900 000 B řešte řešte > 100 000 <= 100 000 100 001 1 500 000 100 000 C D umíte vybrat řádky s třídou t D? -- --vyrobte je je!!!!!! Select Firma, MaxUver, 'D' Trida From Zakaznici Where MaxUver <= 100000; Firma MaxUver Trida Beta sro 20 000 D 96

lgoritmizace dotazu Definice třídy úvěru Výše Od Do > 900 000 900 001 > 500 000 500 001 900 000 B > 100 000 100 001 500 000 C <= 100 000 1 100 000 D Třída Firma lfa Beta sro BMV MaxUver Trida 700 000 20 000 1000 000 B D Select Firma, MaxUver, '' Trida From Zakaznici Where MaxUver > 900000; Firma BMV MaxUver 1000 000 Trida Select Firma, MaxUver, 'B' Trida From Zakaznici Where MaxUver > 500000 nd MaxUver <= 900000; Firma lfa MaxUver 700 000 Trida B Select Firma, MaxUver, 'C' Trida From Zakaznici Where MaxUver > 100000 nd MaxUver <= 500000; Firma MaxUver Trida Select Firma, MaxUver, 'D' Trida From Zakaznici Where MaxUver <= 100000; Firma Beta sro MaxUver 20 000 Trida D 97

lgoritmizace dotazu Definice třídy úvěru Výše Od Do Třída > 900 000 900 001 > 500 000 500 001 900 000 B > 100 000 100 001 500 000 C Firma lfa Beta sro BMV MaxUver 700 000 20 000 1000 000 Trida B D <= 100 000 1 100 000 D Select Firma, MaxUver, '' Trida From Zakaznici Where MaxUver > 900000 UNION Select Firma, MaxUver, 'B' Trida From Zakaznici Where MaxUver > 500000 nd MaxUver <= 900000 UNION Select Firma, MaxUver, 'C' Trida From Zakaznici Where MaxUver > 100000 nd MaxUver <= 500000 UNION Select Firma, MaxUver, 'D' Trida From Zakaznici Where MaxUver <= 100000; Firma lfa Beta sro MaxUver 700 000 20 000 Trida B D BMV 1000 000 98

a radši zpět t k problému

lgoritmizace dotazu Zakaznici Firma MaxUver lfa 700 000 Beta sro 20 000 Firma lfa Beta sro MaxUver 700 000 20 000 Trida B D BMV 1000 000 BMV 1000 000 výši úvěru označte jeho třídou dle rozpětí Výše > 900 000 Definice třídy úvěru Od 900 001 Do Třída > 500 000 500 001 900 000 B řešte řešte > 100 000 <= 100 000 100 001 1 500 000 100 000 C D SQL SQL -- neprocedurální jazyk nelze několika n povely vytvářet algoritmus povely jsou jsou na na sobě [procesně] nezávislé SQL SQL mám mávšak v sobě bohatou algoritmickou funkcionalitu SQL SQL umožňuje uje zadat algoritmizaci dovnitř jednoho povelu 100

lgoritmizace dotazu Zakaznici Firma MaxUver lfa 700 000 Beta sro 20 000 Firma lfa Beta sro MaxUver 700 000 20 000 Trida B D BMV 1000 000 BMV 1000 000 výši úvěru označte jeho třídou dle rozpětí IF IF Uver Uver >900 >900 000 000 Then Then.................. ELSE ELSE IF IF Uver Uver >500 >500 000 000 Then Then.................. ELSE ELSE IF IF Uver Uver >100 >100 000 000 Then Then.................. ELSE ELSE...............;...; Do Do While While............ End End While; While; IF řešte IF...... END řešte END IF IF Výše > 900 000 > 500 000 > 100 000 <= 100 000 Definice třídy úvěru Od 900 001 500 001 100 001 1 Do 900 000 500 000 100 000 Třída B C D SQL SQL -- neprocedurální jazyk nelze SQL několika n povely povel vytvářet.. ; povely jsou jsou na na sobě [procesně] nezávislé SQL SQL mám mávšak v sobě bohatou algoritmickou funkcionalitu SQL SQL umožňuje uje zadat algoritmizaci dovnitř jednoho povelu 101

Podmíněný ný operátor Case operátor CSE CSE [neboli [neboli podmíněný výraz] výraz] umožňuje provádět jednoduchá rozhodnutí na na úrovni úrovni VÝRZU struktura operátoru je je podobná konstrukci IF IF THEN THEN ELSE ELSE 102

Podmíněný ný operátor Case CSE CSE WHEN WHEN (a>b) (a>b) THEN THEN...... WHEN WHEN (a>c) (a>c) THEN THEN...... WHEN WHEN (a+b>c) (a+b>c) THEN THEN...... ELSE ELSE END END varianta varianta 1 CSE CSE aa awhen WHEN (2) (2) THEN THEN...... WHEN WHEN (3) (3) THEN THEN...... WHEN WHEN (88) (88) THEN THEN...... ELSE ELSE END END varianta varianta 2 CSE CSE WHEN WHEN (a= a=2) (a=2) THEN THEN...... END END WHEN WHEN (a= a=3) (a=3) THEN THEN...... WHEN WHEN (a= a=88 (a=88) 88) THEN THEN.... ELSE ELSE varianta varianta 1 1 103

Podmíněný ný operátor Case CSE CSE WHEN WHEN (Length (Length(Jmeno) (Jmeno) + Length(Prijmeni) Length(Prijmeni) = 10) 10) THEN THEN...... WHEN WHEN (Length (Length(Jmeno) (Jmeno) + Length(Prijmeni) Length(Prijmeni) = 11) 11) THEN THEN...... WHEN WHEN (Length (Length(Jmeno) (Jmeno) + Length(Prijmeni) Length(Prijmeni) = 12) 12) THEN THEN...... ELSE ELSE END END varianta varianta 1 1 CSE CSE Length(Jmeno) Length(Jmeno) + Length(Prijmeni) Length(Prijmeni) WHEN WHEN (10 (10) THEN THEN...... WHEN WHEN (11 (11) THEN THEN...... WHEN WHEN (12 (12) THEN THEN...... ELSE ELSE varianta END varianta 2 2 END 104

Podmíněný ný operátor Case - varianta 1 CSE WHEN podmínka THEN výsledný výraz NULL WHEN podmínka THEN výsledný výraz NULL WHEN podmínka THEN výsledný výraz NULL ELSE výsledný výraz NULL END 105

Podmíněný ný operátor Case - varianta 2 CSE výraz WHEN výrazhodnoty THEN výsledný výraz NULL WHEN výrazhodnoty THEN výsledný výraz NULL WHEN výrazhodnoty THEN výsledný výraz NULL ELSE výsledný výraz NULL END 106

Podmíněný ný operátor Case CSE WHEN podmínka THEN výsledný výraz NULL WHEN podmínka THEN výsledný výraz NULL WHEN podmínka THEN výsledný výraz NULL ELSE výsledný výraz END NULL varianta 1 varianta 1 CSE výraz WHEN výrazhodnoty THEN výsledný výraz NULL WHEN výrazhodnoty THEN výsledný výraz NULL WHEN výrazhodnoty THEN výsledný výraz NULL END ELSE výsledný výraz NULL varianta 2 varianta 2

Podmíněný ný operátor Case CSE je je operátor vrací vracískalární hodnotu komplikovaný algoritmus vracející hodnotu 108

Podmíněný ný operátor Case Zakaznici Firma MaxUver lfa 700 000 Beta sro 20 000 Firma lfa Beta sro MaxUver 700 000 20 000 Trida B D BMV 1000 000 řešte řešte BMV 1000 000 SELECT Firma, MaxUver, a jako 3. sloupec si "vyrobíme" buď ''nebo'b'nebo cokoliv jiného podmíněných operátorem CSE dle hodnoty ve sloupci MaxUver FROM Zakaznici 109

Podmíněný ný operátor Case Zakaznici Firma MaxUver lfa 700 000 Beta sro 20 000 Firma lfa Beta sro MaxUver 700 000 20 000 Trida B D BMV 1000 000 řešte řešte BMV 1000 000 SELECT Firma, MaxUver, CSE WHEN (MaxUver>900000) WHEN (MaxUver>500000) WHEN (MaxUver>100000) ELSE THEN '' THEN 'B' THEN 'C' 'D' END FROM Zakaznici 110

Podmíněný ný operátor Case Zakaznici Firma MaxUver lfa 700 000 Beta sro 20 000 BMV 1000 000 pane učiteliu to to nemáte dobře řešte řešte Firma lfa Beta sro BMV MaxUver 700 000 20 000 1000 000 Trida B D SELECT Firma, MaxUver, CSE WHEN (MaxUver>900000) THEN '' WHEN (MaxUver>500000) THEN 'B' WHEN (MaxUver>100000) THEN 'C' ELSE 'D' END FROM Zakaznici a cotak mmůžu u dobře nemít t copak??? 111