QUEL dotazovací jazyky - QUEL query languages
![]() | tento článek potřebuje další citace pro ověření.listopad 2013) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Rodina | Dotazovací jazyk |
---|---|
Navrhl | Michael Stonebraker |
Poprvé se objevil | 1976 |
Hlavní, důležitý implementace | |
Ingres POSTQUEL | |
Ovlivněno | |
Alfa |
QUEL je relační databáze dotazovací jazyk, na základě n-tický relační počet, s některými podobnostmi s SQL. Byl vytvořen jako součást Ingres DBMS úsilí na University of California, Berkeley, na základě Codde je dříve navrženo, ale není implementováno Datový podjazyk ALPHA. QUEL byl na krátkou dobu používán ve většině produktů na základě volně dostupného zdrojového kódu Ingres, zejména v implementaci zvané POSTQUEL podporované POSTGRES.[1] Tak jako Věštec a DB2 získala podíl na trhu počátkem 80. let, většina společností, které poté podporovaly QUEL, se místo toho přesunula na SQL.[Citace je zapotřebí ] QUEL je i nadále k dispozici jako součást Ingres DBMS, ačkoli již mnoho let nebyla přidána žádná jazyková vylepšení specifická pro QUEL.[když? ]
Používání
Výroky QUEL jsou vždy definovány n-tice proměnných, které lze použít k omezení dotazů nebo vrácení sad výsledků. Zvažte tento příklad převzatý z jednoho z prvních původních dokumentů Ingres:[2]
Příklad 1.1. Výpočet platu dělený věkem 18 let pro zaměstnance Jonesa.
rozsah z E je ZAMĚSTNANECnačíst do Ž(COMP = E.Plat / (E.Stáří - 18))kde E.název = "Jones"Zde E je proměnná n-tice, která se pohybuje v relaci ZAMĚSTNANEC, a jsou nalezeny všechny n-tice v této relaci, které splňují kvalifikaci E.Name = „Jones.“ Výsledkem dotazu je nový vztah W, který má jednu doménu COMP, která byla vypočítána pro každou kvalifikovanou n-tici.
Ekvivalentní příkaz SQL je:
vytvořit stůl w tak jakovybrat (E.plat / (E.stáří - 18)) tak jako kompz zaměstnanec tak jako Ekde E.název = ‚Jones '
Zde je ukázka jednoduché relace, která vytvoří tabulku, vloží do ní řádek a poté v něm načte a upraví data a nakonec odstraní přidaný řádek (za předpokladu, že název je jedinečné pole).
QUEL | SQL |
---|---|
vytvořit student(název = c10, stáří = i4, sex = c1, Stát = c2)rozsah z s je studentpřipojit na s (název = "Filip", stáří = 17, sex = "m", Stát = „FL“)načíst (s.Všechno) kde s.Stát = „FL“nahradit s (stáří=s.stáří+1)načíst (s.Všechno)vymazat s kde s.název="Filip" | vytvořit stůl student(název char(10), stáří int, sex char(1), Stát char(2));vložit do student (název, stáří, sex, Stát) hodnoty ('Filip', 17, 'm', 'FL');vybrat * z student kde Stát = 'FL';Aktualizace student soubor stáří=stáří+1;vybrat * z student;vymazat z student kde název='Filip'; |
Další vlastností QUELu byl vestavěný systém pro hromadné přesouvání záznamů do systému a ze systému. Zvažte tento příkaz:
kopírovat student(jméno = c0, čárka = d1, věk = c0, čárka = d1, pohlaví = c0, čárka = d1, adresa = c0, nl = d1)do „/student.txt“
který vytvoří čárkami oddělený soubor všech záznamů v tabulce studentů. D1 označuje oddělovač, na rozdíl od datového typu. Změna do
do a z
obrátí proces. Podobné příkazy jsou k dispozici v mnoha systémech SQL, ale obvykle jako externí nástroje, na rozdíl od toho, že jsou interní v jazyce SQL. Tím se stanou nedostupnými pro uložené procedury.
QUEL má extrémně výkonnou agregační schopnost. Agregáty mohou být vnořeny a různé agregáty mohou mít nezávislé vedlejší seznamy nebo klauzule omezení. Například:
načíst (A=počet(y.i podle y.d kde y.str = „ii *“ nebo y.str = "foo"), b=max(počet(y.i podle y.d)))
Tento příklad ilustruje jeden z pravděpodobně méně žádoucích vtípků QUEL, konkrétně to, že všechna porovnání řetězců jsou potenciálně shodné se vzory. y.str = "ii *"
odpovídá všem y.str
hodnoty začínající na ii
. Naproti tomu SQL používá =
pouze pro přesné shody jako
se používá, když je vyžadováno porovnávání vzorů.
Viz také
Reference
- ^ Stonebraker, M; Rowe, LA (květen 1986). Návrh POSTGRES (PDF). Proc. 1986 Konference ACM SIGMOD o správě údajů. Washington DC.
- ^ Stonebraker, Michael; Wong, Eugene; Kreps, Peter; Held, Gerald (1976). "Návrh a implementace INGRES". Transakce ACM v databázových systémech. 1 (3): 191. CiteSeerX 10.1.1.109.957. doi:10.1145/320473.320476.
Další čtení
- C. J. Datum: Kritika jazyka databáze SQL. Záznam SIGMOD 14 (3): 8-54, 1984.