190 likes | 346 Views
SQL. Structured Query Language otvorený (neproprietárny) jazyk, ktorého pravidlá boli vytvorené štandardizačnou komisiou Čo robí SQL? čítanie existujúcich dát, vytváranie nových záznamov udržiavajúcich dáta, zmena existujúcich dát, mazanie dát Čo nerobí SQL?
E N D
SQL Structured Query Language • otvorený (neproprietárny) jazyk, ktorého pravidlá boli vytvorené štandardizačnou komisiou Čo robí SQL? • čítanie existujúcich dát, • vytváranie nových záznamov udržiavajúcich dáta, • zmena existujúcich dát, • mazanie dát Čo nerobí SQL? • SQL nie je program alebo vývojové prostredie • nemá nástroje na ukladanie dát • SQL je neprocedurálny, resp. deklaratívny jazyk • SQL nemá vlastné špecifické vývojové prostredie • SQL nie je sieťový jazyk
SQL • je čiastočne alebo plne implementovaný a prístupný vo väčšine relačných SRBD • založený na relačnej algebre • dotaz je sekvencia operácií relačnej algebry Dr. Edgar Frank Codd– tvorca relačných databáz a SQL • 1970 – relačný model • 1978 – implementácia v IBM ako System/R
Štandardy • ANSI (American National Standards Institute) • ISO (the International Standards Organization) • 1986-1987 – komerčná akceptácia • SQL89 (SQL1) • SQL92 (SQL2) • SQL99 (SQL3) • podstatná časť jazyka nebola menená v týchto modifikáciách • zdrojové texty písané v SQL1 sú stále použiteľné
SQL Medzinárodný štandard ISO/IEC 9075-1 bol pripravený Joint Technical Committee ISO/IEC JTC 1 – Information Technology, Subcommittee SC 32, Data management and interchange Štandard ISO/IEC 9075 pozostáva z nasledujúcich častí, ktoré sú uvádzané pod spoločným titulom Information technology — Database languages SQL: JTC1/SC32: Data Management and Interchange WG1: Open EDI (Finland) WG2: Metadata (USA) WG3: Database Languages (Netherlands) WG4: SQL Multimedia and Application Packages (Japan) WG5: Remote Database Access (RDA) (United Kingdom) RG1: Reference Model for Data Management (Maintenance) (United Kingdom) RG2: Export /Import (Maintenance) (Canada)
SQL • JTC1/SC32/WG3 Projects (SQL3 only): • Part 1: Framework • Part 2: Foundation • Part 3: Call-Level Interface • Part 4: Persistent Stored Modules • Part 5: Language Bindings • Part 6: XA Specialization • Part 7: Temporal • Part 9: Management of External Data • Part 10: Object Language Bindings
SQL • JTC1/SC32/WG4 Projects: • Part 1: SQL/MM Framework • Part 2: SQL/MM Full-Text • Part 3: SQL/MM Spatial • Part 4: SQL/MM General Purpose Facilities • Part 5: SQL/MM Still Image Štandardu SQL/89 vyhovuje 11 schválených produktov na 52 rôznych platformách. Štandardu SQL/92 vyhovuje viac ako 10 schválených produktov na vyše 100 rôznych platformách
SQL • SQL = DDL + DML + DCL + príkazy pre prácu s transakciami • DDL – Data Definition Language – jazyk pre definovanie dát, resp. databázových objektov (CREATE DATABASE, CREATE SCHEMA, CREATE TABLE, CREATE VIEW, CREATE INDEX, ALTER, DROP, RENAME, ...) • DML – Data Manipulation Language – jazyk pre manipuláciu s dátami (INSERT, UPDATE, DELETE, SELECT,...) • DCL – Data Control Language – jazyk pre riadenie prístupu k dátam (GRANT, REVOKE) • Príkazy pre prácu s transakciami (BEGIN, COMMIT, ROLLBACK, ...)
SQL • SQL 86 • 3 spôsoby spracovanie príkazov DML – priame spracovanie, modulový jazyk a embedded SQL • SQL 89 • DDL bol oddelený ako "schema definition language" • rozšírenie integritných podmienok – DEAFAULT, UNIQUE, NOT NULL, PK, FK, CHECK, views WITH CHECK OPTION • SQL 92 • rozšírenie dátových typov • viacnásobné join operátory • definovanie nových databázových objektov • Dynamic SQL • scrollable cursors
SQL92 SQL vlastnosti sú rozdelené do 3 resp. 4 úrovní: • Entry Level • SQL 89 + IC • SQLSTATE • pomenované výrazy v Select príkaze (AS) • Transitional Level • rozšírenia v oblasti dátových typov a operátorov • zabezpečenie referenčnej integrity pomocou cascade delete • nové typy join – NATURAL, LEFT a RIGHT OUTER JOIN • príkazy pre Dynamic SQL • príkazy pre vývoj schémy • operátor CAST • rozšírenie definície pohľadu o UNION operátor • definovanie úrovní izolácie transakcií • definícia viacnásobných schém
SQL92 • Intermadiate Level • rolovací kurzor • FULL OUTER JOIN • možnosť definovať doménu • možnosť online DDL • definovanie množinových operácií • definovanie CASE výrazov • použitie UNIQUE predikátu • 128-znakové identifikátory • komplexnejšie informácie v systémovom katalógu • dátové typy date and time rozšírené o časové zóny
SQL92 • Full Level • odvodené tabuľky • rozšírenie pravidiel pre referenčnú integritu – CASCADE UPDATE, SET NULL • integrity tvrdenia (assertions) • rozšírené predikáty • ďalšie typy operácie JOIN – CROSS JOIN, UNION JOIN • definovanie nových dátové typy – BIT(n), BIT VARYING(n) • dočasné tabuľky (temporary) – ich zrušenie na konci transakcie alebo relácie (session) • implementácia definovaných sekvencií • ďalšie character-string operátory – UPPER, LOWER, POSITION • možnosť definovať INSERT privilégium pre individuálny stĺpec • možnosť operácie update cez rolovacie kurzory • UPDATE and DELETE s poddotazmi (subqueries) na tej istej tabuľke
SQL99 (SQL3) ISO/IEC 9075-1: Framework (SQL/Framework) • úvod do štandardu • základné definície prislúchajúce štandardu • definície pojmov, ktoré sú používané v štandarde • notácie a konvencie používané v štandarde • popis štruktúry štandardu ISO/IEC 9075-2: Foundation (SQL/Foundation) základ štandardu – dátové typy, schémy, tabuľky, pohľady, SQL príkazy, výrazy, bezpečnostný model, predikáty, pravidlá, transakčné spracovanie, atď.
SQL99 (SQL3) ISO/IEC 9075-3: Call Level Interface (SQL/CLI) • špecifikuje previazanie medzi aplikačným programom, ktorý je napísaný v jednom zo štandardných programovacích jazykov a implementáciou SQL • alokovanie a uvoľňovanie zdrojov • inicializácia, riadenie a ukončenie SQL spojenia medzi SQL klientom a SQL serverom • vykonávanie SQL príkazov, vrátane ich prípravy pre postupné vykonávanie • získanie diagnostických informácií • získanie informácií o SQL implementácii, napr. SQL servre, ku ktorým sa môže pripojiť SQL klient • nie je potrebné žiadne predspracovanie SQL príkazov
SQL99 (SQL3) ISO/IEC 9075-4: Persistent Stored Modules (SQL/PSM) • rozšírenia do SQL, aby sa stal procedurálnym (výpočtovo kompletným) • príkazy na riadenie toku • priraďovanie výsledkov výrazov premenným a parametrom • špecifikácia správy rozhodovania, ktorá umožňuje zložené príkazy rozdeliť na základe rozličných podmienok • označenie podmienok • deklarácia lokálnych kurzorov ISO/IEC 9075-9: Management of External Data (SQL/MED) • definuje rozšírenia do SQL pre podporu manažovania externých dát použitím cudzích tabuliek a datalink-ov • prostriedky pre definovanie cudzích servrov, wrapper-ov a tabuliek
SQL99 (SQL3) ISO/IEC 9075-10: Object Language Bindings (SQL/OLB) • definuje prostriedky pre vnorenie SQL príkazov do Java programov ISO/IEC 9075-11: Information and Definition Schemas (SQL/Schemata) • špecifikuje dve schémy – informačnú a definičnú • informačná schéma umožňuje aplikácii získať mená perzistentných databázových objektov – tabuľky, pohľady, stĺpce, atď. Tento prístup je definovaný pomocou pojmov zo základných tabuliek definičnej schémy • definičná schéma poskytuje dátový model pre podporu informačnej schémy a jej pochopenie • SQL implementácia nerobí nič viac iba simuluje existenciu definičnej schémy prostredníctvom pohľadov informačnej schémy
SQL99 (SQL3) ISO/IEC 9075-13: Java Routines and Types Using the Java Programming Language (SQL/JRT) • rozšírenia SQL umožňujúce volania statických metód napísaných v Java programovacom jazyku ako SQL volaných rutín a použitie tried definovaných v Java programovacom jazyku ako SQL štruktúrované typy • rozšírenia do definície, manipulácie a volania SQL rutín • rozšírenia do definície a manipulácie používateľom definovaných (user defined) typov • nové vstavané (built-in) procedúry ISO/IEC 9075-14: XML-Related Specifications (SQL/XML) • rozšírenia SQL, ktoré umožňujú tvorbu a manipuláciu s XML dokumentmi • nový predefinovaný typ XML • nové vstavané (built-in) operátory pre vytváranie a manipuláciu s XML typom • pravidlá pre mapovanie tabuliek, schém a katalógov do XML dokumentov
Foundation - rozšírenia • rozšírenia dátových typov • objektovo-relačné rozšírenia • user-defined typy, Referenced typy, collection typy • Large OBjects • katalógy, schémy a manipulácia s nimi • hierarchia tabuliek • pohľady • constraints • triggre • user-defined rutiny • predikáty • rekurzívne dotazy • OLAP rozšírenia • ORDER BY rozšírenia • savepoints • update through unions and joins
References Nelson M. Mattos: SQL99, SQL/MM, and SQLJ: AnOverview of the SQL Standards SQL 2003 Standard, ANSI TC NCITS H2, ISO/IEC JTC 1/SC 32/WG 3