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