E-Book, Deutsch, 1089 Seiten
Reihe: Rheinwerk Computing
Sieben Oracle SQL
4. Auflage 2025
ISBN: 978-3-367-10589-2
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
Das umfassende Handbuch
E-Book, Deutsch, 1089 Seiten
Reihe: Rheinwerk Computing
ISBN: 978-3-367-10589-2
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
Wenn Sie sich professionell mit Oracle beschäftigen, sind umfassende Kenntnisse des entsprechenden SQL-Dialekts unverzichtbar. Jürgen Sieben, vielen bereits bekannt durch seine Bücher zu Oracle PL/SQL und Oracle APEX, hat nun auch sein Buch zu Oracle SQL aktualisiert. Er zeigt Ihnen darin, wie Oracle und SQL zusammenspielen und welche Strategien Sie nutzen können, um Daten in der Datenbank zu speichern, zu analysieren oder auch zu löschen. Die vierte Auflage berücksichtigt die umfassenden Erleichterungen und Syntaxänderung der Datenbankversion 23ai und gibt auch erfahrenen Anwendern einen profunden Einstieg in die verbesserten Möglichkeiten der Sprache SQL.
Aus dem Inhalt:
- Konzept einer relationalen Datenbank
- Grundlagen: Auswahl und Projektion
- Daten aus mehreren Tabellen lesen: Joins
- Zeilenfunktionen, Gruppenfunktionen, analytische Funktionen
- Unterabfragen
- Datenmanipulation
- Views, Tabellen und Indizes erstellen
- Einführung in die Rechteverwaltung von Oracle
- Hierarchische Abfragen und XML-Abfragen
- Die Model-Klausel
- Row Pattern Matching
- Pivotierung und Abfragetabellen
- Arbeit mit großen Datenstrukturen
- Performanzoptimierung von SQL-Abfragen
- Normalisierung von Datenmodellen
- Häufige Fehler der Datenmodellierung
- Parameter verwalten
- Multilinguale Daten
Jürgen Sieben ist inhabender Geschäftsführer der ConDeS GmbH. Er beschäftigt sich mit der Entwicklung und Parametrierung von Software, Computerberatung und Systemanalyse für namhafte Kunden wie T-Mobile und Metro AG. Zudem schult er Datenbanktechnologien, z. B. alle relevanten Oracle-Bereiche (Einführung, SQL, PL/SQL, Administration, Performance, Backup & Recovery, Datawarehousing etc.). Seit 2008 ist er Dozent an der Hochschule der in Medien Stuttgart.
Autoren/Hrsg.
Weitere Infos & Material
1. Materialien zum Buch ... 23 1. Einführung ... 25 1.1 ... Für wen ist dieses Buch geschrieben? ... 25 1.2 ... Aufbau des Buches ... 26 1.3 ... Anmerkung zur vierten Auflage ... 35 1.4 ... Anmerkung zur dritten Auflage ... 36 1.5 ... Anmerkung zur zweiten Auflage ... 37 1.6 ... Danksagung ... 38
TEIL I. Einführung und Grundlagen ... 39 2. Verwendete Werkzeuge und Skripte ... 41 2.1 ... Aufsetzen einer Beispieldatenbank ... 41 2.2 ... SQL Developer ... 44 2.3 ... Die Datenbankbenutzer ... 49 2.4 ... Online-Dokumentation und weiterführende Literatur ... 50 3. Konzept einer relationalen Datenbank ... 53 3.1 ... Die Idee der relationalen Speicherung ... 53 3.2 ... SQL -- die »Lingua franca« der Datenbank ... 70 3.3 ... Analyse vorhandener Datenmodelle ... 78
TEIL II. Die SELECT-Anweisung ... 85 4. Grundlagen: Auswahl und Projektion ... 87 4.1 ... Projektion ... 87 4.2 ... Auswahl ... 102 4.3 ... Sortieren von Zeilenmengen ... 116 4.4 ... Fallunterscheidungen ... 120 4.5 ... Die Klausel ROW LIMITING ... 128 4.6 ... Pseudospalten ... 131 4.7 ... Kommentare ... 137 4.8 ... Der NULL-Wert ... 139 4.9 ... Übungen ... 146 5. Daten aus mehreren Tabellen lesen: Joins ... 147 5.1 ... Einführung in Joins ... 148 5.2 ... Inner Join ... 149 5.3 ... Outer Join ... 160 5.4 ... Anti-Join, Semi-Join, Self-Join und Natural Join ... 169 5.5 ... Mengenoperationen mit UNION, MINUS und INTERSECT ... 175 5.6 ... Übungen ... 182 5.7 ... Zusatz: Weiterführende Join-Konzepte ... 183 6. Zeilenfunktionen ... 191 6.1 ... Grundsätzliches zu Funktionen ... 191 6.2 ... Zeichenfunktionen ... 195 6.3 ... Datumsfunktionen ... 219 6.4 ... Mathematische Funktionen ... 239 6.5 ... Allgemeine Funktionen ... 255 6.6 ... Eigene Funktionen erstellen: Berechnung der Fakultät ... 274 7. Gruppenfunktionen ... 279 7.1 ... Die Standardgruppenfunktionen ... 280 7.2 ... Gruppierung von Gruppenfunktionen ... 285 7.3 ... Spezielle Gruppenfunktionen ... 300 7.4 ... Wenn ungefähr ausreicht ... 308 7.5 ... Übungen ... 309 8. Unterabfragen ... 311 8.1 ... Die Unterabfrage in der WHERE-Klausel ... 311 8.2 ... Die Unterabfrage in der FROM-Klausel (Inner View) ... 322 8.3 ... Unterabfragen und Joins ... 329 8.4 ... Funktionen in der WITH-Klausel ... 334 8.5 ... Übungen ... 336 9. Analytische Funktionen ... 337 9.1 ... Die Idee der analytischen Funktionen ... 337 9.2 ... Gruppenfunktionen als analytische Funktionen ... 343 9.3 ... Analytische Rangfunktionen ... 354 9.4 ... Zusammenfassung ... 370 9.5 ... Übungen ... 371
TEIL III. Datenmanipulation und Erzeugung von Datenbankobjekten ... 373
10. Datenmanipulation ... 375 10.1 ... Die INSERT-Anweisung ... 376 10.2 ... Die UPDATE-Anweisung ... 382 10.3 ... Die DELETE-Anweisung ... 389 10.4 ... Die MERGE-Anweisung ... 390 10.5 ... Exkurs: Flashback ... 401 10.6 ... Sequenzen und Trigger ... 403 10.7 ... Ihr Sicherheitsnetz -- die Transaktion ... 409 10.8 ... Fehlerbehandlung während der Datenmanipulation ... 412 10.9 ... Multi-Table-Insert ... 420
11. Views erstellen ... 429 11.1 ... »Normale« Views ... 429 11.2 ... Einsatzbereiche von Views ... 440 11.3 ... Wer sollte Views verwenden? ... 445 11.4 ... Materialized View ... 447
12. Tabellen erstellen ... 463 12.1 ... Einfache Tabellen erstellen ... 463 12.2 ... Datentypen ... 480 12.3 ... Domänen ... 493 12.4 ... Annotationen und Kommentare ... 504 12.5 ... Weitere Tabellentypen ... 507 12.6 ... Erweiterung zur »aktiven Tabelle« ... 520
13. Indizes erstellen ... 527 13.1 ... Was ist ein Index? ... 528 13.2 ... Indextypen bei Oracle ... 532 13.3 ... Spezielle Indextypen ... 537
14. Aufbau einer Oracle-Datenbank ... 553 14.1 ... Wie arbeitet eine Oracle-Datenbank? ... 553 14.2 ... Datensicherheit ... 564 14.3 ... Zeichensatzcodierung ... 579
15. Anwendungsbeispiele ... 585 15.1 ... Delta-View ... 585 15.2 ... Dubletten bereinigen ... 596 15.3 ... Entscheidungstabellen ... 601 15.4 ... Entscheidungstabelle 2: »Expertensystem« ... 608
TEIL IV. Spezielle Abfragetechniken ... 613
16. Umgang mit Datum und Zeit ... 615 16.1 ... Erzeugung von Datumstypen ... 615 16.2 ... Erzeugung von Intervallen ... 622 16.3 ... Konvertierung von Zeichenketten in Datumstypen ... 626 16.4 ... Zeilenfunktionen für Zeitstempel mit Zeitzonen ... 632 16.5 ... Abfragen über die Zeit: Flashback ... 635
17. Hierarchische Abfragen ... 641 17.1 ... Das Problem ... 641 17.2 ... Lösung mit der CONNECT BY-Klausel ... 644 17.3 ... Erweiterungen der CONNECT BY-Klausel ... 651 17.4 ... Hierarchische Abfragen nach ISO-Standard ... 662
18. Arbeiten mit XML ... 675 18.1 ... XML-Instanzen mit SQL/XML erzeugen ... 678 18.2 ... Bearbeitung von XML-Instanzen in SQL/XML ... 696 18.3 ... Extraktion relationaler Daten aus XML ... 702 18.4 ... Speicherung von XML in der Datenbank ... 707 18.5 ... Der Datentyp XMLTYPE ... 716
19. JSON ... 725 19.1 ... Übersicht über JSON ... 725 19.2 ... Oracles JSON-Unterstützung ... 728 19.3 ... Abfragen gegen JSON-Instanzen ... 731 19.4 ... JSON-Funktionen und -Operatoren ... 736 19.5 ... Erzeugung von JSON aus relationalen Daten ... 742 19.6 ... Relationale Daten aus JSON extrahieren ... 752 19.7 ... JSON-Instanzen bearbeiten ... 758 19.8 ... JSON Data Guide ... 764 19.9 ... JSON-Schema ... 767 19.10 ... JSON Duality Views ... 770
20. Pivotieren von Daten ... 777 20.1 ... Pivotierung mit Gruppenfunktionen ... 778 20.2 ... Pivotierung mit der PIVOT-Klausel ... 780 20.3 ... Unpivotierung mit Gruppenfunktionen ... 787 20.4 ... Unpivotierung mit der UNPIVOT-Klausel ... 790
21. Row Pattern Matching ... 793 21.1 ... Die Grundlagen ... 793 21.2 ... Syntaktische Grundlagen ... 795 21.3 ... Erweiterungen zur Grundsyntax ... 801 21.4 ... Weitere Beispiele und Optionen ... 809 21.5 ... Zusammenfassung ... 817
22. Die MODEL-Klausel ... 819 22.1 ... Lösung des Problems mit der MODEL-Klausel ... 822 22.2 ... Partitionierung, Dimension und Messung ... 825 22.3 ... Regeln ... 828 22.4 ... Weiterführende Konzepte ... 838 22.5 ... Bewertung der MODEL-Klausel ... 846
23. SQL Property Graphen ... 849 23.1 ... Einführung in Graphen ... 849 23.2 ... Erstellen von Property-Graphen ... 851 23.3 ... SQL/PGQ ... 857 23.4 ... Beurteilung ... 863
24. Objektorientierung in der Oracle-Datenbank ... 865 24.1 ... Einführung in die Objektorientierung ... 866 24.2 ... SQL-Typen ... 873 24.3 ... Multiset-Operatoren und -Bedingungen ... 887 24.4 ... Objektorientierte Tabellen ... 890 24.5 ... Beurteilung ... 902
25. Performanzoptimierung von SQL ... 905 25.1 ... Sagen Sie der Datenbank, was Sie wollen! ... 905 25.2 ... Nutzen Sie alle verfügbaren Optionen von SQL ... 909 25.3 ... Vermeiden Sie Umgebungswechsel ... 913 25.4 ... Die Verwendung von Indizes ... 921 Datenbankmodellierung ... 933
26. Die Grundlagen der Datenmodellierung ... 935 26.1 ... Normalisierung ... 935 26.2 ... Tabellendesign ... 939 26.3 ... Primärschlüssel ... 942 26.4 ... Fremdschlüssel ... 946 26.5 ... Überlegungen zu Datentypen und zur Namenskonvention in Tabellen ... 947 26.6 ... Zusammenfassung ... 955
27. Datenmodellierung von Datum und Zeit ... 959 27.1 ... Datumsbereiche ... 959 27.2 ... Analyse gegen eine Zeitdimension ... 975 27.3 ... Historisierung und Logging ... 979
28. Speicherung hierarchischer Daten ... 995 28.1 ... Hierarchie mittels zusätzlicher Hierarchietabelle ... 995 28.2 ... Closure Table ... 999 28.3 ... Weitere Modelle ... 1003 28.4 ... Zusammenfassung ... 1004
29. Datenwarenhaus ... 1007 29.1 ... Star-Schema und Indizierung ... 1010 29.2 ... Dimensionen ... 1013 29.3 ... Arbeiten mit dem Star-Schema ... 1017 29.4 ... Analytische Views ... 1022 29.5 ... Zusammenfassung ... 1035
30. Abbildung objektorientierter Strukturen ... 1037 30.1 ... Vererbung ... 1038 30.2 ... Kollektionen ... 1043 30.3 ... Alternative Lösungsansätze ... 1044 30.4 ... Zusammenfassung ... 1046
31. Internationalisierung ... 1049 31.1 ... Oracle im multilingualen Kontext ... 1049 31.2 ... Datenmodelle zur Übersetzung von Stammdaten ... 1057 Index ... 1073
1.2 Aufbau des Buches
Das Buch ist in mehrere Teile untergliedert, dem Gedanken folgend, dass ich zunächst die Grundlagen sowohl der Datenbank als auch der Abfragesprache SQL besprechen möchte. Danach folgt ein Teil, der sich mit der Anwendung von SQL in konkreten Einsatzszenarien auseinandersetzt und weitergehende technologische Konzepte erläutert. Zu ausgewählten Kapiteln (zu den einführenden insbesondere) biete ich darüber hinaus Übungen an, deren Lösung Sie mit einer kurzen Darstellung der Strategie online auf www.rheinwerk-verlag.de/6035 finden.
1.2.1 Teil I – Einführung und Grundlagen
Im ersten Teil des Buches werde ich das nötige Vorwissen erläutern, das Sie benötigen, um SQL zu erlernen. Diese Kapitel haben daher noch nichts mit SQL direkt zu tun, bereiten aber die Basis, sowohl technisch als auch vom Verständnis her.
Kapitel 2 – Verwendete Werkzeuge und Skripte
In diesem Kapitel beschreibe ich, wie eine Oracle-Datenbank installiert und konfiguriert wird. Die Beschreibung ist so gehalten, dass Sie eine Datenbank einrichten können, die Sie für die Beispiele des Buches benötigen. Zudem erläutere ich das Programm SQL Developer, mit dem wir in diesem Buch die SQL-Anweisungen erstellen werden.
Kapitel 3 – Konzept einer relationalen Datenbank
Dieses Kapitel erläutert, was eine Datenbank ausmacht und welche Anforderungen an solche Systeme gestellt werden. Wir werden untersuchen, warum es sinnvoll ist, Daten auf Tabellen zu verteilen, und welche grundlegenden Regeln hierbei beachtet werden müssen. Zudem werde ich Ihnen die – überraschend einfachen – Spielregeln für relationale Datenbanken erläutern. Das Kapitel führt aber auch in SQL ein und erläutert, woher diese Sprache kommt und was man damit machen kann. Schließlich können Sie Ihr Wissen an einem bestehenden Datenmodell des Benutzers HR ausprobieren, um zu verstehen, auf welche Weise Datenbanken modelliert werden.
1.2.2 Teil I – Die SELECT-Anweisung
Der zweite Teil des Buches befasst sich mit den Grundlagen der Sprache SQL sowie mit der Syntax des wichtigsten SQL-Befehls, der select-Anweisung, mit deren Hilfe Sie Daten der Datenbank lesen und Auswertungen erstellen können. Alle Kapitel des zweiten Teils enden mit einer kleinen Gruppe von Aufgaben, mit deren Hilfe Sie im Selbststudium Ihr Wissen prüfen können.
Kapitel 4 – Grundlagen: Auswahl und Projektion
Mit diesem Kapitel beginnen wir die Beschäftigung mit der Sprache SQL. Sie werden einfache SQL-Anweisungen schreiben und verstehen. Hier legen wir die syntaktischen Grundlagen, überlegen, wie einzelne Spalten und Zeilen ausgewählt werden können, und beginnen damit, einfache Rechnungen und Operationen an den Daten für eine Auswertung vorzunehmen.
Neben diesen Kernfunktionen werden Sie aber auch bereits leistungsfähigere Fallunterscheidungen anwenden und Pseudospalten, Schlüsselwerte und speziellere Werte, wie etwa den null-Wert, kennenlernen. Gerade dieses letzte Thema wird uns bereits hier in logische Randbereiche führen, die bei der Beschäftigung mit Datenbanken allgegenwärtig sind.
Kapitel 5 – Daten aus mehreren Tabellen lesen: Joins
In diesem Kapitel werden wir die Möglichkeiten, die wir in SQL haben, erweitern, indem wir Daten aus mehreren Tabellen abfragen. Mit Hilfe dieser Fähigkeiten entstehen leistungsfähige Berichte, die für die Arbeit mit Datenbanken unerlässlich sind. Das Mittel hierfür sind die sogenannten Joins, deren verschiedene Varianten in diesem Kapitel besprochen werden. In dieses Kapitel fällt aber auch die Verwendung der Mengenoperationen, die – ähnlich einem Join – Daten aus verschiedenen Tabellen kombinieren.
Kapitel 6 – Zeilenfunktionen
Dieses Kapitel erweitert die Kenntnis von SQL um Zeilenfunktionen, die es ermöglichen, die Daten der Tabelle für einen Bericht aufzuarbeiten, zu ändern oder anders darzustellen. Diese Funktionen werden sehr häufig im Berichtswesen eingesetzt, stellen aber gleichzeitig auch den ersten Bereich dar, in dem sich Datenbanken verschiedener Hersteller voneinander unterscheiden, denn nicht alle Funktionen haben standardisierte Bezeichner.
Das Kapitel dient, im Sinne eines ersten Herangehens an diese Funktionen, als Überblickskapitel, das die Zeilenfunktionen so darstellt, dass der besprochene Funktionsumfang für 90 % der Anweisungen ausreicht. Speziellere Optionen werden dann in späteren Kapiteln besprochen. Die Zeilenfunktionen dieses Kapitels werden in Datums-, Text-, mathematische und allgemeine Funktionen unterteilt. Den Abschluss bildet ein kurzes Beispiel zur Programmierung eigener Funktionen mittels der Programmiersprache PL/SQL.
Kapitel 7 – Gruppenfunktionen
Eine weitere Stufe auf der Komplexitätsleiter stellen die Gruppenfunktionen dar, mit deren Hilfe aus Daten einer Tabelle leistungsfähige Berichte erstellt werden. Wir starten in diesem Kapitel mit den Grundfunktionen zur Summierung, Durchschnittsbildung, zu Maximal- bzw. Minimalfunktionen etc. Doch werden auch weitergehende Konzepte der Gruppenfunktionen besprochen, wie etwa die Gruppierung oder das Filtern von Gruppenfunktionen. Ein Überblick über spezielle Gruppenfunktionen rundet das Kapitel ab.
Kapitel 8 – Unterabfragen
Dieses Kapitel erweitert Ihre Kenntnis über SQL durch Unterabfragen, mit deren Hilfe Hilfsabfragen berechnet werden können, um mit deren Ergebnissen die eigentliche Abfrage beantworten zu können. Die Vermittlung der Fähigkeit, erkennen zu können, wann eine Unterabfrage erforderlich ist, wird der zentrale Schwerpunkt dieses Kapitels sein. Dabei betrachten wir die verschiedenen Formen der Unterabfrage: die skalare, die harmonisierte, aber auch Unterabfragen mit mehreren Zeilen und/oder mehreren Spalten. Zudem werden Sie Unterabfragen in den unterschiedlichsten Klauseln der SQL-Anweisung und die with-Klausel kennenlernen.
Kapitel 9 – Analytische Funktionen
Analytische Funktionen sind für viele, die bereits mit SQL arbeiten, eine Offenbarung, weil sie komplexe Fragestellungen einfacher und performanter lösen können als herkömmliche SQL-Strategien. Dieses Kapitel bespricht diesen Typ Funktion, dabei widmen wir uns der Partitionierung, Sortierung und Filterung über Fensterfunktionen, die für diese Gruppe von Funktionen typisch sind. Schließlich werden die analytischen Funktionen, die nur als solche existieren, besprochen und in Anwendungsszenarien gezeigt.
1.2.3 Teil I – Datenmanipulation und Erzeugung von Datenbankobjekten
Während sich Teil I mit der Syntax und den verschiedenen Formen der select-Anweisung beschäftigt, mit deren Hilfe Daten aus einer Tabelle ausgelesen werden können, werden Sie in Teil I Ihre Kenntnis von SQL durch Anweisungen erweitern, die es Ihnen gestatten, Daten innerhalb der Datenbank zu manipulieren. Zudem sehen wir uns an, auf welche Weise Datenbankobjekte wie Tabellen oder Views erstellt werden.
Kapitel 10 – Datenmanipulation
Den Anfang macht ein Kapitel über die Anweisungen zum Einfügen, Ändern und Löschen von Daten. Neben diesen »klassischen« Anweisungen lernen Sie aber auch die merge-Anweisung kennen, die sehr leistungsfähig ist und für viele Arbeiten eingesetzt werden kann. Sie werden erkennen, dass Sie sehr von dem Wissen profitieren, das Sie sich im zweiten Teil des Buches erarbeitet haben, so dass Sie hier zügig vorankommen werden. Einen gewichtigen Teil dieses Kapitels nimmt aber auch die Diskussion des Transaktionsbegriffs ein, denn dieser Begriff ist für das Verständnis von Datenbanken zentral. Nun werden Sie, nach der allgemeinen Einführung in den Teilen I und II, diesen Begriff konkret im Einsatz sehen. Schließlich zeige ich Ihnen noch, wie Sie mit Fehlern bei der Manipulation sinnvoll umgehen.
Kapitel 11 – Views erstellen
Dieses Kapitel führt in die Arbeit mit Views ein. Diese Datenbankobjekte werde ich über den grünen Klee loben, denn für mich sind Views eines der wichtigsten Hilfsmittel bei der Arbeit mit Datenbanken. Ich werde erläutern, woher meine Begeisterung für Views kommt und wie sie verwendet werden können. Wir werden dabei sowohl einfache als auch komplexe Views besprechen und auch ihre Cousins, die materialisierten Views, darstellen. Eine Diskussion der möglichen Einsatzbereiche rundet das Verständnis ab.
Kapitel 12 – Tabellen erstellen
Konsequenterweise muss natürlich auch das Erstellen von Tabellen besprochen werden. Im Gegensatz zur Erstellung von Views ist bei der Erstellung einer Tabelle jedoch fast immer eine grafische Oberfläche...