Kom godt i gang med SQL

Funktioner

Dette afsnit indeholder en kort beskrivelse af de funktioner, der benyttes i eksemplerne i bogen. En databasefunktion er en kobling mellem et sæt inputdataværdier og en resultatværdi.

Funktioner kan være indbyggede eller brugerdefinerede. DB2 Universal Database har mange indbyggede og forudinstallerede brugerdefinerede funktioner.

De indbyggede funktioner findes i skemaet SYSIBM, og de forudinstallerede brugerdefinerede funktioner findes i skemaet SYSFUN. SYSIBM og SYSFUN er reserverede skemanavne.

De indbyggede og forudinstallerede brugerdefinerede funktioner kan aldrig dække alle brugeres behov. Derfor er det nødvendigt for applikationsudviklere at lave deres egne applikationsspecifikke funktioner. Det kan gøres vha. brugerdefinerede funktioner, så DB2 Universal Database udvides til at omfatte f.eks. specielle virksomhedsspecifikke eller videnskabelige funktioner. Læs mere herom under Brugerdefinerede funktioner.

Beregningsfunktioner

Beregningsfunktioner finder frem til en enkelt resultatværdi ud fra et sæt værdier i en kolonne. Her følger et par eksempler på beregningsfunktioner. Du kan finde en fuldstændig oversigt i SQL Reference.

AVG
Returnerer gennemsnittet, dvs. summen af værdierne i et sæt divideret med antallet af værdier i sættet

COUNT
Returnerer antallet af rækker eller værdier i et sæt rækker eller værdier

MAX
Returnerer den højeste værdi i et sæt værdier

MIN
Returnerer den laveste værdi i et sæt værdier

I dette eksempel vælges den højeste løn fra tabellen STAFF:

     SELECT MAX(SALARY)
        FROM STAFF

Sætningen returnerer værdien 22959.20 fra tabeleksemplet STAFF.

I det næste eksempel findes navnene på og lønningerne for medarbejdere, der tjener mere end gennemsnittet, selv om de har været ansat i kortere tid end gennemsnitsmedarbejderen.

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

Resultatet er:

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

I dette eksempel er beregningsfunktionen i WHERE-udtrykket angivet i en underforespørgsel i stedet for at blive implementeret direkte (f.eks. WHERE SALARY > AVG(SALARY)). Beregningsfunktioner kan ikke angives i WHERE-udtrykket. Det skyldes den rækkefølge, funktioner udføres i. WHERE-udtrykket vurderes før SELECT-udtrykket. Derfor har beregningsfunktionen ikke adgang til værdisættet, når WHERE-udtrykket vurderes. Værdierne vælges senere vha. SELECT-udtrykket.

Du kan bruge DISTINCT-elementet i parameterværdien til en beregningsfunktion. Dermed elimineres dubletter, før en funktion aktiveres. Når du f.eks. angiver COUNT(DISTINCT WORKDEPT), beregnes antallet af forskellige afdelinger.

Skalarfunktioner

En skalarfunktion udfører en funktion med en enkelt værdi, så der returneres en anden enkelt værdi. Her følger et par eksempler på skalarfunktioner i DB2 Universal Database.

ABS
Returnerer den absolutte værdi for et tal

HEX
Returnerer den hexadecimale repræsentation af en værdi

LENGTH
Returnerer antallet af byte i en parameterværdi eller antallet af dobbeltbytetegn i en dobbeltbytestreng

YEAR
Udtrækker årstallet fra en værdi for dato/klokkeslæt

Der er en mere detaljeret oversigt over og beskrivelse af skalarfunktioner i SQL Reference.

I nedenstående eksempel returneres afdelingsnavnene fra tabellen ORG sammen med længden på de enkelte navne:

     SELECT DEPTNAME, LENGTH(DEPTNAME)
        FROM ORG

Resultatet er:

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

Bemærk: Da AS-udtrykket ikke er brugt til at navngive LENGTH(DEPTNAME), indsættes et nummer automatisk for den anden kolonne.

Tabelfunktioner

Tabelfunktioner returnerer kolonnerne i en tabel, hvilket ligner den tabel, der oprettes vha. en enkel CREATE TABLE-sætning.

En tabelfunktion kan kun bruges i FROM-udtrykket i en SQL-sætning.

Den eneste tabelfunktion, der p.t. understøttes i DB2 Universal Database, er SQLCACHE_SNAPSHOT.

SQLCACHE_SNAPSHOT
Returnerer resultatet af et snapshot af DB2-cachen med dynamiske SQL-sætninger.


[ Øverst på siden | Forrige side | Næste side | Indholdsfortegnelse | Stikordsregister ]