DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2...

175
cps4it consulting, projektmanagement und seminare für die informationstechnologie Ralf Seidler, Stromberger Straße 36A, 55411 Bingen Fon: +49-6721-992611, Fax: +49-6721-992613, Mail: [email protected] Internet: http://www.cps4it.de DB2 for z/OS Teil 2 SQL

Transcript of DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2...

Page 1: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

cps4it consulting, projektmanagement und seminare für die informationstechnologie

Ralf Seidler, Stromberger Straße 36A, 55411 Bingen

Fon: +49-6721-992611, Fax: +49-6721-992613, Mail: [email protected]

Internet: http://www.cps4it.de

DB2 for z/OS

Teil 2 – SQL

Page 2: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Inhalt

• Überblick zum Teil 1

• Abfragen auf 1 Tabelle

• Verknüpfung von Abfragen

• Verschachtelung und Funktionen

• Ändern von Tabellen

• Benutzersicht – View

• Abfrageparameter in Auswahl

2. Dezember 2011 Seite 5 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 3: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Überblick zum Teil 1 Begriffe

2. Dezember 2011 Seite 6 DB2 für Anwendungsentwickler – Teil 2 – SQL

Tabelle

LAN

relational

IMS

Version

JOIN

Projektion

Anwen-

dung

Daten-

bank

z/OS IT-

Probleme

Ziele

Main-

frame

Sub-

system

SQL

Page 4: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Überblick zum Teil 1

Literaturhinweise

• Bookmanager im Internet

• pdf-Dokumente im Internet

– teilweise in Deutsch

• Bücher

• Bookmanager im Intranet

• pdf-Dokumente im Intranet

2. Dezember 2011 Seite: 9 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 5: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Überblick zum Teil 1 Datenbank-Design

• gutes Design

• schlechtes Design

• Relationenmodell

• Primärschlüssel

• Beziehungen zwischen Tabellen

• Fremdschlüssel

• Normalisierung und Konsistenzregeln

2. Dezember 2011 Seite: 10 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 6: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Überblick zum Teil 1 Beispieldatenbank

• Definition

• Inhalte

2. Dezember 2011 Seite: 11 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 7: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Überblick zum Teil 1 Datendefinitionen

• die Tabelle und ihre Datenformate

• erstellen einer Tabelle

• Integritätsprüfungen

• NULL bzw. NOT NULL

• erweitern und löschen

• Synonym

• Index

2. Dezember 2011 Seite: 12 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 8: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Überblick zum Teil 1 Speicherstruktur

• DB2-Objekte

• Tablespace

• Database

• Storagegroup

2. Dezember 2011 Seite: 13 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 9: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Überblick zum Teil 1 interaktives Arbeiten mit DB2 – DB2I

• Kommunikation mit DB2

• DB2I – Überblick

• DB2I – das Hauptmenü

• SPUFI und seine Möglickeiten

2. Dezember 2011 Seite: 14 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 10: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Inhalt

• Überblick zum Teil 1

• Abfragen auf 1 Tabelle

• Verknüpfung von Abfragen

• Verschachtelung und Funktionen

• Ändern von Tabellen

• Benutzersicht – View

• Abfrageparameter in Auswahl

2. Dezember 2011 Seite 17 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 11: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

Begriffe

2. Dezember 2011 Seite 18 DB2 für Anwendungsentwickler – Teil 2 – SQL

Tabelle

Sort

Spalte

DISTINCT

DML

Prädikat

Konstante

Berech-

nung

Beschrän-

kung

DDL SELECT

DCL

Opera-

toren

Feld-

name

NULL

Page 12: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

Datenmanipulation

• Teile der SQL-Sprache

– DDL

Data Definition Language

Datendefinition

– DML

Data Modifikation Language

Datenmanipulation

– DCL

Data Control Language

Datenkontrolle

2. Dezember 2011 Seite 21 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 13: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

die ersten SQL-Befehle

• SELECT

UPDATE

DELETE

INSERT

– Beispiele basieren auf Materialbeschaffungs-DB

– Beispiele werden “interaktiv” bearbeitet

– SQL-Befehle im Programm: später

– SQLs sind teilweise komplex!

2. Dezember 2011 Seite 22 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 14: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

Beispiel-Tabellen

2. Dezember 2011 Seite 23 DB2 für Anwendungsentwickler – Teil 2 – SQL

Lieferant (L) LNR LNAME STATUS ORT

TEILE (T) TNR TNAME FARBE GEWICHT ORT

Auftrag (LT) LNR TNR MENGE

Page 15: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 1

• Aufgabe

– auswählen von Lieferanten-Nummer und Status der

Lieferanten aus Berlin

• Befehl

2. Dezember 2011 Seite 25 DB2 für Anwendungsentwickler – Teil 2 – SQL

SELECT LNR, LSTATUS

FROM L

WHERE ORT = ‘BERLIN’

Page 16: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Ergebnis

• Ergebnis

• Das Ergebnis der Abfrage ist wieder eine

Relation, d.h. eine Tabelle. Wird das Ergebnis

gespeichert, kann dieses Ergebnis mit einem

weiteren SELECT abgefragt werden.

2. Dezember 2011 Seite 26 DB2 für Anwendungsentwickler – Teil 2 – SQL

LNR LSTATUS

--- -------

L1 30

L4 10

Page 17: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – qualifizieren

• Die Abfrage kann (manchmal muss) qualifiziert

werden. Das Ergebnis ändert sich in unserem

Fall nicht.

Der SQL sieht dann wie folgt aus:

2. Dezember 2011 Seite 27 DB2 für Anwendungsentwickler – Teil 2 – SQL

SELECT L.LNR, L.LSTATUS

FROM L

WHERE L.ORT = ‘BERLIN’

Page 18: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

Übung(en)

• Kapitel 1.4.5.1 Beispiel 1

2. Dezember 2011 Seite: 28 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 19: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

SELECT – allgemeine Syntax, einfache Form

2. Dezember 2011 Seite 29 DB2 für Anwendungsentwickler – Teil 2 – SQL

SELECT [DISTINCT] select-liste

FROM tabelle(n)

[WHERE auswahl-bedingung]

[GROUP BY spaltenname(n)

[HAVING auswahl-bedingung]]

[ORDER BY spaltenname(n)]

Page 20: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

SELECT – allgemeine Syntax, einfache Form – Beschreibung 1

2. Dezember 2011 Seite 30 DB2 für Anwendungsentwickler – Teil 2 – SQL

• select-liste

– Spaltenname(n) oder *

– Konstante

– Kombination aus Spaltenname(n) und Konstante(n)

(Ausdruck)

– Funktion (built-in-function)

• auswahlbedingung (Prädikat)

– eine oder mehrere Bedingungen

– Bedingung ist ein Vergleich zwischen 2 Angaben

– eine Angabe kann einen Spaltennamen, eine

Konstante oder einen Ausdruck darstellen

SELECT [DISTINCT] select-liste

FROM tabelle(n)

[WHERE auswahl-bedingung]

[GROUP BY spaltenname(n)

[HAVING auswahl-bedingung]]

[ORDER BY spaltenname(n)]

Page 21: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

SELECT – allgemeine Syntax, einfache Form – Beschreibung 2

2. Dezember 2011 Seite 31 DB2 für Anwendungsentwickler – Teil 2 – SQL

• GROUP BY

– erzeugen eines Gruppenwechsels bei Änderung der

angegebenen Spalten

– kann bei komplexen SELECTs weiter verwendet

werden wie ORDER BY oder SUBSELECT

• HAVING (Unterparameter zu GROUP BY)

– Bedingung für Gruppenwechsel

• ORDER BY

– sortieren der Ergebnismenge

• DISTINCT

– Duplikate eliminieren

SELECT [DISTINCT] select-liste

FROM tabelle(n)

[WHERE auswahl-bedingung]

[GROUP BY spaltenname(n)

[HAVING auswahl-bedingung]]

[ORDER BY spaltenname(n)]

Page 22: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 2 – ein Feld auswählen

2. Dezember 2011 Seite 33 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– auswählen aller Teilenummern der bestellten

Materialien

• Befehl

SELECT TNR

FROM LT

Page 23: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 2 – Ergebnis

2. Dezember 2011 Seite 34 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis

TNR

--- ... ...

T1 T6 T4

T2 T1 T5

T3 T2

T4 T2

T5 T2

... ...

Page 24: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

Übung(en)

• Kapitel 1.4.5.2 Beispiel 2

2. Dezember 2011 Seite: 35 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 25: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 3 – ohne Duplikate

2. Dezember 2011 Seite 37 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– auswählen aller Teilenummern der bestellten

Materialien ohne Duplikate

• Befehl

SELECT DISTINCT TNR

FROM LT

Page 26: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 3 – Ergebnis

2. Dezember 2011 Seite 38 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis

TNR

---

T1

T2

T3

T4

T5

T6

Page 27: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

Übung(en)

• Kapitel 1.4.5.3 Beispiel 3

2. Dezember 2011 Seite: 39 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 28: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 4 – Berechnung und feste Werte

2. Dezember 2011 Seite 41 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– Für alle Materialien ist die Teilenummer und das aus

dem Nettogewicht und einem konstanten

Gewichtsfaktor errechnete Bruttogewicht aufzulisten.

Außerdem soll die Formel angezeigt werden.

• Befehl

SELECT TNR, ‘Nettogewicht x 1,25 =‘,

GEWICHT * 1.25

FROM T

Page 29: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 4 – Ergebnis

2. Dezember 2011 Seite 42 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis

TNR

--- --------------------- -----

T1 Nettogewicht x 1,25 = 23.75

T2 Nettogewicht x 1,25 = 15.00

T3 Nettogewicht x 1,25 = 17.50

T4 Nettogewicht x 1,25 = 21.25

T5 Nettogewicht x 1,25 = 21.25

T6 Nettogewicht x 1,25 = 15.00

Page 30: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

Übung(en)

• Kapitel 1.4.5.4 Beispiel 4

2. Dezember 2011 Seite: 43 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 31: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

Arithmetik

2. Dezember 2011 Seite 44 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Operatoren

– addieren +

– subtrahieren -

– multiplizieren *

– dividieren /

• NULL-Werte

– NULL wird bei Berechnung nicht berücksichtigt

– ist nur 1 Operand NULL so auch das Ergebnis

Page 32: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 5 – alle Daten

2. Dezember 2011 Seite 45 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– Auflisten aller Daten der Lieferanten-Tabelle

• Befehl

• oder

SELECT *

FROM L

SELECT LNR, LNAME, LSTATUS, ORT

FROM L

Page 33: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 5 – Ergebnis

2. Dezember 2011 Seite 46 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis

LNR LNAME LSTATUS ORT

--- -------- ------- ---------------

L1 NEUMANN 30 BERLIN

L2 SCHMIDT 20 HAMBURG

L3 KRAUSE 30 HAMBURG

L4 MEIER 10 BERLIN

L5 SCHULZ 20 FRANKFURT

Page 34: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

Übung(en)

• Kapitel 1.4.5.5 Beispiel 5

2. Dezember 2011 Seite: 47 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 35: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 5 – Bewertung

2. Dezember 2011 Seite 48 DB2 für Anwendungsentwickler – Teil 2 – SQL

• beide SQLs bringen das gleiche Ergebnis

• * spart Schreibarbeit

• Aber was passiert, wenn diese Abfrage in einem

Programm kodiert ist und die Tabelle erweitert

wird?

• Also:

– * gut bei Tests / interaktivem Arbeiten

– * (fast) niemals im Programm kodieren

Page 36: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 6 – Bedingung

2. Dezember 2011 Seite 49 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– Auflisten der LNR der Lieferanten in Hamburg mit

einem Status größer als 20.

• Befehl

SELECT LNR

FROM L

WHERE ORT = ‘Hamburg’

AND LSTATUS > 20

Page 37: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 6 – Ergebnis

2. Dezember 2011 Seite 50 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis

LNR

---

L3

Page 38: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

Übung(en)

• Kapitel 1.4.5.6 Beispiel 6

2. Dezember 2011 Seite: 51 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 39: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

Bedingungen (Prädikate) – Operatoren / Wertigkeit

2. Dezember 2011 Seite 52 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Vergleichsoperatoren

= ^= <> > >= ^> < <= ^<

• bool‟sche Operatoren

NOT AND OR

• Klammern

( )

• Reihenfolge

– arithmetische Ausdrücke … Klammern … Vergleichs-

operatoren … NOT … AND … OR

Page 40: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 7 – Sortierung

2. Dezember 2011 Seite 53 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– Aufsuchen der Lieferantennummer der Lieferanten in

Hamburg und Anzeige absteigend sortiert nach dem

Lieferantenstatus.

• Befehl

SELECT LNR, LSTATUS

FROM L

WHERE ORT = ‘Hamburg’

ORDER BY LSTATUS DESC

Page 41: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 7 – Ergebnis

2. Dezember 2011 Seite 54 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis

LNR LSTATUS

--- -------

L3 30

L2 20

Page 42: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

Übung(en)

• Kapitel 1.4.5.7 Beispiel 7

2. Dezember 2011 Seite: 55 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 43: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

Beschreibung ORDER BY

2. Dezember 2011 Seite 56 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Syntax:

• ohne ORDER BY ist die Ergebnistabelle ohne

bestimmte Reihenfolge

• Reihenfolge der Spalten im SELECT

• Reihenfolge der Sortierung im ORDER BY

• Jeder Spaltenname im ORDER BY muss im

SELECT spezifiziert werden.

• Angabe Spaltennummer erlaubt (Reihenfolge!)

ORDER BY spaltenname [ASC|DESC]

[,spaltenname [ASC|DESC] …]

Page 44: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 8 – Begrenzung – 1

2. Dezember 2011 Seite 57 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– Liste die Teile auf, deren Gewicht zwischen 16 und

19 kg liegt.

• Befehl

SELECT *

FROM T

WHERE GEWICHT BETWEEN 16 AND 19

Page 45: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 8 – Ergebnis

2. Dezember 2011 Seite 58 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis

TNR TNAME FARBE GEWICHT ORT

--- --------- ----- ------- ----------

T1 C BLAU 19 BERLIN

T4 S BLAU 17 BERLIN

T5 B ROT 17 HAMBURG

Page 46: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

Übung(en)

• Kapitel 1.4.5.8 Beispiel 8

2. Dezember 2011 Seite: 59 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 47: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 9 – Begrenzung – 2

2. Dezember 2011 Seite 61 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– Liste die Teile auf, deren Gewicht * nicht* zwischen 16

und 19 kg liegt.

• Befehl

SELECT *

FROM T

WHERE GEWICHT NOT BETWEEN 16 AND 19

Page 48: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 9 – Ergebnis

2. Dezember 2011 Seite 62 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis

TNR TNAME FARBE GEWICHT ORT

--- --------- ----- ------- ----------

T2 D GELB 12 HAMBURG

T3 S ROT 14 STUTTGART

T6 N BLAU 12 BERLIN

Page 49: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

Übung(en)

• Kapitel 1.4.5.9 Beispiel 9

2. Dezember 2011 Seite: 63 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 50: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 10 – Wertetabelle – 1

2. Dezember 2011 Seite 65 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– Liste der Teile mit dem Gewicht 12, 13 oder 17 kg.

• Befehl

SELECT *

FROM T

WHERE GEWICHT IN (12, 13, 17)

Page 51: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 10 – Ergebnis

2. Dezember 2011 Seite 66 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis

TNR TNAME FARBE GEWICHT ORT

--- --------- ----- ------- ----------

T2 D GELB 12 HAMBURG

T4 S BLAU 17 BERLIN

T5 B ROT 17 HAMBURG

T6 N BLAU 12 BERLIN

Page 52: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

Übung(en)

• Kapitel 1.4.5.10 Beispiel 10

2. Dezember 2011 Seite: 67 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 53: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 11 – Wertetabelle – 2

2. Dezember 2011 Seite 69 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– Liste der Teile mit dem Gewicht 12, 13 oder 17 kg.

• Befehl

SELECT *

FROM T

WHERE GEWICHT = 12

OR GEWICHT = 13

OR GEWICHT = 17

Page 54: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 11 – Ergebnis

2. Dezember 2011 Seite 70 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis

TNR TNAME FARBE GEWICHT ORT

--- --------- ----- ------- ----------

T2 D GELB 12 HAMBURG

T4 S BLAU 17 BERLIN

T5 B ROT 17 HAMBURG

T6 N BLAU 12 BERLIN

Page 55: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

Übung(en)

• Kapitel 1.4.5.11 Beispiel 11

2. Dezember 2011 Seite: 71 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 56: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 12 – Wertetabelle – 3

2. Dezember 2011 Seite 73 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– Liste der Teile, die nicht das Gewicht 12, 13 oder 17

kg haben.

• Befehl

SELECT *

FROM T

WHERE GEWICHT NOT IN (12, 13, 17)

Page 57: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 12 – Ergebnis

2. Dezember 2011 Seite 74 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis

TNR TNAME FARBE GEWICHT ORT

--- --------- ----- ------- ----------

T1 C BLAU 19 BERLIN

T3 S ROT 14 STUTTGART

Page 58: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

Übung(en)

• Kapitel 1.4.5.12 Beispiel 12

2. Dezember 2011 Seite: 75 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 59: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 13 – Wertetabelle – 4

2. Dezember 2011 Seite 77 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– Liste der Teile, die nicht das Gewicht 12, 13 oder 17

kg haben.

• Befehl

SELECT *

FROM T

WHERE GEWICHT ^= 12

AND GEWICHT ^= 13

AND GEWICHT ^= 17

Page 60: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 13 – Ergebnis

2. Dezember 2011 Seite 78 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis

TNR TNAME FARBE GEWICHT ORT

--- --------- ----- ------- ----------

T1 C BLAU 19 BERLIN

T3 S ROT 14 STUTTGART

Page 61: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

Übung(en)

• Kapitel 1.4.5.13 Beispiel 13

2. Dezember 2011 Seite: 79 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 62: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 14 – NULL – 1

2. Dezember 2011 Seite 81 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Annahme: Lieferant L3 hat NULL statt „30‟

• Aufgabe

– Liste der Lieferantennummern der Lieferanten mit

einem Status > ‟25‟

• Befehl

SELECT LNR

FROM L

WHERE LSTATUS > 25

Page 63: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 14 – Ergebnis

2. Dezember 2011 Seite 82 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis

LNR

---

L1

Page 64: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 14 – NULL – 2

2. Dezember 2011 Seite 83 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Annahme: Lieferant L3 hat NULL statt „30‟

• Aufgabe

– Liste die Lieferantennummer der Lieferanten mit

einem Status <= ‟25‟

• Befehl

SELECT LNR

FROM L

WHERE LSTATUS <= 25

Page 65: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 14 – Ergebnis

2. Dezember 2011 Seite 84 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis

LNR

---

L2

L4

L5

Page 66: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 14 – NULL – 3

2. Dezember 2011 Seite 85 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Annahme: Lieferant L3 hat NULL statt „30‟

• Aufgabe

– Liste die Lieferantennummer der Lieferanten mit

einem Status NULL

• Befehl

SELECT LNR

FROM L

WHERE LSTATUS IS NULL

Page 67: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

einfacher SELECT – Beispiel 14 – Ergebnis

2. Dezember 2011 Seite 86 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis

LNR

---

L3

Page 68: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

Übung(en)

• Kapitel 1.4.5.14 Beispiel 14

2. Dezember 2011 Seite: 87 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 69: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

NULL – Bewertung

2. Dezember 2011 Seite 88 DB2 für Anwendungsentwickler – Teil 2 – SQL

• NULL ist weder größer noch kleiner, er ist nicht

ungleich gegenüber einem anderen Wert, auch

nicht gegenüber einem NULL-Wert.

• SYNTAX: spaltenname IS [NOT] NULL

• Achtung:

– DISTINCT: Duplikate werden erkannt

– UNIQUE INDEX: lässt nur 1 NULL-Wert zu

– ORDER BY: NULL > alle Nicht-NULL-Werte

Page 70: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfragen auf 1 Tabelle

Übung(en)

• Kapitel 3.1 Projektdaten aller Projekte

• Kapitel 3.2 Projektdaten einer Lokation

• Kapitel 3.3 Sortieren

• Kapitel 3.4 Auswahl von Daten

2. Dezember 2011 Seite: 89 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 71: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Inhalt

• Überblick zum Teil 1

• Abfragen auf 1 Tabelle

• Verknüpfung von Abfragen

• Verschachtelung und Funktionen

• Ändern von Tabellen

• Benutzersicht – View

• Abfrageparameter in Auswahl

2. Dezember 2011 Seite 93 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 72: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verknüpfung von Abfragen

Begriffe

2. Dezember 2011 Seite 94 DB2 für Anwendungsentwickler – Teil 2 – SQL

FROM

kartes.

Produkt

WHERE

Tabelle

LEFT

OUTER

ON

NATURAL

JOIN

Anwen-

dung

FULL

OUTER

RIGHT

OUTER OUTER

JOIN

NULL

INNER

JOIN

Kombi-

nation

SQL

Page 73: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verknüpfung von Abfragen

Join

2. Dezember 2011 Seite 97 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– Kombiniere die Daten aus Tabellen “L” und “T”, bei

denen der Ort des Lieferanten gleich dem Ort des

Teilelagers ist.

• Befehl

SELECT *

FROM L, T

WHERE L.ORT = T.ORT

Page 74: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verknüpfung von Abfragen

Join – Beschreibung

2. Dezember 2011 Seite 98 DB2 für Anwendungsentwickler – Teil 2 – SQL

• zu beachten:

– Die Spaltennamen in der Bedingung werden durch die

Tabellennamen qualifiziert.

Lieferant (L) LNR LNAME LSTATUS ORT

TEILE (T) TNR TNAME FARBE GEWICHT ORT

„JOIN“-Spalten

Page 75: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verknüpfung von Abfragen

Join – Anweisung

2. Dezember 2011 Seite 99 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Über Feldinhalte werden Beziehungen zwischen

2 oder mehr Tabellen hergestellt.

• Im FROM-Teil werden 2 oder mehr Tabellen

genannt.

• Der WHERE-Teil enthält die “JOIN-Bedingung”.

Eine Angabe der Bedingung bezieht sich auf

eine Spalte einer der zu “joinenden” Tabelle, die

andere auf eine Spalte der anderen Tabelle.

• Der WHERE-Teil kann erweitert werden.

Page 76: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verknüpfung von Abfragen

INNER JOIN – Ergebnis – Beschreibung

2. Dezember 2011 Seite 100 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Für alle laut JOIN-Bedingung möglichen

Kombinationen werden Ergebniszeilen gebildet.

• Nur Zeilen mit übereinstimmenden Daten der

JOIN-Bedingung werden verbunden.

• Achtung: Gibt es irgendwo Daten mit Frankfurt

oder Stuttgart? Warum nicht?

• Der beschriebene JOIN wird INNER-JOIN oder

NATURAL-JOIN genannt.

Page 77: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verknüpfung von Abfragen

INNER JOIN – Ergebnis

2. Dezember 2011 Seite 101 DB2 für Anwendungsentwickler – Teil 2 – SQL

LNR LNAME LSTATUS ORT TNR TNAME FARBE GEWICHT ORT

----- --------------- ------- --------------- ----- ------------- ------ ------- --------

-

L1 NEUMANN 30 BERLIN T1 C BLAU 19 BERLIN

L1 NEUMANN 30 BERLIN T4 S BLAU 17 BERLIN

L1 NEUMANN 30 BERLIN T6 N BLAU 12 BERLIN

L2 SCHMIDT 20 HAMBURG T2 D GELB 12 HAMBURG

L2 SCHMIDT 20 HAMBURG T5 B ROT 17 HAMBURG

L3 KRAUSE 30 HAMBURG T2 D GELB 12 HAMBURG

L3 KRAUSE 30 HAMBURG T5 B ROT 17 HAMBURG

L4 MEIER 10 BERLIN T1 C BLAU 19 BERLIN

L4 MEIER 10 BERLIN T4 S BLAU 17 BERLIN

L4 MEIER 10 BERLIN T6 N BLAU 12 BERLIN

Page 78: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verknüpfung von Abfragen

JOIN – alternative Schreibweisen

2. Dezember 2011 Seite 102 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Befehl:

SELECT *

FROM L, T

WHERE L.ORT = T.ORT

SELECT *

FROM L INNER JOIN T

ON L.ORT = T.ORT

Page 79: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verknüpfung von Abfragen

Übung(en)

• Kapitel 1.4.5.15 Beispiel 15

2. Dezember 2011 Seite: 103 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 80: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verknüpfung von Abfragen

Kartesisches Produkt

2. Dezember 2011 Seite 105 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– Anzeige aller Daten aus den Tabellen Lieferant und

Teil. Was ist wirklich gewollt?

• Befehl

SELECT *

FROM L, T

Page 81: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verknüpfung von Abfragen

Kartesisches Produkt – Ergebnis

2. Dezember 2011 Seite 106 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis LNR LNAME LSTATUS ORT TNR TNAME FARBE GEWICHT ORT

----- --------------- ------- --------------- ----- ------------- ------ ------- ---------------

L1 NEUMANN 30 BERLIN T1 C BLAU 19 BERLIN

L1 NEUMANN 30 BERLIN T2 D GELB 12 HAMBURG

L1 NEUMANN 30 BERLIN T3 S ROT 14 STUTTGART

L1 NEUMANN 30 BERLIN T4 S BLAU 17 BERLIN

L1 NEUMANN 30 BERLIN T5 B ROT 17 HAMBURG

L1 NEUMANN 30 BERLIN T6 N BLAU 12 BERLIN

L2 SCHMIDT 20 HAMBURG T1 C BLAU 19 BERLIN

L2 SCHMIDT 20 HAMBURG T2 D GELB 12 HAMBURG

L2 SCHMIDT 20 HAMBURG T3 S ROT 14 STUTTGART

L2 SCHMIDT 20 HAMBURG T4 S BLAU 17 BERLIN

L2 SCHMIDT 20 HAMBURG T5 B ROT 17 HAMBURG

L2 SCHMIDT 20 HAMBURG T6 N BLAU 12 BERLIN

L3 KRAUSE 30 HAMBURG T1 C BLAU 19 BERLIN

L3 KRAUSE 30 HAMBURG T2 D GELB 12 HAMBURG

L3 KRAUSE 30 HAMBURG T3 S ROT 14 STUTTGART

L3 KRAUSE 30 HAMBURG T4 S BLAU 17 BERLIN

L3 KRAUSE 30 HAMBURG T5 B ROT 17 HAMBURG

L3 KRAUSE 30 HAMBURG T6 N BLAU 12 BERLIN

L4 MEIER 10 BERLIN T1 C BLAU 19 BERLIN

L4 MEIER 10 BERLIN T2 D GELB 12 HAMBURG

L4 MEIER 10 BERLIN T3 S ROT 14 STUTTGART

L4 MEIER 10 BERLIN T4 S BLAU 17 BERLIN

L4 MEIER 10 BERLIN T5 B ROT 17 HAMBURG

L4 MEIER 10 BERLIN T6 N BLAU 12 BERLIN

L5 SCHULZ 20 FRANKFURT T1 C BLAU 19 BERLIN

L5 SCHULZ 20 FRANKFURT T2 D GELB 12 HAMBURG

L5 SCHULZ 20 FRANKFURT T3 S ROT 14 STUTTGART

L5 SCHULZ 20 FRANKFURT T4 S BLAU 17 BERLIN

L5 SCHULZ 20 FRANKFURT T5 B ROT 17 HAMBURG

L5 SCHULZ 20 FRANKFURT T6 N BLAU 12 BERLIN

Page 82: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verknüpfung von Abfragen

Übung(en)

• Kapitel 1.4.5.16 Beispiel 16

2. Dezember 2011 Seite: 107 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 83: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verknüpfung von Abfragen

Kartesisches Produkt – Erklärung

2. Dezember 2011 Seite 108 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Das Weglassen der JOIN-Bedingung ergibt das

kartesische Produkt.

– Herkunft: Decartes, Vektor-Produkt

• Ergebnistabelle enthält alle möglichen

Kombinationen der Zeilen der Tabellen.

• Anzahl Zeilen = Anz-Tab-1 * Anz-Tab-2

• Mit JOIN-Bedingung fallen alle Zeilen weg, die

der Bedingung nicht genügen.

Page 84: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verknüpfung von Abfragen

FULL OUTER JOIN

2. Dezember 2011 Seite 109 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– Kombiniere Daten aus den Tabellen L und T, bei

denen der Ort des Lieferanten gleich dem Ort des

Teilelagers ist. Zusätzlich sollen die Zeilen ausge-

geben werden, die keine Übereinstimmungen haben.

• Befehl

SELECT *

FROM L FULL OUTER JOIN T

ON L.ORT = T.ORT

Page 85: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verknüpfung von Abfragen

FULL OUTER JOIN – Ergebnis

2. Dezember 2011 Seite 110 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis

LNR LNAME LSTATUS ORT TNR TNAME FARBE GEWICHT ORT

----- --------------- ------- --------------- ----- ------------- ------ ------- ---------------

L1 NEUMANN 30 BERLIN T1 C BLAU 19 BERLIN

L1 NEUMANN 30 BERLIN T4 S BLAU 17 BERLIN

L1 NEUMANN 30 BERLIN T6 N BLAU 12 BERLIN

L2 SCHMIDT 20 HAMBURG T2 D GELB 12 HAMBURG

L2 SCHMIDT 20 HAMBURG T5 B ROT 17 HAMBURG

L3 KRAUSE 30 HAMBURG T2 D GELB 12 HAMBURG

L3 KRAUSE 30 HAMBURG T5 B ROT 17 HAMBURG

L4 MEIER 10 BERLIN T1 C BLAU 19 BERLIN

L4 MEIER 10 BERLIN T4 S BLAU 17 BERLIN

L4 MEIER 10 BERLIN T6 N BLAU 12 BERLIN

L5 SCHULZ 20 FRANKFURT ----- ------------- ------ ------- ---------------

----- --------------- ------- --------------- T3 S ROT 14 STUTTGART

Page 86: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verknüpfung von Abfragen

Übung(en)

• Kapitel 1.4.5.17 Beispiel 17

2. Dezember 2011 Seite: 111 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 87: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verknüpfung von Abfragen

LEFT OUTER JOIN

2. Dezember 2011 Seite 113 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– Kombiniere Daten aus den Tabellen L und T, bei

denen der Ort des Lieferanten gleich dem Ort des

Teilelagers ist. Zusätzlich sollen die Zeilen aus L

ausgegeben werden, die keine Übereinstimmung in T

haben.

• Befehl

SELECT *

FROM L LEFT OUTER JOIN T

ON L.ORT = T.ORT

Page 88: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verknüpfung von Abfragen

LEFT OUTER JOIN – Ergebnis

2. Dezember 2011 Seite 114 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis

LNR LNAME LSTATUS ORT TNR TNAME FARBE GEWICHT ORT

----- --------------- ------- --------------- ----- ------------- ------ ------- ---------------

L1 NEUMANN 30 BERLIN T1 C BLAU 19 BERLIN

L1 NEUMANN 30 BERLIN T4 S BLAU 17 BERLIN

L1 NEUMANN 30 BERLIN T6 N BLAU 12 BERLIN

L2 SCHMIDT 20 HAMBURG T2 D GELB 12 HAMBURG

L2 SCHMIDT 20 HAMBURG T5 B ROT 17 HAMBURG

L3 KRAUSE 30 HAMBURG T2 D GELB 12 HAMBURG

L3 KRAUSE 30 HAMBURG T5 B ROT 17 HAMBURG

L4 MEIER 10 BERLIN T1 C BLAU 19 BERLIN

L4 MEIER 10 BERLIN T4 S BLAU 17 BERLIN

L4 MEIER 10 BERLIN T6 N BLAU 12 BERLIN

L5 SCHULZ 20 FRANKFURT ----- ------------- ------ ------- ---------------

Page 89: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verknüpfung von Abfragen

Übung(en)

• Kapitel 1.4.5.18 Beispiel 18

2. Dezember 2011 Seite: 115 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 90: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verknüpfung von Abfragen

RIGHT OUTER JOIN

2. Dezember 2011 Seite 117 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– Kombiniere Daten aus den Tabellen L und T, bei

denen der Ort des Lieferanten gleich dem Ort des

Teilelagers ist. Zusätzlich sollen die Zeilen aus T

ausgegeben werden, die keine Übereinstimmung in L

haben.

• Befehl SELECT *

FROM L RIGHT OUTER JOIN T

ON L.ORT = T.ORT

Page 91: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verknüpfung von Abfragen

RIGHT OUTER JOIN – Ergebnis

2. Dezember 2011 Seite 118 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis

LNR LNAME LSTATUS ORT TNR TNAME FARBE GEWICHT ORT

----- --------------- ------- --------------- ----- ------------- ------ ------- ---------------

L1 NEUMANN 30 BERLIN T1 C BLAU 19 BERLIN

L1 NEUMANN 30 BERLIN T4 S BLAU 17 BERLIN

L1 NEUMANN 30 BERLIN T6 N BLAU 12 BERLIN

L2 SCHMIDT 20 HAMBURG T2 D GELB 12 HAMBURG

L2 SCHMIDT 20 HAMBURG T5 B ROT 17 HAMBURG

L3 KRAUSE 30 HAMBURG T2 D GELB 12 HAMBURG

L3 KRAUSE 30 HAMBURG T5 B ROT 17 HAMBURG

L4 MEIER 10 BERLIN T1 C BLAU 19 BERLIN

L4 MEIER 10 BERLIN T4 S BLAU 17 BERLIN

L4 MEIER 10 BERLIN T6 N BLAU 12 BERLIN

----- --------------- ------- --------------- T3 S ROT 14 STUTTGART

Page 92: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verknüpfung von Abfragen

Übung(en)

• Kapitel 1.4.5.19 Beispiel 19

2. Dezember 2011 Seite: 119 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 93: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verknüpfung von Abfragen

Übung(en)

• Kapitel 4.1 Aufträge mit Name Lieferant

• Kapitel 4.2 Teile von bestimmten Lieferanten

• Kapitel 4.3 Aufträge Proj.daten / k. Aufträge

2. Dezember 2011 Seite: 120 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 94: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Inhalt

• Überblick zum Teil 1

• Abfragen auf 1 Tabelle

• Verknüpfung von Abfragen

• Verschachtelung und Funktionen

• Ändern von Tabellen

• Benutzersicht – View

• Abfrageparameter in Auswahl

2. Dezember 2011 Seite 121 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 95: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Begriffe

2. Dezember 2011 Seite 122 DB2 für Anwendungsentwickler – Teil 2 – SQL

SUM

AVG

built-in

WHERE

Spalten-

funktion

ORDER

BY

Subquery

MIN

MAX

skalare

Funktion

GROUP

BY

HAVING UNION

NULL

UNION

ALL

JOIN

COUNT

Qualifi-

zierung

Page 96: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Unterabfrage (Subquery)

2. Dezember 2011 Seite 125 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– Liste der Namen aller Lieferanten, die Teil T2 liefern.

• Befehl

SELECT LNAME

FROM L

WHERE LNR IN (SELECT LNR

FROM LT

WHERE TNR = ‘T3’)

Page 97: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Unterabfrage (Subquery) – Ergebnis / Teilergebnis

2. Dezember 2011 Seite 126 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis:

• die geschachtelte Unterabfrage

• liefert:

LNAME

---------------

SCHMIDT

KRAUSE

SCHULZ

SELECT LNR

FROM LT

WHERE TNR = ‘T3’

L2, L3, L5

Page 98: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Unterabfrage (Subquery) – Qualifizierung von Spaltennamen

2. Dezember 2011 Seite 127 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Was ist, wenn Felder gleich heißen?

• Wird vom Benutzer keine Qualifizierung

vorgenommen, geht DB2 von bestimmten

Annahmen aus:

– Es nimmt den Tabellennamen des FROM-Teils, der

unmittelbar Bestandteil der jeweiligen Unter- oder

Hauptabfrage ist.

– Gibt es für den Tabellennamen einen Alias, wird dieser

benutzt.

Page 99: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Übung(en)

• Kapitel 1.4.5.20 Beispiel 20

2. Dezember 2011 Seite: 128 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 100: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Unterabfrage (Subquery) – Qualifizierung von Spaltennamen

2. Dezember 2011 Seite 129 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Beispiel mit Qualifizierung

SELECT L.LNAME

FROM L

WHERE L.LNR IN (SELECT LT.LNR

FROM LT

WHERE LT.TNR = ‘T3’)

Page 101: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Unterabfrage (Subquery) – Subquery oder JOIN

2. Dezember 2011 Seite 130 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Bitte JOIN nutzen statt Subquery

• denn:

– leichter lesbar

– (etwas) schneller

SELECT L.LNAME

FROM L INNER JOIN LT

ON L.LNR = LT.LNR

WHERE LT.TNR = ‘T2’

Page 102: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

mehrfache Verschachtelung

2. Dezember 2011 Seite 131 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe:

– Benötigt wird eine Liste der Lieferanten, welchen

mindestens ein Teil mit der Farbe ROT liefern.

• Befehl

SELECT LNAME

FROM L

WHERE LNR IN

( SELECT LNR

FROM LT

WHERE TNR IN

( SELECT TNR

FROM T

WHERE FARBE = ‘ROT’)

)

Page 103: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

mehrfache Verschachtelung – Ergebnis

2. Dezember 2011 Seite 132 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis:

LNAME

---------------

NEUMANN

MEIER

Page 104: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

mehrfache Verschachtelung – geht das auch anders?

2. Dezember 2011 Seite 133 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe:

– Benötigt wird eine Liste der Lieferanten, welchen

mindestens ein Teil mit der Farbe ROT liefern.

• Befehl

SELECT ...

JOIN ...

???

Page 105: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

mehrfache Verschachtelung – Hinweise

2. Dezember 2011 Seite 134 DB2 für Anwendungsentwickler – Teil 2 – SQL

• … wenn es tatsächlich nicht ohne Subqueries

geht …

• Werden einfache Vergleichsoperatoren (=,> etc.)

verwendet, muss sichergestellt sein, dass die

Unterabfrage nur 1 Wert liefert.

• Es führt zu keinem Fehler, wenn die

Unterabfrage keinen Wert liefert. Dieser Fall wird

wie das Ergebnis NULL behandelt.

• Die Unterabfrage muss direkt nach dem

Vergleichsoperator stehen.

Page 106: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Übung(en)

• Kapitel 1.4.5.21 Beispiel 21

2. Dezember 2011 Seite: 135 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 107: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Übung(en)

• Kapitel 4.4 Join statt Subquery

2. Dezember 2011 Seite: 136 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 108: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Built-In-Funktionen – Spaltenfunktionen

2. Dezember 2011 Seite 137 DB2 für Anwendungsentwickler – Teil 2 – SQL

• aggregate functions

• 1 Ergebnis aus mehreren ausgewählten Zeilen

einer Spalte oder Gruppe

• generelle Syntax:

– funktion(argument)

• Spaltenfunktionen sind bei WHERE nicht erlaubt

– COUNT, SUM, AVG, MAX, MIN, STDDEV, VARIANCE

Page 109: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Built-In-Funktionen – Tabellenfunktionen

2. Dezember 2011 Seite 138 DB2 für Anwendungsentwickler – Teil 2 – SQL

• table functions

• nur im FROM-Statement

• im Zusammenhang mit CREATE TABLE

• Funktionen

– MQREADALL, MQREADALLCLOB,

MQREADALLXML, MQRECEIVEALL,

MQRECEIVEALLCLOB, MQRECEIVEALLXML

Page 110: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Built-In-Funktionen – skalare Funktionen

2. Dezember 2011 Seite 139 DB2 für Anwendungsentwickler – Teil 2 – SQL

• scalar functions

• 1-n Werte liefert/n 1 Ergebnis

• keine Gruppe möglich

• Beispiele:

– Konvertierung

– Stringmanipulation

• siehe Schulungsunterlagen

• siehe DB2 UDB for z/OS SQL-Reference

Page 111: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Spaltenfunktionen – einfache Beispiele – 1

2. Dezember 2011 Seite 141 DB2 für Anwendungsentwickler – Teil 2 – SQL

• COUNT (*)

– gibt eine Zahl mit der Anzahl der Zeilen zurück, die die

Suchbedingung erfüllen

• Beispiele:

SELECT COUNT(*)

FROM L

-> 5

SELECT COUNT(*)

FROM LT

WHERE TNR = ‘T2’

-> 2

Page 112: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Spaltenfunktionen – einfache Beispiele – 2

2. Dezember 2011 Seite 142 DB2 für Anwendungsentwickler – Teil 2 – SQL

• COUNT (DISTINCT spaltenname)

– gibt eine Zahl mit der Anzahl der unterschiedlichen

Zeilen zurück, die die Suchbedingung erfüllen

• Beispiel:

SELECT COUNT

(DISTINCT LNR)

FROM LT

-> 5

SELECT COUNT(LNR)

FROM LT

-> 24

Page 113: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Übung(en)

• Kapitel 1.4.5.22 Beispiel 22

2. Dezember 2011 Seite: 143 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 114: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Spaltenfunktionen – einfache Beispiele – 3

2. Dezember 2011 Seite 145 DB2 für Anwendungsentwickler – Teil 2 – SQL

• SUM

– errechnet den Gesamtwert der Spalte

– nur bei nummerischen Daten möglich

– DISTINCT kann benutzt werden; dadurch werden nur

unterschiedliche Werte addiert

– NULL wird bei Summierung nicht berücksichtigt

SELECT SUM (MENGE)

FROM LT

WHERE TNR = ‘T4’

-> 1400

Page 115: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Übung(en)

• Kapitel 1.4.5.23 Beispiel 23

2. Dezember 2011 Seite: 146 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 116: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Spaltenfunktionen – einfache Beispiele – 4

2. Dezember 2011 Seite 147 DB2 für Anwendungsentwickler – Teil 2 – SQL

• AVG

– errechnet den Durchschnittswert der Spalte

– sinngemäßige Logik wie SUM

– NULL wird bei Berechnung nicht berücksichtigt

• MIN / MAX

– findet den kleinsten bzw. größten Wert der Spalte

– ist für *alle* Datentypen möglich

– NULL wird bei Berechnung nicht berücksichtigt

Page 117: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Gruppierung – Aufgabe

2. Dezember 2011 Seite 149 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– Zeige je Teil die Summe der im Auftrag befindlichen

Menge an.

• Befehl

SELECT TNR, SUM(MENGE)

FROM LT

GROUP BY TNR

Page 118: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Gruppierung – Ergebnis

2. Dezember 2011 Seite 150 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis:

TNR

--- -----

T1 1200

T2 400

T3 4300

T4 1400

T5 1200

T6 1500

Page 119: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Gruppierung – Erläuterung

2. Dezember 2011 Seite 151 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Alle Spalten nach dem SELECT (außer den

Spalten in GROUP BY) müssen sich auf eine

built-in-Funktion beziehen, weil je Gruppe nur 1

Wert ausgewiesen wird.

• Enthalten irgendwelche Zeilen in der GROUP-

BY-Spalte NULL-Werte, so wird jede dieser

Zeilen als eine Gruppe behandelt.

• GROUP BY hat nichts mit ORDER BY zu tun!

Page 120: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Übung(en)

• Kapitel 1.4.5.24 Beispiel 24

2. Dezember 2011 Seite: 152 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 121: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Gruppen mit Eigenschaften – Aufgabe

2. Dezember 2011 Seite 153 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– Liste die Teilenummern der Teile auf, die von mehr als

1 Lieferanten geliefert werden.

• Befehl

SELECT TNR

FROM LT

GROUP BY TNR

HAVING COUNT(*) > 2

Page 122: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Gruppen mit Eigenschaften – Ergebnis

2. Dezember 2011 Seite 154 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis:

TNR

---

T1

T3

T5

T6

Page 123: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Übung(en)

• Kapitel 1.4.5.25 Beispiel 25

2. Dezember 2011 Seite: 155 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 124: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Gruppen mit Eigenschaften – Erläuterung

2. Dezember 2011 Seite 157 DB2 für Anwendungsentwickler – Teil 2 – SQL

• WHERE wählt Zeile aus

• HAVING wählt Gruppen aus

• HAVING darf nur Ausdrücke enthalten, die nur

einen Wert je Gruppe enthalten.

• Falls kein GROUP BY kodiert worden ist, wird

die gesamte Tabelle als Gruppe angesehen

Page 125: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Gruppen mit Eigenschaften – Befehlsablauf

2. Dezember 2011 Seite 158 DB2 für Anwendungsentwickler – Teil 2 – SQL

1. FROM Auswahl der Tabelle

2. WHERE Auswählen der Zeile(n)

3. GROUP BY Gruppen bilden

4. HAVING Auswahl(en) der Gruppe(n)

5. SELECT Ergebnis bilden (*)

6. ORDER BY Sortieren Ergebnis

(*) nur Spalten, die in GROUP BY vorkommen oder nur mit COUNT,

COUNT DISTINCT, AVG, SUM, MAX, MIN

Page 126: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Kombination von Abfragen – Aufgabe

2. Dezember 2011 Seite 161 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– Liste die Teilenummern der Teile auf, die entweder ein

Gewicht über 16 kg haben oder vom Lieferanten L1

geliefert werden.

• Befehl

SELECT TNR

FROM T

WHERE GEWICHT > 16

UNION

SELECT TNR

FROM LT

WHERE LNR = ‘L1’

Page 127: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Kombination von Abfragen – Ergebnis

2. Dezember 2011 Seite 162 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis:

TNR

---

T1

T4

T5

Page 128: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Kombination von Abfragen – Aufgabe

2. Dezember 2011 Seite 163 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– Liste die Teilenummern der Teile auf, die entweder ein

Gewicht über 16 kg haben oder vom Lieferanten L1

geliefert werden.

• Befehl

SELECT TNR

FROM T

WHERE GEWICHT > 16

UNION ALL

SELECT TNR

FROM LT

WHERE LNR = ‘L1’

Page 129: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Kombination von Abfragen – Ergebnis

2. Dezember 2011 Seite 164 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Ergebnis:

TNR

---

T1

T4

T5

T1

T1

Page 130: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Kombination von Abfragen – Erläuterung UNION / UNION ALL – 1

2. Dezember 2011 Seite 165 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Vereinigung der Ergebnisse mehrerer SELECTS

• UNION ALL mit Duplikaten

• Die SELECT-Listen in den verwendeten

SELECT-Befehlen müssen die gleiche Anzahl

von Elementen enthalten.

• Die n-ten Spalten müssen den gleichen Datentyp

haben (char, num, time etc.)

• Haben nummerische Werte unterschiedliche

Datenformate, findet eine Konvertierung statt (es

gibt Regeln).

Page 131: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Kombination von Abfragen – Erläuterung UNION / UNION ALL – 2

2. Dezember 2011 Seite 166 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Bei Character-Feldern unterschiedlicher Länge

werden die kürzeren mit Blanks aufgefüllt.

• In den SELECT-Listen können auch Konstanten

vorkommen, um z.B. die Herkunft der Zeilen

erkennbar zu machen.

• Eine ORDER BY Anweisung darf nur im letzten

SELECT eingesetzt werden. Das Element mit

der Sortierfolge kann nur durch die Position in

der SELECT-Liste angegeben werden.

Page 132: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Übung(en)

• Kapitel 1.4.5.26 Beispiel 26

2. Dezember 2011 Seite: 167 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 133: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Verschachtelung und Funktionen

Übung(en)

• Kapitel 5.1 Lieferanten mit Status

• Kapitel 5.2 von L1 belieferte Projekte

• Kapitel 5.3 Liste von Teilen mit Daten

• Kapitel 5.4 Namen von Orten > 1 Mal da

2. Dezember 2011 Seite: 168 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 134: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Inhalt

• Überblick zum Teil 1

• Abfragen auf 1 Tabelle

• Verknüpfung von Abfragen

• Verschachtelung und Funktionen

• Ändern von Tabellen

• Benutzersicht – View

• Abfrageparameter in Auswahl

2. Dezember 2011 Seite 169 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 135: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Ändern von Tabellen

Begriffe

2. Dezember 2011 Seite 170 DB2 für Anwendungsentwickler – Teil 2 – SQL

FROM

DELETE

WHERE

Tabelle

Opera-

toren

UNION

SET

Spalte

SELECT

Befehle UPDATE

NULL

INSERT

Zeile

SQL

Page 136: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Ändern von Tabellen

Einfügen von Zeilen

2. Dezember 2011 Seite 173 DB2 für Anwendungsentwickler – Teil 2 – SQL

• 1. Variante: einfügen einzelne Zeile

• 2. Variante: einfügen mehrere Zeile

INSERT

INTO tabellenname [(spalte [, spalte] …)]

VALUES (konstante [, konstante ] …)

INSERT

INTO tabellenname [(spalte [, spalte] …)]

unterabfrage

Page 137: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Ändern von Tabellen

Einfügen von Zeilen – 1. Variante – Erläuterung

2. Dezember 2011 Seite 174 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Für jede Spalte nach dem INSERT muss im

VALUES-Teil ein Wert vorhanden sein.

• Beziehung Spalte zu Wert ist 1:1

• Reihenfolge der Spalten ist beliebig.

• Für alle Spalte, die NOT NULL definiert sind,

muss ein Wert vorhanden sein.

• Fehlende Werte müssen mit NULL beschrieben

werden.

• Es ist syntaktisch korrekt, den INSERT ohne

Spaltennamen zu schreiben. Dies sollte aber ebenso

wie ein SELECT * nicht kodiert werden.

Page 138: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Ändern von Tabellen

Einfügen von Zeilen – 1. Variante – Beispiel

2. Dezember 2011 Seite 175 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Befehl:

• Ergebnis:

– Es gibt eine neue Zeile mit den angegebenen Werten

für Teilenummer, Lagerort und Gewicht.

– Die Spalten TNAME und FARBE erhalten NULL.

• Hinweis: Die Reihenfolge der Felder ist egal.

INSERT

INTO T (TNR, ORT, GEWICHT)

VALUES (‘T7’, ‘DORTMUND’, 21)

Page 139: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Ändern von Tabellen

Übung(en)

• Kapitel 1.4.5.27 Beispiel 27

2. Dezember 2011 Seite: 176 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 140: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Ändern von Tabellen

Einfügen von Zeilen – 2. Variante

2. Dezember 2011 Seite 177 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Die Anzahl der im SELECT-Teil ausgewählten

Elemente der SELECT-Liste muss gleich der

Anzahl der Spalten sein, die im INTO-Teil

angegeben sind.

• Die ausgewählten Elemente der SELECT-Liste

müssen den gleichen Datentyp haben wie die

Spalten, in die sie eingefügt werden sollen.

INSERT

INTO tabellenname [(spalte [, spalte] …)]

unterabfrage

Page 141: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Ändern von Tabellen

Einfügen von Zeilen – 2. Variante – Beispiel

2. Dezember 2011 Seite 178 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Befehl:

• Ergebnis:

– Es gibt eine neue Tabelle mit dem Ergebnis des

SELECT.

CREATE TABLE TEMP (TNR CHAR(5)

, GESMENGE INTEGER);

INSERT

INTO TEMP (TNR, GESMENGE)

SELECT TNR, SUM(MENGE)

FROM LT

GROUP BY TNR;

Page 142: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Ändern von Tabellen

Einfügen von Zeilen – 2. Variante – Erläuterungen

2. Dezember 2011 Seite 179 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Die Zwischentabelle TEMP kann vom Benutzer

beliebig weiter verwendet werden.

• Die Zwischentabelle kann verändert werden

ohne Einfluss auf die Originaldaten (hier LT).

• Die Tabelle existiert bis zu einem Commit.

• Die Tabelle kann durch einen SQL-Befehl wieder

gelöscht werden:

DROP TABLE TEMP

Page 143: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Ändern von Tabellen

Übung(en)

• Kapitel 1.4.5.28 Beispiel 28

2. Dezember 2011 Seite: 180 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 144: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Ändern von Tabellen

Ändern von Zeilen

2. Dezember 2011 Seite 181 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Alle Zeilen, die die Bedingung(en) im WHERE-

Teil erfüllen, werden entsprechend den Angaben

im SET-Teil geändert.

• Syntax:

UPDATE tabellenname

SET spalte = ausdruck

[spalte = ausdruck ] …

[WHERE bedingungen ]

Page 145: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Ändern von Tabellen

Ändern von Zeilen – Beispiel 1

2. Dezember 2011 Seite 182 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– Ändern der Zeile mit der Teilenummer T6 in der Spalte

FARBE nach BLAU, das Gewicht soll um 2 kg erhöht

werden und der Ort soll NULL sein.

• Befehl

UPDATE T

SET FARBE = ‘BLAU’,

GEWICHT = GEWICHT + 2,

ORT = NULL

WHERE TNR = ‘T7’

Page 146: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Ändern von Tabellen

Ändern von Zeilen – Beispiel 2

2. Dezember 2011 Seite 183 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– Verdopple den Status aller Lieferanten in BERLIN.

• Befehl

• Frage: Geht es auch ohne WHERE-Clause?

UPDATE L

SET LSTATUS = 2 * LSTATUS

WHERE ORT = ‘BERLIN’

Page 147: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Ändern von Tabellen

Übung(en)

• Kapitel 1.4.5.29 Beispiel 29

2. Dezember 2011 Seite: 184 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 148: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Ändern von Tabellen

Löschen von Zeilen

2. Dezember 2011 Seite 185 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Alle Zeilen, die den angegebenen Bedingungen

genügen, werden gelöscht.

• Syntax:

DELETE

FROM tabellenname

[WHERE bedingungen ]

Page 149: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Ändern von Tabellen

Löschen von Zeilen – Beispiel

2. Dezember 2011 Seite 186 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Aufgabe

– Alle Zeilen aus T löschen mit der TNR „ T7„.

• Befehl

DELETE

FROM T

WHERE TNR = ‘T7‘

Page 150: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Ändern von Tabellen

Übung(en)

• Kapitel 1.4.5.30 Beispiel 30

2. Dezember 2011 Seite: 187 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 151: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Ändern von Tabellen

Sprachumfang (in Auswahl) – 1

2. Dezember 2011 Seite 189 DB2 für Anwendungsentwickler – Teil 2 – SQL

• aufsuchen

– SELECT

• modifizieren

– INSERT, DELETE, UPDATE

• gruppieren

– GROUP BY, HAVING

• sortieren

– ORDER BY

Page 152: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Ändern von Tabellen

Sprachumfang (in Auswahl) – 2

2. Dezember 2011 Seite 190 DB2 für Anwendungsentwickler – Teil 2 – SQL

• Vergleichsoperatoren

– = ^= > ^> >= < ^< <=

• Bool‟sche Operatoren

– AND, OR, NOT

• andere Operatoren

– LIKE, DISTINCT, ANY, ALL, IN, BETWEEN, UNION,

EXISTS

Page 153: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Ändern von Tabellen

Sprachumfang (in Auswahl) – 3

2. Dezember 2011 Seite 191 DB2 für Anwendungsentwickler – Teil 2 – SQL

• arithmetische Operatoren

– + - * /

• Verkettungsoperator

– ||

• built-in-Funktionen

– Spaltenfunktionen AVG, MAX, MIN, SUM, COUNT

– skalare Funktionen CHAR, YEAR, LENGTH …

Page 154: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Ändern von Tabellen

Übung(en)

• Kapitel 6.1 Tabelleninhalte erzeugen

• Kapitel 6.2 Zeilen verändern

• Kapitel 6.3 Zeilen löschen

• Kapitel 6.4 Tabelleninhalte löschen

2. Dezember 2011 Seite: 192 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 155: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Inhalt

• Überblick zum Teil 1

• Abfragen auf 1 Tabelle

• Verknüpfung von Abfragen

• Verschachtelung und Funktionen

• Ändern von Tabellen

• Benutzersicht – View

• Abfrageparameter in Auswahl

2. Dezember 2011 Seite 193 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 156: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Benutzersicht – View

Begriffe

2. Dezember 2011 Seite 194 DB2 für Anwendungsentwickler – Teil 2 – SQL

FROM WHERE

Tabelle

VIEW

CREATE

built-in-

Funktion

Spalte

UNION

TABLE UPDATE

NULL

INSERT

Zeile

SQL

Page 157: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Benutzersicht – View

Sinn einer View

2. Dezember 2011 Seite 197 DB2 für Anwendungsentwickler – Teil 2 – SQL

LNR LNAME LSTATUS ORT

----- --------------- ------- ---------------

L1 NEUMANN 30 BERLIN

L2 SCHMIDT 20 HAMBURG

L3 KRAUSE 30 HAMBURG

L4 MEIER 10 BERLIN

L5 SCHULZ 20 FRANKFURT

LNR LSTATUS ORT

----- ------- ---------------

L1 30 BERLIN

L3 30 HAMBURG

„Gute Lieferanten“

Page 158: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Benutzersicht – View

Eigenschaften einer View

• Zusätzliche Darstellungsmöglichkeit der

Tabelle(n), aus der sie abgeleitet wird.

• Es entsteht eine “virtuelle” Tabelle.

• Die Definition wird im DB2-Katalog gespeichert.

• Für den Benutzer erscheint die VIEW wie eine

normale Tabelle.

2. Dezember 2011 Seite 198 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 159: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Benutzersicht – View

Syntax

• Die Unterabfrage darf weder ORDER BY noch

UNION beinhalten.

• Mit der Angabe WITH CHECK OPTION wird bei

INSERT und UPDATE geprüft, ob die Werte der

WHERE-Bedingung entsprechen.

2. Dezember 2011 Seite 199 DB2 für Anwendungsentwickler – Teil 2 – SQL

CREATE VIEW viewname

[ (spalte [, spalte] …) ]

AS unterabfrage

[WITH CHECK OPTION]

Page 160: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Benutzersicht – View

Beispiel

• Sind keine Spaltennamen angegeben, werden

diejenigen aus der Unterabfrage übernommen.

• Spaltennamen sind erforderlich wenn

– doppelte Namen auftreten (JOIN)

– built-in-Funktionen genutzt werden

– arithmetische Ausdrücke genutzt werden

2. Dezember 2011 Seite 200 DB2 für Anwendungsentwickler – Teil 2 – SQL

CREATE VIEW GUTE_L

AS SELECT LNR, LSTATUS, ORT

FROM L

WHERE LSTATUS > 25

Page 161: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Benutzersicht – View

Beispiel

• Spaltennamen sollten immer benutzt werden

wegen

– Verbesserung der Lesbarkeit

– Erhöhen der Datenunabhängigkeit bei

Namensänderungen in der Originaltabelle

(In einem solchen Fall muss nur die Definition der

View verändert werden und kein einziger SQL.)

2. Dezember 2011 Seite 201 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 162: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Benutzersicht – View

Vorteile von Views

• Datenschutz

– Nur eine Untermenge der Spalten und/oder Zeilen ist

für den Benutzer sichtbar.

• Datenunabhängigkeit

– Bei Namensänderungen muss nur die Definiton der

View verändert werden. Redesign einfacher .

• Vereinfachung für den Benutzer

– Jeder Benutzer sieht, was er braucht.

• Individuelle Spaltennamen

2. Dezember 2011 Seite 202 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 163: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Benutzersicht – View

Nachteile von Views

• keine Veränderungen sind möglich

– beim UPDATE, INSERT , DELETE, wenn im CREATE

VIEW SUM, MAX, MIN, AVG, DISTINCT, GROUP BY,

FROM mit mehr als 1 Tabellennamen (JOIN)

enthalten sind.

– beim UPDATE einer Spalte, wenn im CREATE VIEW

diese Spalte einen arithmetischen Ausdruck enthält

• keine Veränderungen sind möglich bei Insert

– falls im CREATE VIEW ein arithmetischer Ausdruck

enthalten ist

– falls eine Spalte der Ausgangstabelle, die im CREATE

VIEW nicht vorkommt, mit NOT NULL definiert ist.

2. Dezember 2011 Seite 203 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 164: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Benutzersicht – View

Übung(en)

• Kapitel 7.1 Tabelleninhalte erzeugen

• Kapitel 7.2 Spalten verändern

• Kapitel 7.3 Zeilen löschen

• Kapitel 7.4 Zeilen einfügen

• Kapitel 7.5 View erstellen

2. Dezember 2011 Seite: 204 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 165: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Inhalt

• Überblick zum Teil 1

• Abfragen auf 1 Tabelle

• Verknüpfung von Abfragen

• Verschachtelung und Funktionen

• Ändern von Tabellen

• Benutzersicht – View

• Abfrageparameter in Auswahl

2. Dezember 2011 Seite 205 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 166: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfrageparameter in Auswahl

Begriffe

2. Dezember 2011 Seite 206 DB2 für Anwendungsentwickler – Teil 2 – SQL

ANY

special

register

ALL

Tabelle

Kon-

stante

CREATE

built-in-

Funktion

IN

Funktion

Predicate LIKE

Wildcard

WHERE

Zeile

EXISTS

Page 167: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfrageparameter in Auswahl

weitere Begriffe – LIKE

• Benutzung als Predicate (WHERE)

• Konstante

• special register

• skalare Funktion (mit Argumenten von “oben”)

• Ausdruck (mit Argumenten von “oben”)

• Wildcards (%_)

2. Dezember 2011 Seite 209 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 168: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfrageparameter in Auswahl

weitere Begriffe – ANY / EXISTS

• ANY

ausdruck IN (irgendwas)

ist identisch zu

ausdruck = ANY (irgendwas)

• EXISTS

Benutzung als Predicate

WHERE EXISTS (subselect)

WHERE NOT EXISTS (subselect)

2. Dezember 2011 Seite 210 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 169: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfrageparameter in Auswahl

weitere Begriffe – ALL

• ausdruck NOT IN (irgendwas)

ist identisch zu

ausdruck <> ALL (irgendwas)

• Beispiele

– COUNT (HUGO) = COUNT (ALL HUGO)

– SUM (ALL HUGO) <> SUM (DISTINCT HUGO)

– SELECT ALL <> SELECT DISTINCT

– UNION ALL

2. Dezember 2011 Seite 211 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 170: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfrageparameter in Auswahl

special register

• CURRENT DATE

• CURRENT SQLID

• CURRENT TIME

• CURRENT TIMESTAMP

• CURRENT TIMEZONE

• etc.

2. Dezember 2011 Seite 213 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 171: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfrageparameter in Auswahl

und vieles mehr …

• CALL – Aufruf Stored Procedure

• CASE / WHEN – komplexe Bedingungen bei

WHERE

• Schema – Menge von Objekten

– distinct types, Funktionen, Stored Procedures, Trigger

• Trigger – automatische Aktion

• Stored Procedure – Programm mit SQLs

2. Dezember 2011 Seite 214 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 172: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfrageparameter in Auswahl

weiter gehende Informationen

• Stored Procedure

– DB2 UDB z/OS V10 Application Programming and

SQL Guide

Kapitel 10 An example of a simple stored procedure

http://publib.boulder.ibm.com/epubs/pdf/dsnapm03.pdf

http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/

topic/com.ibm.db2z10.doc.apsg/src/tpc/db2z_storedpr

ocedure.htm

2. Dezember 2011 Seite 215 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 173: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfrageparameter in Auswahl

weiter gehende Informationen

• Trigger

– DB2 for z/OS V10 Application Programming and SQL

Guide

Kapitel 10 Example of creating and using a trigger

http://publib.boulder.ibm.com/epubs/pdf/dsnapm03.pdf

http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/

topic/com.ibm.db2z10.doc.apsg/src/tpc/db2z_createm

odifydb2objects.htm

2. Dezember 2011 Seite 216 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 174: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfrageparameter in Auswahl

weiter gehende Informationen

• Isolation level

– DB2 for z/OS V10 Performance Paper

Kapitel zum Thema concurrency

http://publib.boulder.ibm.com/epubs/pdf/dsnapm03.pdf

http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/

topic/com.ibm.db2z10.doc.dshare/src/tpc/db2z_impro

veconcurrencyds.htm

2. Dezember 2011 Seite 217 DB2 für Anwendungsentwickler – Teil 2 – SQL

Page 175: DB2 for z/OSœberblick zum Teil 1 Begriffe 2. Dezember 2011 DB2 für Anwendungsentwickler – Teil 2 – SQL Seite 6 Tabelle LAN relational IMS Version JOIN Projektion Anwen- dung

Abfrageparameter in Auswahl

weiter gehende Informationen

• Hinweise für Performance

– DB2 for z/OS Managing Performance

http://publib.boulder.ibm.com/epubs/pdf/dsnpgm03.pdf

http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/

topic/com.ibm.db2z10.doc.perf/src/perf/db2z_perf.htm

(ein Paper von vielen)

2. Dezember 2011 Seite 218 DB2 für Anwendungsentwickler – Teil 2 – SQL