FROM mitarbeiter - Lehrstuhl für Wirtschaftsinformatik und Electronic

Werbung
Einführung in die Wirtschaftsinformatik
Teil 9 - Grundlagen der Datenmanipulation
Wintersemester 2015/16
Lehrstuhl für Wirtschaftsinformatik
und Electronic Government
Universität Potsdam
Chair of Business Information Systems
and Electronic Government
University of Potsdam
Univ.-Prof. Dr.–Ing. habil. Norbert Gronau
Lehrstuhlinhaber | Chairholder
August-Bebel-Str. 89 | 14482 Potsdam | Germany
Tel
Fax
+49 331 977 3322
+49 331 977 3406
E-Mail [email protected]
Web lswi.de
1
Inhalt
Abfragen mit SELECT
Operatoren und Ausdrücke
Datumsfunktionen
2
Abfragen mit SELECT
Operatoren und Ausdrücke
Datumsfunktionen
3
Betrachtung der SQL-Anweisungen am Beispiel
Struktur der Datenbank "WIProM AG" für die Beispiele in SQL
mitarbeiter
PERS_NR NAME VORNAME A* LEITER POSITION G* EINSTELLUNG GEHALT ABT_NR PROJ_NR ..
abteilung
ABT_NR
ABT_NAME
A* ~ ANREDE
G* ~ GEBURTSTAG
BETR_TEIL
bereich
BEREICHSNAME
BETR_TEIL
BETR_ORT
BETRIEBSTEILNAME
PLZ
ORT
STRASSE
LAND
betriebsort
BETR_ORT
BETRIEBSTEILNAME
PLZ
ORT
STRASSE
LAND
projekt
PROJ_NR PROJ_NAME
arbeitet_in
PERS_NR
PROJ_BEGINN
PERSONALKOSTEN
PROJEKTBESCHREIBUNG
Projektdaten
PROJ_NR
PROJ_MA_NR
BEGINN
ENDE
Projektpartner
bank
BLZ
PROJ_LEITER
BANK
PROJ_NR
PROJ_PARTNER
ADRESSE
4
SQL-Anweisungen erstellen
Keine Unterscheidung zwischen Groß- und Kleinschreibung in SQLSchlüsselworten (Anweisungen)
Semikolon - Abschluss einer Anweisung
Keine Abkürzung oder Trennung von Schlüsselwörtern
Anweisungen können aus einer oder mehreren Zeilen bestehen
Sinnvoll: Setzen jeder Klausel in eine eigene Zeile
Einrückungen verbessern die Lesbarkeit
Nur die Feldinhalte sind casesensitiv.
5
Default-Einstellungen und Ausdrücke
Default-Ausrichtung für Überschriften: zentriert
ABT_NR
ABT_NAME
BETR_TEIL
Default-Schreibung für Überschriftenanzeige: Großschreibung
PROJ_NR
PROJ_NAME
PROJ_LEITER
Ausdrücke und Klammern
Eckige Klammern ("[", "]") - optional auswählbare Ausdrücke
Geschweifte Klammern ("{", "}") - alternative Ausdrücke stehen untereinander
Senkrechte Striche ("|") - trennen alternative Ausdrücke bzw. Werte
6
Anweisung SELECT - Projektion
Projektion - Spaltenauswahl
Auswahl bestimmter Attribute (Spalten) einer Tabelle
Anzeige der Werte aller Entities
Die Auswahl von Daten erfolgt bei der Projektion immer spaltenweise.
7
Anweisung SELECT - Selektion
Selektion - Zeilenauswahl
Auswahl bestimmter Tupel (Zeilen, Datensätze) einer Tabelle
Anzeige aller Spalten (Artikel) der ausgewählten Entities entsprechend
einer Auswahlbedingung
Bezug auf Attributausprägungen
Die Auswahl von Daten erfolgt bei der Selektion immer zeilenweise.
8
Anweisung SELECT - Tabellen verknüpfen
Join - Kreuzprodukt mehrerer Tabellen
Kombination jedes Tupels einer Relation mit jedem Tupel einer anderen
Relation
Die Auswahl von Daten erfolgt über eine Verknüpfung mehrerer Tabellen als Kreuzprodukt ihrer Spalten.
9
Auswahl aller Spalten - Das Sternchen *
SELECT *
FROM mitarbeiter;
PERS_NR
NAME
VORNAME A* A_T* LEITER
101001Büchner Edgar
H
101002Martens Eugen
H
101003Dost
Alexander H
101004Fuchs
Erna
F
101005Rösch
Konrad
H
…..
…..
….. …..
101132Neike
Bernd
H
101133Rohloff
Friedrich
H
101134Ludwig
Jens
H
101135Fritzsche Christian
H
101136Bode
Marie
F
…..
POSITION
101060Hauptabteilungsleiter
101060Dreher
101059Einkäufer
101060Sekretärin
101047Abteilungsleiter
…..
101075Ingenieur
101075Techniker
101092Elektriker
101092Elektroniker
101092Elektronikerin
GEBURTSTAG
23.06.1949
02.08.1948
19.09.1955
22.09.1957
16.03.1955
…..
02.11.1958
15.08.1966
26.06.1966
01.03.1969
07.06.1974
ABT_NR PROJ_NR
260F
260D
210E
260D
510L
610A
610A
630E
630E
630E
P120
P150
P150
A: ANREDE
A_T: AKAD_TITEL
Mit Auswahl aller Spalten wird die gesamte Tabelle angezeigt.
10
Varianten der Spaltenauswahl
Festlegen aller zu projizierenden Spalten
SELECT attribut,...
attribut:=
*
tabelle.*
FROM tabelle
Keine Einschränkung - Ausgabe aller Spalten einer Tabelle
Beispiele:
SELECT * FROM abteilung;
SELECT mitarbeiter.* FROM mitarbeiter;
Die Angabe von Tabellen- und Spaltenname erfordert eine Trennung mittels Punkt zwischen beiden.
11
Einschränkung der Spaltenauswahl
Auswahl der Spalten über ausgewählte Attribute oder Funktionen
SELECT attribut1, attribut2,...
attribut:= ausdruck [alias]
spalte
ausdruck:= tabelle.spalte
...
weitere Varianten, z.B. Funktionsaufruf
FROM tabelle
Beispiele:
SELECT pers_nr, abt_nr FROM abteilung;
SELECT mitarbeiter.pers_nr, mitarbeiter.abt_nr FROM mitarbeiter;
12
Spaltenauswahl über Attribut- und Tabellennamen
Präzise Formulierung mit Angabe des Tabellennamens
SELECT attribut1, attribut2,...
attribut:= ausdruck [alias]
ausdruck:=
tabelle.spalte
FROM tabelle1, ..;
Beispiele:
SELECT name, vorname FROM mitarbeiter;
SELECT mitarbeiter.name, mitarbeiter.vorname FROM mitarbeiter;
SELECT abt_nr, abt_name FROM abteilung;
SELECT abteilung.abt_nr, abteilung.abt_name FROM abteilung;
13
Auswahl bestimmter Spalten
Spaltenauswahl über korrekte Angabe der Spaltennamen
Werden die Spaltennamen falsch geschrieben, erfolgt keine Ausgabe von Daten.
14
Spalten-Aliasnamen
Umbenennung von Spaltenüberschriften
Sinnvoll bei Berechnungen - Spaltentitel
Angabe direkt hinter Spaltennamen
Optionale Angabe zwischen Spalten- und Aliasnamen - das Schlüsselwort AS
Bei Angabe von Leer- oder Sonderzeichen oder Groß-/ Kleinschreibung - doppelte Anführungszeichen (" ")
Standardmäßig werden Aliasnamen in Überschriften in Großbuchstaben angezeigt.
Greenberg 2002, S. 66
15
Spaltenreihenfolge und Alias
Modifizierte Spaltenauswahl
SELECT pers_nr personalnr, abt_nr abteilungsnr, name
FROM mitarbeiter;
PERSONALNR
101001
101002
101003
101004
101005
…….
101046
101047
101048
101049
101050
ABTEILUNGSNR
NAME
260F Büchner
260D Martens
210E Dost
260D Fuchs
510L Rösch
…….
610A Neike
610A Rohloff
630E Ludwig
630E Fritzsche
630E Bode
…….
Die Reihenfolge und Spaltennamen können je nach Bedarf modifiziert werden.
16
Angabe von Spalten-Aliasnamen
SELECT name AS Familienname, gehalt*12*provision
AS Jahresgehalt
FROM mitarbeiter;
FAMILIENNAME
Schulze
…..
Probst
Gast
JAHRESGEHALT
…..
41400
41400
SELECT pers_nr Personalnr, abt_nr Abteilungsnr, name
FROM mitarbeiter;
PERSONALNR
ABTEILUNGSNR
101001
…….
NAME
260F Büchner
…….
…….
Das Schlüsselwort AS weist explizit auf den Alias hin.
Greenberg 2002, S. 67
17
Alias mit Groß-/Kleinschreibung
Alternative bei Groß-/Kleinschreibung über Anführungszeichen ""
Notwendig bei Auftreten von Leerzeichen im Alias
SELECT pers_nr AS "Personalnummer", abt_nr, name
AS "Familienname"
FROM mitarbeiter;
Personalnummer
101001
…….
ABT_NR
Familienname
260F Büchner
…….
…….
SELECT name "Familienname", gehalt*12*provision
"jährliches Einkommen"
FROM mitarbeiter;
Familienname
Büchner
jährliches Einkommen
…..
Probst
Gast
…..
41400
41400
18
Abfragen mit SELECT
Operatoren und Ausdrücke
Datumsfunktionen
19
Arithmetische Ausdrücke
Erstellen von Ausdrücken mit Hilfe arithmetischer Operatoren
Zulässig in Werten sind nur Daten vom Typ NUMBER und DATE
Operator
+
*
/
Beschreibung
Addieren
Subtrahieren
Multiplizieren
Dividieren
SELECT attribut, attribut * Wert
FROM tabelle;
Operatoren können in jeder Klausel einer SQL-Anweisung mit Ausnahme der FROM-Klausel verwendet werden.
Greenberg 2002, S. 59
20
Arithmetische Operatoren
Zusätzliche Spalte mit Berechnungsergebnis
Existiert nicht in der Tabelle "mitarbeiter"
SELECT name, gehalt, gehalt * 1.02
Gehaltserhöhung
NAME
GEHALT
Büchner
Martens
Dost
Fuchs
Rösch
10430
2400
3100
3600
…..
Neike
Rohloff
Ludwig
Fritzsche
Bode
GEHALTSERHÖHUNG
6590
…..
4000
3200
3100
2910
2550
10638,6
2448
3162
3672
6721,8
…..
4080
3264
3162
2968,2
2601
Zur besseren Lesbarkeit können Leerzeichen vor und nach dem arithmetischen Operator eingefügt werden.
21
Operatorpriorität
Punkt- vor Strichrechnung
Multiplikationen und Divisionen vor Additionen und Subtraktionen
Auswertung von Operatoren derselben Priorität von links nach rechts
Einsatz von Klammern
Auswertungen erhalten Prioritäten
Anweisungen sind besser lesbar
*/+a + b * c <> (a + b) * c
Die Prioritätsregel für Operatoren entspricht der mathematischen Regel: "Punkt- vor Strichrechnung".
Greenberg 2002, S. 61
22
Berechnung mit priorisierten Operatoren
Berechnung des Jahresgehaltes plus Einmalzahlung
SELECT name, gehalt, 50 + gehalt * 12
FROM mitarbeiter;
oder alternativ
SELECT name, gehalt, 50 + (gehalt * 12)
FROM mitarbeiter;
NAME
Büchner
Martens
Dost
Fuchs
Rösch
…..
Neike
Rohloff
Ludwig
Fritzsche
Bode
GEHALT
10430
2400
3100
3600
6590
…..
4000
3200
3100
2910
2550
50+GEHALT*12
125210
28850
37250
43250
79130
…..
48050
38450
37250
34970
30650
23
NULL-Werte in Feldern
NULL-Wert steht für nicht verfügbaren, nicht zugewiesenen, unbekannten oder nicht anwendbaren Wert
NULL-Wert ist nicht dasselbe wie 0 (Zahl Null) oder Leerzeichen
SELECT name, proj_nr
FROM mitarbeiter;
NAME
PROJ_NR
Büchner
Martens
Dost
P120
Fuchs
Rösch
…..
…..
Neike
P150
Rohloff
Ludwig
Fritzsche
P150
Bode
Leerwerte:
Felder ohne Inhalte
Greenberg 2002, S. 64
24
NULL-Werte in Feldern
NULL-Wert steht für nicht verfügbaren, nicht zugewiesenen, unbekannten oder nicht anwendbaren Wert
NULL-Wert ist nicht dasselbe wie 0 (Zahl Null) oder Leerzeichen
SELECT name, proj_nr
FROM mitarbeiter;
NAME
PROJ_NR
Büchner
Martens
Dost
P120
Fuchs
Rösch
…..
…..
Neike
P150
Rohloff
Ludwig
Fritzsche
P150
Bode
Leerwerte:
Felder ohne Inhalte
Greenberg 2002, S. 64
24
NULL-Werte in arithmetischen Ausdrücken
Berechnung des Jahreseinkommens aus Bestandteilen Gehalt und Provision
SELECT name, gehalt*12*provision
FROM mitarbeiter;
NAME
Büchner
Martens
Dost
Fuchs
GEHALT*12*PROVISION
Feld PROVISION ist leer -->
Ergebnis ist nicht gleich 0,
sondern leer (NULL)
…..
Probst
Gast
Engel
…..
…..
41400
41400
43560
…..
Greenberg 2002, S. 65
25
NULL-Werte in arithmetischen Ausdrücken
Berechnung des Jahreseinkommens aus Bestandteilen Gehalt und Provision
SELECT name, gehalt*12*provision
FROM mitarbeiter;
NAME
Büchner
Martens
Dost
Fuchs
GEHALT*12*PROVISION
Feld PROVISION ist leer -->
Ergebnis ist nicht gleich 0,
sondern leer (NULL)
…..
Probst
Gast
Engel
…..
…..
41400
41400
43560
…..
Greenberg 2002, S. 65
25
Verkettungsoperator
Verkettet Spalten oder Zeichenfolgen mit anderen Spalten
Darstellung durch zwei senkrechte Striche (||)
Erstellt Ergebnisspalte mit einem Zeichenausdruck
Ausgabe der Zeichenkette ohne einem Leerzeichen zwischen verketteten Elementen
Hinweis: Im weiteren Verlauf wird statt Attribut synonym der Begriff Spalte genutzt.
Greenberg 2002, S. 68
26
Text über Verkettungsoperatoren verbinden
SELECT anrede || vorname || name AS "Mitarbeiter"
FROM mitarbeiter;
NAME
Plenk
Engel
Roth
Riekhoff
Groß
Eckert
Schulze
Grothe
John
VORNAME
Karl
Lothar
Katharina
Monika
Hildegard
Hans
Sylvia
Franziska
Peter
ANREDE
H
H
F
F
F
H
F
F
H
Die Spalten können in beliebiger
Reihenfolge verkettet werden
Ergebnis liefert noch keine
befriedigende Ausgabe
Das Schlüsselwort AS vor dem Aliasnamen verbessert die Lesbarkeit der SELECT-Klausel.
27
Text über Verkettungsoperatoren verbinden
SELECT anrede || vorname || name AS "Mitarbeiter"
FROM mitarbeiter;
NAME
Plenk
Engel
Roth
Riekhoff
Groß
Eckert
Schulze
Grothe
John
VORNAME
Karl
Lothar
Katharina
Monika
Hildegard
Hans
Sylvia
Franziska
Peter
ANREDE
H
H
F
F
F
H
F
F
H
Die Spalten können in beliebiger
Reihenfolge verkettet werden
Mitarbeiter
HKarlPlenk
HLotharEngel
FKatharinaRoth
FMonikaRiekhoff
FHildegardGroß
HHansEckert
FSylviaSchulze
FFranziskaGrothe
HPeterJohn
Ergebnis liefert noch keine
befriedigende Ausgabe
Das Schlüsselwort AS vor dem Aliasnamen verbessert die Lesbarkeit der SELECT-Klausel.
27
Literale Zeichenfolgen
Zeichen, Zahl oder Datum in der SELECT-Liste
Literale Datums- und Zeichenwerte stehen in Hochkommata
Ausgabe jeder Zeichenfolge einmal für jede zurückgegebene Zeile
SELECT spalte1 || 'zeichen'|'datum'|zahl
|| spalte2
[...|| spalte_n]
FROM tabelle;
Verkettungsmöglichkeiten zwischen
Spalten entweder über Zeichen oder
Datumswert oder numerischen Wert
Literale gestalten Spaltenüberschriften in besser lesbarer Form.
Greenberg 2002, S. 70
28
Literale und Lesbarkeit von Felddaten
SELECT anrede || '. ' || name ||
' ist beschäftigt als ' || position
"Beschäftigtenliste"
FROM mitarbeiter;
Beschäftigtenliste
H. Plenk ist beschäftigt als Konstrukteur
H. Engel ist beschäftigt als Buchhalter
F. Roth ist beschäftigt als Controller
F. Riekhoff ist beschäftigt als Chefsekretärin
F. Groß ist beschäftigt als Sekretärin
H. Eckert ist beschäftigt als Wirtschaftsingenieur
F. Schulze ist beschäftigt als Arbeitsvorbereiterin
F. Grothe ist beschäftigt als Sekretärin
H. John ist beschäftigt als Controller
29
Sprachelemente - Daten abfragen (SELECT)
Vollständige Form (Grundgerüst) einer SELECT-Anweisung:
SELECT .........
DISTINCT .....
FROM ...........
WHERE ........
GROUP BY ..
ORDER BY ...
INTO TEMP ..
WAS (Auswahl verwendeter Attribute)
Ignoriert Duplikate von Attributwerten
WOHER (aus den Tabellen)
WOBEI (mit der Bedingung / welche Zeilen)
Gruppenbildung von Daten in einer Spalte
WIE (Sortierung der Inhalte der Attribute)
TEMPORÄR (Name der neuen temporären Tabelle)
30
Abfragen mit SELECT
Operatoren und Ausdrücke
Datumsfunktionen
31
Datumsfunktionen
Möglichkeiten der Arbeit mit Datumswerten
Eingabe der Datumswerte in Hochkommata
Default-Anzeigeformat - DD.MM.YY
DATE
SYSDATE
Einfachste Form
Darstellung des Datums (Feldtyp DATE) als Zeichenkette
SELECT SYSDATE
FROM DUAL;
SYSDATE
06.10.14
Alle Datumsfunktionen geben einen Wert vom Datentyp DATE zurück.
32
Rechnen mit Datumswerten
Addition/Subtraktion einer Anzahl von Tagen von einem Datum
Differenzbildung zweier Datumswerte - Anzahl der dazwischen liegenden Tage
Operation
Ergebnis
Beschreibung
Datum + Zahl
Datum
Addition Tage zu Datum
Datum - Zahl
Datum
Subtraktion Tage von Datum
Datum1 - Datum2 Anzahl von Tagen Subtraktion Datum2 von Datum1
Beispiel: Anzeige des aktuellen Alters der einzelnen Mitarbeiter
SELECT name, vorname, (SYSDATE-geburtstag)/365 AS
Alter
FROM mitarbeiter;
Greenberg 2002, S. 141
33
Zusammenfassung - Projektion
Projektion
SELECT
mitarbeiter.name, mitarbeiter.vorname
...
Name
Vorname
...
...
FROM mitarbeiter
Primärschlüsselspalte
Mit der Projektion werden alle Daten aus den „angesprochenen“ Spalten einer Datenbanktabelle in einer
temporären Ausgabetabelle angezeigt.
34
Zusammenfassung - Projektion
Projektion
SELECT
mitarbeiter.name, mitarbeiter.vorname
...
Name
Vorname
...
...
FROM mitarbeiter
Primärschlüsselspalte
Mit der Projektion werden alle Daten aus den „angesprochenen“ Spalten einer Datenbanktabelle in einer
temporären Ausgabetabelle angezeigt.
34
Kontrollfragen
Wo finden deklarative Sprachen ihre Anwendung?
Welche Merkmale besitzt SQL?
Welche Aufgaben können mit DML-Operationen realisiert werden?
Kann über DML-Sprachelemente ein neuer Datensatz erzeugt werden?
Können Daten auch nach bestimmten Merkmalen abgefragt werden?
35
Literatur
Heuer, A./Saake, G.: Datenbanken, Konzepte und Sprachen; 2. Auflage, 1995, Thomson
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
36
Zum Nachlesen
Kontakt
Univ.-Prof. Dr.-Ing. Norbert Gronau
Universität Potsdam
August-Bebel-Str. 89 | 14482 Potsdam
Germany
Tel. +49 331 977 3322
E-Mail [email protected]
Gronau, N., Gäbler, A.:
Einführung in die Wirtschaftsinformatik
GITO Verlag Berlin, 5. Auflage 2014
ISBN 978-3942183901
37
Herunterladen