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

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

Databáze SQL SELECT. David Hoksza

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

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

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

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

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

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

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

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

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

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

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

Databázové systémy I

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

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

Osnova je orientační pro FIT, u FEKTu se dá předpokládat, že budou zohledněny předchozí znalosti studentů, kde většina s databází nikdy přímo

U koly na procvic ení jazyka T-SQL

KIV/ZIS - SELECT, opakování

Kapitola 4: SQL. Základní struktura

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

- sloupcové integritní omezení

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

RELAČNÍ DATABÁZOVÉ SYSTÉMY

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

Jazyk SQL slajdy k přednášce NDBI001

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

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

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

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

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

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

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

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

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

Databázové systémy Tomáš Skopal

PG 9.5 novinky ve vývoji aplikací

12. blok Pokročilé konstrukce SQL dotazů - část II

Dotazy v SQL. Výraz relační algebry R1( )[A1,A2,...,Aj] lze zapsat takto: SELECT A1,A2,...,Aj FROM R1 WHERE. Výraz (R1, R2... Rk)( )[A1,A2,...

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

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

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

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

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

5. blok Souhrnné a skupinové dotazy

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

Optimalizace SQL dotazů. RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

Materializované pohledy

Databázové systémy a SQL

Návrh a tvorba WWW stránek 1/14. PHP a databáze

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

Operátory ROLLUP a CUBE

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

1. Relační databázový model

FAKULTA STAVEBNÍ STUDIJNÍ PROGRAM: GEODÉZIE A KARTOGRAFIE TYP PROGRAMU: MAGISTERSKÝ STUDIJNÍ OBOR: GEOMATIKA ÚVOD DO ZPRACOVÁNÍ PROSTOROVÝCH DAT

Materiál ke cvičením - SQL

Novinky v Microsoft SQL Serveru RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

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.

Formální sémantika SQL dotazování

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

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

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

Databáze 2011/2012 T-SQL - kurzory, funkce. RNDr.David Hoksza, Ph.D.

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

Vkládání poddotazů do dotazů

MS Access Dotazy SQL

Optimalizace dotazů a databázové transakce v Oracle

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

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

Novinky v PostgreSQL 9.4. Tomáš Vondra, 2ndQuadrant

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

Architektury databázových

MS Access Dotazy SQL

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

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

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

Vkládání, aktualizace, mazání

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

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

Tabulka fotbalové ligy

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

ÚVOD DO DATABÁZÍ. Metodické listy pro předmět

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

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

3. Jazyky relačních databázových systémů

Jazyk SQL 3 - DML, DDL, TCL, DCL

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

Stručný obsah. část III Aktualizace dat Kapitola 10: Aktualizace databáze 257 Kapitola 11: Integrita dat 275 Kapitola 12: Zpracování transakcí 307

Databázové systémy I

Dotazovací jazyk SQL II

3. Jazyky relačních databázových systémů

Sada 1 - PHP. 15. Výběr dat z databáze. Příkaz SELECT

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

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

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

Formální sémantika SQL dotazů

SPŠS Č.Budějovice Obor Geodézie a Katastr nemovitostí 3.ročník ATRIBUTY ZÁKLADN POJMY VÝBĚR PRVKŮ DLE ATRIBUTŮ

SQL Server Data Tools (SSDT) RNDr. David Gešvindr MVP: Azure MCSE: Data Platform MCSD: Windows Store

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

Transkript:

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

Logické zpracování dotazu Jazyk T-SQL je deklarativní Popisujeme, jaká data chceme získat, nikoliv jak je chceme získat Logický plán dotazu popisuje transformace dat, které vedou k výsledku Mnohé použité operace jsou krajně neefektivní Fyzický exekuční plán vede ke stejnému výsledku, ale je optimalizovaný s ohledem na cenu dotazu Je tvořen operacemi spustitelnými v SQL Serveru

Fáze zpracování dotazu SELECT P.ProductNumber,P.ProductID, SUM(I.Quantity) AS TotalQuantity FROM Production.Product P INNER JOIN Production.ProductInventory AS I ON I.ProductID = P.ProductID WHERE P.ProductNumber LIKE N'T%' GROUP BY P.ProductID, P.ProductNumber; 1 PROJECT ProductNumber, ProductID, TotalQuantity GBAGG Group-by: ProductID, ProductNumber SUM(Quantity) as TotalQuantity SELECT ProductNumber LIKE N'T%' 2 JOIN Product.ProductID = ProductInventory.ProductID Zdroj: http://sqlblog.com/blogs/paul_white/archive/2010/07/31/inside-the-optimiser-constructing-a-plan-part-4.aspx GET Product GET ProductInventory

Zpracování dotazu 7 8 1 4 5 6 9 SELECT DISTINCT TOP <select list> FROM <left table> 3 <join type> JOIN <right table> 2 10 ON <join condition> WHERE <where condition> GROUP BY <group by list> HAVING <having condition> ORDER BY <order by list>

VT1 1 FROM, 2 ON, 3 JOIN Customers 1 David 2 Jirka 3 Martin X CROSS JOIN Orders 1 1 2 2 3 1 4 4 1 David 2 2 1 David 3 1... 3 Martin 4 4

VT2 VT1 2 ON 1 David 2 2... 3 Martin 4 4 ON CONDITION = 1 David 3 1 = INNER JOIN

VT3 VT2 3 LEFT OUTER JOIN 1 David 3 1 1 David 3 1 3 Martin NULL NULL

VT3 VT2 3 RIGHT OUTER JOIN 1 David 3 1 1 David 3 1 NULL NULL 4 4

VT3 VT2 3 FULL OUTER JOIN 1 David 3 1 1 David 3 1 3 Martin NULL NULL NULL NULL 4 4

Zpracování dotazu 7 8 1 4 5 6 9 SELECT DISTINCT TOP <select list> FROM <left table> 3 <join type> JOIN <right table> 2 10 ON <join condition> WHERE <where condition> GROUP BY <group by list> HAVING <having condition> ORDER BY <order by list>

VT4 VT3 4 WHERE Three-valued Logic True Unknown False V podmínce ON, WHERE a HAVING: NULL chápáno jako FALSE V CHECK CONSTRAINT: NULL chápáno jako TRUE V GROUP BY, ORDER BY a UNIQUE omezeních jsou si NULL rovny

VT5 VT4 5 GROUP BY 1 David 3 1 3 Martin NULL NULL GROUP BY GROUPS RAW David 3 1 3 Martin NULL NULL

VT6 VT5 6 HAVING GROUPS RAW David 3 1 3 Martin NULL NULL HAVING COUNT() > 0 GROUPS RAW David 3 1

VT7 VT6 7 SELECT Vyhodnocení výrazů v části SELECT Vytvořené aliasy sloupců použitelné až v dalších krocích Uplatnění principu All-at-once SELECT c1 + 1 AS e1, e1 + 1 AS e2 UPDATE Customers SET First = Last, Last = First UPDATE dbo.products SET Price = Price + (SELECT MAX(Price) FROM dbo.t1)

VT8 VT7 8 DISTINCT Odstranění duplicitních řádků Zohledňují se jen sloupce v tabulce VT7 Kombinace všech sloupců musí být jedinečná Stejné výsledku lze dosáhnout i s pomocí GROUP BY

VC9 VT8 9 ORDER BY Seřazení množiny výsledků Dle ANSI SQL:1999 při použití DISTINCT jsme omezeni na sloupce vracené příkazem SELECT (VT7), jinak použitelná i VT6 Vrací kurzor Nelze použít jako table-expression View, Inline Table-Valued Function, Subquery, Derived Table nebo Common Table Expression

VT10 VC9 10 TOP Vrání n prvních výsledků z dodaného tabulky Bez ORDER BY je nedeterministické Pokud je definováno ORDER BY, ovlivní pořadí řádků a můžeme získat deterministický výsledek Deterministický výsledek je zajištěn použitím WITH TIES

Zpracování dotazu 7 8 1 4 5 6 9 SELECT DISTINCT TOP <select list> FROM <left table> 3 <join type> JOIN <right table> 2 10 ON <join condition> WHERE <where condition> GROUP BY <group by list> HAVING <having condition> ORDER BY <order by list>

Poddotazy Dotaz, který voláme uvnitř jiného dotazu Platí pořadí operací u jednotlivých dotazů Nekorelovaný poddotaz spustitelný nezávisle na vnějším dotazu Korelovaný poddotaz spustitelný jen v kontextu vnějšího dotazu Poddotaz se volá nezávisle pro každý řádek vnějšího dotazu Poddotaz může vracet: Skalární hodnotu Množinu hodnot (vždy jeden sloupec, více řádků) Tabulku (jeden či více sloupců, více řádků)

CROSS APPLY Customers 1 David 2 Jirka 3 Martin SELECT TOP 1 * WHERE = ORDER BY DESC Orders 3 1 1 David 3 1

OUTER APPLY Customers 1 David 2 Jirka 3 Martin SELECT TOP 1 * WHERE = ORDER BY DESC Orders 3 1 1 David 3 1 3 Martin NULL NULL

Dotazy RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT david@wug.cz @gesvindr