Zpracování informací (kombinované studium)

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

Zpracování informací

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

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

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

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

Databáze SQL SELECT. David Hoksza

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

Zpracování informací

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

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

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

Ú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

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

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

Použití databází na Webu

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

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

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

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

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

Databázové systémy a SQL

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

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

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

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

Operátory ROLLUP a CUBE

Programování v jazyku C# II. 5.kapitola

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

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

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 4

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

Databázové systémy úvod

Databázové systémy trocha teorie

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

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

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

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

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

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áze I. 5. přednáška. Helena Palovská

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

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

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

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

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

RELAČNÍ DATABÁZOVÉ SYSTÉMY

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

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

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

MySQL manuál. Copyright: Adam Jun Stránky manuálu:

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

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

Michal Krátký, Miroslav Beneš

Databázové a informační systémy Jana Šarmanová

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL,

Databázové systémy I

O Apache Derby detailněji. Hynek Mlnařík

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

C# - Databáze úvod, ADO.NET. Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí

Databázové systémy a SQL

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

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

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

1. Relační databázový model

Databázové systémy I

SQL - trigger, Databázové modelování

4. lekce Přístup k databázi z vyššího programovacího jazyka

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

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

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

Ukládání a vyhledávání XML dat

PG 9.5 novinky ve vývoji aplikací

Stručný obsah. K2118.indd :15:27

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

1 Webový server, instalace PHP a MySQL 13

Jazyk SQL 3 - DML, DDL, TCL, DCL

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

Základy databází. O autorech 17 PRVNÍ ČÁST. KAPITOLA 1 Začínáme 19

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

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

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

Maturitní témata z předmětu PROGRAMOVÉ VYBAVENÍ pro šk. rok 2012/2013

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

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

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

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

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

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

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

Oracle XML DB. Tomáš Nykodým

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

Informační systémy 2008/2009. Radim Farana. Obsah. Základní principy XML

Ukázka knihy z internetového knihkupectví

MySQL databáze - český manuál

Informační systémy 2008/2009. Radim Farana. Obsah. Obsah předmětu. Požadavky kreditového systému. Relační datový model, Architektury databází

Transkript:

Ústav automatizace a informatiky Fakulta strojního inženýrství Vysoké učení technické v Brně Přednáška č. 3 z předmětu Zpracování informací (kombinované studium) Ing. Radek Poliščuk, Ph.D. Tato publikace vznikla jako součást projektu CZ.04.1.03/3.2.15.2/0285 Inovace VŠ oborů strojního zaměření, který je spolufinancován evropským sociálním fondem a státním rozpočtem České republiky 1/25

Ohlédnutí přednášky 1 a 2 Abychom získali INFORMACE, potřebujeme DATA. Technická data získáváme měřením a sledováním. Logické a spojité veličiny (signály) měříme pomocí snímačů (senzorů). Pro elektronické zpracování je nutný převod do formy elektrického signálu (U,I...). Pro digitální zpracování se signály vzorkují (v čase) a kvantují (A/D). Data ze senzorů obvykle potřebujeme někam přenést, archivovat a analyzovat. Technickou úroveň přenosu a archivace přizpůsobujeme rozpočtu dané úlohy. Technickou úroveň přenosu a archivace přizpůsobujeme rozpočtu dané úlohy. Souborový formát a rozmístění dat volíme s ohledem na budoucí použití (datové tabulky, jednotlivé binární soubory, datové stromy ve značkovaných souborech). Sekvenčně zracovávané tabulky s pevnou délkou záznamu mají jistá omezení Rychlost prohledávání datových záznamů je možné optimalizovat použitím indexů. Množství dat v tabulkách je možné zredukovat použitím relací (normalizace DB) Data nemusejí nutně mít jen tvar pravoúhlých tabulek, propojených relacemi. (některé druhy informací může být efektivnější/přehlednější držet například ve formě stromu) 2/25

Obsah přednášky Přednáška 3 Databázové systémy Požadavky na databázové systémy Procedurální a logický přístup k datům Dotazovací jazyky a aplikační rozhraní Co je a co umožňuje SQL SQL jako DDL Create, Alter, Drop, Grant SQL jako DML Show, Use, Select, Insert a Update Realita DATA Informační systém Informace Příjemce 3/25

Databázové systémy Mostem mezi daty a samotným informačním systémem jsou databázové systémy. Požadavky na funkci DBS (data + systém řízení báze dat = databázový systém, DBS): Spolehlivost transakcí ( 2 Phase Commit - neprojdou-li všechny kroky, následuje Roll-back) Škálovatelnost (bez předem daných omezení na 128sl, 64k, 4G,...) Vícenásobný přístup (vyřešené vzájemné blokování uživatelů) Bezpečnost (individuálně definovatelné zabezpečení úrovní přístupu ke všem elementům) Tyto požadavky NENÍ MOŽNÉ splnit s použitím klasických, souborově orientovaných aplikací (otevřít soubor, načíst a upravit data, uložit zpět na disk...) Vývoj specializovaných DBS (70. léta 20.stol.), na principu klient-server: Komerční (Oracle, Sybase, IBM DB2, Microsoft SQL server) Open Source (MySQL, PostgreSQL, SQLite) Speciální (Google) 4/25

Databázové systémy E.F.Codd, A Relational Model of Data for Large Shared Data Banks (1970): Informace v DB je uspořádána jednotně (např. v řádcích tabulek). Data musí být dostupná a adresovatelná vždy jednoznačně (jménem tabulky a sloupcem s primárním klíčem) Všechna neklíčová data mohou nabývat hodnoty nezadáno (NULL). Jednotlivé databáze v IS ( katalogy ) musí být uživatelům dostupné s použitím stejných rozhraní jako data (SQL). Toto rozhraní (dotazovací jazyk) musí mít: lineární syntax možnost interaktivního (CLI) i programového (API) volání schopnost definovat formu dat (Data Definition Language, DDL) i daty manipulovat (Data Manipulation Lang.), definovat uživatelská práva a řídit transakční operace (begin, commit, rollback). U všech pohledů na data umožňujících editaci je systém schopen ošetřit i fyzickou aktualizaci dat (výsledky dotazů). Vysokoúrovňové příkazy INSERT, UPDATE a DELETE (schopnost manipulovat s více záznamy jediným příkazem). Fyzická datová nezávislost (aplikaci nemusí zajímat fyzické pořadí záznamů). Logická datová nezávislost (aplikaci nemusí zajímat fyzické uspořádání sloupců tabulek). Nezávislost zabezpečení dat (bezpečnostní údaje jsou drženy v systémovém katalogu a ne v tabulce samotné). Distribuční nezávislost (tabulky mohou být fyzicky kdekoliv, pro aplikace vše řeší jediný DB stroj). Ochrana proti obcházení pravidel (ani případnými low-level/řádkovými prostředky není možné obejít zabezpečení). 5/25

Relační uspořádání dat Zjednodušené zásady správného návrhu relační databáze: Normalizace = Eliminace nadbytečných dat Atomizace polí (informace bychom neměli dolovat dalšími funkcemi, např. jméno/příjmení) Unikátní/primární klíče (jednoznačná identifikace záznamu přes jedno nebo více jeho polí) Funkcionální závislost (záznam popisuje to co se týče daného objektu přímo nebo relacemi) Nezávislost polí (změna jednoho pole by neměla ovlivňovat jiná např. sazba a částka DPH) (nesystémové ale praktické) výjimky z normalizačních zásad: Zvýšení výkonnosti u časově kritických úloh Vyhodnocujeme-li často některou náročně počítanou hodnotu, pak může být výhodné pole s jejím výsledkem připojit k záznamu (ale při každé změně ji důsledně přepočítávat!!!). např.: pole typu Celkem vč. DPH v tabulce faktur mohou urychlit tvorbu přehledů. Zachycení časově proměnlivých dat Vyhýbáme se odkazům na pole v jiných tabulkách, jejichž změna by za čas mohla vadit. Např.: Fakturovanou částku za položky uvádíme vždy přímo (protože změna katalogové ceny, na kterou by se dalo odkazovat, by mohla zpochybnit i již uzavřené obchody...=> finanční úřad =>). Nebo: Dále nevázaná zodpovědnostní pole typu doklad vystavil neodkazovat někam do adresáře, ale při vystavování jej pouze naplnit kopií aktuální hodnoty (Dotyčný pracovník už ve firmě za měsíc pracovat nemusí a jeho záznam může být odstraněn/změněn...)- 6/25

Procedurální a logický přístup Uvedené požadavky je programátorsky možné řešit dvěma způsoby: Procedurální přístup: požadavky na data se zadávají jako struktura příkazů (cykly, funkce,...) operace probíhají jen v rámci zadané sekvence příkazů (mnoho kroků)... Data:=Database.OpenRecordset('Tabulka_Adresy');//výběr tabulky While not Data.EOF do //Dokud nejsme na konci.. begin read(data Data,Zaznam);,Zaznam);//načti další záznam If Zaznam.PSC='26601' then //pokud splňuje podmínky.. writeln(zaznam.jmeno,' ',Zaznam.Prijmeni); End; Data.Close; //Hotovo, zavřít soubor.... Neprocedurální přístup: Snaha o oddělení požadavku na data od programového kódu Na data posíláme logicky formulovaný požadavek (co chci, zdroj, podmínky, třídění...) nalezený recordset ( pole nalezených záznamů ) se poté zpracovává.... If Data.Query('Select Jmeno, Prijmeni from adresy where PSC='26601') ') //logický požadavek For i:=0 to Data.count1-1 do //Procházení nalezených záznamů writeln(data[i].columns[1],' ',Data[i].columns[2]);//Zpracování recordsetu End; Data.Close; //Hotovo, zavřít soubor.... Výhody: Kratší kód, do aplikace se přenáší už jenom jen platná data. 7/25

Dotazovací jazyky Abychom si o data mohli logicky říct, musíme požadavek(dotaz) vhodně formulovat: SQL (Structured Query Language, více dále) pevně daná struktura čitelných, slovně formulovaných sekcí dotazu: SELECT Store.Name, Sum(Sales.Store) FROM Sales, Stores WHERE Sales.Store=Store.ID and Store.Country='USA' and Store.State='CA' and Sales.datum between '2002-01-01' and '2003-12-31' Group By Sales.Store; MDX (specializovaná kontingenční/olap nadstavba SQL, Microsoft, '97): SELECT { [Measures].[Store Sales] } ON COLUMNS, { [Date].[2002], [Date].[2003] } ON ROWS FROM Sales WHERE ( [Store].[USA].[CA] ); XQL (XML Query Language, dotazy nad XML stromy) Funkce dotazovacího jazyka přitom obecně zahrnují: Data Manipulation Language (Select, Insert, Update) Data Definition Language (Create, Set, Drop, Grant...) 8/25

Aplikační rozhraní Pro zadávání DDL/DML požadavků a pro vyzvedávání výsledků potřebujeme vhodné API: je-li server dostupný jako konzolová aplikace, je možné použít CLI (příkazová řádka) pro práci s daty v uživ. aplikacích se tato vrstva obaluje aplikačním rozhraním (API): OLEDB (Object Linking and Embedding Database, Microsoft) obecné lower-level rozhraní pro přístup k obecným poskytovatelům dat ODBC (Open Database Connectivity, Microsoft) univerzální knihovny umožňující instalaci ovladačů (driverů) pro různé DBS rozhraní poskytuje všechny obecné funkce pro dotazování i vyzvedávání dat JDBC (JDBC-ODBC bridge, Sun Microsystems) objektové zapouzdření ODBC funkcí - JAVA) ADO (ActiveX Data Objects, objektová mezivrstva mezi OLEDB/ODBC, Microsoft) Třídy: Connection, Recordset, Command, Record (flat file), Stream, Error, Field, Parameter, Property ADO.NET (přepracované ADO pro.net) Třídy: Connection, Command, Parameter, DataAdapter, DataReader 9/25

Databázové aplikace Databázové aplikace uživatelům obvykle poskytují tyto možnosti: Pohled na data v tabulkách ( tabulkový editor ) s možností reorganizace DB Zadávání dotazů na data a pohled na výsledné datasety (tabulkové výsledky dotazů) Zadávání, čtení a správu záznamů prostřednictvím formulářů Formátování dat do výstupních formátů (tiskových a www sestav) Možnost aplikace uživatelských programových rutin nad zpracovávanými daty. 10/25

SQL je: SQL = Structured Query Language, standardní textový počítačový jazyk pro přístup a manipulaci s databází. založeno na jazyku SQL, který vychází ze SEQUEL (Simplified English Query Language, později z copyrightových důvodů zkráceno na SQL), vyvinutého v 70. letech IBM na základě teorie rozsáhlých relačních modelů Edgara F.Codda (1970). První komerční implementace: Relational Software, Inc. (dnes Oracle Corporation) 1979, prakticky všechny komerční SQL jsou dnes jejími dialekty, Standardní (ANSI-1986 a ISO-1987) SQL nalezneme v mnoha DBS (MS Access, DB2, Informix, MS SQL Server, Oracle, Sybase,...) Všechna tato prostředí obsahují různě zpracované interpretery SQL, základní prvky stanovené ANSI (např. SELECT, UPDATE, DELETE, INSERT, klauzule WHERE, ) však obsahují všechny. Nejčastěji diskutované rozdíly v různých interpretacích SQL spočívají v proprietárních rozšířeních původního standardu. Další text bude obsahovat ukázky použitelné jak v Accessu, tak např. v MySQL... 11/25

SQL umožňuje: SQL umožňuje jednoduchým a přehledným způsobem: přistupovat k datům v databázi (Use, Select, Union...) vznášet dotazy na data (agregační funkce, poddotazy apod.), vyzvedávat data z databáze (dataset text, tabulka, XML,...), vkládat nové záznamy do databáze, selektivně aktualizovat záznamy v databázi, selektivně mazat záznamy z databáze, definovat strukturu databáze (struktura záznamů a tabulek, indexy, práva...) Tímto jsou zajištěny požadavky jak na schopnost manipulace(dml), tak definice dat(ddl). 12/25

Data ke kterým přistupujeme DBS může obsluhovat více datových projektů (~databází, ~schémat, ~katalogů...) Každá databáze bývá tvořena jednou nebo více tabulkami. Každá tabulka je jednoznačně identifikovaná svým jménem (např. Adresář, Objednávky...). Tabulky obsahují záznamy/struktury s daty, např. tabulka Adresář může obsahovat: ID Jméno: Příjmení: Adresa: Město: PSČ: 1 Alois Vocásek Severní 10 Brno 606 00 2 Kryšpín Jelítko Jižní 11 Praha 116 00 3 Felix Bůček Západní 3 Ostrava 825 00 4 Tadeáš Jelítko Východní 8 Plzeň 322 00 k identifikaci záznamů v tabulkách se používají indexová pole (nebo skupiny polí) pro jednoznačnou identifikaci je nutný unikátní (tj. neopakující se) klíč (~index); jeden z unikátních klíčů (typicky pořadové číslo) se prohlašuje za primární klíč. k identifikaci jednotlivých polí v rámci záznamů se používají unikátní jména sloupců. 13/25

Databáze Práci na úrovni databází v SQL řeší tyto CLI příkazy (MySQL): SHOW DATABASES; zobrazí jména dostupných databází CREATE DATABASE nazev_databaze; vytvoří DB se jménem "nazev_databaze" (název může mít max. 65 znaků) abychom mohli DB používat, musíme ji vybrat (USE) a vytvořit v ní tabulky (CREATE TABLE...) a přidělit k nim přístupová práva (příkaz GRANT viz manuál vašeho DBS, není jednotné) USE nazev_databaze; zvolená databáze "nazev_databaze" se nastaví jako aktivní (v Accessu ~ volbě souboru) SELECT DATABASE(); vrací název aktuální databáze SHOW TABLES; SHOW TABLES FROM nazev_databaze; zobrazí seznam tabulek aktuální / zvolené databáze DESCRIBE nazev_tabulky; nebo SHOW COLUMNS FROM nazev_tabulky; zobrazí strukturu vybraných tabulek SOURCE cesta/soubor; vykoná všechny příkazy uvedené v souboru zadaném parametrem DROP DATABASE nazev_databaze; - vymaže celou databázi se jménem "nazev_databaze", včetně všech tabulek a dat v nich. 14/25

DDL - Tabulky CREATE TEMPORARY TABLE název( NázevSloupce1 <typ> <výčet modifikátorů>, NázevSloupce2 <typ>,...) TYPE=typ_tabulky; Používané typy sloupců: integer(n), int(n), smallint(n), tinyint(n), bit, bool: Celočíselné, n je max. počet míst decimal(n,d) nebo numeric(n,d): Desetinná čísla, d je počet desetinných míst. double, float: binární formát reálných čísel char(délka): Řetězec s pevně danou délkou (max. 255 znaků). varchar(max_délka): Řetězec s danou maximální délkou (max. 255 znaků). date, datetime, timestamp, time, year: Datumové údaje, pozor na rozsahy! tinytext/tinyblob (<2 8 ), text/blob (<2 16 ), mediumtext/mediumblob (<2 24 ), longtext, longblob (<2 32 ) enum('možnost1', 'možnost2',..) : volba jedné ze seznamu možných hodnot set('hodnota1', 'hodnota2',..) : výčet ze seznamu až 64 možných hodnot Modifikátory typu: AUTO_INCREMENT, BINARY, INDEX PRIMARY KEY, Unique, Null not null, UNSIGNED, ZEROFILL Používané typy tabulek (Mysql): MYISAM: standard MySQL, soubory s příponami.myd (data) a.myi (indexy) MERGE: pro spojování MYISAM tabulek se stejně definovanými poli HEAP: tabulka je pouze v paměti (rychlé, řada omezení) INNODB: tabulky zamykané na úrovni řádků, podpora transakcí BEGIN;... ; COMMIT; (a další... po prostudování originální dokumentace.) 15/25

DDL - Indexy Smazání dat v tabulce, zachování struktury TRUNCATE TABLE table_name; Změna stávající struktury: ALTER TABLE table_name RENAME nový_název_tabulky ADD jméno_sloupce <typ> First After <sloupec> DROP COLUMN <jména rušených sloupců> CHANGE název_sloupce nový_název nový_typ; MODIFY název_sloupce nový_typ; Vytvoření indexu přes 1 nebo více zadaných sloupců: CREATE UNIQUE INDEX jméno_indexu ON table_name (<seznam sloupců zahrnutých v indexu>) Odstranění stávajících struktur: DROP INDEX table_name.index_name DROP TABLE table_name DROP DATABASE database_name 16/25

DML - Data Modifikace dat v tabulkách je možná příkazy: Vkládání nových záznamů do existujících tabulek: INSERT INTO <tabulka> (<seznam naplňovaných sloupců>) VALUES (<seznam hodnot v daném pořadí>); Zrušení záznamů splňujících danou podmínku (o podmínkách více viz Select): DELETE FROM <tabulka> WHERE <podmínky pro výběr řádek> Úprava záznamů splňujících danou podmínku: UPDATE <tabulka> SET <sloupce> = <výrazy> WHERE <podmínky pro výběr řádek>; Výpis záznamů splňujících podmínky v zadaných klauzulích: SELECT sloupce FROM tabulky WHERE <filtrační podminky> GROUP BY <sloupce> Having <agregační podmínky> Order By <podminky> UNION <případný další dotaz>; 17/25

SQL SELECT Základní syntax příkazu SELECT: SELECT column_name(s) FROM table_name; Výběr všech sloupců zvolené tabulky - zástupný symbol * namísto sloupců: SELECT * FROM table_name; Příklad výběru zvolených sloupců: SELECT Příjmení, Jméno FROM Adresář; Příjmení: Jméno: Vocásek Alois Jelítko Kryšpín Bůček Felix Jelítko Tadeáš Výběr jen unikátních záznamů: Prefix DISTINCT SELECT DISTINCT Příjmení FROM Adresář; 18/25

SQL - Skalární funkce Skalární funkce = funkce aplikované na úrovni jednotlivých hodnot výpisu: UCASE (c) : Převod výrazu c na velká písmena LCASE (c) : Převod výrazu c na malá písmena MID (c, první[,poslední]) : Výběr zvoleného počtu znaků z textového výrazu c LEN (c) : Délka textového výrazu c INSTR (c) : Numerická pozice substringu ve výrazu c LEFT (c, n) : Výběr prvních n znaků v textovém výrazu c RIGHT (c, n): Výběr posledních n znaků v textovém výrazu c ROUND (c, místa): Zaokrouhlení na daný počet desetinných míst MOD (x, y) : Vrací výsledek x mod y (zbytek po dělení) NOW () : Vrací aktuální systémové datum (bez parametru!) FORMAT (c, format) : Změna formátu zobrazení pole DATEDIFF (datum1, datum2) : Rozdíl dvou dat ve dnech 19/25

SQL Select - aliasy Klauzule alias: Aliasy mohou být využity pro tabulky i sloupce: SELECT column AS column_alias FROM table; (typicky pro vlastní pojmenování sloupců na výstupu) SELECT column FROM table AS table_alias; (typicky pro substituci jmen při definici relací uvnitř jedné tabulky) Klauzule OrderBy: Předpis pro třídění řádek výstupu, např.: SELECT Jméno, Příjmení FROM Adresář ORDER BY Příjmení, Jméno; Třídění v opačném pořadí: suffix DESC SELECT Distinct Příjmení FROM Adresář ORDER BY Příjmení DESC; 20/25

SQL Select Where Klauzule Where: Definice pravidel pro výběr záznamů: SELECT <sloupce> FROM <tabulky> Where <Podmínky>; (Jednotlivé podmínky je možné logicky spojovat pomocí And/Or) K definici vyhodnocovacích podmínek je možné použít: Porovnávání ordinárního obsahu polí: <, >, =, < > (nebo!=), > =, < = SELECT... WHERE PSČ < '600 00'; Test přítomnosti řetězce ve výrazu: <výraz> LIKE <řetězec> SELECT... WHERE Jméno Like '%x%'; (zástupné znaky: _ pro 1 libovolný znak, % pro 0 nebo víc libovolných znaků) Test zda hodnota výrazu leží mezi dvěma mezemi: Between.. And.. SELECT... WHERE Příjmení BETWEEN 'D' AND 'T'; Test zda výraz nabývá některé z hodnot: IN (hodnota1, hodnota2,..) SELECT... WHERE Příjmení IN ('Vocásek','Buřt'); 21/25

SQL Select - agregace Seskupování výstupních dat z dotazu: Group By: Seskupování (agregace) dat dle určitého kritéria: SELECT Partner, SUM(platba) FROM PenezniDenik GROUP BY Partner; Having: Dodatečné filtrování výstupních (typicky agregovaných) dat SELECT Partner, SUM(platba) FROM PenezniDenik GROUP BY Partner HAVING SUM(platba)>1000000; Agregační funkce (výběr): AVG(sloupec) : Aritmetický průměr agregovaných hodnot COUNT(sloupec) : Počet neprázdných řádek v daném sloupci COUNT(*) : Počet vybraných řádek FIRST(sloupec) : První nalezená hodnota v daném sloupci LAST(sloupec) : Poslední nalezená hodnota v daném sloupci MAX(sloupec) : Nejvyšší nalezená hodnota v daném sloupci MIN(sloupec) : Nejmenší nalezená hodnota v daném sloupci SUM(sloupec) : Součet nalezených hodnot v daném sloupci 22/25

SQL - Relace Relační propojování tabulek je v SQL realizováno pomocí klíčů a konstrukcí: WHERE: (výpis všech řádků na kterých je shoda v levé i pravé tabulce) SELECT Zam.Jmeno, Obj.Produkt FROM Zam, Obj WHERE Zam.ID=Obj.Vystavil_ID INNER JOIN: (dtto) SELECT Zam.Jmeno, Obj.Produkt FROM Zam INNER JOIN Obj ON Zam.ID=Obj.Vystavil_ID LEFT JOIN: (výpis všech záznamů levé tabulky, doplněných o data z Obj) SELECT Zam.Jmeno, Obj.Produkt FROM Zam LEFT JOIN Obj ON Zam.ID=Obj.Vystavil_ID RIGHT JOIN (výpis všech záznamů pravé tabulky, doplněných o data Zam) SELECT Zam.Name, Obj.Produkt FROM Zam RIGHT JOIN Obj ON Zam.ID=Obj.Vystavil_ID 23/25

SQL pro pokročilé... Při tvorbě výrazů v SQL dotazech můžeme místo odkazů na hodnoty ve fyzických sloupcích použít i odkazy na virtuální tabulky, vytvářené dynamicky pomocí tzv. vnořených SQL dotazů Příklad: SELECT jméno, příjmení FROM platy WHERE plat > (SELECT AVG(plat) FROM platy) Technická Poznámka: V MS Accessu se SQL schovává za vizuální editor vždy je však možné přejít i do SQL pohledu a dotaz doladit ručně (některé dotazy ani není možné tvořit vizuálně). 24/25

Shrnutí přednášky K datům IS nepřistupují přímo, ale prostřednictvím databázových systémů (DBS) DBS zajišťují spolehlivost transakcí, škálovatelnost, Vícenás. přístup a zabezpečení Pro práci s daty (DDL/DML) v DBS se obvykle používají neprocedurální logické jazyky Pro použití dat v uživatelských aplikacích se používá vhodné aplikační rozhraní (API). Teprve databázové aplikace uživatelům umožňují vykonávat požadavky na data (vytváření, zápis, aktualizace, čtení výsledků, tvorbu výstupních sestav). K zadávání DDL/DML příkazů se nejčastěji používá jazyk SQL Výstupem funkce SELECT bývá Dataset ve formě tabulky. Dataset může obsahovat vyfiltrovaná, agregovaná i skalárně upravená vstupní data. Teprve takto získané vysledky se používají jako zdroj dat pro následnou analýzu v daném informačním systému. 25/25