Structured Query Language: Rozdiel medzi revíziami

z Wikipédie, slobodnej encyklopédie
Smazaný obsah Přidaný obsah
d robot Pridal: ko:SQL
doplnenie rozšírení
Riadok 24: Riadok 24:


V čistej forme (štandard) nie je jazyk SQL [[turingovsky úplný]], tzn. nevieme v ňom vypočítať všetko, čo vieme na [[Turingov stroj|Turingovom stroji]] (a teda aj naprogramovať v bežných programovacích jazykoch). V SQL nedokážeme napríklad urobiť [[tranzitívny uzáver]] [[realácia|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]].
V čistej forme (štandard) nie je jazyk SQL [[turingovsky úplný]], tzn. nevieme v ňom vypočítať všetko, čo vieme na [[Turingov stroj|Turingovom stroji]] (a teda aj naprogramovať v bežných programovacích jazykoch). V SQL nedokážeme napríklad urobiť [[tranzitívny uzáver]] [[realácia|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 (programovací jazyk)|C]] alebo [[BASIC programovací jazyk|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ú:

{| class="wikitable"
|-
! Source
! Common<br>Name
! Full Name
|-
|align="center"| ANSI/ISO Standard
|align="center"| [[SQL/PSM]]
| SQL/Persistent Stored Module
|-
|align="center"| IBM
|align="center"| [[SQL PL]]
| SQL Procedural Language
|-
|align="center"| [[Microsoft]]/<br>[[Sybase]]
|align="center"| [[T-SQL]]
| Transact-SQL
|-
|align="center"| [[MySQL]]
|align="center"| MySQL
| MySQL
|-
|align="center"| [[Oracle Corporation|Oracle]]
|align="center"| [[PL/SQL]]
| Procedural Language/SQL
|-
|align="center"| [[PostgreSQL]]
|align="center"| [[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.



{{Významné programovacie jazyky}}
{{Významné programovacie jazyky}}

Verzia z 10:36, 15. február 2008

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.