Structured Query Language: Rozdiel medzi revíziami

z Wikipédie, slobodnej encyklopédie
Smazaný obsah Přidaný obsah
Nallimbot (diskusia | príspevky)
d robot Pridal: tg:SQL
Xqbot (diskusia | príspevky)
d robot Pridal: el:SQL; kozmetické zmeny
Riadok 32: Riadok 32:
|-
|-
! Source
! Source
! Common<br>Name
! Common<br />Name
! Full Name
! Full Name
|-
|-
Riadok 43: Riadok 43:
| SQL Procedural Language
| SQL Procedural Language
|-
|-
|align="center"| [[Microsoft]]/<br>[[Sybase]]
|align="center"| [[Microsoft]]/<br />[[Sybase]]
|align="center"| [[T-SQL]]
|align="center"| [[T-SQL]]
| Transact-SQL
| Transact-SQL
Riadok 61: Riadok 61:




Na doplnenie štandardných SQL/PSM rozšírení a súkromných (patentovaných?) SQL rozšírení, je na veľa SQL platformách pomocou DBMS integrácie s inými jazykmi umožnené procedurálne a objektovo-orientované programovanie. SQL štandardy definujú SQL/JRT rozšírenia (SQL programy a typy(?) pre programovací jazyk Java) na podporu kódu Java v AQL databázach. SQL Server 2005 používa SQLCLR ( spoločný jazyk pre SQL Servery) na riadenie(?) klienta. NET vyhľadáva v databáze, kým predchádzajúce verzie SQL Server nepodporovali neriadené(?) rozširovacie funkcie, primárne napísané v C. Ďalšie databázové platformy, ako MySQL a Postgres, umožňujú písanie funkcií v širokom spektre jazykov, ako: Perl, Python, TCL a C.
Na doplnenie štandardných SQL/PSM rozšírení a súkromných (patentovaných?) SQL rozšírení, je na veľa SQL platformách pomocou DBMS integrácie s inými jazykmi umožnené procedurálne a objektovo-orientované programovanie. SQL štandardy definujú SQL/JRT rozšírenia (SQL programy a typy(?) pre programovací jazyk Java) na podporu kódu Java v AQL databázach. SQL Server 2005 používa SQLCLR ( spoločný jazyk pre SQL Servery) na riadenie(?) klienta. NET vyhľadáva v databáze, kým predchádzajúce verzie SQL Server nepodporovali neriadené(?) rozširovacie funkcie, primárne napísané v C. Ďalšie databázové platformy, ako MySQL a Postgres, umožňujú písanie funkcií v širokom spektre jazykov, ako: Perl, Python, TCL a C.


=== Ďalšie rozšírenia ===
=== Ďalšie rozšírenia ===
Riadok 72: Riadok 72:
[http://en.wikipedia.org/wiki/SQL/OLB SQL/OLB], alebo '''Objektové jazykové viazanie''', rozšírenie je definované ISO/IEC 9075-10: 2003. SQL/OLB definuje syntax a !!symantics!! SQLJ, ktorý je SQL vložený v Jave. Štandart taktiež popisuje mechanizmy na zaistenie binárnej prenositeľnosti SQLJ aplikácii, a špecifikuje rôzne java balíčky a ich obsahované triedy.
[http://en.wikipedia.org/wiki/SQL/OLB SQL/OLB], alebo '''Objektové jazykové viazanie''', rozšírenie je definované ISO/IEC 9075-10: 2003. SQL/OLB definuje syntax a !!symantics!! SQLJ, ktorý je SQL vložený v Jave. Štandart taktiež popisuje mechanizmy na zaistenie binárnej prenositeľnosti SQLJ aplikácii, a špecifikuje rôzne java balíčky a ich obsahované triedy.


[http://en.wikipedia.org/wiki/SQL/Schemata SQL/schémata], alebo '''Informovanosť a definícia schémat''', rozšírenie je definované ISO/IEC 9075-11: 2003. SQL/schémata definujú informačné schéma a definujúce schéma, poskytujúce obyčajný súbor nástrojov robiť SQL databázy a objekty samo-popisovateľné??. Tieto nástroje zahrnujú SQL objektový identifikátor, štruktúru a integritné zabezpečenia??, bezpečnosť a autorizačné špecifikácie, funkcie a balíčky ISO/IEC 9075, podpora funkcií poskytované SQL-based DBMS implementácií, SQL-based DBMS implementačné informácie a formátovacie prvky?? a hodnoty podporované DBMS implementáciami.
[http://en.wikipedia.org/wiki/SQL/Schemata SQL/schémata], alebo '''Informovanosť a definícia schémat''', rozšírenie je definované ISO/IEC 9075-11: 2003. SQL/schémata definujú informačné schéma a definujúce schéma, poskytujúce obyčajný súbor nástrojov robiť SQL databázy a objekty samo-popisovateľné??. Tieto nástroje zahrnujú SQL objektový identifikátor, štruktúru a integritné zabezpečenia??, bezpečnosť a autorizačné špecifikácie, funkcie a balíčky ISO/IEC 9075, podpora funkcií poskytované SQL-based DBMS implementácií, SQL-based DBMS implementačné informácie a formátovacie prvky?? a hodnoty podporované DBMS implementáciami.


SQL/JRT, alebo '''SQL rutiny a typy pre java programovací jazyk''', rozšírenie je definované ISO/IEC 9075-13: 2003. SQL/JRT špecifikuje schopnosť sa odvolať na statické java metódy ako rutiny vo vnútri SQL aplikácii. To taktiež volá po schopnosti používať java triedy ako SQL usporiadané užívateľské definované typy.
SQL/JRT, alebo '''SQL rutiny a typy pre java programovací jazyk''', rozšírenie je definované ISO/IEC 9075-13: 2003. SQL/JRT špecifikuje schopnosť sa odvolať na statické java metódy ako rutiny vo vnútri SQL aplikácii. To taktiež volá po schopnosti používať java triedy ako SQL usporiadané užívateľské definované typy.
Riadok 84: Riadok 84:
Jazyk SQL sa skladá z niekoľkých jazykových prvkov, zahŕňajúc:
Jazyk SQL sa skladá z niekoľkých jazykových prvkov, zahŕňajúc:


* '''Príkazy''' – môžu mať trvalý dopad na schémy a údaje, alebo ktoré môžu kontrolovať protokoly, toky programov, pripojenia, spojenia, diagnózu.
* '''Príkazy''' – môžu mať trvalý dopad na schémy a údaje, alebo ktoré môžu kontrolovať protokoly, toky programov, pripojenia, spojenia, diagnózu.


* '''Vyhľadávanie''' – ktoré vyberajú údaje podľa špecifických kritérií
* '''Vyhľadávanie''' – ktoré vyberajú údaje podľa špecifických kritérií
* '''Výrazy''' – ktoré môžu zobrazovať skalárne veličiny, alebo tabuľky, pozostávajúce z údajov v riadkoch a stĺpcoch
* '''Výrazy''' – ktoré môžu zobrazovať skalárne veličiny, alebo tabuľky, pozostávajúce z údajov v riadkoch a stĺpcoch
* '''Premenné''' – ktoré špecifikujú podmienky, ktoré môžu stanoviť SQL trojhodnotovú logiku (3VL) Boolean-ovskej pravdivých hodnôt, ktoré sú používané na limitovanie účinkov príkazov a vyhľadávania, alebo na zmeny tokov programov.
* '''Premenné''' – ktoré špecifikujú podmienky, ktoré môžu stanoviť SQL trojhodnotovú logiku (3VL) Boolean-ovskej pravdivých hodnôt, ktoré sú používané na limitovanie účinkov príkazov a vyhľadávania, alebo na zmeny tokov programov.




Riadok 108: Riadok 108:
[[da:Structured Query Language]]
[[da:Structured Query Language]]
[[de:SQL]]
[[de:SQL]]
[[el:SQL]]
[[en:SQL]]
[[en:SQL]]
[[eo:SQL]]
[[eo:SQL]]

Verzia z 00:28, 14. august 2009

Structured Query Language (SQL) je počítačový jazyk na manipuláciu (DML) (výber, vkladanie, úpravu a mazanie) a definíciu dát (DDL). V súčasnosti je to najpoužívanejší jazyk tohto druhu v relačných systémoch riadenia báz dát.

Jazyk SQL sa vyvinul pôvodne z jazyka SEQUEL, čo bol jazyk pre manipuláciu a definíciu dát pre System R od IBM, prvého databázového systému založenom na Coddovom relačnom dátovom modeli. Prvý komerečný databázový systém využívajúci SQL vyvinula spoločnosť Relational Software, Inc. (teraz Oracle) v roku 1979. Jazyk SQL sa stal čoskoro štandardnou výbavou väčšiny relačných databázových systémov.

V roku 1986 inštitúcia ANSI štandardizovala jazyk SQL pod označením SQL-86. O rok neskôr vo viac-menej nezmenej forme tento štandard ratifikovala aj organizácia ISO (SQL-87). V roku 1989 a 1992 boli prijaté revízie označené ako SQL-89, resp. SQL-92 (aj SQL-2). Výrazné zmeny prišli v roku 1999, kedy sa do štandardu SQL:1999 (SQL-3) dostali napr. rekurzívne dotazy, spúšťače (triggery), regulárne výrazy, neskalárne dátové typy a niektoré objektovo-orientované vlastnosti. Verzia SQL:2003 prinisela hlavne podporu pre XML, štandardizované postupnosti, stĺpce s automaticky generovanými hodnotami a tzv. oknové funkcie.

Norma SQL-86 definuje výslovnosť slova SQL v anglickom jazyku ako „eskjúel“, hoci mnoho ľudí ho vyslovuje stále ako „síkl“ (SEQUEL). V slovenskom jazyku sa okrem týchto dvoch cudzích výslovností používa prirodzené „eskvéel“.

Základné syntaktické konštrukcie jazyka SQL sú nasledovné:

  • manipulácia dát
    • SELECT je ďaleko najčastejšie používaný príkaz a slúži pre vytváranie dotazov (výber dát). Dáta umožňuje vyberať z rôznych spojení (napr. prirodzené spojenie, vonkajšie spojenie, karteziánsky súčin) tabuliek, pohľadov a tabuľkových funkcií. V klauzule WHERE je možné definovať podmienky pre výstupné riadky. Tento príkaz plní aj agregačnú a zoskupovaciu funkciu (klauzula GROUP BY). Výstupné dáta môžu byť podľa želenia utriedené (ORDER BY). Príkaz SELECT vyberá dáta deklaratívnym spôsobom z koncepčnej alebo pohľadovej úrovne, nikdy nie z fyzickej.
    • INSERT umožňuje vloženie nových dát do tabuľky.
    • DELETE slúži na vymazanie dát z tabuľky.
    • UPDATE upravuje existujúce dáta v tabuľke.
  • definícia dát
    • CREATE vytvára nové databázové objekty (databázy, tabuľky, pohľady, funkcie a pod.),
    • ALTER upravuje databázové objekty (napr. pridáva stĺpce do existujúcej tabuľky),
    • DROP ruší databázové objekty.
  • niekedy sa hovorí aj o tzv. riadení dát (data control language)
    • GRANT prideľuje používateľom, skupinám a roliam práva na vykonanie rôznych operácií nad dátami,
    • REVOKE odoberá práva.

Časť, ktorá slúži na manipuláciu s dátami, je vo svojej podstate len syntaktický cukor pre relačný kalkul.

V čistej forme (štandard) nie je jazyk SQL turingovsky úplný, tzn. nevieme v ňom vypočítať všetko, čo vieme na Turingovom stroji (a teda aj naprogramovať v bežných programovacích jazykoch). V SQL nedokážeme napríklad urobiť tranzitívny uzáver relácie. Z tohto dôvodu mnohé databázové systémy rozširujú jazyk SQL o ďalšie konštrukcie, napr. Oracle dodáva PL/SQL, Microsoft SQL Server používa T-SQL. Iný prístup spočíva v integrácií niektorého klasického programovacieho jazyka, napr. Oracle podporuje jazyk Java, Microsoft SQL Server 2005 ľubovoľný jazyk podporujúci .NET (napr. C#, VB.NET či C++), v PostgreSQL môžu byť funkcie písané v rôznych jazykoch ako je Perl, Tcl či C.

Rozšírenia

Procedurálne rozšírenia

SQL je navrhnuté na špecifický účel: vyhľadávať údaje v relačnej databáze. SQL je nastaviteľný, deklaratívny jazyk, nie prikazovací ako C alebo BASIC. Napriek tomu existuju rozšírenia základného SQL, ktoré dopĺňajú funkcie procedurálneho programovacieho jazyka, ako napríklad konštrukcia kontrola-za-behu. Tu sú:

Source Common
Name
Full Name
ANSI/ISO Standard SQL/PSM SQL/Persistent Stored Module
IBM SQL PL SQL Procedural Language
Microsoft/
Sybase
T-SQL Transact-SQL
MySQL MySQL MySQL
Oracle PL/SQL Procedural Language/SQL
PostgreSQL PL/pgSQL Procedural Language/PostgreSQL Structured Query Language


Na doplnenie štandardných SQL/PSM rozšírení a súkromných (patentovaných?) SQL rozšírení, je na veľa SQL platformách pomocou DBMS integrácie s inými jazykmi umožnené procedurálne a objektovo-orientované programovanie. SQL štandardy definujú SQL/JRT rozšírenia (SQL programy a typy(?) pre programovací jazyk Java) na podporu kódu Java v AQL databázach. SQL Server 2005 používa SQLCLR ( spoločný jazyk pre SQL Servery) na riadenie(?) klienta. NET vyhľadáva v databáze, kým predchádzajúce verzie SQL Server nepodporovali neriadené(?) rozširovacie funkcie, primárne napísané v C. Ďalšie databázové platformy, ako MySQL a Postgres, umožňujú písanie funkcií v širokom spektre jazykov, ako: Perl, Python, TCL a C.

Ďalšie rozšírenia

SQL: 2003 tiež definuje niekoľko daľších rozšírení ku standartu zväčšiť SQL celkovú funkčnosť. Tieto rozšírenia obsahujú:

SQL/CLI, alebo volacie rozhranie, rozšírenie je definované v ISO/IEC 9075-3: 2003. Toto rozšírenie definuje obyčajné prepojovacie? komponenty (štruktúry a procedúry) ktoré môžu byť použité na spracovanie SQL formulácii z aplikácii písaných v iných programovacích jazykoch. SQL/CLI rozšírenie je definované v takej ceste že SQL formulácie a SQL/CLI procedurálne volania su spracované ako !!!separate!!! z volacieho aplikačného zdrojového kódu.

SQL/MED, alebo vedenie externých dát, rozšírenie je definované ISO/IEC 9075-9: 2003. SQL/MED poskytuje rozšírenie ku SQL, ktoré vymedzuje cudzie-datové obaly a datalinkové typy k povoleniu SQL riadiť externé dáta. Externé dáta sú dáta, ktoré sú dostupné , ale nie riadené, SQL-based? DBMS.

SQL/OLB, alebo Objektové jazykové viazanie, rozšírenie je definované ISO/IEC 9075-10: 2003. SQL/OLB definuje syntax a !!symantics!! SQLJ, ktorý je SQL vložený v Jave. Štandart taktiež popisuje mechanizmy na zaistenie binárnej prenositeľnosti SQLJ aplikácii, a špecifikuje rôzne java balíčky a ich obsahované triedy.

SQL/schémata, alebo Informovanosť a definícia schémat, rozšírenie je definované ISO/IEC 9075-11: 2003. SQL/schémata definujú informačné schéma a definujúce schéma, poskytujúce obyčajný súbor nástrojov robiť SQL databázy a objekty samo-popisovateľné??. Tieto nástroje zahrnujú SQL objektový identifikátor, štruktúru a integritné zabezpečenia??, bezpečnosť a autorizačné špecifikácie, funkcie a balíčky ISO/IEC 9075, podpora funkcií poskytované SQL-based DBMS implementácií, SQL-based DBMS implementačné informácie a formátovacie prvky?? a hodnoty podporované DBMS implementáciami.

SQL/JRT, alebo SQL rutiny a typy pre java programovací jazyk, rozšírenie je definované ISO/IEC 9075-13: 2003. SQL/JRT špecifikuje schopnosť sa odvolať na statické java metódy ako rutiny vo vnútri SQL aplikácii. To taktiež volá po schopnosti používať java triedy ako SQL usporiadané užívateľské definované typy.

SQL/XML, alebo XML-príbuzné špecifikácie, rozšírenie je definováné ISO/IEC 9075-14: 2003. SQL/XML špecifikuje SQL-based rozšírenie na používanie spojenia s SQL. XML datový typ je predstavený, rovnako ako niekoľko rutín, funkcií, a XML-to-SQL dátový typ mapujúci na podporu manipulácie a ukladania XML v SQL databáze.

SQL/PSM, alebo Trvalo uložené moduly, rozšírenie je definované ISO/IEC 9075-4: 2003. SQL/PSM normalizuje procedurálne rozšírenie pre SQL, obsahujúci prúd kontroly, !!!condition!!! manipuláciu, príkaz !!condition!! signálov a !!resignals!!, kurzorov a lokálnych promenných a dosadzovanie?? výrazov do promenným a parametrov. Naviac, SQL/PSM formuje deklaráciu a udržovanie trvalých databázových jazykových rutín (napr., “uložené procedúry”).

Jazykové prvky

Jazyk SQL sa skladá z niekoľkých jazykových prvkov, zahŕňajúc:

  • Príkazy – môžu mať trvalý dopad na schémy a údaje, alebo ktoré môžu kontrolovať protokoly, toky programov, pripojenia, spojenia, diagnózu.
  • Vyhľadávanie – ktoré vyberajú údaje podľa špecifických kritérií
  • Výrazy – ktoré môžu zobrazovať skalárne veličiny, alebo tabuľky, pozostávajúce z údajov v riadkoch a stĺpcoch
  • Premenné – ktoré špecifikujú podmienky, ktoré môžu stanoviť SQL trojhodnotovú logiku (3VL) Boolean-ovskej pravdivých hodnôt, ktoré sú používané na limitovanie účinkov príkazov a vyhľadávania, alebo na zmeny tokov programov.