O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

SQL für Dummies®

Book Description

Datenbanken sind das beste Werkzeug, um wichtige Informationen im Auge zu behalten. Mit SQL können die vorhandenen Daten strukturiert und zielsicher abgefragt werden. In "SQL für Dummies" macht Allen G. Taylor die Leser mit der Abfragesprache SQL und dem aktuellen Standard SQL:2003, der 2005 durch eine sorgfältige Einbindung von XML-Komponenten vervollständigt worden ist, auf verständliche und humorvolle Weise vertraut. Er beginnt mit dem notwendigen Grundlagenwissen für den Aufbau eines Datenbankmanagementsystems und den SQL-Hauptkomponenten, zeigt auf, wie man die Daten erstellt, ordnet und abfragt und SQL-Anweisungen in Programme einbindet. Zudem erklärt er, wie SQL mit XML (SQL/XML:2005) verknüpft wird, um eine Website mit einer Datenbank zu verbinden.Außerdem gibt es jede Menge Profiinformationen, wie man zum Beispiel Datenbanken und Daten schützen kann und Fehler lokalisiert und behebt.

Table of Contents

  1. Copyright
  2. Über den Autor
  3. Danksagung des Autors
  4. Über den Überarbeiter
  5. Einführung
    1. Über dieses Buch
    2. Wer sollte dieses Buch lesen
    3. Wie dieses Buch aufgebaut ist
      1. Teil I: Grundbegriffe
      2. Teil II: Datenbanken mit SQL erstellen
      3. Teil III: Daten speichern und abrufen
      4. Teil IV: Kontrollmechanismen
      5. Teil V: SQL in der Praxis
      6. Teil VI: SQL für Fortgeschrittene
      7. Teil VII: Der Top-Ten-Teil
      8. Teil VIII: Anhänge
    4. Symbole, die in diesem Buch verwendet werden
    5. Wie es weitergeht
  6. I. Grundbegriffe
    1. 1. Grundlagen relationaler Datenbanken
      1. 1.1. Die Übersicht behalten
      2. 1.2. Was ist eine Datenbank?
      3. 1.3. Datenbankgröße und -komplexität
      4. 1.4. Was ist ein Datenbankverwaltungssystem?
      5. 1.5. Flache Dateien
      6. 1.6. Datenbankmodelle
        1. 1.6.1. Das relationale Modell
        2. 1.6.2. Warum das relationale Modell besser ist
        3. 1.6.3. Komponenten einer relationalen Datenbank
        4. 1.6.4. Wer kommt zum Abendessen?
        5. 1.6.5. Sicht(weisen)
        6. 1.6.6. Schemata, Domänen und Einschränkungen
        7. 1.6.7. Schemata
        8. 1.6.8. Domänen
        9. 1.6.9. Einschränkungen
        10. 1.6.10. Das Objektmodell fordert das relationale Modell heraus
        11. 1.6.11. Das objektrelationale Modell
      7. 1.7. Überlegungen zum Datenbankentwurf
    2. 2. SQL-Grundlagen
      1. 2.1. Was SQL ist und was es nicht ist
      2. 2.2. Ein (sehr) kurzer historischer Überblick
      3. 2.3. SQL-Kommandos
      4. 2.4. Reservierte Wörter
      5. 2.5. Datentypen
        1. 2.5.1. Genaue Zahlen
        2. 2.5.2. Der Datentyp INTEGER
        3. 2.5.3. Der Datentyp SMALLINT
        4. 2.5.4. Der Datentyp BIGINT
      6. 2.6. Der Datentyp NUMERIC
      7. 2.7. Der Datentyp DECIMAL
        1. 2.7.1. Annähernd genaue Zahlen
      8. 2.8. Der Datentyp REAL
        1. 2.8.1. Der Datentyp DOUBLE PRECISION
        2. 2.8.2. Der Datentyp FLOAT
        3. 2.8.3. Zeichenfolgen
        4. 2.8.4. Der Datentyp CHARACTER
        5. 2.8.5. Der Datentyp CHARACTER VARYING
        6. 2.8.6. Der Datentyp CHARACTER LARGE OBJECT
        7. 2.8.7. Die Datentypen NATIONAL CHARACTER, NATIONAL CHARACTER VARYING und NATIONAL CHARACTER LARGE OBJECT
        8. 2.8.8. Boole'sche Werte
        9. 2.8.9. Datums- und Zeitwerte
        10. 2.8.10. Der Datentyp DATE
        11. 2.8.11. Der Datentyp TIME WITHOUT TIME ZONE
        12. 2.8.12. Der Datentyp TIMESTAMP WITHOUT TIME ZONE
        13. 2.8.13. Der Datentyp TIME WITH TIME ZONE
        14. 2.8.14. Der Datentyp TIMESTAMP WITH TIME ZONE
        15. 2.8.15. Intervalle
        16. 2.8.16. Der Datentyp XML
        17. 2.8.17. Der Datentyp ROW
        18. 2.8.18. Datentypen für Auflistungen
      9. 2.9. Der Datentyp ARRAY
      10. 2.10. Der Datentyp MULTISET
        1. 2.10.1. REF-Typen
        2. 2.10.2. Benutzerdefinierte Typen
        3. 2.10.3. Eindeutige Typen (DISTINCT)
        4. 2.10.4. Strukturierte Typen
        5. 2.10.5. Zusammenfassung der Datentypen
      11. 2.11. Nullwerte
      12. 2.12. Einschränkungen
      13. 2.13. SQL in einem Client/Server-System benutzen
        1. 2.13.1. Der Server
        2. 2.13.2. Was ist der Server?
        3. 2.13.3. Was macht der Server?
        4. 2.13.4. Der Client
        5. 2.13.5. Was ist der Client?
        6. 2.13.6. Was macht der Client?
      14. 2.14. SQL mit dem Internet oder einem Intranet benutzen
    3. 3. Die Komponenten von SQL
      1. 3.1. Data Definition Language
        1. 3.1.1. Wenn »Dann leg' mal los!« kein guter Rat ist
        2. 3.1.2. Tabellen erstellen
        3. 3.1.3. Sichten
        4. 3.1.4. Tabellen in Schemata zusammenfassen
        5. 3.1.5. Ordnung durch Kataloge
        6. 3.1.6. DDL-Anweisungen
      2. 3.2. Data Manipulation Language
        1. 3.2.1. Ausdrücke
        2. 3.2.2. Prädikate
        3. 3.2.3. Logische Verknüpfungen
        4. 3.2.4. Mengenfunktionen
        5. 3.2.5. Unterabfragen
      3. 3.3. DCL (Data Control Language)
        1. 3.3.1. Transaktionen
        2. 3.3.2. Benutzer und Rechte
        3. 3.3.3. Einschränkungen der referenziellen Integrität können Ihre Daten gefährden
        4. 3.3.4. Die Verantwortung für die Sicherheit delegieren
  7. II. Datenbanken mit SQL erstellen
    1. 4. Eine einfache Datenbankstruktur erstellen und verwalten
      1. 4.1. Eine einfache Datenbank mit einem RAD-Werkzeug erstellen
        1. 4.1.1. Entscheiden, was in die Datenbank gehört
        2. 4.1.2. Eine Tabelle in der Entwurfsansicht erstellen
        3. 4.1.3. Die Struktur einer Tabelle ändern
        4. 4.1.4. Einen Primärschlüssel definieren
        5. 4.1.5. Einen Index definieren
        6. 4.1.6. Eine Tabelle löschen
      2. 4.2. Das gleiche Beispiel mit SQLs DDL erstellen
        1. 4.2.1. SQL mit Microsoft Access nutzen
        2. 4.2.2. Eine Tabelle erstellen
        3. 4.2.3. Einen Index erstellen
        4. 4.2.4. Die Tabellenstruktur ändern
        5. 4.2.5. Eine Tabelle löschen
        6. 4.2.6. Einen Index löschen
      3. 4.3. Überlegungen zur Übertragbarkeit
    2. 5. Eine relationale Datenbank mit mehreren Tabellen erstellen
      1. 5.1. Die Datenbank entwerfen
        1. 5.1.1. Schritt 1: Objekte definieren
        2. 5.1.2. Schritt 2: Tabellen und Spalten identifizieren
        3. 5.1.3. Schritt 3: Tabellen definieren
        4. 5.1.4. Domänen, Zeichensätze, Sortierfolgen und Übersetzungstabellen
        5. 5.1.5. Schlüssel für den schnellen Zugriff
        6. 5.1.6. Primärschlüssel
        7. 5.1.7. Fremdschlüssel
      2. 5.2. Mit Indizes arbeiten
        1. 5.2.1. Was ist eigentlich ein Index?
        2. 5.2.2. Wozu ist ein Index gut?
        3. 5.2.3. Einen Index verwalten
      3. 5.3. Datenintegrität
        1. 5.3.1. Integrität von Entitäten
        2. 5.3.2. Integrität von Domänen
        3. 5.3.3. Referenzielle Integrität
        4. 5.3.4. Und gerade als Sie dachten, alles wäre sicher ...
        5. 5.3.5. Potenzielle Problembereiche
        6. 5.3.6. Einschränkungen
      4. 5.4. Die Datenbank normalisieren
        1. 5.4.1. Erste Normalform
        2. 5.4.2. Zweite Normalform
        3. 5.4.3. Dritte Normalform
        4. 5.4.4. Domain-Key Normalform (DK/NF)
        5. 5.4.5. Abnormale Formen
  8. III. Daten speichern und abrufen
    1. 6. Daten einer Datenbank bearbeiten
      1. 6.1. Daten abrufen
      2. 6.2. Eine Sicht erstellen
        1. 6.2.1. FROM-Tabellen
        2. 6.2.2. Mit einer Auswahlbedingung
        3. 6.2.3. Mit einem geänderten Attribut
      3. 6.3. Sichten aktualisieren
      4. 6.4. Neue Daten hinzufügen
        1. 6.4.1. Daten zeilenweise einfügen
        2. 6.4.2. Daten nur in ausgewählte Spalten einfügen
        3. 6.4.3. Zeilen blockweise in eine Tabelle einfügen
      5. 6.5. Vorhandene Daten aktualisieren
      6. 6.6. Daten übertragen
      7. 6.7. Überholte Daten löschen
    2. 7. Werte festlegen
      1. 7.1. Werte
        1. 7.1.1. Zeilenwerte
        2. 7.1.2. Literale
        3. 7.1.3. Variablen
        4. 7.1.4. Spezielle Variablen
        5. 7.1.5. Spaltenreferenzen
      2. 7.2. Wertausdrücke
        1. 7.2.1. Zeichenfolgen-Wertausdrücke
        2. 7.2.2. Numerische Wertausdrücke
        3. 7.2.3. Datums- und Zeit-Wertausdrücke
        4. 7.2.4. Intervall-Wertausdrücke
        5. 7.2.5. Bedingungswertausdrücke
      3. 7.3. Funktionen
        1. 7.3.1. Mit Mengenfunktionen summieren
        2. 7.3.2. Wertfunktionen
    3. 8. SQL-Wertausdrücke – fortgeschrittener Teil
      1. 8.1. CASE
        1. 8.1.1. CASE mit Suchbedingungen verwenden
        2. 8.1.2. CASE mit Werten verwenden
        3. 8.1.3. Ein Sonderfall: CASE – NULLIF
        4. 8.1.4. Ein weiterer Sonderfall: CASE – COALESCE
      2. 8.2. Umwandlungen von Datentypen mit CAST
        1. 8.2.1. CAST in SQL verwenden
        2. 8.2.2. CAST als Mittler zwischen SQL und Host-Sprachen
      3. 8.3. Datensatzwertausdrücke
    4. 9. Daten zielsicher finden
      1. 9.1. Modifizierende Klauseln
      2. 9.2. Die Klausel FROM
      3. 9.3. Die Klausel WHERE
        1. 9.3.1. Vergleichsprädikate
        2. 9.3.2. BETWEEN
        3. 9.3.3. IN und NOT IN
        4. 9.3.4. LIKE und NOT LIKE
        5. 9.3.5. SIMILAR
        6. 9.3.6. NULL
        7. 9.3.7. ALL, SOME, ANY
        8. 9.3.8. EXISTS
        9. 9.3.9. UNIQUE
        10. 9.3.10. DISTINCT
        11. 9.3.11. OVERLAPS
        12. 9.3.12. MATCH
        13. 9.3.13. Regeln der referenziellen Integrität und das Prädikat MATCH
      4. 9.4. Logische Verknüpfungen
        1. 9.4.1. AND
        2. 9.4.2. OR
        3. 9.4.3. NOT
      5. 9.5. Die Klausel GROUP BY
      6. 9.6. HAVING
      7. 9.7. ORDER BY
    5. 10. Relationale Operatoren
      1. 10.1. UNION
        1. 10.1.1. UNION ALL
        2. 10.1.2. UNION CORRESPONDING
      2. 10.2. INTERSECT
      3. 10.3. EXCEPT
      4. 10.4. Verknüpfungen
        1. 10.4.1. Die einfache Verknüpfung
        2. 10.4.2. Gleichheitsverknüpfung – Equi-Join
        3. 10.4.3. Kreuzverknüpfungen – Cross-Join
        4. 10.4.4. Natürliche Verknüpfungen – Natural-Join
        5. 10.4.5. Bedingte Verknüpfungen
        6. 10.4.6. Spaltennamenverknüpfungen
        7. 10.4.7. Innere Verknüpfungen – INNER JOIN
        8. 10.4.8. Äußere Verknüpfungen – OUTER JOIN
        9. 10.4.9. Vereinigungsverknüpfungen – Union Join
      5. 10.5. ON im Vergleich zu WHERE
    6. 11. Tief graben mit verschachtelten Abfragen
      1. 11.1. Was Unterabfragen erledigen
        1. 11.1.1. Verschachtelte Abfragen, die eine Zeilenmenge zurückgeben
        2. 11.1.2. Verschachtelte Abfragen, die einen einzelnen Wert zurückgeben
        3. 11.1.3. Die quantifizierenden Vergleichsoperatoren ALL, SOME und ANY
        4. 11.1.4. Verschachtelte Abfragen als Existenztest
        5. 11.1.5. Weitere korrelierte Unterabfragen
        6. 11.1.6. Die Anweisungen UPDATE, DELETE und INSERT
    7. 12. Rekursive Abfragen
      1. 12.1. Was ist Rekursion?
        1. 12.1.1. Houston, wir haben ein Problem
        2. 12.1.2. Scheitern ist keine Option
      2. 12.2. Was ist eine rekursive Abfrage?
      3. 12.3. Wo kann ich eine rekursive Abfrage anwenden?
        1. 12.3.1. Abfragen auf dem schwierigen Weg erstellen
        2. 12.3.2. Zeit mit einer rekursiven Abfrage sparen
      4. 12.4. Wo könnte ich eine rekursive Abfrage sonst noch einsetzen?
  9. IV. Kontrollmechanismen
    1. 13. Datenbanken schützen
      1. 13.1. Die Datenkontrollsprache von SQL
      2. 13.2. Zugriffsebenen für Benutzer
        1. 13.2.1. Der Datenbankadministrator
        2. 13.2.2. Besitzer von Datenbankobjekten
        3. 13.2.3. Die Öffentlichkeit
      3. 13.3. Rechte an Benutzer vergeben
        1. 13.3.1. Rollen
        2. 13.3.2. Daten einfügen
        3. 13.3.3. Daten lesen
        4. 13.3.4. Tabellendaten ändern
        5. 13.3.5. Tabellenzeilen löschen
        6. 13.3.6. Auf zusammengehörige Tabellen verweisen
        7. 13.3.7. Domänen, Zeichensätze, Sortierreihenfolgen und Übersetzungstabellen
        8. 13.3.8. Das Ausführen von SQL-Anweisungen bewirken
      4. 13.4. Das Recht zur Vergabe von Rechten übertragen
      5. 13.5. Rechte entziehen
      6. 13.6. Mit GRANT und REVOKE zusammen Zeit und Aufwand sparen
    2. 14. Daten schützen
      1. 14.1. Gefahren für die Datenintegrität
        1. 14.1.1. Plattforminstabilität
        2. 14.1.2. Geräteausfall
        3. 14.1.3. Gleichzeitiger Datenzugriff
      2. 14.2. Die Gefahr der Verfälschung von Daten reduzieren
        1. 14.2.1. Mit SQL-Transaktionen arbeiten
        2. 14.2.2. Die Standardtransaktion
        3. 14.2.3. Isolierungsebenen
        4. 14.2.4. Anweisungen mit implizitem Transaktionsbeginn
        5. 14.2.5. SET TRANSACTION
        6. 14.2.6. COMMIT
        7. 14.2.7. ROLLBACK
        8. 14.2.8. Datenbankobjekte sperren
        9. 14.2.9. Datensicherung
        10. 14.2.10. Speicherpunkte und Untertransaktionen
      3. 14.3. Einschränkungen innerhalb von Transaktionen
    3. 15. SQL in Anwendungen benutzen
      1. 15.1. SQL in einer Anwendung
        1. 15.1.1. Nach dem Sternchen Ausschau halten
        2. 15.1.2. Stärken und Schwächen von SQL
        3. 15.1.3. Stärken und Schwächen prozeduraler Sprachen
        4. 15.1.4. Probleme bei der Verbindung von SQL mit prozeduralen Sprachen
      2. 15.2. SQL in prozedurale Sprachen einbinden
        1. 15.2.1. Eingebettetes SQL
        2. 15.2.2. Die SQL-Modulsprache
        3. 15.2.3. Objektorientierte RAD-Werkzeuge
        4. 15.2.4. SQL mit Microsoft Access verwenden
  10. V. SQL in der Praxis
    1. 16. Datenzugriffe mit ODBC und JDBC
      1. 16.1. ODBC
        1. 16.1.1. Die ODBC-Schnittstelle
        2. 16.1.2. Die Komponenten von ODBC
      2. 16.2. ODBC in einer Client/Server-Umgebung
      3. 16.3. ODBC und das Internet
        1. 16.3.1. Server-Erweiterungen
        2. 16.3.2. Client-Erweiterungen
      4. 16.4. ODBC und Intranets
      5. 16.5. JDBC
    2. 17. SQL und XML
      1. 17.1. Was XML mit SQL zu tun hat
      2. 17.2. Der XML-Datentyp
        1. 17.2.1. Wann der XML-Datentyp verwendet werden sollte
        2. 17.2.2. Wann der Datentyp XML nicht verwendet werden sollte
      3. 17.3. SQL in XML und XML in SQL konvertieren
        1. 17.3.1. Zeichensätze konvertieren
        2. 17.3.2. Bezeichner konvertieren
        3. 17.3.3. Datentypen konvertieren
        4. 17.3.4. Tabellen konvertieren
        5. 17.3.5. Mit Nullwerten umgehen
        6. 17.3.6. Das XML-Schema erzeugen
      4. 17.4. SQL-Funktionen, die sich auf XML-Daten auswirken
        1. 17.4.1. XMLELEMENT
        2. 17.4.2. XMLFOREST
        3. 17.4.3. XMLCONCAT
        4. 17.4.4. XMLAGG
        5. 17.4.5. XMLCOMMENT
        6. 17.4.6. XMLPARSE
        7. 17.4.7. XMLPI
        8. 17.4.8. XMLQUERY
        9. 17.4.9. XMLCAST
      5. 17.5. Prädikate
        1. 17.5.1. DOCUMENT
        2. 17.5.2. CONTENT
        3. 17.5.3. XMLEXISTS
        4. 17.5.4. VALID
      6. 17.6. XML-Daten in SQL-Tabellen umwandeln
      7. 17.7. Nicht vordefinierte Datentypen in XML abbilden
        1. 17.7.1. Domänen
        2. 17.7.2. Spezifische benutzerdefinierte Datentypen
        3. 17.7.3. Zeilen
        4. 17.7.4. Array
        5. 17.7.5. Multiset
      8. 17.8. Die Hochzeit von SQL und XML
  11. VI. SQL für Fortgeschrittene
    1. 18. Cursors
      1. 18.1. Einen Cursor deklarieren
        1. 18.1.1. Der Abfrageausdruck
        2. 18.1.2. Die Klausel ORDER BY
        3. 18.1.3. Die Klausel FOR UPDATE
        4. 18.1.4. Sensitivität
        5. 18.1.5. Verschiebbarkeit
      2. 18.2. Einen Cursor öffnen
      3. 18.3. Daten aus einer einzelnen Zeile abrufen
        1. 18.3.1. Syntax
        2. 18.3.2. Die Orientierung eines verschiebbaren Cursors
        3. 18.3.3. Cursor-Zeilen löschen oder ändern
      4. 18.4. Einen Cursor schließen
    2. 19. Prozedurale Möglichkeiten mit dauerhaft gespeicherten Modulen schaffen
      1. 19.1. Zusammengesetzte Anweisungen
        1. 19.1.1. Atomarität
        2. 19.1.2. Variablen
        3. 19.1.3. Cursors
        4. 19.1.4. Zustand
        5. 19.1.5. Mit Zuständen umgehen
        6. 19.1.6. Zustände, die nicht verarbeitet werden
        7. 19.1.7. Zuweisung
      2. 19.2. Anweisungen zur Ablaufsteuerung
        1. 19.2.1. IF...THEN...ELSE...END IF
        2. 19.2.2. CASE...END CASE
        3. 19.2.3. LOOP...ENDLOOP
        4. 19.2.4. LEAVE
        5. 19.2.5. WHILE...DO...END WHILE
        6. 19.2.6. REPEAT...UNTIL...END REPEAT
        7. 19.2.7. FOR...DO...END FOR
        8. 19.2.8. ITERATE
      3. 19.3. Gespeicherte Prozeduren
      4. 19.4. Gespeicherte Funktionen
      5. 19.5. Rechte
      6. 19.6. Gespeicherte Module
    3. 20. Fehlerbehandlung
      1. 20.1. SQLSTATE
      2. 20.2. Die Klausel WHENEVER
      3. 20.3. Diagnosebereiche
        1. 20.3.1. Der Kopf des Diagnosebereichs
        2. 20.3.2. Der Detailbereich des Diagnosebereichs
        3. 20.3.3. Beispiel für Verstöße gegen Einschränkungen
        4. 20.3.4. Einer Tabelle Einschränkungen hinzufügen
        5. 20.3.5. Die Informationen auswerten, die von SQLSTATE zurückgegeben werden
      4. 20.4. Mit Ausnahmen umgehen
  12. VII. Der Top-Ten-Teil
    1. 21. Zehn häufige Fehler
      1. 21.1. Gehen Sie davon aus, dass die Kunden wissen, was sie brauchen
      2. 21.2. Lassen Sie den Umfang des Projekts außer Acht
      3. 21.3. Berücksichtigen Sie ausschließlich technische Faktoren
      4. 21.4. Bitten Sie auf keinen Fall um Rückmeldungen
      5. 21.5. Benutzen Sie immer Ihre liebste Entwicklungsumgebung
      6. 21.6. Benutzen Sie immer Ihre liebste Systemarchitektur
      7. 21.7. Entwerfen Sie Datenbanktabellen unabhängig voneinander
      8. 21.8. Vernachlässigen Sie die gemeinsame Überprüfung des Entwurfs
      9. 21.9. Übergehen Sie den Betatest
      10. 21.10. Erstellen Sie keine Dokumentation
    2. 22. Zehn Tipps für Abfragen
      1. 22.1. Prüfen Sie, ob die Datenbankstruktur korrekt ist
      2. 22.2. Führen Sie Ihre Abfrage erst mit einer Testdatenbank aus
      3. 22.3. Prüfen Sie Abfragen mit Verknüpfungen sehr genau
      4. 22.4. Prüfen Sie Abfragen mit einer Unterabfrage noch genauer
      5. 22.5. Daten mit GROUP BY summieren
      6. 22.6. Beachten Sie die Einschränkungen der Klausel GROUP BY
      7. 22.7. Benutzen Sie bei AND, OR und NOT Klammern
      8. 22.8. Überwachen Sie Abfragerechte
      9. 22.9. Sichern Sie Ihre Datenbanken regelmäßig
      10. 22.10. Bauen Sie eine Fehlerbehandlung ein
  13. VIII. Anhänge
    1. A. Reservierte Wörter
    2. B. Glossar