Operatoren - Lehrstuhl für Wirtschaftsinformatik und Electronic

Werbung
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Erweiterte Funktionen
Agenda
Einschränkung der Datenausgabe
Operatoren
Erweiterte Funktionen
Sortierung von Ergebnissen
Einführung in die Wirtschaftsinformatik
Universität Potsdam
Lehrstuhl für Wirtschaftsinformatik
und Electronic Government
Univ.-Prof. Dr.-Ing. Norbert Gronau
August-Bebel-Str. 89
14482 Potsdam
Tel. (0331) 977-3379
Fax (0331) 977-3406
http://wi.uni-potsdam.de
Single Row-Funktionen
Konvertierungsfunktionen
Teil 11
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
1-2
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Erweiterte Funktionen
Einschränkung der Datenausgabe
Einschränkung von Zeilen durch Auswahl
Einschränkung der zurückgegebenen Zeilen über die WHERE-Klausel
WHERE-Klausel folgt grundsätzlich der FROM-Klausel
SELECT *|{[DISTINCT]spalte|ausdruck [alias], ...}
FROM tabelle
WHERE Bedingung(en);
Einschränkung
der Datenausgabe
Die Reihenfolge der Schlüsselworte ist durch die Syntax
festgelegt und nicht änderbar.
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
3-4
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Einschränkung der Datenausgabe
Einschränkung der Datenausgabe
Anzeige und Ausblenden mehrfach vorhandener Werte
Abfrageerweiterung mit DISTINCT
Abfragen --> Anzeige aller Zeilen, auch mehrfach vorhandene
Angabe mehrerer Spalten nach DISTINCT
Auswirkung auf alle gewählten Spalten
Ausgabe aller unterschiedlichen Kombinationen der Spalten
SELECT position
FROM mitarbeiter;
Schlüsselwort DISTINCT - im Sinne von verschieden --> Ausblenden
SELECT DISTINCT position, abt_nr
FROM mitarbeiter;
SELECT DISTINCT position
FROM mitarbeiter;
Mehrere Mitarbeiterinnen sind als
Sekretärin angestellt
--> Anzeige
redundanter Daten
POSITION
Geschäftsführer
Sekretärin
Abteilungsleiter
Buchhalterin
Abteilungsleiterin
…..
Programmierer
Sekretärin
Monteur
Auszubildender
Praktikant
POSITION
Geschäftsführer
Sekretärin
Abteilungsleiter
Buchhalterin
Abteilungsleiterin
…..
Programmierer
Monteur
Auszubildender
Praktikant
POSITION
Assistent
Geschäftsführer
Mit Hilfe von DISTINCT
einmalige Ausgabe der
Position "Sekretärin"
--> Ausblenden
redundanter Daten
ABT_NR
…..
Buchhalter
Systemanalytiker
Programmiererin
Abteilungsleiter
Verkäufer
.....
Auszubildender
Praktikant
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
5-6
10
10
.....
80
90
90
20
20
.....
40
50
Ausgabe von
Zeilen mit
Werten
jeweils nur
einmal
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Einschränkung der Datenausgabe
Einschränkung der Datenausgabe
Anwendung der WHERE-Klauseln
Zeichenfolgen und Datumsangaben
Einschränkung - Auswahl aller männlichen Mitarbeiter
Ausgabe der in WHERE-Klausel angegebenen Spalte kann erfolgen
Zeichenfolgen und Datumswerte prinzipiell in Hochkommata
Unterscheidung bei Zeichenwerten in Groß-/Kleinschreibung
Datumswerte sind formatabhängig
Default-Ausgabeformat für Datumsangaben - DD.MM.YY
SELECT pers_nr, anrede, name, position, abt_nr
FROM mitarbeiter
WHERE anrede = 'H';
PERS_NR
101001
101002
101004
101007
101008
…..
101045
101046
101048
101049
101050
ANREDE
H
H
H
H
H
H
H
H
H
H
NAME
Schulze
Lange
Kettler
Engel
Adler
POSITION
Assistent
Geschäftsführer
Abteilungsleiter
Buchhalter
Systemanalytiker
…..
…..
Petersen
Einkäufer
Adam
Programmierer
Fritzsche
Monteur
Junge
Auszubildender
Altermann
Praktikant
ABT_NR
10
10
90
80
90
…..
30
90
40
40
50
SELECT pers_nr, name, position, abt_nr
FROM mitarbeiter
WHERE Position = 'Sekretärin';
SELECT pers_nr, name, position, abt_nr
FROM mitarbeiter
WHERE Geburtstag = '12.12.67';
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
7-8
Greenberg 2002, S. 96
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Erweiterte Funktionen
Operatoren
Vergleichsoperatoren
Innerhalb der WHERE-Klausel
Vergleich für Zeichen, Zeichenketten numerische und Datumswerte
SELECT ...
WHERE ausdruck operator wert;
Operator
=
>
>=
<
<=
<>
Operatoren
Bedeutung
Gleich
Größer als
Größer/gleich
Kleiner als
Kleiner/gleich
Ungleich
SELECT name, gehalt
FROM mitarbeiter
WHERE gehalt >= 2500;
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
9-10
Greenberg 2002, S. 97
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Operatoren
Operatoren
Spezielle Vergleichsoperatoren
Einsatz der Operatoren (BETWEEN, IN)
Operatoren mit stärkeren Filterwirkungen
Explizite Erfassung leerer Felder über IS NULL-Operator
Operator
BETWEEN
...AND...
IN(set)
LIKE
IS NULL
BETWEEN-Operator - Anzeigen von Zeilen basierend auf einem
Wertebereich
Zugehörigkeitsoperator IN - zum Prüfen einer Liste auf Werte
Bedeutung
Zwischen zwei Werten
(einschließlich dieser Werte)
Entspricht einem oder mehreren
Werte aus einer Werteliste
Entspricht einem zu
definierenden Zeichenmuster
Ist ein NULL-Wert
SELECT name, gehalt
FROM mitarbeiter
WHERE gehalt BETWEEN 2500 AND 3500;
SELECT name, gehalt, abt_nr
FROM mitarbeiter
WHERE abt_nr IN 40, 50, 90;
Werden Zeichen- oder Datumswerte in der Suche angeben, sind
diese in Hochkommata (' ') zu setzen.
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
Greenberg 2002, S. 99
11-12
NAME
Köhler
Schulze
.....
Genz
Klein
.....
Fuchs
NAME
Eckert
Heine
Engel
Wagner
Enke
Groß
GEHALT
3100
3200
3300
3350
3400
3500
GEHALT
ABT_NR
6500
40
4200
40
.....
.....
6600
50
5400
50
.....
.....
3600
90
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Operatoren
Operatoren
Einsatz der Operatoren (LIKE, IS NULL)
Logische Operatoren
Operator LIKE für Zeichenfolgenwerte
Operator IS NULL als "Nullwerttester"
SELECT name, vorname, anrede
FROM mitarbeiter
WHERE name LIKE 'Sch%';
SELECT name, position
FROM mitarbeiter
WHERE proj_nr IS NULL;
Prüfung von Spalten mit NULL-Werten
über '=' - Ergebnis "data not found"
Verknüpfen mehrerer Bedingungen
Kombination von AND und OR in einer Abfrage
NAME
VORNAME ANREDE
Schmidt
Schmiedel
Schneider
Schulze
Schulze
Schulz-Niemeyer
Melanie
Inge
Georg
Dieter
Sylvia
Paul
NAME
F
F
H
H
F
H
AND
POSITION
Schulze
Lange
Metz
Berger
Assistent
Geschäftsführer
Sekretärin
Buchhalterin
…..
Behrens
Groß
Müller-Lorenz
Operator
OR
…..
NOT
Endkontrolleur
Sekretärin
Zeichnerin
Bedeutung
Gibt TRUE zurück, wenn beide
Komponentenbedingungen
wahr sind
Gibt TRUE zurück, wenn
mindestens eine der beiden
Komponentenbedingungen
wahr ist
Gibt TRUE zurück, wenn die
nachfolgende Bedingung falsch
ist
Die Platzhalterzeichen in LIKE können kombiniert werden.
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
13-14
Greenberg 2002, S. 105
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Operatoren
Operatoren
Operator AND (UND)
Operator OR (ODER)
AND - Erfüllung beider Bedingungen (wahr)
OR - mindestens eine der beiden Bedingungen muss wahr sein
SELECT pers_nr, name, gehalt, position
FROM mitarbeiter
WHERE gehalt >= 4500
AND position LIKE '%käufer';
SELECT pers_nr, name, gehalt, position
FROM mitarbeiter
WHERE gehalt >= 4500
OR position LIKE '%käufer';
PERS_NR
101013
101014
101016
101017
101044
NAME
Probst
Gast
Dost
Hein
Koch
POSITION
PERS_NR
101001
101002
101004
.....
101041
101044
101045
GEHALT
Verkäufer
Verkäufer
Einkäufer
Einkäufer
Verkäufer
5000
5000
4600
4600
4800
AND-Wahrheitstabelle
AND
WAHR
FALSCH
NULL
WAHR
WAHR
FALSCH
NULL
FALSCH
FALSCH
FALSCH
FALSCH
POSITION
Assistent
Geschäftsführer
Abteilungsleiter
.....
Konstrukteur
Verkäufer
Einkäufer
GEHALT
4500
7600
6500
.....
5200
4800
4400
OR-Wahrheitstabelle
NULL
NULL
FALSCH
NULL
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
NAME
Schulze
Lange
Kettler
.....
Plenk
Koch
Petersen
OR
WAHR
FALSCH
NULL
WAHR
WAHR
WAHR
WAHR
FALSCH
WAHR
FALSCH
NULL
NULL
WAHR
NULL
NULL
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
Greenberg 2002, S. 106
15-16
Greenberg 2002, S. 107
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Operatoren
Operatoren
Operator NOT (NICHT)
Prioritätsregeln der Operatoren
NOT - im Sinne von "keine Übereinstimmung"
Prioritätsregeln für Funktionen
Nur durch Verwenden von Klammern außer Kraft zu setzen
SELECT name, vorname, position
FROM mitarbeiter
WHERE position NOT IN ('%käufer', '%leiter%',
'Sekretärin');
NAME
Schulze
Lange
Beyerke
.....
Fritzsche
Junge
Altermann
VORNAME
Dieter
Bruno
Elke
.....
Frank
Willi
Gustav
Auswertungsreihenfolge
1
2
3
4
5
6
7
8
POSITION
Assistent
Geschäftsführer
Buchhalterin
.....
Monteur
Auszubildender
Praktikant
NOT - Wahrheitstabelle
NOT
WAHR
FALSCH
FALSCH
WAHR
NULL
NULL
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
Operator
Arithmetische Operatoren
Verkettungsoperator
Vergleichsoperatoren
IS [NOT] NULL, LIKE, [NOT] IN
[NOT] BETWEEN
Logischer Operator NOT
Logischer Operator AND
Logischer Operator OR
Die Auswertungsreihenfolge lässt sich durch Setzen von
Klammern ändern.
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
Greenberg 2002, S. 108
17-18
Greenberg 2002, S. 109
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Operatoren
Erweiterte Funktionen
Zusammenfassung - Selektion und Projektion
SELECT mitarbeiter.name, mitarbeiter.vorname
Projektion
FROM mitarbeiter
Sortierung von Ergebnissen
WHERE abt_nr IS NOT 20
AND position = "Buchhalter“
Selektion
Mit der Selektion werden die Zeilen einer Tabelle ausgewählt.
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
19-20
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Sortierung von Ergebnissen
Sortierung von Ergebnissen
Sortierung mit ORDER BY
Sortierung in auf- und absteigender Reihenfolge
SELECT name, vorname, position
FROM mitarbeiter
ORDER BY position ASC;
ORDER BY-Klausel - Sortierung von Ausgabezeilen
Aufsteigende Reihenfolge (Grundeinstellung) - ASC (ascending)
Absteigende Reihenfolge - DESC (descending)
NAME
Michalke
Köhler
Genz
Kettler
VORNAME
POSITION
Max
Abteilungsleiter
Reinhard
Abteilungsleiter
Andreas
Abteilungsleiter
Gunter
Abteilungsleiter
…..
….......
Müller
Renate
Zeichnerin
Meyer-Paschke Susanne
Zeichnerin
Müller-Lorenz
Ilona
Zeichnerin
Eckert
Hans
Klausel steht am Ende der SELECT-Anweisung
SELECT ausdruck
FROM tabelle
[WHERE bedingung(en)]
[ORDER BY {spalte|ausdruck} [ASC|DESC]];
SELECT name, vorname, gehalt
FROM mitarbeiter
ORDER BY gehalt DESC;
Aufsteigende
Sortierung
der Spalte
POSITION
Absteigende
Sortierung
ohne Beispiel
Die aufsteigende Sortierung ist als Standard gesetzt. Identische
Werte werden willkürlich sortiert.
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
21-22
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Sortierung von Ergebnissen
Sortierung von Ergebnissen
Sortierung nach Spalten-Aliasnamen
Sortierung nach mehreren Spalten
Folge innerhalb der ORDER BY-Liste gibt Sortierungsreihenfolge vor
Sortierung nach nicht in SELECT-Liste enthaltenen Spalten möglich
SELECT name, vorname, gehalt * 12 Jahresgehalt
FROM mitarbeiter
ORDER BY Jahresgehalt DESC;
NAME
Lange
Büchner
Michalke
Grauer
Genz
…..
Engel
Heine
Eckert
Altermann
Junge
SELECT name, vorname, gehalt
FROM mitarbeiter
ORDER BY gehalt DESC, name ASC;
VORNAME JAHRESGEHALT
Bruno
91200
Edgar
86400
Max
84000
Hertha
79200
Andreas
79200
…..
…..
Sabine
39600
Anna
38400
Hans
37200
Gustav
14400
Willi
10800
NAME
Lange
Büchner
Michalke
Genz
Grauer
…..
Engel
Heine
Eckert
Altermann
Junge
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
VORNAME
Bruno
Edgar
Max
Andreas
Hertha
…..
Sabine
Anna
Hans
Gustav
Willi
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
23-24
GEHALT
7600
7200
7000
6600
6600
…..
3300
3200
3100
1200
900
Sortierung erfolgt
zuerst nach Gehalt und
dann nach Name
Greenberg 2002, S. 115
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Erweiterte Funktionen
Single Row-Funktionen
SQL-Funktionen
Zeilen bearbeiten und Ausgabe von Ergebnissen aus diesen
Funktion führt die entsprechende Aktion aus
Eingabe
Funktion
Argument 1
Argument 2
Argument 2
Single Row-Funktionen
...
...
...
Ausgabe
Ergebniswert
Argument n
SQL-Funktionen enthalten manchmal Argumente und geben
immer einen Wert zurück.
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
25-26
Greenberg 2002, S. 125
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Single Row-Funktionen
Single Row-Funktionen
Differenzierung der SQL-Funktionen
Merkmale von Single Row Funktionen
Single Row Funktion - Rückgabe - ein Ergebnis pro Zeile
Multiple Row Funktion - Rückgabe - ein Ergebnis je Zeilengruppe
Datenelemente
Bearbeitung jeder zurückgegebenen Zeile aus einer Hauptabfrage
Argumente und Werte
Funktionen
Single Row
Funktionen
Spalten oder Ausdrücke - als Argumente akzeptiert
Rückgabe eines Ergebnisses als Wert je Zeile
Multiple Row
Funktionen
Möglichkeit der Änderung von Datentypen
funktionsname [(argument1, argument2,...)];
HA: Wer
UA: In
arbeitet in
welcher
Antwort:
derselben
Abteilung
arbeitet Abt_Nr=90 Abteilung
wie Frau
Frau Erna
Erna Fuchs?
Fuchs?
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
Antwort:
Kettler
Adam
Beyer
Kern
Fuchs
Adler
Göbel
Erläuterung der Syntax
funktionsname - Name der Funktion
argument1, argument2 - die von der Funktion verwendeten Argumente
(Spaltenname, Ausdruck)
HA - Hauptabfrage
UA - Unterabfrage
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
Greenberg 2002, S. 126
27-28
Greenberg 2002, S. 127
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Single Row-Funktionen
Single Row-Funktionen
Übersicht Single Row-Funktionen
Übersicht der Zeichenfunktionen
Zeichenfunktionen
Rückgabe von Zeichen- oder numerischen Werten
Anfrage
Groß-/Kleinschreibung
GROSS
'Text'
Numerische Funktionen
Rückgabe numerischer Werte
Anfrage
Bearbeitung von Zeichen
***Auffüllen***
Oder
suchen
klein
812
Konvertierungsfunktionen
Anfrage
'0812'
UPPER
INITCAP
LOWER
Konvertierung eines Wertes von einem Datentyp in einen anderen
812
Datumsfunktionen
Rückgabe eines Wertes vom Datentyp DATE
Anfrage
CONCAT
SUBSTR
LENGTH
INSTR
TRIM
REPLACE
LPAD
RPAD
'08.12.07'
Zeichenfunktionen ermöglichen vielfältige Zeichenmodifikationen
und -manipulationen.
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
29-30
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Single Row-Funktionen
Single Row-Funktionen
Funktionen zur Umwandlung der Groß- bzw. Kleinschreibung
Funktion zur Groß-/Kleinschreibung
Zeichenfolgen werden in Groß- oder Kleinbuchstaben gewandelt
Komfortable Wandlung von Kleinschreibung mit INITCAP
Funktion
LOWER('SQL Anweisung')
UPPER('SQL Anweisung')
INITCAP('SQL Anweisung')
Problemstellung bei falscher Zeichensetzung (Groß-, Kleinschreibung) - Ausgabe erfolglos
SELECT name, vorname, gehalt
FROM mitarbeiter
WHERE name = 'köhler';
no rows selected
Ergebnis
sql anweisung
SQL ANWEISUNG
Sql Anweisung
SELECT name, vorname, gehalt
FROM mitarbeiter
WHERE name = LOWER('Köhler') OR name = ('Köhler');
SELECT FUNKTION(ausdruck|'zeichenfolge')
FROM tabelle;
NAME
Köhler
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
VORNAME
Reinhard
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
Greenberg 2002, S. 131
31-32
GEHALT
6500
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Single Row-Funktionen
Single Row-Funktionen
Funktionen zum Bearbeiten von Zeichen
Funktion
CONCAT('Betriebsteil', 'Potsdam')
SUBSTR('BetriebsteilPotsdam',1,12)
LENGTH('BetriebsteilPotsdam')
INSTR('Betriebsteil', 's')
LPAD(gehalt,10,'*')
RPAD(gehalt, 10, '*')
TRIM('P ' FROM 'Potsdam')
Bearbeiten von Zeichen für die Ausgabe
SELECT pers_nr, 1 CONCAT(vorname, name) NAME, position,
2 LENGTH(name)LÄNGE, 3 INSTR(name, 'o') "Enthält 'o'?"
FROM mitarbeiter
WHERE 4 SUBSTR(position,4) = 'käufer';
Ausgabe
BetriebsteilPotsdam
Betriebsteil
19
8
******3500
3500******
otsdam
PERS_NR
101013
101014
101016
101017
101044
101045
NAME
ErwinProbst
KlausGast
AlexanderDost
HugoHein
WalterKoch
HelmutPetersen
1
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
POSITION
Verkäufer
Verkäufer
Einkäufer
Einkäufer
Verkäufer
Einkäufer
4
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
Greenberg 2002, S. 133
33-34
LÄNGE
Enthält 'o'?
6
4
4
4
4
8
2
1
0
1
0
1
0
3
Greenberg 2002, S. 134
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Single Row-Funktionen
Single Row-Funktionen
Numerische Funktionen
Die Dummy-Tabelle
ROUND - rundet Werte auf eine vorgegebene Dezimalstelle
Pseudospalten - "Spalten", die es in keiner Tabelle wirklich gibt
Funktion - Ausgabe aktuelle interne Zeilennummer, aktuelles Datum
Ausgabe von Werten grundsätzlich über SELECT-Anweisung
Beispiel: ROUND(232.667, 2) 232.67
DUAL - Dummy-Name als Platzhalter für eine Tabelle
TRUNC - schneidet Wert bis zu einer bestimmten Dezimalstelle ab
Dual-Tabelle - Datenlieferant für Ausgabe
Besitzt eine Zeile - einmalige Ausgabe
Beispiel: TRUNC(232.667, 2) 232.66
MOD - gibt den Rest einer Division zurück
SELECT {wert|funktion} FROM DUAL;
Beispiel: MOD(232, 56) 8
SELECT user FROM DUAL;
SELECT sysdate FROM DUAL;
Rechnung: 232 / 56 = 4 Rest 8
ROUND rundet nach dem mathematischen Prinzip auf oder ab
(Stellenwert >=5 auf, <5 ab).
DUAL ist eine Dummy-Tabelle, mit der Ergebnisse von Funktionen
und Berechnungen angezeigt werden können.
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
Greenberg 2002, S. 135
35-36
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Erweiterte Funktionen
Konvertierungsfunktionen
Übersicht Konvertierungsfunktionen
Implizite Datentypkonvertierungen durch Server
Explizite Datentypkonvertierungen durch Benutzer mit Hilfe der
Konvertierungsfunktionen
Datentypkonvertierung
Konvertierungsfunktionen
Implizite
Datentypkonvertierung
Explizite
Datentypkonvertierung
Explizite Datentypkonvertierungen bewirken zuverlässigere
SQL-Anweisungen.
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
37-38
Greenberg 2002, S. 147
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Konvertierungsfunktionen
Konvertierungsfunktionen
Implizite Datentypkonvertierung
Explizite Datentypkonvertierung
Konvertierung erfolgt durch Oracle-Server automatisch
Konvertierung der Datentypen beim Zuweisen
Ursprungsdatentyp
VARCHAR2 oder CHAR
VARCHAR2 oder CHAR
NUMBER
DATE
Drei Funktionen für Umwandlung eines Wertes von einem Datentyp
TO_CHAR(number|date,[format])
Zieldatentyp
NUMBER
DATE
VARCHAR2
VARCHAR2
TO_NUMBER(char,[format])
TO_DATE(char,[format])
Konvertierungsrichtungen
Numerischer Wert/Datumswert
Zeichenkette
Zeichenkette
Konvertierung der Datentypen beim Auswerten von Ausdrücken
Ursprungsdatentyp
VARCHAR2 oder CHAR
VARCHAR2 oder CHAR
Zieldatentyp
NUMBER
DATE
Zeichenkette
Numerischer Wert
Datumswert
Konvertierungen von CHAR in NUMBER sind nur erfolgreich,
wenn die Zeichenfolge eine gültige Zahl darstellt.
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
Greenberg 2002, S. 148f.
39-40
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Konvertierungsfunktionen
Konvertierungsfunktionen
Funktion TO_CHAR mit Zahlenwerten
Funktionen verschachteln
Single Row-Funktionen können in beliebige Zahl von Ebenen
verschachtelt werden
Verschachtelte Funktionen werden von innen nach außen ausgewertet
Übersetzung eines Wertes vom Datentyp NUMBER in VARCHAR2
TO_CHAR(number,[format_model])
Formatelemente (format_model)
9
0
$
L
.
,
Beschreibung
Steht für eine Zahl (Anzahl der 9
bestimmt Anzeigebreite)
Erzwingt die Anzeige einer Null
Setzt ein führendes Dollarzeichen
Verwendet lokales Währungssymbol
Druckt einen Dezimalpunkt
Druckt ein Tausendertrennzeichen
Beispiel
999999
Ausgabe
1234
099999
$999999
L999999
999999.99
999,999
001234
$1234
€1234
1234.00
1,234
Fkt3(Fkt2 (Fkt1(spalte,argument1),argument2),argument3)
Schritt 1 = Ergebnis 1
Schritt 2 = Ergebnis 2
Schritt 3 = Ergebnis 3
SELECT name, NVL(TO_CHAR(leiter), 'Ohne Vorgesetzten')
FROM mitarbeiter
WHERE leiter IS NULL;
SELECT pers_nr, name, TO_CHAR(gehalt,'L99,999.00') Gehalt
FROM mitarbeiter
WHERE name = 'Genz';
PERS_NR
NAME
101021 Genz
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
NAME
Lange
NVL(TO_CHAR(leiter), 'Ohne Vorgesetzten')
Ohne Vorgesetzten
Verschachtelte Funktionen werden grundsätzlich durch runde
Klammern getrennt.
GEHALT
€6,600.00
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
Greenberg 2002, S. 159
41-42
Greenberg 2002, S. 165
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Konvertierungsfunktionen
Konvertierungsfunktionen
Allgemeine Funktionen
Funktion NVL
Einsatzmöglichkeit für alle Datentypen
Bezug auf die Verwendung von NULL-Werten
Konvertiert NULL-Werte in konkrete Werte bei folgenden
Datentypen
DATE, CHARACTER, NUMBER
NVL (ausdruck1, ausdruck2|wert)
NVL2 (ausdruck1, ausdruck2|wert1, ausdruck3|wert2)
NULLIF (ausdruck1, ausdruck2)
COALESCE (ausdruck1, ausdruck2, ..., ausdruckn)
NVL-Konvertierungen für verschiedene Datentypen
Forderung - Übereinstimmung der Datentypen
NVL (ausdruck1, ausdruck2)
Datentyp NUMBER
NVL, NVL2, COALESCE - Ausgabe sind konkrete Werte aus ausdruck
NULLIF - Vergleich und Ausgabe von ausdruck oder NULL-Wert
Beispiel 1: NVL(num_spalte,9)
Beispiel 2: NVL(proj_nr,0)
Datentyp CHAR oder VARCHAR2
Beispiel 3: NVL(char_spalte,'Nicht verfügbar')
Beispiel 4: NVL(position,'Transportarbeiter'))
Alle in Klammern stehenden Ausdrücke enthalten konkrete Werte
bzw. Spaltennamen.
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
Greenberg 2002, S. 167
43-44
Greenberg 2002, S. 168f.
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Konvertierungsfunktionen
Konvertierungsfunktionen
Funktion NVL mit numerischem Rückgabewert
Anwendung der Funktion NVL2
1
Inhalt des ersten Ausdrucks legt Rückgabe fest
SELECT name, gehalt, NVL(provision,0),
2(gehalt*12*NVL(provision,1)) Jahresgehalt
FROM mitarbeiter;
Rückgabe eines NULL-Wertes - Ausgabe des dritten Ausdrucks von NVL2
Rückgabe von Werten - Ausgabe des zweiten Ausdrucks von NVL2
NVL2(ausdruck1, ausdruck2, ausdruck3)
Berechnung Jahresgehalt aller Angestellten
Multiplikation von Gehalt, Anzahl Monate und Provisionssatz
Problemstellung: Provisionssatz nur für Verkäufer --> alle anderen Felder der
Spalte sind leer
NAME GEHALT
Schulze
4500
Lange
7600
Metz
4000
Kettler
6500
…..
…..
Probst
3000
Gast
3000
Engel
3300
Dost
4600
…..
…..
SELECT name, gehalt, abt_nr, provision,
NVL2(provision,'Gehalt + Provision', 'Gehalt') Einkommen
FROM mitarbeiter
WHERE abt_nr IN (20, 30);
NVL(PROVISION,0)
1
JAHRESGEHALT
0
54000
0
91200
0
48000
0
78000
….. .....
1,15
41400
1,15
41400
1,10
43560
0
55200
….. .....
NAME
Michalke
Probst
Gast
Engel
Dost
Hein
Hunger
.....
2
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
GEHALT ABT_NR Provision
Einkommen
7000
20
Gehalt
3000
20
1,15 Gehalt + Provision
3000
20
1,15 Gehalt + Provision
3300
20
1,10 Gehalt + Provision
4600
30
Gehalt
4600
30
Gehalt
6200
30
Gehalt
.....
.....
..... .....
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
45-46
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Konvertierungsfunktionen
Konvertierungsfunktionen
Funktion NULLIF
Funktion COALESCE
Dient der Vermeidung von NULL-Werten
Liefert aus variabel langer Parameterliste Wert eines Parameters
zurück, der nicht NULL ist
Vergleich von zwei Ausdrücken
Bei Gleichheit - Ausgabe NULL-Wert
Bei Ungleichheit - Ausgabe ausdruck1
NULLIF (ausdruck1, ausdruck2)
Wenn erster Ausdruck kein NULL-Wert - Rückgabe dieses Ausdrucks
Rückgabe von ausdruck2,...,n dann, wenn vorhergehender Ausdruck
NULL-Wert enthält
Beispiel: Nur zur Erläuterung der Funktion
SELECT name, 1 NULLIF(position, 'Abteilungsleiter')
"Nicht leitende Angestellte"
FROM mitarbeiter;
NAME
Schulze
Lange
Metz
Kettler
Probst
…..
COALESCE (ausdruck1, ausdruck2, ... ausdruckn)
Nicht leitende Angestellte
Assistent
Geschäftsführer
Sekretärin
NULL-Wert
Verkäufer
…..
Vorteil der Funktion COALESCE gegenüber der Funktion NVL ist
die Angabe von mehr als zwei alternativen Werten.
1
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
47-48
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Konvertierungsfunktionen
Erweiterte Funktionen
Anwendung der Funktion COALESCE
Kontrollfragen
Alternative Anzeige in der Spalte "Jahreseinkommen"
Je Zeile nur Auswahl des ersten Ausdrucks ungleich NULL
Problem: Berechnung Jahreseinkommen bei mehr als einer
Einkommensart nicht möglich
Welche Aufgabe erfüllt die WHERE-Klausel?
Welche Bedeutung kommt der Einschränkung der Ausgabe
redundanter Daten zu?
Mit Hilfe welcher Operatoren kann eine Verknüpfung mehrerer
Bedingungen erfolgen?
Wie kann eine Liste nach einer bestimmten Spalte sortiert werden?
Welches wesentliche Merkmal zeichnet Single Row-Funktionen aus?
SELECT ... COALESCE(12*lohn, 12*gehalt, umsatz*provision)
"Jahreseinkommen"
FROM ...;
LOHN GEHALT UMSATZ PROVISION
2800
3100
3600
650000
6,5
3450
740000
6,5
Jahreseinkommen
33600
37200
43200
42250
41400
48100
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
49-50
Einführung in die Wirtschaftsinformatik
WS 2008/2009
Erweiterte Funktionen
Literatur
Vossen, G.: Datenbankmodelle, Datenbanksprachen und Datenbankmanagementsysteme. - 4. Aufl. - Oldenbourg Verlag München 2000
Elmazri, R./Navathe, S. B.: Grundlagen von Datenbanksystemen; 3.
Auflage, 2002, Addison-Wesley
Greenberg. N./Nathan, P.: Professioneller Einstieg in Oracle9i SQL Band 1; 2002, Oracle
© Prof. Dr.-Ing. Norbert Gronau, Dipl.-Ing. Andreas Gäbler, Universität Potsdam
51-52
Herunterladen