Vorwort der Übersetzer 23
Vorwort 25
Einleitung 27
Danksagungen 29
Leitung 29
Entwickler 30
Nicht–Entwickler 30
1. Die Geschichte von PostgreSQL 31
1.1 Einführung 31
1.2 Die Universität von Berkeley, Kalifornien 31
1.3 Die Entwicklung verlässt Berkeley 32
1.4 Das weltweite Entwicklungsteam 33
1.5 Open–Source–Software 35
1.6 Zusammenfassung 35
2. Datenbankbefehle 37
2.1 Datenbank–Sitzung starten 37
2.2 Eine Beispielsitzung 38
2.3 Hilfe aufrufen 41
2.4 Sitzung beenden 41
2.5 Zusammenfassung 41
3. Grundlegende SQL–Befehle 43
3.1 Relationale Datenbanken 43
3.2 Tabellen erstellen 45
3.3 Daten mit INSERT hinzufügen 46
3.4 Daten mit SELECT anzeigen 48
3.5 Einzelne Zeilen mit WHERE auswählen 49
3.6 Daten mit DELETE löschen 50
3.7 Daten mit UPDATE ändern 51
3.8 Daten mit ORDER BY sortieren 52
3.9 Tabellen löschen 53
3.10 Zusammenfassung 53
4. Anfragen anpassen 55
4.1 Datentypen 55
4.2 Anführungszeichen im Text 57
4.3 NULL–Werte 57
4.4 DEFAULT–Werte 60
4.5 Spaltennamen 61
4.6 Kommentare 62
4.7 AND und OR 62
4.8 Wertebereiche 65
4.9 Vergleiche mit LIKE 66
4.10 Reguläre Ausdrücke 67
4.11 CASE–Klauseln 71
4.12 Distinkte Zeilen 72
4.13 Funktionen und Operatoren 73
4.14 SET, SHOW und RESET 76
4.15 Zusammenfassung 77
5. SQL–Aggregatfunktionen 79
5.1 Aggregatfunktionen 79
5.2 GROUP BY 82
5.3 HAVING 83
5.4 Tipps für Anfragen 84
5.5 Zusammenfassung 84
6. Verbunde von Tabellen 85
6.1 Referenzen auf Tabellen und Spalten 85
6.2 Verbunde von Tabellen 86
6.3 Erzeugung der Beispieltabellen 88
6.4 Durchführung von Verbundoperationen 90
6.5 Verbundoperationen auf drei und vier Tabellen 92
6.6 Weitere Verbundmöglichkeiten 94
6.7 Wahl eines Verbundschlüssels 96
6.8 Gleichverbunde 97
6.9 Unverbundene Tabellen 99
6.10 Aliasnamen für Tabellen und Selbstverbunde 99
6.11 Î*–Verbunde 101
6.12 Bestellung mehrerer Artikel 102
6.13 Primär– und Fremdschlüssel 104
6.14 Zusammenfassung 104
7. Zeilen nummerieren 107
7.1 Objektidentifier (OIDs) 107
7.2 Beschränkungen von Objektidentifiern 109
7.3 Sequenzen 110
7.4 Sequenzen erstellen 110
7.5 Sequenzen zur Nummerierung von Zeilen verwenden 112
7.6 Serieller Spaltentyp 113
7.7 Zeilen manuell nummerieren 114
7.8 Zusammenfassung 114
8. SELECT–Anweisungen kombinieren 115
8.1 Die Klauseln UNION, EXCEPT und INTERSECT 115
8.2 Unteranfragen 119
8.3 Äußerer Verbund 127
8.4 Unteranfragen in Anfragen ohne SELECT 128
8.5 UPDATE mit FROM 128
8.6 Daten mit SELECT einfügen 129
8.7 Tabellen mit SELECT erstellen 130
8.8 Zusammenfassung 131
9. Datentypen 133
9.1 Der Zweck von Datentypen 133
9.2 Installierte Typen 134
9.3 Typumwandlung mit CAST 138
9.4 Funktionen 138
9.5 Operatoren 142
9.6 Variablen 144
9.7 Arrays 144
9.8 Große Binärobjekte (BLOBs) 146
9.9 Zusammenfassung 147
10. Transaktionen und Sperren 149
10.1 Transaktionen 149
10.2 Transaktionen mit mehreren Anweisungen 150
10.3 Sichtbarkeit abgeschlossener Transaktionen 152
10.4 Die Isolationsgrade READ COMMITTED und SERIALIZABLE 153
10.5 Sperren 155
10.6 Deadlocks 157
10.7 Zusammenfassung 158
11. Performanz 159
11.1 Indexe 159
11.2 Eindeutige Indexe 161
11.3 CLUSTER 161
11.4 VACUUM 162
11.5 VACUUM ANALYZE 162
11.6 EXPLAIN 163
11.7 Zusammenfassung 165
12. Ergebniskontrolle 167
12.1 LIMIT 167
12.2 Cursor 168
12.3 Zusammenfassung 169
13. Tabellenverwaltung 171
13.1 Temporäre Tabellen 171
13.2 ALTER TABLE 173
13.3 GRANT und REVOKE 174
13.4 Vererbung 174
13.5 Sichten 177
13.6 Regeln 178
13.7 LISTEN und NOTIFY 182
13.8 Zusammenfassung 182
14. Integritätsbedingungen 183
14.1 NOT NULL 183
14.2 UNIQUE 184
14.3 PRIMARY KEY 185
14.4 Fremdschlüssel/REFERENCES 186
14.5 CHECK 193
14.6 Zusammenfassung 194
15. Daten im– und exportieren 195
15.1 Verwendung von COPY 195
15.2 Dateiformat für COPY 196
15.3 Begrenzungszeichen 197
15.4 COPY ohne Dateien 198
15.5 Backslash–Zeichen und NULL–Werte 199
15.6 Tipps zu COPY 200
15.7 Zusammenfassung 201
16. Anfragewerkzeuge für Datenbanken 203
16.1 Psql 203
16.2 Pgaccess 211
16.3 Zusammenfassung 212
17. Programmierschnittstellen 213
17.1 C (libpq) 214
17.2 Pgeasy (libpgeasy) 217
17.3 Embedded C (ecpg) 218
17.4 C++(libpq++ 219
17.5 Kompilieren von Programmen 220
17.6 Zuweisungen an Programmvariablen 221
17.7 ODBC 222
17.8 Java (JDBC) 222
17.9 Skriptsprachen 224
17.10 Perl 224
17.11 Tcl/Tk (pgtclsh/pgtksh) 225
17.12 Python 226
17.13 PHP 226
17.14 Installation von Skriptsprachen 228
17.15 Zusammenfassung 228
18. Funktionen und Trigger 229
18.1 Funktionen 229
18.2 SQL–Funktionen 230
18.3 Pl/pgsql–Funktionen 234
18.4 Trigger 240
18.5 Zusammenfassung 242
19. Erweiterung von PostgreSQL mit C 243
19.1 C–Code schreiben 243
19.2 C–Code kompilieren 244
19.3 Neue Funktionen registrieren 245
19.4 Erzeugung von Operatoren, Typen und Aggregatfunktionen 245
19.5 Zusammenfassung 246
20. Administration 247
20.1 Dateien 247
20.2 Anlegen neuer Benutzer 247
20.3 Anlegen von Datenbanken 249
20.4 Konfiguration des Zugriffs 250
20.5 Sichern und Wiederherstellen 252
20.6 Starten und Herunterfahren des Servers 253
20.7 Überwachung 254
20.8 Performanz 255
20.9 Systemtabellen 256
20.10 Internationalisierung 257
20.11 Aktualisierung 258
20.12 Zusammenfassung 258
A. Weitere Ressourcen 259
A.1 Unterstützung durch Mailing–Listen 259
A.2 Mitgelieferte Dokumentation 259
A.3 Kommerzieller Support 259
A.4 Änderungen am Quellcode 259
A.5 Häufig gestellte Fragen (FAQs) 260
B.1 Installation 285
B.2 PostgreSQL–Distributionen 285
B.3 Einrichten des PostgreSQL–Benutzers 285
B.4 Konfiguration 285
B.5 Kompilieren 286
B.6 Installation 286
B.7 Initialisierung 286
B.8 Starten des Servers 286
B.9 Anlegen einer Datenbank 286
C. PostgreSQL–eigene Merkmale 287
D. Referenzhandbuch 289
D.1 ABORT 289
D.2 ALTER GROUP 290
D.3 ALTER TABLE 291
D.4 ALTER USER 295
D.5 BEGIN 296
D.6 CHECKPOINT 298
D.7 CLOSE 299
D.8 CLUSTER 300
D.9 COMMENT 302
D.0 COMMIT 304
D.11 COPY 305
D.12 CREATE AGGREGATE 312
D.13 CREATE CONSTRAINT TRIGGER 315
D.14 CREATE DATABASE 316
D.15 CREATE FUNCTION 319
D.16 CREATE GROUP 324
D.17 CREATE INDEX 325
D.18 CREATE LANGUAGE 328
D.19 CREATE OPERATOR 333
D.20 CREATE RULE 338
D.21 CREATE SEQUENCE 340
D.22 CREATE TABLE 344
D.23 CREATE TABLE AS 364
D.24 CREATE TRIGGER 365
D.25 CREATE TYPE 367
D.26 CREATE USER 371
D.27 CREATE VIEW 374
D.28 createdb 376
D.29 createlang 378
D.30 createuser 380
D.31 DECLARE 382
D.32 DELETE 385
D.33 DROP AGGREGATE 386
D.34 DROP DATABASE 388
D.35 DROP FUNCTION 389
D.36 DROP GROUP 391
D.37 DROP INDEX 392
D.38 DROP LANGUAGE 393
D.39 DROP OPERATOR 394
D.40 DROP RULE 396
D.41 DROP SEQUENCE 397
D.42 DROP TABLE 398
D.43 DROP TRIGGER 399
D.44 DROP TYPE 400
D.45 DROP USER 402
D.46 DROP VIEW 403
D.47 dropdb 404
D.48 droplang 406
D.49 dropuser 407
D.50 ecpg 409
D.51 END 413
D.52 EXPLAIN 414
D.53 FETCH 417
D.54 GRANT 420
D.55 initdb 424
D.56 initlocation 426
D.57 INSERT 427
D.58 ipcclean 429
D.59 LISTEN 430
D.60 LOAD 431
D.61 LOCK 433
D.62 MOVE 437
D.63 NOTIFY 438
D.64 pgaccess 441
D.65 pgadmin 443
D.66 pg_config 444
D.67 pg_ctl 445
D.68 pg_dump 449
D.69 pg_dumpall 454
D.70 pg_passwd 456
D.71 pg_restore 457
D.72 pgtclsh 463
D.73 pgtksh 463
D.74 postgres 464
D.75 postmaster 467
D.76 psql 472
D.77 REINDEX 498
D.78 RESET 499
D.79 REVOKE 500
D.80 ROLLBACK 503
D.81 SELECT 504
D.82 SELECT INTO 517
D.83 SET 519
D.84 SET CONSTRAINTS 523
D.85 SET TRANSACTION 523
D.86 SHOW 525
D.87 TRUNCATE 526
D.88 UNLISTEN 526
D.89 UPDATE 528
D.90 VACUUM 530
D.91 vacuumdb 532
E. Literatur 535
F. Index 537