SQL Erste Schritte

Verwenden von Funktionen

Dieser Abschnitt enthält eine kurze Einführung in die Funktionen, die in den Beispielen in diesem Handbuch verwendet werden. Eine Datenbankfunktion ist die Beziehung zwischen einer Gruppe von Eingabedatenwerten und einem Ergebniswert.

Funktionen können integriert oder benutzerdefiniert sein. DB2 Universal Database bietet viele integrierte und vorinstallierte benutzerdefinierte Funktionen.

Die integrierten Funktionen finden Sie im Schema SYSIBM. Die vorinstallierten benutzerdefinierten Funktionen befinden sich im Schema SYSFUN. SYSIBM und SYSFUN sind reservierte Schemata.

Nicht alle Benutzeranforderungen können mit Hilfe der integrierten und vorinstallierten benutzerdefinierten Funktionen erfüllt werden. Daher müssen Anwendungsentwickler unter Umständen eine eigene Funktionsgruppe erstellen, die speziell auf deren Anwendungen abgestimmt ist. Ermöglicht wird dies durch benutzerdefinierte Funktionen, die den Bereich von DB2 Universal Database so erweitern, daß beispielsweise angepaßte Geschäfts- oder wissenschaftliche Funktionen integriert werden. Dieser Aspekt wird unter Benutzerdefinierte Funktionen näher erläutert.

Spaltenfunktionen

Spaltenfunktionen werden auf eine Gruppe von Werten in einer Spalte angewendet, um einen einzelnen Ergebniswert abzuleiten. Im folgenden werden nur einige Beispiele von Spaltenfunktionen dargestellt. Eine vollständige Liste finden Sie im Handbuch SQL Reference.

AVG
Gibt die Summe der Werte in einer Gruppe dividiert durch die Anzahl der Werte in dieser Gruppe zurück.

COUNT
Gibt die Anzahl der Zeilen oder Werte in einer Gruppe von Zeilen oder Werten zurück.

MAX
Gibt den größten Wert aus einer Gruppe von Werten zurück.

MIN
Gibt den kleinsten Wert aus einer Gruppe von Werten zurück.

Die folgende Anweisung wählt das höchste Gehalt (Spalte SALARY) aus der Tabelle STAFF aus:

     SELECT MAX(SALARY)
        FROM STAFF

Diese Anweisung gibt den Wert 22959.20 aus der Beispieltabelle STAFF zurück.

Das nächste Beispiel wählt die Namen und Gehälter der Mitarbeiter aus, deren Einkommen über dem Durchschnittseinkommen liegt, die jedoch eine geringere als die durchschnittliche Betriebszugehörigkeitsdauer aufweisen.

     SELECT NAME, SALARY
        FROM STAFF
        WHERE SALARY > (SELECT AVG(SALARY) FROM STAFF)
        AND YEARS < (SELECT AVG(YEARS) FROM STAFF)

Diese Anweisung erzeugt das folgende Ergebnis:

      NAME      SALARY   
     --------- ---------
     Marenghi   17506.75
     Daniels    19260.25
     Gonzales   16858.20

Im vorstehenden Beispiel ist die Spaltenfunktion in die Klausel WHERE in Form einer Unterabfrage integriert, statt direkt implementiert zu sein (z. B. WHERE SALARY > AVG(SALARY)). In der Klausel WHERE können keine Spaltenfunktionen angegeben werden. Dies ergibt sich aus der Reihenfolge der Operationen. Die Klausel WHERE wird vor der Klausel SELECT ausgewertet. Infolgedessen kann bei Auswertung der Klausel WHERE die Spaltenfunktion nicht auf die Gruppe von Werten zugreifen. Diese Gruppe von Werten wird zu einem späteren Zeitpunkt durch die Klausel SELECT ausgewählt.

Das Element DISTINCT kann als Bestandteil des Arguments einer Spaltenfunktion verwendet werden, um gleiche Werte zu eliminieren, bevor eine Funktion angewendet wird. Durch die Angabe COUNT(DISTINCT WORKDEPT) wird somit die Anzahl der unterschiedlichen Abteilungen berechnet.

Skalarfunktionen

Eine Skalarfunktion führt eine Operation für einen Einzelwert aus und gibt einen anderen Einzelwert zurück. Im folgenden werden nur einige Beispiele für die Skalarfunktionen von DB2 Universal Database dargestellt.

ABS
Gibt den absoluten Wert einer Zahl zurück.

HEX
Gib die hexadezimale Darstellung eines Werts zurück.

LENGTH
Gibt die Anzahl der Byte in einem Argument zurück (bei einer Grafikzeichenfolge wird die Anzahl der Doppelbytezeichen zurückgegeben).

YEAR
Extrahiert den Abschnitt für das Jahr aus einem Wert für Datum und Uhrzeit.

Eine ausführliche Liste und Beschreibung der Skalarfunktionen finden Sie im Handbuch SQL Reference.

Die folgende Anweisung gibt die Abteilungsnamen aus der Tabelle ORG zusammen mit der Länge dieser Namen zurück:

     SELECT DEPTNAME, LENGTH(DEPTNAME)
        FROM ORG

Diese Anweisung erzeugt das folgende Ergebnis:

     DEPTNAME       2          
     -------------- -----------
     Head Office             11
     New England             11
     Mid Atlantic            12
     South Atlantic          14
     Great Lakes             11
     Plains                   6
     Pacific                  7
     Mountain                 8

Anmerkung: Da der Angabe LENGTH(DEPTNAME) nicht mit Hilfe der Klausel AS ein aussagekräftiger Name zugeordnet wurde, wird in der zweiten Spalte eine durch das System generierte Nummer angezeigt.

Tabellenfunktionen

Tabellenfunktionen geben Spalten einer Tabelle zurück. Das Ergebnis gleicht der Tabelle, die durch eine einfache Anweisung CREATE TABLE erstellt wird.

Eine Tabellenfunktion kann nur in der Klausel FROM einer SQL-Anweisung verwendet werden.

Die einzige in DB2 Universal Database gegenwärtig unterstützte Tabellenfunktion ist die Funktion SQLCACHE_SNAPSHOT.

SQLCACHE_SNAPSHOT
Gibt die Ergebnisse einer Momentaufnahme des DB2-Caches für dynamische SQL-Anweisungen in Form einer Tabelle zurück.


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]