|
Liebe Leserin, lieber Leser, |
3 |
|
|
Auf einen Blick |
4 |
|
|
Inhalt |
6 |
|
|
Vorwort |
12 |
|
|
1 Einleitung |
16 |
|
|
1.1 Aufbau des Buches |
16 |
|
|
1.2 Das durchgehende Datenbankbeispiel |
17 |
|
|
1.3 Die SQL-Übungen |
18 |
|
|
1.4 Übungssoftware SQL-Teacher |
18 |
|
|
1.5 Notationen |
23 |
|
|
2 Datenbankentwurf |
24 |
|
|
2.1 Was ist SQL? |
24 |
|
|
2.2 Phasen der Datenbankentwicklung |
26 |
|
|
2.2.1 Datenmodell |
27 |
|
|
2.2.2 ER-Modell |
28 |
|
|
2.2.3 Grafische Notation von ER-Modellen |
31 |
|
|
2.2.4 Relationales Datenmodell |
33 |
|
|
2.2.5 Primärschlüssel |
34 |
|
|
2.2.6 Fremdschlüssel und referenzielle Integrität |
35 |
|
|
2.2.7 Optimierung des Datenmodells (Normalisierung) |
36 |
|
|
3 Datenbankdefinition |
44 |
|
|
3.1 Einführung |
44 |
|
|
3.2 Tabellen und Datentypen |
46 |
|
|
3.2.1 Text (String) |
48 |
|
|
3.2.2 Zahlen |
50 |
|
|
3.2.3 Zeiten |
52 |
|
|
3.2.4 Bits |
54 |
|
|
3.2.5 Logische Werte |
55 |
|
|
3.3 Tabellen anlegen (CREATE TABLE) |
55 |
|
|
3.4 Integritätsregeln |
56 |
|
|
3.4.1 Primärschlüssel (PRIMARY KEY) |
57 |
|
|
3.4.2 Fremdschlüssel (FOREIGN KEY) |
61 |
|
|
3.4.3 Doppelte Werte verhindern (UNIQUE) |
67 |
|
|
3.4.4 Nur bestimmte Werte zulassen (CHECK) |
68 |
|
|
3.4.5 Standardwerte (DEFAULT) |
72 |
|
|
3.5 Domänen |
74 |
|
|
3.5.1 Domänen erstellen (CREATE DOMAIN) |
74 |
|
|
3.5.2 Domänendefinition ändern (ALTER DOMAIN) |
79 |
|
|
3.5.3 Domänendefinition löschen (DROP DOMAIN) |
82 |
|
|
3.6 Tabellendefinitionen verändern (ALTER TABLE) |
83 |
|
|
3.7 Tabellen löschen (DROP TABLE) |
87 |
|
|
3.8 Indizes |
89 |
|
|
3.8.1 Was sind Indizes? |
90 |
|
|
3.8.2 Index bei der Tabellenanlage definieren |
91 |
|
|
3.8.3 Index nach Tabellendefinition definieren (CREATE INDEX) |
91 |
|
|
3.8.4 Wann sollte ein Index angelegt werden? |
92 |
|
|
3.8.5 Index löschen (DROP INDEX) |
93 |
|
|
4 Datensätze einfügen (INSERT INTO) |
96 |
|
|
5 Daten abfragen (SELECT) |
100 |
|
|
5.1 Aufbau des SELECT-Befehls |
103 |
|
|
5.1.1 Alle Spalten einer Tabelle ausgeben |
104 |
|
|
5.1.2 Spalten auswählen |
105 |
|
|
5.2 SELECT mit Bedingung (WHERE) |
107 |
|
|
5.2.1 Vergleichsoperatoren |
110 |
|
|
5.3 Ausgabe sortieren (ORDER BY) |
113 |
|
|
5.4 SELECT mit Gruppenbildung (GROUP BY) |
118 |
|
|
5.5 Mengenoperationen (UNION, INTERSECT, EXCEPT/MINUS) |
122 |
|
|
5.6 Funktionen für SELECT-Befehle |
127 |
|
|
5.6.1 Aggregatfunktionen |
127 |
|
|
5.6.2 Mathematische Funktionen |
132 |
|
|
5.6.3 Datumsfunktionen |
137 |
|
|
5.6.4 Typumwandlung |
138 |
|
|
5.6.5 Zeichenkettenfunktionen |
139 |
|
|
5.7 NULL-Werte in Abfragen |
141 |
|
|
5.8 INSERT mit SELECT |
142 |
|
|
6 Daten aus mehreren Tabellen abfragen (JOIN) |
144 |
|
|
6.1 Relationenalgebra |
147 |
|
|
6.2 Der innere Verbund (INNER JOIN) |
148 |
|
|
6.2.1 Varianten des INNER JOIN |
152 |
|
|
6.3 Der äußere Verbund (LEFT JOIN/RIGHT JOIN) |
154 |
|
|
7 Unterabfragen (Subselects) |
158 |
|
|
7.1 Unterabfragen, die eine Zeile zurückgeben |
160 |
|
|
7.2 Unterabfragen, die mehr als eine Zeile zurückgeben |
163 |
|
|
7.3 Regeln für die Verwendung von Unterabfragen |
168 |
|
|
8 Datensätze ändern (UPDATE) |
170 |
|
|
8.1 Unterabfragen in UPDATE-Befehlen |
173 |
|
|
9 Datensätze löschen (DELETE FROM) |
176 |
|
|
9.1 Unterabfragen in DELETE-Befehlen |
179 |
|
|
10 Datensichten |
182 |
|
|
10.1 Datensicht erstellen (CREATE VIEW) |
182 |
|
|
10.2 Verhalten von Datensichten beim Aktualisieren |
185 |
|
|
10.3 Aktualisieren mit Prüfoption |
188 |
|
|
10.4 Views ändern und löschen (DROP VIEW) |
189 |
|
|
11 Transaktionen |
192 |
|
|
11.1 Eigenschaften von Transaktionen |
193 |
|
|
11.1.1 Transaktionen mit SQL definieren |
196 |
|
|
11.2 Isolationsebenen bei Transaktionen |
199 |
|
|
12 Routinen und Trigger |
202 |
|
|
12.1 Funktionen und Prozeduren |
202 |
|
|
12.1.1 Prozeduren und Funktionen löschen |
206 |
|
|
12.2 Trigger (CREATE TRIGGER) |
206 |
|
|
13 Zeichensätze und Lokalisierung |
212 |
|
|
14 Benutzer, Privilegien und Sicherheit |
218 |
|
|
14.1 Überblick |
218 |
|
|
14.2 Benutzer und Rollen |
219 |
|
|
14.3 Benutzerprivilegien einrichten (GRANT) |
220 |
|
|
14.4 Benutzerrechte und Views |
223 |
|
|
14.5 Benutzerprivilegien löschen (REVOKE) |
224 |
|
|
15 Systemkatalog |
226 |
|
|
15.1 Aufbau |
226 |
|
|
15.2 Informationen des Systemkatalogs abfragen |
227 |
|
|
16 SQL/XML |
230 |
|
|
16.1 Was ist XML? |
230 |
|
|
16.2 Der XML-Datentyp |
233 |
|
|
16.3 XML-Funktionen |
234 |
|
|
16.3.1 xmlelement() |
234 |
|
|
16.3.2 xmlattributes() |
235 |
|
|
16.3.3 xmlroot() |
235 |
|
|
16.3.4 xmlconcat() |
235 |
|
|
16.3.5 xmlcomment() |
235 |
|
|
16.3.6 xmlparse() |
235 |
|
|
16.3.7 xmlforest() |
236 |
|
|
16.3.8 xmlagg() |
236 |
|
|
16.4 Export der Datenbank als XML |
236 |
|
|
17 Lösungen zu den Aufgaben |
238 |
|
|
17.1 Lösungen zu Kapitel 2 |
238 |
|
|
17.2 Lösungen zu Kapitel 3 |
240 |
|
|
17.3 Lösungen zu Kapitel 4 |
252 |
|
|
17.4 Lösungen zu Kapitel 5 |
253 |
|
|
17.5 Lösungen zu Kapitel 6 |
262 |
|
|
17.6 Lösungen zu Kapitel 7 |
265 |
|
|
17.7 Lösungen zu Kapitel 8 |
266 |
|
|
17.8 Lösungen zu Kapitel 9 |
267 |
|
|
17.9 Lösungen zu Kapitel 10 |
268 |
|
|
17.10 Lösungen zu Kapitel 12 |
270 |
|
|
17.11 Lösungen zu Kapitel 13 |
270 |
|
|
17.12 Lösungen zu Kapitel 14 |
271 |
|
|
17.13 Lösungen zu Kapitel 15 |
275 |
|
|
18 Beispieldatenbank |
276 |
|
|
19 SQL-Syntax gängiger Datenbanken |
284 |
|
|
19.1 Die ausgewählten Datenbanken |
284 |
|
|
19.2 Datentypen |
285 |
|
|
19.3 Tabellen anlegen, ändern, löschen |
289 |
|
|
19.4 Domänen anlegen, ändern, löschen |
296 |
|
|
19.5 Indizes anlegen, ändern, löschen |
298 |
|
|
19.5.1 Indizes anlegen (CREATE INDEX) |
298 |
|
|
19.6 Datensätze einfügen, ändern, löschen |
300 |
|
|
19.7 Daten abfragen (SELECT) |
302 |
|
|
19.8 Datensichten (VIEWS) |
310 |
|
|
19.9 Transaktionen |
311 |
|
|
19.10 Prozeduren/Funktionen/Trigger |
312 |
|
|
19.11 Benutzer, Privilegien, Sicherheit |
317 |
|
|
19.12 Unterstützung von XML in Datenbanken |
319 |
|
|
20 Inhalt der CD-ROM |
320 |
|