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



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

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

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

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

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

Databáze SQL SELECT. David Hoksza

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

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

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

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

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

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

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

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

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

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

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

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

Kapitola 4: SQL. Základní struktura

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

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

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

1. Relační databázový model

Materiál ke cvičením - SQL

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

Databázové systémy I

PG 9.5 novinky ve vývoji aplikací

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

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

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

Structured Query Language SQL

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

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

Konceptuální modelování a SQL

Databázové systémy I

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

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

Databáze MS-Access. Obsah. Co je to databáze? Doc. Ing. Radim Farana, CSc. Ing. Jolana Škutová

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

- sloupcové integritní omezení

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

TRANSAKCE

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

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

Jazyk SQL 3 - DML, DDL, TCL, DCL

Databázové systémy a SQL

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

Databázové systémy úvod

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

Operátory ROLLUP a CUBE

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

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

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

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

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

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

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

Databázové systémy a SQL

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

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

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

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,...

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

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

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

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

MySQL. mysql> CREATE DATABASE nova CHARACTER SET latin2 COLLATE latin2_czech_cs; Query OK, 1 row affected (0.02 sec)

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

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

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

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

5. POČÍTAČOVÉ CVIČENÍ

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Jazyk SQL slajdy k přednášce NDBI001

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

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

KIV/ZIS - SELECT, opakování

Kurz Databáze. Obsah. Návrh databáze E-R model. Datová analýza, tabulky a vazby. Doc. Ing. Radim Farana, CSc.

Databázové systémy trocha teorie

OBJECT DEFINITION LANGUAGE. Jonáš Klimeš NDBI001 Dotazovací Jazyky I 2013

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

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

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

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

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

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

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

Sada 1 - PHP. 14. Úvod do jazyka SQL

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

Temporální databáze. Jan Kolárik Miroslav Macík

Databázové systémy Tomáš Skopal

Informační systémy 2008/2009. Radim Farana. Obsah. Skripty a dávky. Nastavení aktuální databáze. USE DatabaseName

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

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

RELAČNÍ DATABÁZE ACCESS

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče.

Zadání. Slovníček pojmů. Otázka 18 A7B36DBS

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

Zpracování informací

Transkript:

1 Kurz Databáze Zpracování dat Doc. Ing. Radim Farana, CSc. Obsah Druhy dotazů, tvorba dotazu, prostředí QBE (Query by Example). Realizace základních relačních operací selekce, projekce a spojení. Agregace dat, virtuální pole, parametry. Výkonné dotazy. SQL dotazy. Poddotazy. Dotazovací jazyk SQL (Structured Query Language). strana 1 Dotazy Jaké jsou druhy dotazů a k čemu slouží? výběrové dotazy - výběr požadovaných dat (selekce, projekce a spojení), virtuální položky, řazení, agregované výpočty, výkonné dotazy - vytvoření tabulky, hromadná změna dat, přidání a rušení záznamů, SQL dotazy - vše co umí jazyk SQL, speciálně UNION. Spojení dat z více tabulek Projekce výběr zobrazených polí Selekce - výběr zobrazených záznamů strana 2

2 Výběrové dotazy Spojení dat z více tabulek Projekce - výběr zobrazených polí Selekce - výběr zobrazených záznamů Řazení záznamů strana 3 Parametry dotazů Datový typ Parametr Zadání hodnoty včetně kontroly strana 4 Virtuální pole Formát pole PARAMETERS [Fill in the machine number] Long; SELECT tbloperations.opeid, tbloperations.opeworker, tbloperations.opemachine, IIf(IsNull([opeStop]),Now(),[opeStop])-[opeStart] AS opelength FROM tbloperations WHERE (((tbloperations.opemachine)=[fill in the machine number])) Pojmenování pole ORDER BY tbloperations.opeid; strana 5

3 Agregační dotazy Pojmenování položky TOP n (TOP n PERCENT) DISTINCT DISTINCTROW WITH OWNERACCESS OPTION IN Definice skupin Operace Podmínka strana 6 Agregační funkce Volba Výsledek Datový typ pole Sum Součet hodnot v Číslo, Datum/Čas, Měna a Automatické číslo Avg Průměr hodnot v Číslo, Datum/Čas, Měna a Automatické číslo Min Nejnižší hodnota v Text, Číslo, Datum/Čas, Měna a Automatické číslo Max Nejvyšší hodnota v Text, Číslo, Datum/Čas, Měna a Automatické číslo Count Počet hodnot v, Text, Memo, Číslo, hodnoty Null (prázdné) se nepočítají Datum/Čas, Měna a Automatické číslo, Ano/Ne a objekt OLE StDev Směrodatná odchylka hodnot v Var Rozptyl hodnot v First První ze skupiny Volba Výsledek Last Poslední ze skupiny Group By Definice skupin, s nimiž se provádějí výpočty. Expression Vytvoření vypočítaného pole, které zahrnuje agregační funkci ve svém výrazu. Vypočítané pole se používá obvykle tehdy, když má být ve výrazu několik funkcí. Where Zadání kritérií pro pole, která se nepoužívají k definici seskupení. Číslo, Datum/Čas, Měna a Automatické číslo Číslo, Datum/Čas, Měna a Automatické číslo strana 7 Křížový dotaz TRANSFORM Sum(qryWorkersWithExpensiveSteps.stpPrice) AS SumOfstpPrice SELECT qryworkerswithexpensivesteps.wrkpn, qryworkerswithexpensivesteps.wrksurname, qryworkerswithexpensivesteps.wrkname, Sum(qryWorkersWithExpensiveSteps.stpPrice) AS TotalOfstpPrice FROM qryworkerswithexpensivesteps GROUP BY qryworkerswithexpensivesteps.wrkpn, qryworkerswithexpensivesteps.wrksurname, qryworkerswithexpensivesteps.wrkname PIVOT qryworkerswithexpensivesteps.opemachine; strana 8

4 Vytvářecí dotaz SELECT tbloperations.*, qryoperationsfinished.stppricetotal INTO tbloperationsfinished FROM qryoperationsfinished INNER JOIN tbloperations ON qryoperationsfinished.opeid = tbloperations.opeid; strana 9 Aktualizační dotaz Způsob zobrazení Druh dotazu Provedení dotazu Přidání zdroje Vlastnosti dotazu UPDATE tblsteps SET tblsteps.stpname = [New step name] WHERE (((tblsteps.stpname)=[previous step name])); strana 10 Přidávací dotaz INSERT INTO tbloperationsfinished ( stppricetotal ) SELECT tbloperations.*, qryoperationsfinished.stppricetotal FROM tbloperations INNER JOIN qryoperationsfinished ON tbloperations.opeid = qryoperationsfinished.opeid; strana 11

5 Odstraňovací dotaz DELETE tbloperations.opestop FROM tbloperations WHERE (((tbloperations.opestop) Is Not Null)); strana 12 Sjednocovací dotaz TABLE tbloperationsfinished UNION SELECT tbloperations.*, qryoperationsfinished.stppricetotal FROM tbloperations INNER JOIN qryoperationsfinished ON tbloperations.opeid = qryoperationsfinished.opeid ORDER BY opeworker; Způsob řazení strana 13 Definiční dotazy Vytvoření tabulky: CREATE TABLE NewTableName (Prijmeni TEXT (50) NOT NULL, Jmeno TEXT (50), Datum DATETIME, Pocet INTEGER CONSTRAINT JednoduchyKlic PRIMARY KEY, Noname TEXT); Vytvoření indexu (složeného): Vytvoření primárního klíče CREATE INDEX NewIndex ON NewTableName (Prijmeni ASC, Jmeno ASC, Plat DESC) WITH DISALLOW NULL; Určení způsobu řazení Změna definice tabulky (přidání položky): ALTER TABLE NewTableName ADD COLUMN Plat CURRENCY NOT NULL; Změna definice tabulky (přidání indexu): ALTER TABLE NewTableName ADD CONSTRAINT SlozenyKey UNIQUE (Prijmeni, Jmeno); Změna definice tabulky (zrušení položky): ALTER TABLE NewTableName DROP COLUMN Plat; Změna definice tabulky (zrušení indexu): ALTER TABLE NewTableName DROP CONSTRAINT SlozenyKey; Zrušení indexu: DROP INDEX NewIndex ON NewTableName; Zrušení tabulky: DROP TABLE NewTableName; strana 14

6 Průvodce tvorbou dotazů Křížový dotaz Hledání duplicit Hledání chybějících podřízených záznamů strana 15 Chybějící podřízené záznamy SELECT tbloperations.* FROM tbloperations LEFT JOIN tblsteps ON tbloperations.opeid = tblsteps.stpoperation WHERE (((tblsteps.stpid) Is Null)) ORDER BY tbloperations.opeworker; strana 16 Duplicitní záznamy strana 17

7... SELECT tblsteps.stpoperation, tblsteps.stpid, tblsteps.stpname, tblsteps.stpprice FROM tblsteps WHERE (((tblsteps.stpoperation) In (SELECT [stpoperation] FROM [tblsteps] As Tmp GROUP BY [stpoperation] HAVING Count(*)>1 ))) ORDER BY tblsteps.stpoperation; strana 18 Poddotazy Průměrná cena všech kroků (skalární hodnota) SELECT tblsteps.* FROM tblsteps WHERE (((tblsteps.stpprice)>(select Avg(stpPrice) as stppriceavg FROM tblsteps;))); strana 19 Propojení poddotazu SELECT tblsteps.* FROM tblsteps WHERE (((tblsteps.stpprice)> (SELECT Avg(stpPrice) as stppriceavg FROM tblsteps as Pom WHERE tblsteps.stpoperation=pom.stpoperation;))); Přejmenování zdroje v poddotazu Propojení s hlavním dotazem strana 20

Testování více hodnot Testování existence v seznamu (EXISTS, NOT EXISTS). Porovnání hodnoty se seznamem vrácených hodnot: IN - nachází se v seznamu, ANY - podmínka platí alespoň pro jednu hodnotu v seznamu, ALL - podmínka platí pro všechny hodnoty v seznamu. WHERE Adresy.DatumNarozeni IN (SELECT Adresy.DatumNarozeni FROM Adresy WHERE Adresy.Prijmeni= Novak ) vrátí všechny osoby, které se narodily stejný den jako některý z Nováků WHERE Adresy.DatumNarozeni <ANY (SELECT Adresy.DatumNarozeni FROM Adresy WHERE Adresy.Prijmeni= Novak ) vrátí všechny osoby, které se narodily dříve něž některý z Nováků WHERE Adresy.DatumNarozeni <ALL (SELECT Adresy.DatumNarozeni FROM Adresy WHERE Adresy.Prijmeni= Novak ) vrátí jen osoby, které se narodily dříve něž všichni Nováci strana 21 Dotaz jako součást výrazu SELECT tblsteps.*, [stpprice]/(select Sum(stpPrice) FROM tblsteps;) AS stpperc FROM tblsteps; Dotaz vrací skalární hodnotu (jeden záznam s jednou položkou) strana 22 Dotazovací jazyk SQL Structured Query Language neprocedurální jazyk 1984 - SEQUEL ANSI standard 1986 ISO standard 1987 rozšíření ISO 1989 ANSI standard 1992 (SQL92) jazyk pro definici dat interaktivní jazyk pro manipulaci s daty jazyk pro manipulaci s daty v hostitelské verzi možnost definice pohledů (virtuální tabulka) možnost definice přístupových práv možnost definice integritních omezení jazyk modulů řízení transakcí DDL (Data Definition Language), DML (Data Manipulation Language), DCL (Data Control Language) strana 23 8

9 Datové typy SQL Typ dat: Popis: SMALLINT Celá čísla v délce až šesti číslic (včetně znaménka). Rozpětí povolených hodnot je od -32,768 do 32,767. Velikost: 2 Byte. INTEGER Celá čísla v délce až 11 číslic (včetně znaménka). Rozpětí povolených hodnot je interval od - 2,147,483,648 až do 2,147,483,647. Velikost: 4 Byte. DECIMAL(x,y) Čísla s pevnou řádovou čárkou se znaménkem celkem s x číslicemi a y desetinnými místy, x je implicitně 30 a y se implicitně rovná 6. Velikost: proměnná. NUMERIC(x,y) Obdobně jako DECIMAL(x,y). Velikost: proměnná. FLOAT(x) Čísla v pohyblivé řádové čárce. Rozpětí čísel sahá od 2.22507385850720160*10-308 až k 1.79769313486231560*10 +308. Velikost: 8 Byte. CHAR(n) Znakové řetězce v délce n znaků. Povolené rozpětí pro n je interval od 1 do 32767. Bez určení n je (CHARAKTER (n)) implicitně rovno 1. Velikost : n znaků. VARCHAR(n) Umožňuje používat řetězců proměnné délky. Dovoluje ukládat řetězce různé délky v jednotlivých (VARYING řádcích. Stanovuje se horní maximálně možná délka řetězce. Jinak podobně jako u CHAR(n). Velikost: n CHARAKTER) znaků. LONG VARCHAR Řetězec libovolného počtu znaků. Maximální velikost je omezena maximálně dovolenou velikostí databázového souboru. DATE Datum ve formátu dle nastavení: yyyy/mm/dd. Velikost: 4 Byte. TIMESTAMP Stejně jako datum plus hodina, minuta, vteřina a zlomek vteřiny (na 6 míst): yyyy/mm/dd hh-mmss.ffffff. Velikost: 8 Byte. TIME Časový okamžik dne. Ve formátu hodina/minuta/vteřina. Velikost: 4 Byte. DOUBLE Obdobně jako FLOAT. Velikost: 8 Byte. REAL Reálná čísla s vědeckotechnickým formátem. Rozpětí čísel sahá od 1.175494351*10-38 až do 3.402823466*10 38. Velikost: 4 Byte. BINARY(n) Binární data celkové délky n Byte. Implicitně je size = 1 Byte. Max. délka je 32767 Byte. Velikost: n Byte. LONG BINARY Binární datový typ libovolné délky. Omezení jako u LONG VARCHAR. strana 24 Příkazy SQL Příkazy pro definici datových struktur (DDL) Klauzule CREATE DATABASE Klauzule CREATE TABLE Klauzule DROP TABLE Klauzule ALTER TABLE Klauzule CREATE VIEW Klauzule DROP VIEW Klauzule ALTER DOMAIN Klauzule DROP DOMAIN Příkazy pro získávání dat Klauzule SELECT a FROM Příkaz DECLARE CURSOR Příkaz OPEN Příkaz FETCH Příkaz CLOSE Příkazy pro manipulaci s daty (DML) Klauzule INSERT Klauzule DELETE Klauzule UPDATE Příkazy pro kontrolu přístupu dat (DCL) Klauzule GRANT Klauzule REVOKE Klauzule CONNECT Příkazy pro řízení transakcí Klauzule COMMIT Klauzule ROLLBACK Příkazy pro specifikaci nastavení Klauzule SET NAMES Klauzule SET TRANSACTION strana 25 http://www.fs.vsb.cz/books/sqlreference/index.htm strana 26