SQL - Stranka servera hornad na Katedre pocitacov a

Download Report

Transcript SQL - Stranka servera hornad na Katedre pocitacov a

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
1
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
2
Š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é
3
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)
4
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
5
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
6
Proces vývoja štandardu
7
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, ...)
8
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
9
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
10
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
11
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
12
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ď.
13
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
14
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
15
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
16
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
17
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
18
References
Nelson M. Mattos: SQL99, SQL/MM, and SQLJ: An Overview of the
SQL Standards
SQL 2003 Standard, ANSI TC NCITS H2, ISO/IEC JTC 1/SC 32/WG 3
19