Databáze SQL SELECT. David Hoksza http://siret.cz/hoksza



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

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

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

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

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

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

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

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 úvod

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

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

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

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

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

Databáze I. 1. přednáška. Helena Palovská

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

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

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

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

RELAČNÍ DATABÁZOVÉ SYSTÉMY

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

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

Databázové systémy I

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

Jazyk SQL databáze SQLite. připravil ing. petr polách

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

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

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

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

Kapitola 4: SQL. Základní struktura

Operátory ROLLUP a CUBE

Databázové systémy a SQL

2. přednáška. Databázový přístup k datům (SŘBD) Možnost počítání v dekadické aritmetice - potřeba přesných výpočtů, např.

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

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

KIV/ZIS - SELECT, opakování

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

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

Databázové systémy Tomáš Skopal

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

1. Relační databázový model

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

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

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

U koly na procvic ení jazyka T-SQL

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

Databázové systémy úvod

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

1GIS2. Přednáška 3. Databáze vývoj, vlastnosti, přístupy ke zpracování informací, databázové modely, základy SQL FŽP UJEP

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

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

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

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Jazyk SQL 3 - DML, DDL, TCL, DCL

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

Databázové systémy a SQL

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

Databázové systémy úvod

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

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

4IT218 Databáze. 4IT218 Databáze

Databázové systémy trocha teorie

- sloupcové integritní omezení

Databázové systémy a SQL

Structured Query Language SQL

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

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

Ř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)

Jazyk SQL slajdy k přednášce NDBI001

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

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

Databáze II. 1. přednáška. Helena Palovská

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

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 Cvičení 5

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

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

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

MS Access Dotazy SQL

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

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

Databázové systémy úvod

DATABÁZE, ATRIBUTY. SPŠS Č.Budějovice Obor Geodézie a Katastr nemovitostí 3.ročník

PG 9.5 novinky ve vývoji aplikací

PROCESOR RELAČNÍ ALGEBRY

Materializované pohledy

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

Použití databází na Webu

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

Materiál ke cvičením - SQL

DATA CUBE. Mgr. Jiří Helmich

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

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

2. blok část A Jazyk SQL, datové typy

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

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

Databáze I. 5. přednáška. Helena Palovská

TEORIE ZPRACOVÁNÍ DAT Cvičení 8

Ukázka knihy z internetového knihkupectví

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

Transkript:

Databáze SQL SELECT David Hoksza http://siret.cz/hoksza

Osnova Úvod do SQL Základní dotazování v SQL Cvičení základní dotazování v SQL

Structured Query Language (SQL) SQL napodobuje jednoduché anglické věty jazyk pro dotazování nad RDBMS původní název SEQUEL (Structured English Query Language) Structured Query Language 1970s SEQUEL IBM, Donald D. Chamberlin a Raymond F. Boyce v sedmdesátých letech implementován firmou Relational Software Inc. (později Oracle) krátce na to Oracle V2 a IBM System/38 Založen na relační algebře (relace, jejich sjednocení a průniky,..) SQL je množinově orientovaný jazyk Normy SQL-86, SQL-92, SQL:1999, SQL:2003, SQL 2008 každá norma je víceméně nadmnožinou předchozí normy s přidanými standardizovanými konstrukty rychlý vývoj DBS způsobil předbíhání norem nestandardizované konstrukty v předních RDBMS Většina DBS je SQL-92 compliant na entry-úrovni CASE-insensitive

Rozdělení SQL DDL Data Definition Language CREATE, ALTER, DROP, TRUNCATE, DML - Data Manipulation Language SELECT, INSERT, DELETE, UPDATE, DCL - Data Control Language GRANT, REVOKE TCL Transaction Control Language COMMIT, ROLLBACK,

Schéma AdventureWorksLT

SQL konstrukt SELECT selekce seznam sloupců oddělených čárkami FROM definice zdroje dat (může jít o jednu tabulku, nebo spojení/join tabulek) WHERE restrikce omezení řádků zdroje ORDER BY setřídění výsledku GROUP BY seskupení řádků HAVING restrikce na úrovni skupin definovaných GROUP BY

SELECT SELECT * FROM Products vyber všechny produkty

SELECT - selekce SELECT name, productnumber FROM Products vyber jména a názvy všech produktů SELECT DISTINCT(ShipMethod)FROM SalesOrderHeader DISTINCT odstranění duplicit z výsledku vyber způsob dodání objednávky

SELECT WHERE (restrikce) SELECT * FROM products WHERE weight < 1000 vyber produkty s váhou menší než 1000 SELECT * FROM products WHERE color = Red vyber produkty s červenou barvou SELECT * FROM products WHERE color = Red AND weight > 1000 vyber produkty s červenou barvou a váhou větší než 1000

SELECT predikát WHERE Logické spojky AND, OR, NOT Operátory >, <, >=, <=, =, <>, BETWEEN, LIKE, SELECT * FROM products WHERE weight >= 1000 AND weight <= 2000 SELECT * FROM products WHERE weight BETWEEN 1000 AND 2000 SELECT * FROM products WHERE name LIKE %socks% Produkty, které mají v názvu slovo socks SELECT * FROM products WHERE name LIKE socks% Produkty, jejichž název začíná na socks SELECT * FROM products WHERE name LIKE %socks Produkty, jejichž název končí na socks

NULL hodnota NULL značí neznámou hodnotu (UNKNOWN) tříhodnotová logika 3VL logic

Predikát IS NULL SELECT * FROM product WHERE size = NULL SELECT * FROM product WHERE size IS NULL SELECT * FROM product WHERE size IS NOT NULL

SELECT ORDER BY (třídění) SELECT * FROM product ORDER BY weight ASC SELECT * FROM product ORDER BY weight DESC

SELECT - spojení ve FROM klauzuli se může vyskytovat více tabulek/pohledů/vnořených dotazů typicky spojení přes cizí klíče (není pravidlem) spojení zdroj := tabulka pohled vnořený dotaz (SELECT) možnosti spojení zdroj1 [LEFT RIGHT FULL] [OUTER ] JOIN zdroj2 [ JOIN ] ON (podmínka) zdroj1, zdroj2 [, ] WHERE (podmínka) další možnosti zahrnují NATURAL JOIN, USING, (v MS SQL Serveru nepodporováno)

Vnitřní spojení SELECT * FROM Product JOIN ProductCategory ON (Product.ProductCategoryID = ProductCategory.ProductCategoryID) seznam produktů a příslušných kategorií SELECT * FROM Product AS p JOIN ProductCategory AS pc ON (p.productcategoryid = pc.productcategoryid) alternativní zápis předchozího dotazu s použití tzv. ALIASů při použití alisů je v MSSQL nutné je použít i v ON klauzuli klíčové slovo AS lze v aliasu vynechat SELECT p.*, pc.name FROM Product AS p JOIN ProductCategory AS pc ON (p.productcategoryid = pc.productcategoryid) využití restrikce k získání informací o všech produktech a ke každému navíc pouze název kategorie SELECT p.*, pc.name FROM Product AS p, ProductCategory AS pc WHERE p.productcategoryid = pc.productcategoryid Alternativní zápis předchozího dotazu

Vnitřní spojení SELECT p.name, soh.salesordernumber, soh.orderdate, soh.taxamt FROM Product p JOIN SalesOrderDetail sod ON (p.productid= sod.productid) JOIN SalesOrderHeader soh ON (sod.salesorderid = soh.salesorderid) ORDER BY p.name

Vnější spojení SELECT p.name, sod.productid FROM Product p LEFT JOIN SalesOrderDetail sod ON (p.productid= sod.productid) vybere všechny produkty, které se účastní nějaké objednávky a navíc ty, které se žádné neúčastní - takové doplní NULL hodnotami pokud řádek zdroje v levé části spojení nemá podle spojovací podmínky partnera, vyplní se příslušné sloupce NULL hodnotami analogicky RIGHT JOIN a OUTER JOIN (spojení RIGHT A LEFT JOINu)

Agregační operátory Agregační operátory dokáží agregovat hodnoty sloupců výsledku Skutečná síla spočívá až v kombinaci s klauzulí GROUP BY (příští přednáška) základní agregační operátory COUNT, AVG, MIN, MAX, SUM SELECT COUNT(*), MAX(ListPrice) FROM product Počet prodáváných produktů a maximum jejich cen SELECT SUM(ListPrice) FROM product Suma cen produktů, které prodáváme

Vnořené dotazy Vnořené dotazy se píší do závorky a lze je místo libovolného zdroje, nebo hodnoty (v případě, že vnořený dotaz vrací jeden řádek a jeden sloupec) SELECT name, ListPrice FROM Product WHERE ListPrice = (SELECT MAX(ListPrice) FROM Product) Název produktu s maximální cenou a jeho hodnota Takovéto použití je často méně efektivní než použití GROUP BY SELECT name, (SELECT COUNT(*) FROM SalesOrderDetail sod WHERE sod.productid = p.productid) FROM Product p Seznam produktů a počet objednávek každého z nich Efektivnější bude s použitím GROUP BY (příště)