programovací jazyk From Wikipedia, the free encyclopedia
Structured Query Language (SQL; iné názvy: štruktúrovaný vyhľadávací jazyk, štruktúrovaný dopytovací jazyk, nespisovne štruktúrovaný dotazovací jazyk) je počítačový jazyk na manipuláciu (DML) (výber, vkladanie, úpravu a mazanie) a definíciu údajov (DDL). V súčasnosti je to najpoužívanejší jazyk tohto druhu v relačných systémoch riadenia databáz.
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ý komerč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 nezmenenej 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 dopyty, spúšťače (triggery), regulárne výrazy, neskalárne dátové typy a niektoré objektovo-orientované vlastnosti. Verzia SQL:2003 priniesla 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é:
SELECT
je ďaleko najčastejšie používaný príkaz a slúži pre vytváranie dopytov (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.MERGE
kombinácia príkazov INSERT/UPDATE, definovaná štandardom SQL:2003. Dáta sa alebo vložia, alebo upravia, v závislosti na definovanej podmienkeSTART TRANSACTION
, (alebo BEGIN TRANSACTION, BEGIN WORK) označuje začiatok transakcie, pokiaľ sa zmeny nepotvrdia, iní užívatelia ich neuvidiaSAVE TRANSACTION
uloženie aktuálneho stavu transakcieCOMMIT
potvrdenie zmien vykonaných v transakcii a ich trvalé uloženie do databázyROLLBACK
vrátenie prevedených zmien do stavu pred vykonaním transakcie, alebo do stavu pred posledným uložením transakcieCREATE
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.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ácii 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.
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 existujú 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 SQL 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.
SQL: 2003 tiež definuje niekoľko ďalších rozšírení k štandardu zväčšiť SQL celkovú funkčnosť. Tieto rozšírenia obsahujú:
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/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 premenných a dosadzovanie výrazov do premenným a parametrov. Navyše, SQL/PSM formuje deklaráciu a udržovanie trvalých databázových jazykových rutín (napr., “uložené procedúry”).
Jazyk SQL sa skladá z niekoľkých jazykových prvkov, zahŕňajúc:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.