Zpracování informací

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

Zpracování informací

Zpracování informací (kombinované studium)

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

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

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

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

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

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

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

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

Databázové systémy a SQL

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

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

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

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

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. Jazyk SQL

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

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

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

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. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

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

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

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

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

Použití databází na Webu

Databázové systémy trocha teorie

Operátory ROLLUP a CUBE

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

RELAČNÍ DATABÁZOVÉ SYSTÉMY

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

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

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

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

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

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

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

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

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

DATABÁZE MS ACCESS 2010

Databázové systémy I

Tabulkový procesor. Základní rysy

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

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph)

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

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

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

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

Microsoft Access tvorba databáze jednoduše

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

Marketingová komunikace. 2. a 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3aph)

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

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é a informační systémy

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

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

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

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

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

Obsah. Úvod 9. Úvod do Office Seznámení s Office Vylepšení programu Access XML 13 Inteligentní značky 14

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

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

Microsoft Access. Typy objektů databáze: Vytvoření a návrh nové tabulky. Vytvoření tabulky v návrhovém zobrazení

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

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

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

Databázový systém označuje soubor programových prostředků, které umožňují přístup k datům uloženým v databázi.

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

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

Změny v Tabulce ALTER TABLE nazev_tabulky prikaz1, prikaz2, prikaz3,..., prikazn; -provede změny ve stávající tabulce s názvem "nazev_tabulky"

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

Databázové systémy a SQL

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

Zpracování informací

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

Databázové systémy úvod

1. Relační databázový model

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

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

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

Profilová část maturitní zkoušky 2013/2014

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

PG 9.5 novinky ve vývoji aplikací

Stěhování aplikací. Michal Tomek, Sales Manager

MS Access Dotazy SQL

MySQL databáze - český manuál

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

Michal Krátký, Miroslav Beneš

Maturitní témata Školní rok: 2015/2016

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

Profilová část maturitní zkoušky 2017/2018

Archivace relačních databází

Transkript:

Ústav automatizace a informatiky Fakulta strojního inženýrství Vysoké učení technické v Brně Kapitola č. 5 z předmětu Zpracování informací 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/26

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). 2/26

Obsah přednášky Kapitola 5 Dotazovací jazyk SQL Co je a co umožňuje SQL, data ke kterým přistupujeme SQL jako DDL Create, Alter, Drop, Grant SQL jako DML Show, Use, Select, Insert a Update Principy práce s relacemi v SQL a implementace v Microsoft Access SQL konstrukce - tabulkové aliasy, slučovací dotazy a poddotazy, křížové dotazy Skriptování VBA, Import a export dat Realita DATA Informační systém Informace Příjemce 3/26

SQL Kolik jazyků znáš, tolikrát SELECT INSERT UPDATE DELETE...? Babylonská věž Evropský parlament, Štrasburk 4/26

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... 5/26

SQL umožňuje: SQL umožňuje jednoduchým a čitelný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). 6/26

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ů. 7/26

DDL - Databáze Práci na úrovni databází řeší tyto SQL příkazy (MySQL): SHOW DATABASES; zobrazí jména dostupných databází CREATE DATABASE nazev_databaze; vytvoří DB se jménem "nazev_databaze" (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. 8/26

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.) 9/26

DDL mazání, 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...všechny tyto operace je dnes možné provádět v grafickém uživatelském prostředí servisních aplikací 10/26

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>; 11/26

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áš Adresář Výběr jen unikátních záznamů: Prefix DISTINCT SELECT DISTINCT Příjmení FROM Adresář; 12/26

SQL - Skalární funkce Skalární funkce = funkce aplikované na jednotlivé hodnoty 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,s) : Numerická pozice substringu s 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 13/26

SQL Select aliasy, řazení 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; 14/26

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'); 15/26

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 16/26

Relace v SQL dotazech 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 Definice vazeb samotných NENÍ součástí standardního SQL, řeší se na úrovni aplikací. 17/26

Relace v Microsoft Access pole s odkazy na hodnoty unikátních klíčů dynamicky naplňovaná vyhledávací pole vazby v okně Relace + vnořené tabulky formuláře s podformuláři (průvodce...) tiskové sestavy přes více tabulek FAKTURA-daňový doklad číslo/var. symbol 200801 Vystavil: Příjemce: Šroubkař, s.r.o. Josef Novák Prostřední 2, 617 00 Brno Zadní 2, 616 24 Kocourkov IČ: 659035 IČ: 58848421 Způsob platby: Převodem Vystaveno: 1.2.2008 Číslo účtu: 5956351/5100 Splatnost: 1.3.2008 Položky: 1. Šroubek M6 1500ks á 0,80 Kč Celkem 1200,00 Kč +DPH 19% 2. Matka M10 800ks á 2,50 Kč Celkem 2000,00 Kč +DPH 19% Celkem: 3200,00 Kč Vystavil: Šroubkař DPH 19%: 608,00 Kč Podpis: + + + K úhradě: 3808,00 Kč Razítko: :-) Kontakty ID Jméno Adresa IČ Telefon Faktury ID Vystaveno Splatnost Platba Partner_ID 1:N Položky ID Faktura_ID Popis KS Cena_KS 18/26

Tabulkové aliasy v relacích Aliasy mohou být využity pro náhled na více záznamů v rámci jednoho řádku. SELECT column FROM table AS table_alias; Typické použití jsou situace, kdy se pravoúhlou tabulkou snažíme popsat nějakou složitější geometrickou strukturu např. strom: V prostředí MS Access se aliasy v relačním schématu vytvářejí automaticky (přípona _1,...), v SQL se toto uspořádání definuje právě tabulkovým aliasem. 19/26

Slučovací dotazy V situacích, kdy se z důvodu chybného návrhu a nebo z geografických důvodů části dat nacházejí ve více tabulkách (mohou mít i rozdílná fyzická pořadí a názvy), lze k získání celkového přehledu použít více dotazů sloučených spojkou UNION V případě různě pojmenovaných sloupců v jednotlivých tabulkách lze při slučování s výhodou použít sloupcové aliasy: Select 'Kniha',Titul as Název FROM knihy where Název like '%maska%' UNION Select 'CD', Album as Název FROM CD where Název like '%maska%' UNION Select 'DVD', Název FROM DVD where Název like '%maska%' UNION... 20/26

Křížové dotazy v MS Access Pohled na data ve formě tabulky s pevným počtem sloupců nemusí vždy poskytnout optimální přehled o situaci => transformace datasetu křížovým dotazem: TRANSFORM Sum(Pivot.Ks) AS SumOfKs SELECT Produkt, Rok, Měsíc, Sum(Ks) AS Celkem FROM Ochody GROUP BY Produkt, Rok, Měsíc PIVOT Pobočka; V DBS je tvorba dynamických kontingenčních tabulek považována za nesystémovou, spolu s dalšími analytickými operacemi se proto provádí spíš v tabulkových editorech. 21/26

SQL poddotazy 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ů např.: SELECT jméno, příjmení FROM platy WHERE plat > (SELECT AVG(plat) FROM platy) V Accessu je SQL skryté za za vizuální editor: vždy je však možné přejít i do SQL pohledu a SQL dotaz dle potřeby upravit ručně. (některé typy dotazů ani nelze tvořit vizuálně) 22/26

Když SQL nestačí... Jazyk SQL je určen k vyjadřování požadavků na data logickou formou, zatímco tvorba GUI aplikací představuje spíš tvorbu procedurálního kódu => aplikace běžící nad DBS jsou buď psány v procedurálním jazyce a nebo jej uživateli k doplnění funkcí přímo poskytují (Microsoft Access Visual Basic for Applications): Tam kde v Accessu končí možnosti SQL a GUI, začíná VBA (tip pro začínající: http://www.uai.fme.vutbr.cz/~mseda/dbs02_bs.pdf od s.42) Podobně jako jazyk matlab umožňuje tvorbu uživatelských procedur, na rozdíl od něj však v principu neumožňuje vektorizaci; proměnné typu pole je navíc nutné deklarovat. Nejpoužívanějším prvkem VBA v Accessu je tzv. jmenný prostor DoCMD. RunSQL "SQL příkaz" OpenTable (jméno_tabulky [,acdataaccesspagebrowse acdataaccesspagedesign, DataMode]) OpenQuery (název_dotazu [,acdataaccesspagebrowse acdataaccesspagedesign, DataMode]) OpenForm (JmFormuláře, pohled, JmDotazu, RozšířeníWhere, DataMode, WindowMode, OpenArgs) OpenReport(JmSestavy, pohled, JmDotazu, RozšířeníWhere, DataMode, WindowMode, OpenArgs) OpenDataAccessPage (jméno [,acdataaccesspagebrowse acdataaccesspagedesign]) K manipulaci se záznamy tabulek a dotazů je ve VBA určena struktura Recordset rec=currentdb.openrecordset("tabulka") rec.edit operace(rec.sloupec) rec.update rec.movenext Rec.close...ukázky viz následující cvičení. 23/26

Import a export dat Přenos dat mezi DBS a dalšími aplikacemi může probíhat buď ve formě datasetů a nebo: binárních souborů (přímá kopie záznamů z tabulek, komprimované datasety, MDB,...) textových souborů pole v řádcích oddělená tabulátory (ASCII kód #09), řádky CR+LF (#13#10) comma separated values (pole dělená čárkami, texty v uvozovkách, řádky CRLF) formát XML XML hlavička <?...?> obsahuje informaci o způsobu kódování národních znaků soubor musí obsahovat kořenový element (např. <dataroot>), který obsahuje záznamy každý XML element může obsahovat Atributy (přiřazení v úvodním tagu) a svůj obsah a musí být ukončen buď už v úvodním tagu <xyz/> a nebo koncovým tagem </xyz> <?xml version="1.0" encoding="utf-8"?> <dataroot xmlns:od="urn:schemas-microsoft-com:officedata" generated="2009-03-17t04:26:42"> <Faktura> <Fa_ID>1</Fa_ID> <Vystaveno>2009-03-17</Vystaveno> <Splatno>2009-03-31</Splatno> <Uhrada>Převodem</Uhrada> <Partner>1</Partner> <Položka> <Popis>pero</Popis> <JC>50</JC> <KS>1</KS> </Položka> </Faktura> </dataroot> 24/26

Import a export dat Cílem exportovaných dat pak nejčastěji bývají různé IS a aplikace pro analýzu dat: Tabulkové editory (Microsoft Excel, OpenOffice.org Sheet,...) přenos vybraných polí přes systémovou úschovnu import a export souborových dat (včetně MDB pozor na zamykání!!!) přímé napojení prostřednictvím ole-db (ODBC/JDBC, ADO...) a MS Query primární určení: interaktivní vzorce přes víc řádek, analýzy, jednoduché grafy (kontingenční tabulky, OLAP, malé soustavy rovnic, lineární regrese, úlohy co-když...) Výpočetní aplikace (Matlab, Octave, Mathcad, Maple, řešiče MKP, speciální aplikace) import a export souborových dat (Octave aktuálně umí jen CSV) přímé napojení prostřednictvím pluginů a knihoven primární určení: provádění složitých maticových analýz a grafických výstupů (rozsáhlé soustavy rovnic, filtrace a transformace dat, regresní/kovarianční analýzy, analýzy obrazu, aplikace výsledků do 3D modelů a jejich animace,...) 25/26

Shrnutí přednášky DBS umožňují uživatelům vykonávat jejich DML i DDL požadavky na data (vytváření, zápis, aktualizace, čtení výsledků, tvorbu výstupních sestav,...). Pro formulaci těchto požadavků na data se používá počítačový jazyk SQL. Výstupem funkce SELECT bývá zpravidla 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 ve zvoleném informační systému. 26/26