Michael Laube arbeitet im Bereich Logistik eines öffentlichen Auftraggebers. Zu seinen täglichen Aufgaben zählt es, Produktstammdaten zu verarbeiten und unterschiedliche Anforderungen im Bereich der Informatik zu koordinieren und umzusetzen. Er nutzt relationale Datenbanken und die Abfragesprache SQL, um die Produktstammdaten aufzubereiten und Anwendern zur Verfügung zu stellen. Außerdem entwickelt er als Sun Certified Java Programmer und Sun Certified Web Component Developer unternehmensweite Anwendungen.
1. Grundlagen kennenlernen und verstehen ... 21
1.1 ... Die Tabelle als zentrales Element ... 21
1.2 ... Eine kleine Historie von SQL ... 23
1.3 ... Datenbanksysteme ... 24
1.4 ... SQL -- ein Standard und seine Umsetzung ... 25
1.5 ... Zu diesem Buch ... 27
1.6 ... MySQL unter Windows installieren ... 28
1.7 ... Die MySQL-Übungsdatenbank anlegen ... 36
1.8 ... Eine erste Abfrage an die Datenbank senden ... 39
1.9 ... Kommentarfunktion ... 42
2. Los geht's: Die Grundfunktionen der Tabellenabfrage (SELECT) ... 47
2.1 ... Mit einer SELECT-Anweisung Tabellen abfragen ... 47
2.2 ... Zeilen in einer Abfrage mit WHERE filtern ... 51
2.3 ... Filterbedingungen mit AND (NOT) und OR (NOT) logisch verknüpfen ... 91
2.4 ... Ergebniszeilen einer SELECT-Anweisung einschränken ... 109
2.5 ... Datensätze sortiert abfragen ... 111
2.6 ... Konstanten in die Spaltenauswahlliste aufnehmen ... 124
2.7 ... Spalten einen Alias zuordnen ... 127
2.8 ... Gleiche Ergebniszeilen ausschließen (DISTINCT) ... 131
3. Zeilen einfügen (INSERT), ändern (UPDATE) und löschen (DELETE, TRUNCATE) ... 135
3.1 ... Zeilen mit einer INSERT-Anweisung einfügen ... 135
3.2 ... Zeilen mit einer UPDATE-Anweisung ändern ... 145
3.3 ... Zeilen mit einer DELETE-Anweisung löschen ... 156
3.4 ... Alle Zeilen einer Tabelle mit einer TRUNCATE-Anweisung löschen ... 161
4. Tabellen anlegen (CREATE TABLE) ... 165
4.1 ... Datentypen ... 165
4.2 ... Datentypen umwandeln ... 179
4.3 ... Explizite und implizite Typkonvertierung ... 180
4.4 ... Einfache Tabellen mit CREATE TABLE erstellen ... 187
4.5 ... Spalten Einschränkungen (CONSTRAINTS) zuordnen ... 199
4.6 ... Spalten auf Tabellenebene Einschränkungen (CONSTRAINT) zuordnen ... 214
5. Mengenoperationen anwenden ... 229
5.1 ... Mengenoperationen auf Ergebnistabellen anwenden ... 229
5.2 ... Eine Vereinigungsmenge bilden (UNION) ... 236
5.3 ... Die Schnittmenge von Ergebnistabellen bilden (INTERSECT) ... 245
5.4 ... Eine Differenzmenge aus Ergebnistabellen bilden (EXCEPT) ... 250
5.5 ... Mengenoperationen in Kombination mit einer WHERE-Klausel verwenden ... 253
5.6 ... Vereinigungsmengen in Kombination mit einer ORDER BY-Klausel ... 255
6. Benutzer, Rollen und ihre Berechtigungen ... 259
6.1 ... Benutzer anlegen (CREATE USER) ... 260
6.2 ... Benutzer entfernen ... 261
6.3 ... Eine Verbindung für einen Datenbankbenutzer erstellen ... 262
6.4 ... Berechtigungen verwalten ... 268
6.5 ... Mit Rollen Berechtigungen zuordnen ... 270
6.6 ... Übungen ... 273
7. Datenbanken modellieren ... 279
7.1 ... Anforderungskatalog ... 279
7.2 ... Entitäten identifizieren und modellhaft abbilden ... 280
7.3 ... Beziehungen zwischen Entitäten festlegen ... 287
7.4 ... Datenmodelle in der UML-Notation darstellen ... 302
7.5 ... Übungen ... 305
8. Datenmodelle optimieren (Normalisierung) ... 309
8.1 ... Redundanzen erkennen ... 309
8.2 ... Die 1. Normalform anwenden ... 312
8.3 ... Die 2. Normalform anwenden ... 314
8.4 ... Die 3. Normalform anwenden ... 316
8.5 ... Denormalisierung ... 318
8.6 ... Übungen ... 320
9. Datenmodelle in Tabellen überführen ... 323
9.1 ... Die Ausbildungsdatenbank anlegen ... 323
9.2 ... Tabellen mit Beziehungen zu anderen Tabellen erstellen ... 325
9.3 ... Übung ... 332
9.4 ... Die referenzielle Integrität verstehen ... 334
10. Operationen auf Tabellen in Beziehungen anwenden ... 341
10.1 ... Zeilen in Tabellen einfügen, die in Beziehung zueinander stehen ... 341
10.2 ... Zeilen aus Tabellen, die in Beziehung stehen, mit JOIN verbunden abfragen ... 351
10.3 ... Beziehungen (Schlüsselbeziehungen) ändern ... 388
10.4 ... Beziehungen (Schlüsselbeziehungen) aufheben oder löschen ... 399
11. Transaktionen ... 411
11.1 ... Forderungen an relationale Datenbanksysteme ... 412
11.2 ... Transaktionen verstehen ... 414
11.3 ... Übungen ... 421
12. Tabellenstrukturen verändern ... 423
12.1 ... Eine Tabelle umbenennen ... 423
12.2 ... Spalten einer Tabelle ändern ... 425
12.3 ... Spalten hinzufügen und entfernen ... 438
12.4 ... Beziehungen zwischen Tabellen herstellen und entfernen ... 440
12.5 ... Übungen ... 443
13. Mit SQL rechnen ... 451
13.1 ... Spaltenwerte addieren ... 452
13.2 ... Spaltenwerte subtrahieren ... 454
13.3 ... Spaltenwerte multiplizieren ... 455
13.4 ... Spaltenwerte dividieren ... 455
13.5 ... Den Restwert einer Division von Spaltenwerten berechnen ... 456
13.6 ... Nach dem Ergebnis einer Berechnung filtern ... 457
13.7 ... Nach dem Ergebnis einer Berechnung sortieren lassen ... 458
13.8 ... Übungen ... 459
14. Skalarfunktionen anwenden ... 463
14.1 ... Funktionen für Textwerte ... 464
14.2 ... Funktionen für Zahlenwerte ... 476
14.3 ... Verschachtelte Funktionsaufrufe ... 482
15. Bedingungslogik ... 487
15.1 ... Die CASE-Klausel ... 487
15.2 ... Bedingungslogik in einer Spaltenauswahlliste einer SELECT-Anweisung anwenden ... 488
15.3 ... Bedingungslogik in einer ORDER BY-Klausel anwenden ... 490
15.4 ... Übungen ... 492
16. Mit Zeit und Datum arbeiten ... 495
16.1 ... Datumsformate ... 496
16.2 ... Skalarfunktionen für Zeit- und Datumsangaben in SQL nutzen ... 496
16.3 ... Zeit- und Datumsangaben formatieren ... 499
16.4 ... Datumsangaben extrahieren (EXTRACT) ... 515
16.5 ... Mit Datumsangaben rechnen ... 520
17. Spaltenwerte gruppieren (GROUP BY) ... 529
17.1 ... Die Aggregatfunktion COUNT anwenden ... 530
17.2 ... Die Aggregatfunktion SUM anwenden ... 535
17.3 ... Die Aggregatfunktion AVG anwenden ... 537
17.4 ... Die Aggregatfunktion MAX anwenden ... 539
17.5 ... NULL-Werte berücksichtigen ... 541
17.6 ... Nach aggregierten Werten einer Gruppierung filtern (HAVING) ... 545
17.7 ... Nach zwei oder mehr Spalten gruppieren ... 548
18. Mächtiges Werkzeug: Die Unterabfragen (Subqueries) ... 553
18.1 ... Unterabfragen, die in Korrelation zueinander stehen ... 554
18.2 ... Unterabfragen, die nicht in Korrelation zueinander stehen ... 560
18.3 ... Vergleichsoperatoren auf Unterabfragen mit ANY, SOME und ALL anwenden ... 566
18.4 ... Auf die Existenz von Ergebniszeilen aus Unterabfragen prüfen (EXISTS) ... 571
19. Views: Abfragen in virtuellen Tabellen speichern ... 575
19.1 ... Einfache Views anlegen ... 576
19.2 ... Views und ORDER BY ... 581
19.3 ... INSERT, UPDATE und DELETE auf Views anwenden ... 584
19.4 ... Views entfernen oder ersetzen ... 596
20. Abfragen mit einem Index optimieren ... 599
20.1 ... Einführung ... 599
20.2 ... Syntax: Index erstellen ... 602
20.3 ... Eine Tabelle mit vielen Zeilen generieren ... 602
20.4 ... Einen Index für eine Tabelle anlegen ... 604
20.5 ... Einen Index über mehrere Spalten anlegen ... 606
20.6 ... Den Index einer Tabelle löschen ... 609
20.7 ... Fremdschlüsselspalten indexieren ... 609
20.8 ... Übungen ... 613
21. Skalarfunktionen entwickeln ... 617
21.1 ... Funktionen mit einem Rückgabewert erstellen ... 618
21.2 ... Funktionen mit Parameter entwickeln ... 623
21.3 ... Funktionen entfernen ... 627
21.4 ... Übungen ... 628
22. Prozeduren entwickeln ... 631
22.1 ... Prozeduren ausführen ... 631
22.2 ... Prozeduren anlegen ... 632
22.3 ... Übung ... 636
Index ... 639