RETRIEVE(QL) DABA16 RETRIEVE(QL) NAME retrieve - Wiederfinden (Suchen) von Tupel aus einer Rela- tion UEBERSICHT retrieve [into relname ] (target_list) [where qual ] retrieve unique (target_list) [where qual ] BESCHREIBUNG Retrieve stellt alle Tupel bereit, die die Qualifikation er- fuellen und zeigt sie entweder am Terminal (Standardausgabe) an oder speichert sie in eine neue Relation. Wurde into mit relname nicht spezifiziert, werden doppelte Tupel nicht aus- geblendet. Wenn relname spezifiziert wurde, wird das Ergeb- nis der Anfrage mit diesem Namen in eine neue Relation ge- speichert. Eine Relation mit diesem Namen und dem Anwender als Relations-Eigentuemer darf nicht bereits existieren. Der retrieve Anwender wird zum Eigentuemer der neuen Relation. Die Relation wird die Domaenen-Namen besitzen, die in der target_list als result_attnames spezifiziert wurden. Die neue Relation wird vom System fuer sieben Tage geschuetzt, falls der Nutzer nicht explizit durch eine save Anweisung das Schutzdatum der Relation verlaengert. Wenn das Schluesselwort unique spezifiziert wird, werden die Tupel nach der Reihenfolge der angegebenenen Domaenen sor- tiert und doppelte Tupel vor der Anzeige entfernt. Das Schluesselwort all kann benutzt werden, um alle Domaenen wiederzufinden. Wenn kein Ergebnis-Relations-Name relname spezifiziert wur- de, wird das Ergebnis der Anfrage am Terminal angezeigt und nicht gespeichert. Doppelte Tupel werden bei einer Anzeige am Terminal nicht entfernt. Das Format, in dem die Domaenen angezeigt werden, kann zum Zeitpunkt des iql-Aufrufes definiert werden (iql(mutos)). Wenn eine Ergebnis-Relation spezifiziert wurde, erfolgt standardmaessig eine Modifikation der Ergebnis-Relation in die Speicherungsstruktur "cheapsort", wobei doppelte Tupel entfernt werden. Wenn die Standardstruktur "cheapsort" nicht gewuenscht wird, kann der Nutzer zum Zeitpunkt des iql-Aufrufes diese Stan- dardannahme mit dem -r Flag ueberschreiben (iql(mutos)). Nur der Relations-Eigentuemer und Anwender mit retrieve Be- fugnis koennen die Anweisung nutzen. BEISPIEL[E] /* Finde alle Beschaeftigten, die mehr als ihr Leiter verdienen */ range of p is personal range of l is personal retrieve (p.name) where p.leiter = l.name and p.gehalt > l.gehalt /* Finde alle Domaenen fuer Personen, die mehr als das Durchschnittsgehalt verdienen */ retrieve into temp (p.all) where p.gehalt > avg(p.gehalt) /* Wiederfinden der Beschaeftigtennamen, sortiert */ retrieve unique (p.name) SIEHE AUCH iql(mutos), modify(ql), permit(ql), ql(iql), range(ql), save(ql) FEHLERQUELLEN