SQL für Dummies - Wolfgang Gerken - E-Book

SQL für Dummies E-Book

Wolfgang Gerken

0,0
18,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

Mit SQL Datenbanken einfach meistern

Mit der Standardabfragesprache SQL können Daten in relationalen Datenbanken einfach, strukturiert und zielsicher abgefragt werden. Wolfgang Gerken erklärt Ihnen leicht verständlich, wie Sie Datenbanken erstellen, verwalten und optimieren sowie Daten bearbeiten und vor allem abfragen können. Sie erfahren, wie Sie mit Benutzersichten arbeiten und Ihre Daten schützen und konsistent halten. Damit Sie das Gelernte auch praktisch umsetzen können, wird außerdem auf individuelle SQL-Besonderheiten von MySQL, Oracle und PostgreSQL, aber auch vom SQL Server eingegangen. Mit kommentierten Beispielen und Datenbankskripten können Sie das Erklärte nachvollziehen und üben.

Sie erfahren

  • Wofür Datenbanken gut sind und wofür Sie dabei SQL brauchen
  • Wie Sie Daten beim Abfragen gruppieren
  • Wie Sie mit Unterabfragen arbeiten können
  • Wie Sie SQL-Anweisungen in andere Programmiersprachen einbetten

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 342

Veröffentlichungsjahr: 2025

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



SQL für Dummies

Schummelseite

GRUNDBEGRIFFE RELATIONALER DATENBANKEN

Alle Daten einer relationalen Datenbank sind in Tabellen gespeichert, die in diesem Kontext als Relationen bezeichnet werden. Die Spalten einer Relation heißen Attribute, die Zeilen Tupel. Eine Relation R(A1, A2, …, An) ist eine Teilmenge des Kreuzproduktes der den Attributen A1, … An bei der Erzeugung mit dem Befehl CREATE TABLE zugordneten und durch die Datentypen definierten Wertebereiche Dom1, Dom2, … Domn.

Jede Relation hat mindestens eine minimale Menge von Attributen, deren Werte je Tupel paarweise verschieden sind. Dies ist ein Schlüsselkandidat (candidate key). Einer der Schlüsselkandidaten wird als Primärschlüssel festgelegt (primary key).

Jede Attributmenge, die in einer anderen Relation Primärschlüssel (oder zumindest Schlüsselkandidat) ist, heißt Fremdschlüssel (foreign key). Mithilfe der Fremdschlüssel werden Beziehungen zwischen Relationen definiert.

BEFEHLSKATEGORIEN FÜR SQL

Die Structured Query Language SQL ist eine deklarative Programmiersprache für den Zugriff auf eine relationale Datenbank. Man unterscheidet drei Kategorien von SQL-Befehlen:

Data Definition Language, kurz DDL, zum Anlegen und Verwalten von Datenbankstrukturen wie beispielsweise Tabellen oder ViewsData Manipulation Language, kurz DML, für das Speichern, Ändern, Löschen oder Lesen von DatenData Administration Language, kurz DAL, auch als Data Control Language (DCL) bezeichnet, zur Verwaltung von Datenbanksystemen

WICHTIGE SQL-BEFEHLE

Befehl

Wirkung

CREATE

Anlegen von Datenbankobjekten, etwa Tabellen, Views oder Indizes

ALTER

Ändern von Datenbankobjekten

DROP

Löschen von Datenbankobjekten

INSERT

Speichern eines oder mehrerer Tupel einer Relation

UPDATE

Ändern eines oder mehrerer Tupel einer Relation

DELETE

Löschen eines oder mehrerer Tupel einer Relation

SELECT

Lesen von Daten aus einer oder mehreren Relationen.

DATENTYPEN IN SQL

SQL kennt eine ganze Reihe skalarer Datentypen, dazu gehören insbesondere die folgenden.

Bezeichnung

Wertebereich

INTEGER

Ganze Zahlen

SMALLINT, BIGINT

Ganze Zahlen mit eigenen Wertebereichen

NUMERIC(n)

Ganze Zahlen mit maximal n Ziffern

DECIMAL

Synonym zu NUMERIC

NUMERIC(n, p)

Ganze Zahlen mit maximal n Ziffern,

davon p Ziffern nach dem Dezimaltrennzeichen

FLOAT, REAL

Gleitpunktzahlen

BOOLEAN

Boolesche Werte

CHAR(n)

Zeichenketten der festen Länge n

VARCHAR(n)

Variabel lange Zeichenkette mit der maximalen Länge von n Zeichen

DATE

Datum

TIME

Zeit

DATETIME

Datum mit Uhrzeit

INTERVAL

Zeitintervalle

BLOB, CLOB

Große Objekte

Hinzu kommen strukturierte Datentypen etwa für XML und JSON. Nicht jeder dieser Datentypen ist bei allen Datenbank-Managementsystemen implementiert.

BENUTZERVERWALTUNG

Jede Person, die direkt oder mithilfe eines Datenbank-Anwendungsprogramms auf eine Datenbank zugreift, muss dafür autorisiert sein. Die hierfür notwendigen Befehle sind:

Bezeichnung

Wirkung

CREATE USER

Anlegen eines Benutzers

CREATE ROLE

Anlegen von Rollen, die Benutzern zugewiesen werden können

GRANT

Zuweisung von Zugriffsrechten oder Rollen an einen Benutzer

REVOKE

Zurücknahme von Zugriffsrechten

TRANSAKTIONSVERWALTUNG

Die Zugriffe auf eine Datenbank, insbesondere die INSERT-, UPDATE- und DELETE-Befehle müssen zu Transaktionen zusammengefasst werden, die nach dem Alles-oder-nichts-Prinzip ausgeführt werden. Das garantiert die Konsistenzerhalten der gespeicherten Daten. Für eine Transaktion gilt:

AtomaritätKonsistenzerhaltung der gespeicherten DatenIsolation im Mehrbenutzerbetrieb gegenüber anderen BenutzernDauerhaftigkeit der durchgeführten Änderungen.

Transaktionen werden mit einem der folgenden Befehle beendet:

Befehl

Wirkung

COMMIT

Bestätigung des Transaktionsendes und Festschreiben der durchgeführten Änderungen

ROLLBACK

Zurücksetzen der von einer Transaktion durchgeführten Änderungen

WICHTIGE OPTIONEN BEI SELECT-BEFEHLEN

Der wichtigste SQL-Befehl heißt SELECT zum Lesen von Daten aus einer Datenbank. Er hat verschiedene Optionen zur Selektion der gewünschten Daten.

Option

Wirkung

DISTINCT

Eliminierung von Duplikaten bei der Ausgabe

WHERE

Einschränkung der Ausgabe auf bestimmte Tupel beziehungsweise Werte, die eine Bedingung erfüllen

ORDER BY

Festlegung einer Sortierreihenfolge bei der Ausgabe

GROUP BY

Gruppierung von Daten

Beispiele

SELECT DISTINCT A3 FROM Test1;SELECT A1, A2, A3 FROM Test1 WHERE A4 > 100;SELECT * FROM Test1 ORDER BY A1;SELECT A2, SUM(A4) GROUP BY A2;

EINIGE FUNKTIONEN VON SQL, DIE SIE VERMUTLICH ÖFTER BRAUCHEN

SQL stellt eine ganze Reihe Datentyp-abhängiger Funktionen bereit.

Für Zeichenketten

Funktion

Wirkung

SUBSTRING

Extrahiert einen Teil aus einer Zeichenkette

UPPER

Wandelt eine Zeichenkette in Großbuchstaben um

LOWER

Wandelt eine Zeichenkette in Kleinbuchstaben um

LTRIM, RTRIM

Schneidet links beziehungsweise rechts von einem Text ein wählbares Zeichen ab (standardmäßig das Leerzeichen)

POSITION

Gibt die Anfangsposition einer Teilzeichenkette innerhalb einer Zeichenkette zurück (falls dort vorhanden)

Für numerische Attribute

Funktion

Wirkung

COUNT

Gibt die Anzahl der Tupel oder Werte der mit der WHERE-Klausel ausgewählten Tupel zurück

MAX

Gibt den größten Wert eines Attributs der mit der WHERE-Klausel ausgewählten Tupel zurück

MIN

Gibt den kleinsten Wert eines Attributs der mit der WHERE-Klausel ausgewählten Tupel zurück

AVG

Gibt den Durchschnittswert der mit der WHERE-Klausel ausgewählten Tupel zurück

Wenn bei diesen Funktionen keine WHERE-Klausel angegeben ist, beziehen sie sich auf alle Tupel der Relation. Bei der GROUP-BY-Option werden die Berechnungen für jede Datengruppe durchgeführt.

Für Datumsattribute

Funktion

Wirkung

CURRENT_DATE

Liefert das aktuelle Tagesdatum zurück

EXTRACT

Extrahiert den Tag, den Monat oder das Jahr aus einem Datum

SQL für Dummies

Bibliografische Information der Deutschen Nationalbibliothek

Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

1. Auflage 2025

© 2025 Wiley-VCH GmbH, Boschstraße 12, 69469 Weinheim, Germany

All rights reserved including the right of reproduction in whole or in part in any form. This book published by arrangement with John Wiley and Sons, Inc.

Alle Rechte vorbehalten inklusive des Rechtes auf Reproduktion im Ganzen oder in Teilen und in jeglicher Form. Dieses Buch wird mit Genehmigung von John Wiley and Sons, Inc. publiziert.

Wiley, the Wiley logo, Für Dummies, the Dummies Man logo, and related trademarks and trade dress are trademarks or registered trademarks of John Wiley & Sons, Inc. and/or its affiliates, in the United States and other countries. Used by permission.

Wiley, die Bezeichnung »Für Dummies«, das Dummies-Mann-Logo und darauf bezogene Gestaltungen sind Marken oder eingetragene Marken von John Wiley & Sons, Inc., USA, Deutschland und in anderen Ländern.

Bevollmächtigte des Herstellers gemäß EU-Produktsicherheitsverordnung ist die Wiley-VCH GmbH, Boschstr. 12, 69469 Weinheim, Deutschland, E-Mail: [email protected].

Alle Rechte bezüglich Text und Data Mining sowie Training von künstlicher Intelligenz oder ähnlichen Technologien bleiben vorbehalten. Kein Teil dieses Buches darf ohne die schriftliche Genehmigung des Verlages in irgendeiner Form – durch Photokopie, Mikroverfilmung oder irgendein anderes Verfahren – in eine von Maschinen, insbesondere von Datenverarbeitungsmaschinen, verwendbare Sprache übertragen oder übersetzt werden.

Das vorliegende Werk wurde sorgfältig erarbeitet. Dennoch übernehmen Autoren und Verlag für die Richtigkeit von Angaben, Hinweisen und Ratschlägen sowie eventuelle Druckfehler keine Haftung.

Coverillustration: Tee11 - stock.adobe.comKorrektur: Lena-Maria Denu, Mainburg

Print ISBN: 978-3-527-72190-0ePub ISBN: 978-3-527-84754-9

Über den Autor

Wolfgang Gerken war Professor für Wirtschaftsinformatik an der Hochschule für Angewandte Wissenschaften Hamburg. Er beschäftigt sich schon viele Jahre mit SQL und dessen Vermittlung in der Lehre. Seine Schwerpunktthemen sind – neben Datenbanken – Data Warehousing, Data Mining und Business Intelligence. Er ist auch Autor der Bücher »Datenbanksysteme für Dummies« und »Data-Warehouse-Systeme für Dummies«.

Inhaltsverzeichnis

Cover

Titelblatt

Impressum

Über den Autor

Inhaltsverzeichnis

Einleitung

Über dieses Buch

Konventionen in diesem Buch

Was Sie nicht lesen müssen

Törichte Annahmen über die Leser

Wie dieses Buch aufgebaut ist

Symbole, die in diesem Buch verwendet werden

Wie es weitergeht

Teil I: Die Grundlagen

Kapitel 1: Was ist SQL?

So fing alles an

Begriffe und Befehle rund um SQL

Wer braucht SQL?

Kapitel 2: Daten und Datenbanken

Daten und Informationen

Was sind Datenbanksysteme?

Relationale Datenbanken

Datenbank-Managementtools

Aufgaben

Kapitel 3: Die Normalisierung von Relationen

Probleme mit schlecht modellierten Relationen

Die 1. Normalform

Die 2. Normalform

Die 3. Normalform

Zusammenfassung

Aufgaben

Kapitel 4: Modellierung von Datenbanken

Wie erstelle ich eine Datenbank?

Der Datenbankentwurf

Das Entity-Relationship-Modell

Aufgaben

Kapitel 5: Die Komponenten von SQL

Die drei Kategorien von SQL-Befehlen

Die Data Definition Language

Die Data Manipulation Language

Die Data Administration Language

Wie SQL-Befehle abgearbeitet werden

Aufgaben

Teil II: Datenbanken erstellen

Kapitel 6: Datentypen

Überblick

Vordefinierte Standarddatentypen

Zusammengesetzte Datentypen

Benutzerdefinierte Datentypen

Objektrelationale Datenbank-Managementsysteme

Aufgaben

Kapitel 7: Tabellen anlegen und ändern

Eine Tabelle erstellen mit CREATE TABLE

Constraints auf Tabellenebene

Mit ALTER TABLE Tabellen ändern

Mit DROP TABLE Tabellen löschen

Externe Tabellen

Aufgaben

Kapitel 8: Vom ER-Diagramm zur Datenbank

Entitätstypen

Beziehungen

Aufgaben

Kapitel 9: Beispiel zur Datenbankerstellung

Die Aufgabenstellung

Das ER-Diagramm

Das Relationenschema

Die CREATE-TABLE-Befehle

Aufgaben

Teil III: Einfache SQL-Abfragen

Kapitel 10: Ausdrücke, Operatoren und Prädikate

Ausdrücke und Operatoren

Prädikate und relationale Vergleichsoperatoren

Logische Operatoren

Kapitel 11: Daten einfügen, ändern und löschen

Überblick

Daten mit INSERT einfügen

Daten mit UPDATE ändern

Daten mit DELETE löschen

Aufgaben

Kapitel 12: Einfache Abfragen erstellen

Der SELECT-Befehl

So gestalten Sie die Ausgabe

Der CASE-Operator

Aufgaben

Kapitel 13: Mit Funktionen arbeiten

Numerische Funktionen

Funktionen für Zeichenketten

Funktionen für Datum und Zeit sowie Intervalle

Funktionen für NULL-Werte

Aufgaben

Kapitel 14: Abfragen über mehrere Tabellen

Mengenoperationen mit SELECT-Ergebnissen

Der Join über die WHERE-Klausel

Beispiele

Aufgaben

Teil IV: SQL-Abfragen für Fortgeschrittene

Kapitel 15: Gruppieren von Daten

Eine Aufgabenstellung als einführendes Beispiel

Die Option GROUP BY

Die HAVING-Klausel

GROUP BY CUBE

Aufgaben

Kapitel 16: Mit Unterabfragen arbeiten

Was sind Unterabfragen?

Korrelierte und unkorrelierte Unterabfragen

Wo können Unterabfragen stehen

Aufgaben

Kapitel 17: Der Join-Operator

Relationale Operatoren

Join als Operator

CROSS JOIN

INNER JOIN

NATURAL JOIN

LEFT JOIN

RIGHT JOIN

FULL OUTER JOIN

Ein Beispiel

Wie Joins abgearbeitet werden

Aufgaben

Kapitel 18: Semistrukturierte Daten abfragen

Einsatzfelder von XML und JSON

XML

JSON

Aufgaben

Kapitel 19: SELECT bei komplexeren Fragestellungen

Keiner, irgendeiner oder alle

Reguläre Ausdrücke

Rekursive SELECT-Befehle

Mit Fenstern arbeiten

Aufgaben

Teil V: Datenbanken im Einsatz

Kapitel 20: Benutzersichten

Die Drei-Schichten-Architektur

Views

MATERIALIZED VIEWS

Aufgaben

Kapitel 21: Datensicherheit und Zugriffsrechte

Datenintegrität

Datensicherheit

Mehrbenutzerbetrieb

Benutzer und ihre Rechte

Das Zurücknehmen von Rechten

SQL-Injection

Aufgaben

Kapitel 22: Optimierung von SQL-Befehlen

Ein Beispiel

Ausführungspläne

Möglichkeiten zur Optimierung von SELECT-Befehlen

Weitere Möglichkeiten zur Abfrageoptimierung

Aufgaben

Teil VI: Prozedurale Programmierung mit SQL

Kapitel 23: Einbettung von SQL in andere Programmiersprachen

Überblick über die typische Architektur von Anwendungsprogrammen

Embedded SQL

ODBC und JDBC

PHP Data Objects

Kapitel 24: Prozedurale Erweiterungen von SQL

Ein Beispiel zur Motivation

Grundlegende Sprachelemente prozeduraler Erweiterungen von SQL

Stored Procedures

Trigger

Aufgaben

Teil VII: Der Top-Ten-Teil

Kapitel 25: Zehn Beispiele mit SQL

Komplexe Abfragen mit der WHERE-Klausel

Die Verknüpfung von Tabellen

Der Join-Operator

Die Gruppierung von Daten mit GROUP BY

Die Ausgabe gestalten

Abfragen mit Funktionen

Mit Unterabfragen arbeiten

Abfragen mit logischen Quantoren

Redundante Daten synchronisieren

Analytische Abfragen

Kapitel 26: Zehn Tipps für erfolgreiche SQL-Programmierung

Sprechen Sie mit den Anwendern

Prüfen Sie Ihr Datenmodell

Machen Sie sich mit den CREATE-TABLE-Befehlen vertraut

Entwickeln Sie Ihre SELECT-Befehle schrittweise

Testen Sie die Befehle mit genügend Testdaten

Vermeiden Sie typische Anfängerfehler

Dokumentieren und kommentieren Sie Ihre Befehle

Verzweifeln Sie nicht bei Performance-Problemen

Schützen Sie Ihre Daten

Bleiben Sie am Ball

Anhang A: Lösungen zu den Aufgaben

Lösungen von Kapitel 2

Lösungen von Kapitel 3

Lösungen von Kapitel 4

Lösungen von Kapitel 5

Lösungen von Kapitel 6

Lösungen von Kapitel 7

Lösungen von Kapitel 8

Lösungen von Kapitel 9

Lösungen von Kapitel 11

Lösungen von Kapitel 12

Lösungen von Kapitel 13

Lösungen von Kapitel 14

Lösungen von Kapitel 15

Lösungen von Kapitel 16

Lösungen von Kapitel 17

Lösungen von Kapitel 18

Lösungen von Kapitel 19

Lösungen von Kapitel 20

Lösungen von Kapitel 21

Lösungen von Kapitel 22

Lösungen von Kapitel 24

Anhang B: Reservierte Worte in SQL:2023

Literatur

Abbildungsverzeichnis

Stichwortverzeichnis

End User License Agreement

Tabellenverzeichnis

Kapitel 2

Tabelle 2.1: Gleichartige Begriffe

Tabelle 2.2: Struktur der Kundentabelle

Tabelle 2.3: Struktur der Tabelle mit den Bestellungen

Tabelle 2.4: Relation zu Aufgabe 1

Tabelle 2.5: Relation zu Aufgabe 2

Kapitel 3

Tabelle 3.1: Tabelle mit Klausurdaten

Tabelle 3.2: Tabelle mit Studiengangsdaten

Kapitel 5

Tabelle 5.1: Bestandteile von SQL-Befehlen

Tabelle 5.2: Übersicht über wichtige SQL-Befehle

Kapitel 10

Tabelle 10.1: Relationale Vergleichsoperatoren in SQL

Tabelle 10.2: Das logische AND

Tabelle 10.3: Das logische OR

Tabelle 10.4: Negation und Abfrage auf NULL

Kapitel 11

Tabelle 11.1: Beispieltabelle für INSERT, UPDATE und DELETE

Kapitel 12

Tabelle 12.1: Beispieltabelle für ORDER BY

Kapitel 13

Tabelle 13.1: Artikeltabelle

Tabelle 13.2: Tabelle Bestellungen

Kapitel 14

Tabelle 14.1: Tabelle Filialen

Tabelle 14.2: Tabelle Kunden

Tabelle 14.3: Tabelle Artikelgruppen

Tabelle 14.4: Tabelle Artikel

Kapitel 15

Tabelle 15.1: Tabelle Kunden

Tabelle 15.2: Tabelle Bestellungen

Tabelle 15.3: Umgruppierte Tabelle Bestellungen

Kapitel 17

Tabelle 17.1: Personentabelle

Tabelle 17.2: Vereinstabelle

Tabelle 17.3: Kundentabelle

Tabelle 17.4: Tabelle Bestellungen

Tabelle 17.5: Bestellpositionen

Tabelle 17.6: Tabelle Artikel

Kapitel 19

Tabelle 19.1: Beispieltabelle Kunden

Tabelle 19.2: Beispieltabelle Artikel

Tabelle 19.3: Beispieltabelle Bestellungen

Tabelle 19.4: Tabelle Flugplan

Tabelle 19.5: Umsatztabelle

Kapitel 21

Tabelle 21.1: Isolationsstufen und dabei mögliche Fehler

Kapitel 24

Tabelle 24.1: Tabelle Mitarbeiter vor Update und Row-Trigger

Tabelle 24.2: Tabelle Mitarbeiter nach Update und Row-Trigger

Illustrationsverzeichnis

Kapitel 1

Abbildung 1.1: Begriffe rund um SQL

Kapitel 2

Abbildung 2.1: Architektur eines (relationalen) Datenbanksystems

Abbildung 2.2: Die MySQL Workbench,

Abbildung 2.3: Der SQL Developer,

Abbildung 2.4: pgAdmin,

Kapitel 4

Abbildung 4.1: Beispiel eines ER-Diagramms (unvollständig)

Abbildung 4.2: ER-Diagramm mit Kardinalitäten

Abbildung 4.3: Eine 1:C-Beziehung

Abbildung 4.4: M:MC-Kadinalität

Kapitel 5

Abbildung 5.1: Die drei Kategorien von SQL-Befehlen

Abbildung 5.2: Hierarchische Struktur einer relationalen Datenbank

Abbildung 5.3: Abarbeitung eines SQL-Befehls (Beispiel SELECT)

Kapitel 6

Abbildung 6.1: Kategorien von SQL-Datentypen

Kapitel 8

Abbildung 8.1: Entitätstyp mit Primärschlüssel

Abbildung 8.2: 1:C-Beziehung

Abbildung 8.3: 1:M-Beziehung

Abbildung 8.4: 1:MC-Beziehung

Abbildung 8.5: MC:MC-Beziehung

Abbildung 8.6: ER-Diagramm zu Aufgabe 8.2

Kapitel 9

Abbildung 9.1: ER-Diagramm zum Beispiel

Abbildung 9.2: ER-Diagramm zu Aufgabe 1

Kapitel 12

Abbildung 12.1: Der SELECT-Befehl

Kapitel 13

Abbildung 13.1: Verwendung von SQL-Funktionen

Kapitel 14

Abbildung 14.1: Ausschnitt des ER-Diagramms für Beispiel 1

Abbildung 14.2: Ausschnitt des ER-Diagramms für Beispiel 2

Abbildung 14.3: Ausschnitt des ER-Diagramms für Beispiel 3

Kapitel 16

Abbildung 16.1: Mögliche Positionen für eine Subquery

Abbildung 16.2: Korrelierte Unterabfrage

Kapitel 17

Abbildung 17.1: Relationale Operatoren

Abbildung 17.2: ER-Diagramm für Vereine und Personen als Sponsoren

Abbildung 17.3: Sort-Merge Join

Abbildung 17.4: Hash Join

Kapitel 18

Abbildung 18.1: Anwendungsmöglichkeiten für XML und JSON

Abbildung 18.2: Visualisierung der XMLTABLE-Parameter

Kapitel 19

Abbildung 19.1: Ausführungsplan für rekursives SELECT, © PostgreSQL Global Dev. G...

Kapitel 20

Abbildung 20.1: Drei-Schichten-Architektur

Abbildung 20.2: View vs. Materialized View

Kapitel 21

Abbildung 21.1: Rekonstruktion einer Datenbank

Abbildung 21.2: SQL-Injection

Kapitel 22

Abbildung 22.1: Ausführungsplan grafisch © PostgreSQL Global Dev. Group

Abbildung 22.2: Ausführungsplan in Textform © PostgreSQL Global Dev. Group

Abbildung 22.3: Ausführungsplan nach MySQL

Abbildung 22.4: Beispielindex für eine Tabelle

Abbildung 22.5: Zugriff ohne und mit Index

Kapitel 23

Abbildung 23.1: Drei-Schichten-Architektur eines Datenbank-Anwendungsprogramms

Abbildung 23.2: Schnittstellenarchitektur mit ODBC und JDBC

Abbildung 23.3: Startbildschim xampp-control © Apache Friends

Abbildung 23.4: phpMyAdmin © phpMyAdmin Contributors

Abbildung 23.5: Eingabefenster für die Kundensuche

Abbildung 23.6: Ausgabefenster des PHP-Programms

Abbildung 23.7: SQL-Injection

Abbildung 23.8: Versuch von SQL-Injection bei Prepared Statements

Kapitel 24

Abbildung 24.1: Kommunikation zwischen Datenbank- und Anwendungsserver

Abbildung 24.2: Verlagerung von Programmlogik in das DBMS

Abbildung 24.3: Aufruf einer Stored Procedure

Abbildung 24.4: Trigger zu einer DML-Operation

Anhang A

Abbildung A.1: ER-Diagramm zu Aufgabe 4.1

Abbildung A.2: ER-Diagramm zu Aufgabe 4.2

Abbildung A.3: ER-Diagramm zu Aufgabe 4.3

Abbildung A.4: ER-Diagramm zu Aufgabe 4.4

Orientierungspunkte

Cover

Titelblatt

Impressum

Über den Autor

Inhaltsverzeichnis

Einleitung

Fangen Sie an zu lesen

Anhang A: Lösungen zu den Aufgaben

Anhang B: Reservierte Worte in SQL:2023

Literatur

Abbildungsverzeichnis

Stichwortverzeichnis

End User License Agreement

Seitenliste

1

2

3

4

7

8

9

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

51

52

53

54

55

56

57

59

60

61

62

63

64

65

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

117

118

119

120

121

122

123

124

125

126

127

128

129

131

132

133

134

135

136

137

138

139

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

307

308

309

310

311

312

313

314

315

316

317

318

319

320

321

322

323

324

325

326

327

328

329

330

331

332

333

334

335

336

337

338

339

341

342

343

345

346

347

348

349

350

351

352

Einleitung

Offensichtlich interessieren Sie sich für die Datenbanksprache Structured Query Language, kurz SQL, denn sonst hätten Sie dieses Buch nicht in die Hand genommen.

Sie besuchen eine Vorlesung oder einen Fortbildungskurs zu diesem Thema?

SQL ist Thema in Ihrer Ausbildung?

Sie wollen – beruflich oder privat – eine Datenbank aufbauen oder (müssen) in einem Datenbankprojekt mitarbeiten und der Zugriff auf die gespeicherten Daten gehört zu Ihrem Aufgabengebiet?

Oder Sie haben schon etwas von SQL als Standardsprache für den Zugriff auf relationale Datenbanken gehört und wollen etwas mehr darüber wissen?

Dann ist dieses Lehrbuch genau das Richtige für Sie! Der Inhalt basiert auf den Erfahrungen, die ich als Hochschullehrer über viele Jahre bei der Vermittlung des Datenbanklehrstoffs (und dazu gehört natürlich auch SQL) in Form von Vorlesungen und Praktika gesammelt habe.

Der Umgang mit SQL macht Spaß; den Lehrenden (mir jedenfalls) und den meisten Studierenden (das zeigen die Rückmeldungen). Warum? Das Thema »SQL« ist eine gute Mischung aus Theorie und Praxis. Sie können Ihr erworbenes Wissen frühzeitig anwenden und schrittweise vertiefen. Das schafft Erfolgserlebnisse … wenn Sie weiterlesen!

Über dieses Buch

Das Ziel dieses Lehrbuchs über die Datenbanksprache SQL ist es,

Ihnen zum einen genügend Wissen zu vermitteln, damit Sie im Studium, in der Ausbildung oder im Beruf bei diesem Thema kompetent mitreden oder eine Prüfung bestehen können, und

zum anderen Ihr Interesse zu wecken, sich weiterhin praktisch damit zu beschäftigen.

Es kann aber auch als Nachschlagewerk dienen, wenn Sie in Ihrem SQL-Projekt gerade mal nicht weiterkommen oder die genaue Syntax eines Befehls nicht parat haben.

Doch welchen Inhalt soll ein solches Buch haben? Was gehört alles dazu? Was sollte detailliert und was weniger genau behandelt und auf was kann verzichtet werden? Sie wollen ja schließlich keine 1000 Seiten lesen! Behandelt werden:

Etwas Datenbanktheorie (so viel wie nötig)

Die Erstellung von Tabellen

Die Abfrage von Datenbanken (ausführlich)

Die Verwaltung von Datenbanken

Die Arbeit mit Views

Die Optimierung von Datenbanken

Die prozedurale Programmierung mit SQL

Das hört sich alles ganz kompliziert und schwierig an? Keine Angst, Sie werden schrittweise an diese Themen herangeführt. Möglicherweise beunruhigt Sie aber auch, dass Sie programmieren und mit einem Datenbank-Managementsystem arbeiten sollen? Auch hier lässt Sie dieses Buch nicht im Regen stehen.

An dieser Stelle möchte ich nicht versäumen, mich bei allen zu bedanken, die zum Gelingen dieses Buches beigetragen haben. Erwähnen möchte ich dabei Frau Damaris Kriegs von Wiley-VCH, die mich verlagsseitig betreut hat, und meinen Kollegen Herrn Michael Brodersen, der das Manuskript kritisch unter die Lupe genommen hat.

An einigen Stellen gibt es Hinweise auf Datenbank-Managementsysteme.

Access

®

Microsoft Corporation

DB2

®

IBM Corporation

MySQL

®

Oracle Corporation

Oracle

®

Oracle Corporation

PostgreSQL

®

PostgreSQL Community Association of Canada

SQL Server

®

Microsoft Corporation

Weil es sich dabei um geschützte Namen handelt, ist das jeweilige Copyright des Herstellers zu beachten. Zu Beginn jedes Teils wird darauf nochmals explizit hingewiesen.

Wenn Sie mit MySQL, Oracle, PostgreSQL oder dem SQL Server arbeiten (wollen), sollten Sie die an einigen Stellen vorhandenen SQL-Implementierungshinweise und Tipps beachten!

Konventionen in diesem Buch

Bei Lehrbüchern über SQL ist Eindeutigkeit erforderlich und das geht leider nicht ohne einige Konventionen zur Syntax, das heißt der Schreibweise der einzelnen Befehle. Denn Sie müssen natürlich wissen, wie man korrekte Befehle und Abfragen für eine Datenbank formuliert. Da ist dann von Schlüsselworten, Bezeichnern oder Bedingungen die Rede. Aber Sie werden sich schnell an die zuerst ungewohnte neue Sprache gewöhnen, denn bei jedem neuen SQL-Befehl finden Sie folgendes Schema:

Formale Syntax-Definition

Erläuterung

Beispiele

Bei den Syntax-Definitionen ist Folgendes zu beachten:

SQL-Schlüsselworte wie SELECT oder CREATE werden immer in Großbuchstaben geschrieben.

In spitze Klammern < … > eingeschlossene Begriffe sind Platzhalter für frei wählbare Tabellenbezeichner, Attribute oder Ähnliches.

Optionale Teile werden in eckige Klammern [ …] eingeschlossen.

Alternativen werden in geschweifte Klammern { …} eingeschlossen und mit einem senkrechten Strich | voneinander getrennt.

Ein auf zwei geschweifte oder eckige Klammern folgender Stern bedeutet, dass das vorherige mehrfach wiederholt werden kann.

Aber jetzt klappen Sie das Buch bitte nicht gleich wieder zu! Das hört sich schlimmer an, als es ist. Jede Syntax-Definition wird durch Beispiele verdeutlicht. Und gerade, wenn Sie die genaue Syntax eines Befehls noch mal nachschlagen wollen, werden Sie das zu schätzen wissen.

Sie lesen Folgendes:

SELECT <Tabellenspalte> [, <Tabellenspalte>]* FROM <Tabelle>

Das bedeutet: Nach dem Schlüsselwort SELECT geben Sie eine oder, dann jeweils durch ein Komma getrennt, mehrere Spalten einer Tabelle an. Darauf folgt das Schlüsselwort FROM und danach der Name der Tabelle, die diese Spalten enthält. Damit können Sie sich ausgewählte Spalten einer Datenbanktabelle anzeigen lassen. Etwa:

SELECT Nachname FROM Kunden

oder

SELECT Nachname, Vorname, Geburtstag FROM Kunden

Ich erwähne das hier nur, damit Sie die Regeln im Bedarfsfall nochmals nachschlagen können. Übrigens heben sich Definitionen und Beispiele immer durch eine andere Schriftart vom normalen Text ab.

Am Ende der einzelnen Kapitel finden Sie häufig Übungsaufgaben mit Musterlösungen im Anhang. Diese Aufgaben dienen zur Überprüfung, ob Sie den Stoff eines Kapitels auch verstanden haben und anwenden können. Sie wissen ja: Übung macht den Meister.

Wenn Sie das jeweilige Kapitel aufmerksam studiert haben, sollten Sie diese problemlos lösen können. Da es oftmals mehrere Lösungsmöglichkeiten gibt, kann Ihre Lösung natürlich von der vorgeschlagenen abweichen. Vielleicht ist sie ja sogar besser.

Was Sie nicht lesen müssen

Eigentlich schade, wenn Sie sich diese Frage überhaupt stellen, denn ich finde, es lohnt sich, das ganze Buch durchzuarbeiten. Was Sie lesen oder nicht lesen müssen, hängt ganz von Ihren bereits vorhandenen, persönlichen SQL-Kenntnissen und Erwartungen ab. Das Buch ist modular aufgebaut. Sie könnten sich also auch – bei entsprechendem Vorwissen – einzelne Teile gezielt herauspicken, die Sie besonders interessieren.

Wenn Sie keine Datenbankanwendungen programmieren wollen, müssen Sie

Teil VI

, Prozedurale Programmierung mit SQL, nicht lesen. Obwohl ich persönlich glaube, dass Sie bei intensiverer Beschäftigung mit SQL um Trigger nicht herumkommen.

Wenn Sie als Nicht-Informatiker nur beim Modellieren einer Datenbank mitreden und den Informatikern die richtigen Fragen stellen wollen, brauchen Sie die

Teile IV

bis

VI

nicht unbedingt lesen. Zumindest nicht im ersten Durchlauf.

Wenn Sie nur auf eine bestehende Datenbank mit SQL zugreifen wollen, sind die

Teile II

und

VI

eher sekundär.

Allerdings lassen sich Querbezüge nicht immer vermeiden.

Törichte Annahmen über die Leser

Ich gehe davon aus, dass Sie dem Thema SQL ein gewisses Interesse entgegenbringen. Die meisten Leserinnen und Leser wissen wahrscheinlich schon etwas darüber oder haben eine intuitive, vage Vorstellung davon. Außerdem können Sie vermutlich schon ganz routiniert mit PCs beziehungsweise Laptops umgehen und zur Not auch Software installieren. Wenn Sie …

sich plötzlich beruflich mit SQL auseinandersetzen müssen,

eine Vorlesung zum Thema Datenbanksysteme besuchen,

sich über die Implementierung und den Zugriff auf Datenbanken informieren wollen, ohne gleich eine Promotion darüber anzustreben,

dann sollten Sie ruhig weiterlesen.

Sie wollen nur das Buch lesen und dann alles verstanden haben und sofort anwenden können? Das ist in der Tat eine törichte Annahme. Das Erlernen der Datenbanksprache SQL setzt praktisches Üben voraus. Am besten, Sie installieren eines der frei verfügbaren Datenbank-Managementsysteme und probieren die im Text vorkommenden Beispiele und Übungen praktisch aus. Nur durch Lesen eines Notenheftes lernen Sie schließlich auch nicht Klavier spielen.

Vielleicht werfen Sie auch einen Blick auf die Webseite zu diesem Buch beim Verlag Wiley-VCH. Unter www.wiley-vch.de/isbn9783527721900 beziehungsweise www.downloads.fuer-dummies.de finden Sie die Befehle zur Erstellung der Beispieldatenbank von Kapitel 9 und die Lösungen zu den Beispielen für SELECT-Befehle von Kapitel 25 im Top-Ten-Teil. Zusätzlich gibt es online noch einige weitere Beispiele zum Üben.

Eine weitere törichte Annahme ist in der Überschrift dieses Abschnitts versteckt. Natürlich sollen sich nicht nur männliche Leser angesprochen fühlen: Es sind immer alle Leser*innen gemeint. Wenn keine geschlechtsneutrale Formulierung möglich ist oder eine wiederholte Aufzählung aller Geschlechter den Lesefluss stört, wird hier das generische Maskulinum verwendet, das natürlich immer alle Geschlechter umfasst!

Wie dieses Buch aufgebaut ist

Dieses Buch hat sieben Teile. Hier erfahren Sie, worum es bei diesem Lehrbuch geht, welche Inhalte die einzelnen Teile haben und was von Ihnen, liebe Leser, dabei erwartet wird. Falls Sie jetzt noch nicht alle Fachbegriffe verstehen, lernen Sie diese sukzessive in den einzelnen Kapiteln.

Teil I: Die Grundlagen

Der erste Teil soll Sie für das Thema begeistern und neugierig machen. Hier erfahren Sie Grundlegendes über Datenbanksysteme, wozu man SQL dabei braucht und was diese Sprache auszeichnet. Sie erhalten Tipps, wie man bei der Modellierung einer relationalen Datenbank vorgeht und wie man gut modellierte Tabellen erkennen kann. Außerdem finden Sie hier einen Überblick über die Kategorien von SQL-Befehlen und wissen danach, wie SQL-Befehle abgearbeitet werden.

Teil II: Datenbanken erstellen

Die Entwicklung, also die Anforderungsanalyse, Modellierung und Implementierung einer Datenbank, ist ein komplexer Prozess. Sie lernen ihn hier kennen. Sie erhalten einen Überblick über die verschiedenen Datentypen von SQL, damit Sie Ihre Daten richtig klassifizieren können. Dabei handelt es sich um skalare Datentypen zur Speicherung einzelner Werte, aber auch um zusammengesetzte strukturierte und benutzerdefinierte Datentypen. Besonders wichtig ist der SQL-Befehl CREATE TABLE, um Tabellen zu erzeugen.

Sie können die Erstellung einer Datenbank vom Entity-Relationship-Diagramm über das Relationenschema bis zu den CREATE-TABLE-Befehlen an einem Beispiel nachvollziehen. Wenn Sie mit Datenbankprojekten zu tun haben, wird das einen Großteil Ihrer Zeit beanspruchen. Sie sollten die einzelnen Entwicklungsschritte gut beherrschen.

Teil III: Einfache SQL-Abfragen

Wenn Sie Ihre Datenbank erzeugt haben, wollen Sie natürlich auch darauf zugreifen, also Daten speichern, gelegentlich ändern oder löschen und vor allem abfragen. Die »Basics« dazu lernen Sie in diesem dritten Teil kennen.

Sie bekommen als Vorbereitung auf die SQL-Befehle INSERT, UPDATE, DELETE und SELECT einen Einblick, was Ausdrücke in SQL sind und welche Operatoren es gibt. Anschließend erfahren Sie, wie man Daten in Tabellen speichern, ändern und löschen kann, denn ohne Daten kann man nichts abfragen. Und natürlich lernen Sie den SQL-Befehl SELECT kennen; beginnend mit einfachen Befehlen zum Abfragen von Daten in einer Tabelle lernen Sie auch, wie man Tabellen einfach verknüpfen kann.

Die Übungen dazu ermöglichen es Ihnen festzustellen, ob Sie alles verstanden haben und auch selbstständig eigene Datenbankabfragen formulieren können.

Teil IV: SQL-Abfragen für Fortgeschrittene

Wenn Sie Teil III gemeistert haben, können Sie sich – vielleicht nach einer kleinen Pause – an komplexe SELECT-Abfragen heranwagen und Ihr Wissen vertiefen.

Sie erfahren, wie man Daten bei Abfragen gruppieren kann, lernen Unterabfragen sinnvoll einzusetzen und erfahren, wie man Funktionen bei Abfragen verwendet oder semistrukturierte Daten abfragt. Auch der JOIN-Operator zur Verknüpfung von Tabellen wird erläutert.

Gratulation, wenn Sie das verstanden haben und beherrschen. Ich bin da guter Dinge, denn die meisten Studierenden haben das geschafft.

Teil V: Datenbanken im Einsatz

Eine erzeugte Datenbank muss verwaltet und gepflegt werden. Sie müssen die Datensicherheit gewährleisten, festlegen, auf welche Teile der gesamten gespeicherten Daten die einzelnen Benutzer zugreifen dürfen, und für eine ausreichende Performance sorgen. Wenn das ein Thema für Sie ist, sind Sie hier richtig. Falls Sie die Absicht haben, einmal Datenbankadministrator zu werden, machen Sie hier ein dickes Ausrufezeichen.

In diesem Teil lernen Sie, was Benutzersichten sind und wie man sie einsetzen kann, erfahren etwas über die Definition von Benutzern und ihre Zugriffsrechte. Sie lernen das Thema »Optimierung« kennen und was das mit SQL zu tun hat. Denn oftmals sind die Benutzer einer relationalen Datenbank nicht mit den Antwortzeiten zufrieden, und dann kommen Sie als SQL-Spezialist ins Spiel.

Außerdem werden Sie mit dem Thema »SQL-Injection« konfrontiert.

Teil VI: Prozedurale Programmierung mit SQL

Sie wollen Programme schreiben, die auf relationale Datenbanken zugreifen? Dann sollten Sie hier aufpassen. Sie erfahren Grundlegendes über die Architektur einer Datenbankanwendung und lernen, wie man SQL-Anweisungen in andere Programmiersprachen einbetten kann; beispielsweise mit PDO.

Wenn Programmieren für Sie nicht infrage kommt, reicht das Kapitel über die prozeduralen Konzepte von SQL mit Triggern und Stored Procedures.

Teil VII: Der Top-Ten-Teil

Zum Schluss kommt der Top-Ten-Teil, in dem Sie das bisher Gelernte noch einmal anhand von zehn Beispielen überprüfen können. Wenn Sie bei den zehn Beispielen sagen: »Ist ja klar«, dann können Sie sich mit gutem Gewissen auf Ihr erstes/nächstes Datenbankprojekt stürzen.

Abschließend erhalten Sie zehn Tipps, was bei der Arbeit mit SQL zu beachten ist. Vielleicht hilft ein Blick hierauf, wenn Sie bei Ihrem SQL-Projekt gerade einmal nicht weiterwissen.

Symbole, die in diesem Buch verwendet werden

Immer, wenn besondere Aufmerksamkeit erforderlich ist, sehen Sie eines der folgenden Symbole (zwei haben Sie bereits kennen gelernt):

Kleiner Tipp gefällig? Die Beachtung dieses hilfreichen Hinweises macht Ihnen das Datenbankleben leichter. Vielleicht geht Ihnen dann ein Licht auf.

Hier wird ein Begriff genau erklärt. Das sollten Sie sich merken.

Wenn Sie dieses Symbol sehen, könnte daneben etwas stehen, das wirklich wichtig ist und nicht einfach überlesen werden sollte. Eine gute Stelle, um über das bisher Gelesene einmal nachzudenken.

Dieses Symbol weist auf Konventionen oder eine andere Stelle im Text hin.

Hier meldet sich der Techniker als freundlicher Lesebegleiter zu Wort und gibt beispielsweise einen Hinweis, wenn Sie mal nicht weiterkommen. Gelegentlich finden Sie hier auch einen Tipp für Insider, der über das Grundlagenwissen hinausgeht.

Das dürfte eigentlich klar sein.

Wie es weitergeht

Am besten, Sie werfen jetzt einmal einen Blick in das Inhaltsverzeichnis und überlegen, an welcher Stelle Sie mit dem Lesen beginnen möchten. Wenn Ihnen die einzelnen Kapitelüberschriften noch nicht viel sagen, fangen Sie einfach ganz klassisch und traditionell mit dem ersten Kapitel an.

Sie sollten aber nicht vergessen, gelegentlich persönliche Breakpoints zu setzen, um das bisher Gelesene zu reflektieren, praktisch auszuprobieren oder auch etwas ganz anderes zu machen – selbst wenn Sie das Thema gerade höchst spannend finden.

Viel Spaß beim Lesen und Lernen!

Teil I

Die Grundlagen

IN DIESEM TEIL …

erfahren Sie, wofür Datenbanken gut sind und warum man dabei SQL braucht,lernen Sie den Unterschied von Daten und Informationen kennen und wie man sie in einer relationalen Datenbank speichert,erfahren Sie, was das Besondere von SQL ist,erhalten Sie Tipps, wie man bei der Modellierung einer relationalen Datenbank vorgeht und wie man gut modellierte Tabellen erkennen kann,finden Sie einen Überblick über die Kategorien von SQL-Befehlen und wissen danach, wie SQL-Befehle abgearbeitet werden,werden die Namen SQL Server®, Microsoft Access®, IBM DB2®, PostgreSQL®, Oracle® und MySQL® für Datenbank-Managementsysteme verwendet, deren Rechteinhaber die Firmen Microsoft Corp., IBM Corp., die PostgreSQL Community Association of Canada beziehungsweise die Oracle Corp. sind. Die Rechte des jeweiligen Zeicheninhabers sind zu beachten.

Aber immer der Reihe nach …