ist vollständige Datenbanksprache (IQL + DDL + VDL + DML + SSL), im folgenden nur IQL
basiert auf Tupelrelationenkalkül:
alle Tupelvariablen sind Existenz-quantifiziert, an Relationen gebunden
Bindung durch
RANGE OF tupelvariable IS relationenname
Einschränkung einer Tupelvariablen t auf ein Attribut A: t.A
Artikel={Artnr, EAN, Artname}
liefert={LName, Artnr, Preis}
Lieferant={LName, LAdresse}
mit den Bindungen
RANGE OF A IS Artikel
RANGE OF A1 IS Artikel
RANGE OF L IS liefert
RANGE OF La IS Lieferant
Syntax einer QUEL-Anfrage
RETRIEVE (liste_von_tupelvariablen)
WHERE bedingung
QUEL
Beispielanfragen:
Was ist der Name des Artikels mit der Nummer 4711?
RETRIEVE (A.Artname)
WHERE A.Artnr = 4711
Welche Namen und Preise haben Artikel, die von Osnabrücker Lieferanten geliefert werden?
RETRIEVE (A.Artname, L.Preis)
WHERE A.Artnr = L. Artnr
AND L.LName = La.LName
AND La.LAdresse = 'Osnabrueck'
mit Umbenennung:
Gibt es unterschiedliche Artikel mit dem gleichen Artikelnamen?
RETRIEVE (T1 = A.Artnr, T2 = A1.Artnr)
WHERE A.Artname = A1.Artname
AND A.Artnr <> A1.Artnr
Gib alle Attribute des Artikels 'Leitz-Ordner A4' aus!
RETRIEVE A.ALL
WHERE A.Artname = 'Leitz-Ordner A4'
QUEL
arithmetr. Ausdrücke (wie in SQL) in RETRIEVE und in Bedingung erlaubt
Was kostet durchschnittlich der Artikel 0815?
RETRIEVE (Durchschnitt = AVG( L.Preis
WHERE L.Artnr = 0815))
Gruppierung mittels BY:
Wieviele Lieferanten gibt es pro Artikel?
RETRIEVE ( L. Artnr, Anzahl = COUNT (L.LName BY L.Artnr))