Pátek květen 15, 2009
SQL - stručný popis a standardy
· rubrika Clanky · kategorie Databáze
SQL je neprocedurální jazyk, nepopisuje jak pracovat s databází, ale co od ní uživatel potřebuje. Skládá se z několika částí:
- DDL (Data Definition Language) – jazyk pro definici struktury databáze
- CREATE – vytváření nových objektů.
- ALTER – změny existujících objektů.
- DROP – odstraňování objektů.
- DML (Data Manipulation Language) – jazyk pro manipulaci s daty
- SELECT – vybírá data z databáze, umožňuje výběr podmnožiny a řazení dat
- INSERT – vkládá do databáze nová data
- UPDATE – mění data v databázi (editace)
- MERGE – záznam se do tabulky vloží, pokud v tabulce neexistuje odpovídající klíč, nebo se záznam upraví
- DELETE – odstraňuje data (záznamy) z databáze
- SHOW – příkaz pro zobrazení databáze, tabulek nebo záznamů
- DCL (Data Control Language) – jazyk pro řízení transakcí a nastavování přístupových práv
- GRANT – příkaz pro přidělení práv uživateli k určitým objektům
- REVOKE – příkaz pro odejmutí práv uživateli
- BEGIN – zahájení transakce
- COMMIT – potvrzení transakce (úspěšné provedení)
- ROLLBACK – zrušení transakce a návrat do původního stavu
Jazyk SQL má v současné době šest verzí standardu, které jsou vždy označovány dle roku vzniku:
- SQL-89 – první specifikace standardu
- SQL-92 – přinesl modifikace SQL schémat, zavedení tabulek s metadaty , vnějších spojení, kaskádního mazání/aktualizace podle cizích klíčů, množinové operace, transakce, kurzory, výjimky, …
- SQL-99 – rozšíření o regulární výrazy, rekurzivní dotazy, triggery, neskalární typy, objektové vlastnosti, …
- SQL:2003 – přináší XML rozšíření, standardizované sekvence a sloupce s automaticky generovanými hodnotami, odstranění datového typu BIT
- SQL:2006 – definuje způsoby, jak importovat a ukládat XML data v databázích jak s nimi manipulovat uvnitř databáze a také jak publikovat data z databáze do XML formátu
- SQL:2008 – upravuje některá předchozí rozšíření
V dnešní době je většina DBMS založena na standardu SQL-92 a SQL-99
(existují však rozdíly v implementaci ). Implementace významných částí
standardů SQL-2006 a 2008 je pouze u některých produktů (například
Oracle). Bohužel informace o tom, co která databáze ze standardů podporuje,
jsou na internetu velmi špatně dostupné.
Celkový problém SQL spočívá v tom, že každá databáze do něj
přidává své vlastní prvky. Většina databází navíc implementuje pouze
části standardů, většinou dle aktuálních potřeb uživatelů (nebo
obecně trhu), a tak je přenositelnost aplikací složitější. Jako příklad
lze uvést vkládání více řádků pomocí jednoho INSERT dotazu. Dle
standardu by podoba takového dotazu vypadala následovně :
INSERT INTO tabulka VALUES (0,'Petr'), (1,'Pavel'), (2,'Mirek');
Ovšem podpora ze strany databází je různá:
| Databáze | MySQL 5 | PostgreSQL 8.3 | Firebird 2.1 | Oracle 11g | MSSQL 2008 |
|---|---|---|---|---|---|
| Podpora | ano | ano | ne | ne | ne |
09:24
—
Zobrazeno: 360x
—
Stálý odkaz
Komentáře
Další komentáře:
PHP třída pro tvorbu webových formulářů
imagecreatefromjpeg() recoverable error: Premature end of JPEG file