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



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

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

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

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

4. blok část A Logické operátory

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áze I. Přednáška 4

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

Databáze SQL SELECT. David Hoksza

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

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

Ukázka knihy z internetového knihkupectví

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

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

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

Databázové systémy úvod

VYSOKÁ ŠKOLA BÁŇSKÁ TECHNICKÁ UNIVERZITA OSTRAVA FAKULTA STROJNÍ DATABÁZOVÉ SYSTÉMY ARCHITEKTURA DATABÁZOVÝCH SYSTÉMŮ. Ing. Lukáš OTTE, Ph.D.

Základy jazyka SQL. 87 Jazyk SQL SQL je dotazovací jazyk, takže přes propojenou aplikaci se serveru odevzdá dotaz

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

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

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

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

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

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, ATRIBUTY. SPŠS Č.Budějovice Obor Geodézie a Katastr nemovitostí 3.ročník

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

5. blok Souhrnné a skupinové dotazy

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

RELAČNÍ DATABÁZOVÉ SYSTÉMY

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

Jazyk PL/SQL Úvod, blok

1. Relační databázový model

Databázové systémy trocha teorie

Databázové systémy a SQL

Oracle XML DB. Tomáš Nykodým

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

Koncepce jazyka SQL Co je SQL

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

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

Jazyk SQL 3 - DML, DDL, TCL, DCL

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

Programování a implementace Microsoft SQL Server 2014 databází

13. blok Práce s XML dokumenty v databázi Oracle

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

2. blok Zabezpečení a ochrana dat

Použití databází na Webu

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

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

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

Text úlohy. Systémový katalog (DICTIONARY):

Transformace konceptuálního modelu na relační

Objektově relační databáze a ORACLE 8

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

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

Administrace Oracle. Práva a role, audit

Dotazovací jazyk SQL I

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

Konceptuální modelování a SQL

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

PRŮBĚHOVÝ TEST Z PŘEDNÁŠEK

FIREBIRD relační databázový systém. Tomáš Svoboda

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

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

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

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

Dotazovací jazyk SQL I

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

4IT218 Databáze. 4IT218 Databáze

10. Architektura klient/server a třívrstvá architektura

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

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

10. Architektura klient/server a třívrstvá architektura

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

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

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

Úrovně abstrakce reality

Tento blok je věnován vytváření uživatelských balíků funkcí v jazyce PL/SQL a použití systémových balíků. 2-3 hodiny

RELAČNÍ DATABÁZE. Cíl:

Kurz je rozdělen do čtyř bloků, které je možné absolvovat i samostatně. Podmínkou pro vstup do kurzu je znalost problematiky kurzů předešlých.

Michal Krátký, Miroslav Beneš

VYUŽITÍ REGIONÁLNÍCH FUNKCÍ A WWW ROZHRANÍ V INTEGROVANÉM KNIHOVNÍM SYSTÉMU KPWINSQL

Správa dat v podniku. MI-DSP 2013/14 RNDr. Ondřej Zýka, ondrej.zyka@profinit.eu

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

04 - Databázové systémy

1. Webový server, instalace PHP a MySQL 13

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Databázové systémy BIK-DBS

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

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

DUM 11 téma: Databázové jazyky a servery

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

InterSystems Caché Post-Relational Database

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

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

Databázové systémy úvod

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

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

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

Transkript:

2. blok část A Jazyk SQL, datové typy Studijní cíl Tento blok je věnován jazyku SQL, jeho vývoji, standardizaci a problémy s přenositelností. Dále je zde uveden přehled datových typů dle standardu SQL a v databázové platformě Oracle. Doba nutná k nastudování 2-3 hodiny Průvodce studiem Při studiu tohoto bloku se předpokládá, že čtenář je obeznámen se základy relačních databází. 1. Jazyk SQL Jazyk SQL je standardem v oblasti počítačových databázových jazyků. Je podporován stovkami databázových produktů a provozován jak na střediskových počítačích, tak i osobních počítačích či kapesních zařízeních. Naprostá většina informačních systémů pro velké podniky používá ke správě dat SQL. Jazyk SQL je základem databázových produktů největších softwarových firem jako Microsoft, Oracle či IBM, ale je hojně využíván i v open-source řešeních. V této kapitole najdeme odpovědi na otázky: Co je jazyk SQL? Jak je to se standardizací SQL a rozdílností databázových produktů? Jak se liší jednotlivé produkty postavené na jazyce SQL? 1.1. Jazyk SQL a jeho historie Jazyk SQL je nástroj pro organizování, správu a získávání dat uložených v počítačové databázi. Zkratka SQL znamená Structured Query Language tedy strukturovaný dotazovací jazyk, který je určen pro práci s relačními databázemi. Jazyk SQL navazuje na jazyk SEQUEL (Structured English Query Language), který byl vytvořen v 70. letech 20. století ve firmě IBM, jako sada příkazů pro práci s relačními databázemi. Tyto příkazy se měly syntakticky podobat přirozenému jazyku (samozřejmě v angličtině). K vývoji jazyka se následně přidaly i další firmy. V roce 1979 představila firma Relational Software, Inc. (dnešní Oracle Corporation) svoji relační databázovou 1

platformu Oracle Database. IBM uvedla v roce 1981 nový systém SQL/DS a v roce 1983 systém DB2. Dalšími systémy byly např. Progres, Informix a SyBase. Ve všech těchto systémech se používala varianta jazyka SEQUEL, který byl následně přejmenován na SQL. Význam relačních databází se rychle zvyšoval, stejně jako počty databázových produktů a proto bylo nezbytné dotazovací jazyk standardizovat. 1.2. Standardizace Americký institut ANSI chtěl původně vydat jako standard zcela nový jazyk RDL. Rychlý nárůst popularity SQL způsobil, že byl v roce 1986 Americkým národním standardizačním institutem (ANSI) a v roce 1987 Mezinárodní standardizační organizací (ISO) vydán jako standard. Rok Název Alias Poznámka 1986 SQL-86 SQL-87 První verze ANSI. 1989 SQL-89 FIPS 127-1 Menší revize, která byla přijata jako FIPS 127-1. 1992 SQL-92 SQL2, FIPS 127-2 Zásadní revize (ISO 9075), základní úroveň SQL-92 přijata jako FIPS 127-2. 1999 SQL:1999 SQL3 Přidána práce s regulárními výrazy, rekurzivní dotazy, triggery, podpora procedur, neskalární datové typy a některé objektově orientované rysy. 2003 SQL:2003 SQL 2003 Představeny XML vlastnosti, window funkce, standardizovány sekvence a sloupce s automaticky generovanými hodnotami. 2006 SQL:2006 SQL 2006 ISO / IEC 9075-14:2006 definuje způsoby, jak SQL jazyk může být použit ve spojení s XML, importy a ukládání XML dat v databázi, práce s XML daty a konverze mezi SQL a XML formou. Využití XQuery, XML Query Language vydané World Wide Web Consortium (W3C). 2008 SQL:2008 SQL 2008 Legalizuje klauzuli ORDER BY mimo definici kurzoru. Instead of triggery. Příkaz TRUNCATE. 2

1.3. Přenositelnost Existuje několik důvodů, které komplikují přenositelnost SQL kódu mezi databázovými systémy: SQL standard je složitý a tak ne všichni implementátoři podporují celý standard. Norma nespecifikuje chování databáze v několika důležitých oblastech (např. indexy, ukládání souborů...), takže implementátoři se mohou rozhodnout, jak tyto činnosti implementovat. SQL standard přesně specifikuje syntaxi, kterou musí kompatibilní databáze splnit. Standardní specifikace pro sémantiku jazyka je méně dobře definovaná, což vede k nejasnostem. Mnoho prodejců databázových systémů má velké existující zákaznické základny, kde SQL standard se střetává s předchozím chováním databáze a prodejce může být neochotný ztratit zpětnou kompatibilitu. V některých případech mají prodejci zájem vytvořit či zachovat nekompatibility s jinými produkty, protože zajišťují silnou motivaci pro stávající uživatele zůstat loajální. Obecně je třeba počítat s tím, že aplikace musí být modifikována, aby mohla být přenesena na jinou SQL databázi. 2. Architektura databází Při vytváření databází je potřeba zvolit, jaký typ architektury je pro dané účely nejvhodnější s přihlédnutím k technologickým a finančním možnostem. 2.1. Jednovrstvé (centrální) systémy Jde se o zastaralý model s použitím centrálního počítače. Jednotliví uživatelé používali pouze terminál, na který se přenášely informace o rozložení obrazovky obsahující zobrazovaná data. S tímto modelem se stále můžeme setkat obzvláště u některých velkých firem. 2.2. Dvouvrstvá architektura (klient/server) Zde hovoříme o dvou podtypech těchto architektur: Architektura s výkonem soustředěným u klienta - veškeré aplikační a uživatelské služby se zpracovávají u klienta (tlustý klient). Velkou slabinou této architektury byly potřebné přenosové kapacity, kdy mezi klientem a serverem musí probíhat velký počet datových přenosů. 3

Obrázek 1 - Architektura s výkonem soustředěným u klienta (zdroj: http://www.fs.vsb.cz/books/mssqlserver/mssql_soubory/sql_index3.htm) Architektura s výkonem soustředěným na serveru - ke klientu se přesouvají pouze uživatelské služby a dostává pouze požadované informace (tenký klient). Aplikační a datové služby probíhají na serveru. Obrázek 2 - Architektura s výkonem soustředěným na serveru (zdroj: http://www.fs.vsb.cz/books/mssqlserver/mssql_soubory/sql_index3.htm) 2.3. Třívrstvá architektura U třívrstvé architektury lze shledat určitou podobnost s již uvedeným modelem architektury soustředěné na serveru. Klient pracuje pouze s uživatelským rozhraním, avšak datové a aplikační služby jsou od sebe odděleny do samostatných logických modelů, které mohou být umístěny buď na stejném serveru, nebo na dvou různých serverech. Třívrstvý model nám umožňuje získat vyšší úroveň stability, jelikož provozní zátěž může běžet na dvou serverech. Jedním z příkladů třívrstvé architektury jsou i internetové služby. Klientskou vrstvu zajišťuje webový prohlížeč, aplikační vrstvu pak webový a aplikační server, který komunikuje s databázovou vrstvou databázovým serverem prostřednictvím SQL příkazů. 4

Obrázek 3 - Třívrstvá architektura (zdroj: http://www.fs.vsb.cz/books/mssqlserver/mssql_soubory/sql_index3.htm) 3. Skupiny příkazů SQL jazyka Základem jazyka SQL je přibližně 40 příkazů. Standardní příkazy SQL jazyka dělíme do skupin: Příkazy pro definici dat (DDL) Příkazy pro manipulaci s daty (DML) Příkazy pro řízení dat (DCL) Ostatní příkazy 3.1. Příkazy pro definici dat Těmito příkazy se vytvářejí struktury databáze tabulky, indexy, pohledy a další objekty. Vytvořené struktury lze také upravovat, doplňovat a mazat. Tato skupina příkazů se nazývá zkráceně DDL Data Definition Language ( jazyk pro definici dat ). CREATE ALTER DROP vytváření nových objektů například CREATE TABLE, CREATE VIEW, CREATE INDEX změny struktury existujících objektů například ALTER TABLE odstraňování objektů například DROP TABLE, DROP VIEW, DROP INDEX 5

3.2. Příkazy pro manipulaci s daty Příkazy pro získání dat z databáze a pro jejich úpravy se označují zkráceně DML (data Manipulation Language). SELECT vyhledá data z databáze INSERT vkládá do databáze nová data (řádky) UPDATE modifikuje data v databázi (řádky). DELETE odstraňuje data (řádky) z databáze. EXPLAIN PLAN FOR speciální příkaz, který zobrazuje postup zpracování SQL příkazu. Pomáhá uživateli optimalizovat příkazy tak, aby byly rychlejší. 3.3. Příkazy pro řízení dat Do této skupiny patří příkazy pro nastavování přístupových práv, řízení provozu a údržby databáze transakcí. Označují se jako DCL Data Control Language ( jazyk pro ovládání dat ), GRANT příkaz pro přidělení oprávnění uživateli k určitým objektům. REVOKE příkaz pro odnětí práv uživateli. ALTER USER DROP USER 3.4. Příkazy pro řízení dat skupina příkazů pro řízení transakcí Označují se TCC Transaction Control Commands ( jazyk pro ovládání transakcí"). COMMIT potvrzení transakce. ROLLBACK zrušení transakce, návrat do původního stavu. SAVEPOINT SET TRANSACTION 3.5. Ostatní příkazy Do této skupiny patří příkazy pro správu databáze. Pomocí nich lze nastavovat systémové parametry (kódování znaků, způsob řazení, formáty data a času apod.). Tato skupina není standardizována a konkrétní syntaxe příkazů je závislá na databázovém systému. 6

4. Standardní datové typy v jazyce SQL Každý sloupec v SQL tabulce deklaruje typ hodnot, které může sloupec obsahovat. ANSI SQL obsahuje následující typy dat. 4.1. Řetězce CHARACTER(n) nebo CHAR(n) řetězec znaků pevné délky (n) znaků CHARACTER VARYING(n) nebo VARCHAR(n) řetězec znaků proměnné délky maximálně (n) znaků NATIONAL CHARACTER(n) nebo NCHAR(n) řetězec národních znaků pevné délky (n) znaků NATIONAL CHARACTER VARYING(n) nebo NVARCHAR(n) řetězec znaků proměnné délky maximálně (n) znaků 4.2. Řetězce bitů BIT(n) řetězec bitů s pevnou délkou (n) bitů BIT VARYING(n) řetězec bitů s proměnnou délkou maximálně (n) bitů 4.3. Čísla INTEGER nebo INT celá čísla SMALLINT malá celá čísla FLOAT(přesnost) čísla s plovoucí desetinnou tečkou REAL čísla s plovoucí desetinnou tečkou s nízkou přesností DOUBLE PRECISION - čísla s plovoucí desetinnou tečkou s vysokou přesností NUMERIC(přesnost, měřítko)nebo DECIMAL(přesnost, měřítko) nebo DECT(přesnost, měřítko) desetinná čísla 4.4. Datum a čas DATE datum (např. 2011-05-03) TIME(přesnost) čas (např. 15:51:36). TIME WITH TIME ZONE nebo TIMETZ stejně jako TIME, ale obsahující ještě informaci o časové zóně TIMESTAMP(přesnost) Datum a Čas s vyšší přesností TIMESTAMP(přesnost) WITH TIME ZONE nebo TIMESTAMPTZ stejně jako TIMESTAMP, ale obsahující ještě informaci o časové zóně INTERVAL časové intervaly 7

5. Datové typy v Oracle Datové typy používané v Oracle databázích se mírně liší od datových typů popsaných v standardech SQL. Mezi základními odlišnostmi můžeme zmínit používání VARCHAR2 místo VARCHAR, typu NUMBER pro všechny číselné typy, typ DATE obsahuje nejen datum, ale i čas. Navíc některé další datové typy jsou přidány. Datový typ Délka Popis VARCHAR2(size) 4000 B Řetězec znaků proměnné délky NVARCHAR2(size) 4000 B Řetězec národních znaků proměnné délky VARCHAR Zastaralý (pouze pro zpětnou kompatibilitu) CHAR(size) 2000 B, defaultně 1 B Řetězec znaků pevné délky NCHAR(size) 2000 B, defaultně 1 B Řetězec národních znaků pevné délky NUMBER přesnost,měřítko) Přesnost od 1 do 38. Měřítko od -84 do 127. Čísla s udanou přesností a měřítkem PLS_INTEGER Pouze v kódu PL/SQL Označená číselná hodnota PLS_INTEGER hodnoty jsou úspornější a poskytnou lepší výkon než číselné hodnoty BINARY_INTEGER LONG DATE TIMESTAMP (přesnost_sekund) TIMESTAMP (přesnost_sekund) WITH {LOCAL} TIMEZONE 2 GB Od 1.1.4712 př.n.l. do 31.12.9999 přesnost_sekund 0 až 9 (defaultně 6) přesnost_sekund 0 až 9 (defaultně 6) Označená číselná hodnota (starší pomalejší verze PLS_INTEGER) Znakový řetězec proměnné délky (větší verze VARCHAR2) Platný datum a čas s přesností na celé sekundy Datum a čas s přesností na uvedený počet desetinných míst sekundy Jako TIMESTAMP, ale s hodnotou časového posunu INTERVAL YEAR (přesnost_let) TO MONTH INTERVAL DAY (přesnost_dní) TO SECOND (přesnost_sekund) přesnost_let 0 až 9 (defaultně 2) přesnost_dní 0 až 9 (defaultně 2) přesnost_sekund 0 až 9 (defaultně 6) Časový interval v letech a měsících, kde přesnost_let je počet číslic v poli YEAR (ROK). Časový interval ve dnech, hodinách, minutách a vteřinách, přesnost_dní je maximální počet číslic udávajících počet dní, přesnost_sekund je maximální počet 8

desetinných míst sekundy. RAW(size) 2000 B Nezpracovaná binární data v bytech LONG RAW 2 GB Nezpracovaná binární data proměnné délky ROWID 10 B Hexadecimální řetězec reprezentující unikátní adresu řádku v tabulce. (především určeno pro hodnoty vrácené pseudosloupcem ROWID) UROWID Maximum i defaultně 4000 B Hexadecimální řetězec reprezentující logickou adresu řádků v indexověorganizované tabulce CLOB 8 TB až 128 TB Objemná data ve znakové podobě NCLOB 8 TB až 128 TB Objemná data v podobě národních znaků BLOB 8 TB až 128 TB Binární objemná data BFILE Dle limitu OS Ukazatel na binární soubor na disku (mimo databázi) XMLType 4 GB XML data Pojmy k zapamatování Příkazy a funkce: DCL, TCC Jazyk SQL, skupiny příkazů DLL, DML, Problém: struktura jazyka SQL, rozdělení příkazů do skupin, datové typy dle standardu jazyka SQL a datové typy v Oracle Shrnutí V této lekci jste se seznámili s jazykem SQL v roli standardního jazyka pro práci s relačními databázemi. Jazyk SQL je popsán několika standardy. Míra kompatibility se standardy se v různých databázových produktech liší. Databázové produkty se liší i v míře implementace standardů SQL jazyka, proto je přenositelnost SQL kódu omezená. SQL jazyk je velice rozšířeným standardem. 9

Otázky na procvičení 1. Charakterizujte jazyk SQL? 2. Uveďte přehled standardizace jazyka SQL? 3. Jak je to přenositelností SQL kódu mezi různými databázovými platformami? 4. Vysvětlete rozdíl mezi datovým typem CHAR(x) a VARCHAR(x)? 5. Popište datový typ v Oracle, který se používá pro ukládání čísel? Odkazy a další studijní prameny http://www.techonthenet.com/oracle (syntaxe příkazů SQL jazyka a funkcí) http://www.sqlcourse.com (interaktivni SQL trénink) http://www.oracle.com/technetwork/database/enterpriseedition/documentation (dokumentace k databázové platformě Oracle) http://krokodata.vse.cz/sql/sql (Krokodýlovy databáze o jazyce SQL) Odkazy a další studijní prameny GROFF, J.R., WEINBERG, P.N. SQL - kompletní průvodce. Praha: Computer Press, 2005. ISBN 80-251-0369-2. ŠIMŮNEK, M. SQL, kompletní kapesní průvodce. Grada Publishing, 1999. ISBN 80-7169-692-7. STEPHENS, K.R., PLEW, R.R. Naučte se SQL za 21 dní. Praha: Computer Press, 2004. ISBN 80-7226-870-8. 10