18,99 €
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
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 342
Veröffentlichungsjahr: 2025
SQL für Dummies
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.
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 DatenbanksystemenBefehl
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.
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.
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
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
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;
SQL stellt eine ganze Reihe Datentyp-abhängiger Funktionen bereit.
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)
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.
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
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«.
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
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
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
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
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
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!
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!
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.
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.
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!
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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 …
