Galileo Computing. Oracle SQL. Das umfassende Handbuch: Datenbank-Modellierung, Troubleshooting, SQL in Geschäftsprozessen u.v.m.

Größe: px
Ab Seite anzeigen:

Download "Galileo Computing. Oracle SQL. Das umfassende Handbuch: Datenbank-Modellierung, Troubleshooting, SQL in Geschäftsprozessen u.v.m."

Transkript

1 Galileo Computing Oracle SQL Das umfassende Handbuch: Datenbank-Modellierung, Troubleshooting, SQL in Geschäftsprozessen u.v.m. von Jürgen Sieben Neuausgabe Rheinwerk Verlag 2012 Verlag C.H. Beck im Internet: ISBN schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG

2 Jürgen Sieben Oracle SQL

3 Auf einen Blick Auf einen Blick 1 Einführung TEIL I Einführung und Grundlagen 2 Verwendete Werkzeuge und Skripte Konzept einer relationalen Datenbank Aufbau einer Oracle-Datenbank TEIL II Die SELECT-Anweisung 5 Grundlagen: Auswahl und Projektion Daten aus mehreren Tabellen lesen: Joins Zeilenfunktionen Gruppenfunktionen Analytische Funktionen Unterabfragen TEIL III Datenmanipulation und Erzeugung von Datenbankobjekten 11 Datenmanipulation Views erstellen Tabellen erstellen Indizes erstellen Einführung in die Rechteverwaltung von Oracle TEIL IV Spezielle Abfragetechniken 16 Hierarchische Abfragen XML-Abfragen Die MODEL-Klausel Pivotieren von Daten Umgang mit Datum und Zeit Objektorientierung in der Oracle-Datenbank TEIL V Datenbankmodellierung 22 Die Grundlagen der Datenmodellierung Datenmodellierung von Datum und Zeit Speicherung hierarchischer Daten Data Warehouse Abbildung objektorientierter Strukturen Internationalisierung

4 Inhalt Inhalt 1 Einführung Für wen ist dieses Buch geschrieben? Aufbau des Buches Danksagung TEIL I Einführung und Grundlagen 2 Verwendete Werkzeuge und Skripte Aufsetzen einer Beispieldatenbank Warum Sie eine Datenbank zum Testen haben sollten Eine Datenbank herunterladen und installieren SQL Developer SQL Developer herunterladen und installieren Übersicht SQL Developer Eine Datenbankverbindung aufbauen SQL-Anweisungen ausführen Die Datenbankbenutzer SYS und SYSTEM SCOTT HR SH OE Die Beispielskripte Online-Dokumentation und weiterführende Literatur Konzept einer relationalen Datenbank Die Idee der relationalen Speicherung Aufteilung der Daten auf Tabellen

5 Inhalt Die Spielregeln relationaler Datenbanken Die 1:n-Beziehung und ihre Varianten Die m:n-beziehung Zusammenfassung SQL die»lingua franca«der Datenbank Was ist SQL? Von Daten und Informationen Wozu wird SQL in der Datenbank verwendet? Kurzübersicht: Die Standards und was davon zu halten ist Analyse vorhandener Datenmodelle Warum es nicht»das«datenmodell gibt Beispielanalyse: Der Benutzer HR Ausblick Aufbau einer Oracle-Datenbank Wie arbeitet eine Oracle-Datenbank? Eine SQL-Anweisung wird ausgeführt Änderung von Daten und der Begriff der Transaktion Daten- und Lesekonsistenz Oracle-Datentypen Texttypen Datumstypen Zahlentypen Große Objekte Sonstige Datentypen Zusammenfassung TEIL II Die SELECT-Anweisung 5 Grundlagen: Auswahl und Projektion Projektion Spalten einschränken Mit Spaltenwerten rechnen Mit alphanumerischen Spalten arbeiten

6 Inhalt Die Tabelle DUAL Spalten- und Tabellenalias Auswahl Zeilen auswählen mit der WHERE-Klausel Boolesche Operatoren Einschränkungen mit LIKE, IN und BETWEEN Duplikate filtern mit DISTINCT Sortieren von Zeilenmengen Fallunterscheidungen CASE-Anweisung DECODE-Funktion Pseudospalten ROWNUM Sequenzwerte ROWID ORA_ROWSCN Weitere Pseudospalten Kommentare Einzeiliger Kommentar Mehrzeiliger Kommentar Einige Anmerkungen zu Kommentaren Der NULL-Wert Was ist ein NULL-Wert bei Oracle? Ein bisschen Quälerei mit NULL-Werten Der NULL-Wert bei Booleschen Operatoren Übungen Daten aus mehreren Tabellen lesen: Joins Einführung in Joins Joins versus Datenbank-Constraints Schreibweisen Inner Join Equi-Join Non-Equi-Join Oracle-proprietäre Schreibweise

7 Inhalt 6.3 Outer Join Left und Right Outer Join Full-Join Cross-Join Oracle-proprietäre Schreibweise Anti-Join, Semi-Join und Self-Join Anti-Join Semi-Join Self-Join Mengenoperationen mit UNION, MINUS und INTERSECT UNION und UNION ALL MINUS INTERSECT Besonderheiten und Einsatzbeispiele Übungen Zeilenfunktionen Grundsätzliches zu Funktionen Funktionstypen Funktionsparameter Arten von Zeilenfunktionen Datumsfunktionen Erzeugung eines Datums Erzeugung eines Intervalls Rundungsfunktionen Datumsarithmetik Datumsfunktionen Übungen Textfunktionen Funktionen zur Textsuche und -auswertung Funktionen zur Textmanipulation Reguläre Ausdrücke Erzeugungs- und Konvertierungsfunktionen Mister Q Übungen

8 Inhalt 7.4 Mathematische Funktionen Übersicht über die mathematischen Funktionen Konvertierungsfunktionen und Zahlenformate Übungen Allgemeine Funktionen Vergleichsfunktionen GREATEST und LEAST Arbeiten mit dem NULL-Wert Konvertierungsfunktionen Funktionen für Spezialfelder von Oracle Übungen Eigene Funktionen erstellen: Berechnung der Fakultät Anforderungen und Test Implementierung in PL/SQL Gruppenfunktionen Die Standard-Gruppenfunktionen AVG, MAX, MIN, SUM und COUNT MEDIAN, VARIANCE und STDDEV Gruppenfunktionen und NULL-Werte Gruppenfunktion und die DISTINCT-/UNIQUE-Klausel Gruppierung von Gruppenfunktionen Die Klausel GROUP BY Der NULL-Wert und die Gruppierung Gruppieren nach mehreren Kriterien Filtern der Gruppenergebnisse durch HAVING Erweiterte Konzepte der Gruppierung: ROLLUP und CUBE Geschachtelte Gruppenfunktionen Spezielle Gruppenfunktionen DENSE_RANK und RANK FIRST und LAST LISTAGG Übungen

9 Inhalt 9 Analytische Funktionen Die Idee der analytischen Funktionen Allgemeine Syntax Einsatzbereiche Erweiterung von Gruppenfunktionen zu analytischen Funktionen Einfache Beispiele Kombination von analytischen Funktionen mit Gruppenfunktionen Die WINDOWING-Klausel RATIO_TO_REPORT Analytische Rangfunktionen RANK, DENSE_RANK und PERCENT_RANK ROW_NUMBER LAG und LEAD Zusammenfassung Übungen Unterabfragen Die Unterabfrage in der WHERE-Klausel Unterabfragen, die einen Wert zurückliefern: Skalare Unterabfrage Unterabfragen mit mehreren Zeilen Unterabfragen mit mehreren Spalten Paarweiser und nicht paarweiser Vergleich Harmonisierte Unterabfrage Die Unterabfrage in der FROM-Klausel (Inner View) Beispiel Vergleich zur harmonisierten Unterabfrage Die WITH-Klausel Die Unterabfrage in der SELECT-Klausel (skalare Unterabfrage) Unterabfragen und Joins Anti-Joins Semi-Joins mit der EXISTS-Klausel Übungen

10 Inhalt TEIL III Datenmanipulation und Erzeugung von Datenbankobjekten 11 Datenmanipulation Ihr Sicherheitsnetz: Die Transaktion Was ist eine Transaktion? Zusammenfassung: Wozu brauche ich Transaktionen? Die INSERT-Anweisung Allgemeine Syntax Variationen zum Thema Die UPDATE-Anweisung Allgemeine Syntax Variationen zum Thema Die DELETE-Anweisung Die MERGE-Anweisung Allgemeine Syntax Variationen zum Thema Erweiterung: Fehlerbehandlung während der Datenmanipulation Die Klausel LOG ERRORS Vorbereitung zum Einsatz Verwendung der Klausel LOG ERRORS Darstellung der Fehler Einsatzszenarien Erweiterung: Multi-Table-Insert Kopieren von Daten in mehrere Zieltabellen Fallweises Einfügen in jeweils eine Zieltabelle Fallweises Einfügen in mehrere Zieltabellen Verwendung von Sequenzen Views erstellen »Normale«Views Was genau ist eine View? Wie werden Views erstellt? Einfache und komplexe Views

11 Inhalt 12.2 Einsatzbereiche von Views Kapselung von Logik Zugriffsschutz Programmieren nach dem Gelbe-Seiten-Prinzip Lösung komplexer Probleme in Teilschritten Wer sollte Views verwenden? Materialized View Was ist eine Materialized View? Erstellung von materialisierten Sichten Grenzen der Aktualisierung Tabellen erstellen Einfache Tabellen erstellen Allgemeine Syntax Virtuelle Spalten Weitere Tabellentypen Indexorganisierte Tabelle Temporäre Tabelle Externe Tabelle Partitionierte Tabelle Erweiterung zur»aktiven Tabelle« Die Idee der»aktiven Tabelle« Zur Illustration: Beispiel eines Triggers Bewertung dieses Verfahrens Indizes erstellen Was ist ein Index? Einige Überlegungen zur Indizierung Die Mythenbildung Indextypen bei Oracle B*-Baum-Index Funktionsbasierter Index Bitmap-Index

12 Inhalt 14.3 Spezielle Indextypen Volltextindizierung Zusammenfassung Einführung in die Rechteverwaltung von Oracle Datenbankbenutzer versus Schema Was ist ein Datenbankbenutzer Was macht einen Datenbankbenutzer zu einem Schema-Eigentümer? Erstellung eines Datenbankbenutzers Allgemeine Syntax Grundlegende Rechte Zugriff auf Festplattenspeicher System- und Objektrechte Systemberechtigungen Objektberechtigungen Die REVOKE-Anweisung Rollen Passwort- und Ressourcenrechte TEIL IV Spezielle Abfragetechniken 16 Hierarchische Abfragen Das Problem Lösung mit der Abfrage CONNECT BY Die Pseudospalte LEVEL Sortierung mit ORDER SIBLINGS BY Erweiterungen zur Abfrage CONNECT BY Weitere Pseudospalten Operator CONNECT_BY_ROOT Die Funktion SYS_CONNECT_BY_PATH Ein etwas komplexeres Anwendungsbeispiel

13 Inhalt 16.4 Hierarchische Abfragen nach ISO-Standard Grundform Erweiterungen XML-Abfragen XML-Instanzen mit SQL/XML erzeugen Ein einfaches Beispiel Übersicht über weitere SQL/XML-Funktionen Bearbeitung von XML-Instanzen in SQL Grundlagen zu Zeilenfunktionen, die XML bearbeiten Bestehende XML-Instanzen ändern Löschen vorhandener Elemente Einfügen neuer Elemente Extrahieren von Daten aus XML-Instanzen mit SQL/XML Arbeiten mit XQuery Funktion XMLQUERY Funktion XMLTABLE Funktion XMLEXISTS Die Funktion XMLCAST Indizierung von XML-Instanzen Die MODEL-Klausel Lösung des Problems mit der MODEL-Klausel Partitionierung, Dimension und Messung Partitionierung mit PARTITION BY Dimensionierung mit DIMENSION BY Messung mit MEASURES Regeln UPSERT versus UPSERT ALL versus UPDATE Referenzen auf Zellen Positionale und symbolische Referenz NULL-Werte versus fehlende Zellen Funktionen und Klauseln für die MODEL-Klausel Sortierung von Regeln und Zellen

14 Inhalt 18.4 Weitergehende Konzepte Iterationen Referenzen Bewertung der MODEL-Klausel Pivotieren von Daten Pivotierung mit Gruppenfunktionen Pivotierung mit der PIVOT-Klausel Die Klausel FOR IN Die XML-Klausel Unpivotierung mit Gruppenfunktionen Unpivotierung mit der UNPIVOT-Klausel Umgang mit Datum und Zeit Erzeugung von Datumstypen Arbeiten mit Zeitzoneninformation Nähere Angaben zu Zeitzonen Zeitzonenangaben in Literalen Erzeugung von Intervallen Allgemeinere Einführung in die Syntax Intervalle über lange Zeiträume erstellen Intervalle aus Zahlen ermitteln Datumsarithmetik mit Intervallen Konvertierung von Zeichenketten in Datumstypen Optionaler Parameter NLS_PARAM Die Formatmasken Zeilenfunktionen für Zeitstempel mit Zeitzonen DBTIMEZONE, SESSIONTIMEZONE FROM_TZ NEW_TIME SYS_EXTRACT_UTC TZ_OFFSET ORA_DST_*

15 Inhalt 20.5 Abfragen über die Zeit: Flashback Verwendung von Flashback auf Tabellenebene Zusammenfassung Objektorientierung in der Oracle-Datenbank Einführung in die Objektorientierung Alles ist ein Objekt Das zweite Reizwort: Vererbung! Abstrakte und finale Klassen Objektidentität versus Statement of Truth Klassen haben komplexe Strukturen SQL-Typen TYPE VARRAY NESTED TABLE Objektorientierte Tabellen Anlage einer Tabelle, basierend auf einem Objekt Eigenheiten der Speicherung von NESTED TABLE Objektreferenzen Objekttabellen als Speichermechanismus Beurteilung TEIL V Datenbankmodellierung 22 Die Grundlagen der Datenmodellierung Normalisierung Tabellendesign Tabellen für verschiedene Einsatzbereiche Spalten, die in vielen Tabellen verwendet werden Primärschlüssel Primärschlüssel versus Geschäftsinformation? Primärschlüssel im Umfeld von m:n-verbindungen Müssen Primärschlüssel Zahlen sein?

16 Inhalt 22.4 Fremdschlüssel Fremdschlüssel und Indizes Überlegungen zu Datentypen und zur Namenskonvention in Tabellen Überlegungen zu Datentypen Überlegungen zu Namenskonventionen Zusammenfassung Datenmodellierung von Datum und Zeit Datumsbereiche Speicherung von Datumsbereichen mit zwei Zeitpunkten Speicherung von Datumsintervallen mit WMSYS.WM_PERIOD Andere Datenmodelle zur Speicherung von Datumsbereichen Analyse gegen eine Zeitdimension Historisierung und Logging Logging von Stammdatenänderungen Historisierende Datenmodelle Bitemporale Datenmodelle Speicherung hierarchischer Daten Hierarchie mittels zusätzlicher Hierarchietabelle Closure Table Weitere Modelle Zusammenfassung Data Warehouse Star Schema Dimensionen Die Dimension PRODUCTS Das Datenbankobjekt DIMENSION Slowly Changing Dimensions

17 Inhalt 25.3 Arbeiten mit dem Star Schema Analyse des Star Schemas mit SQL Speicherung als multidimensionaler Würfel Zusammenfassung Abbildung objektorientierter Strukturen Vererbung Allgemeine Probleme Table per Class Table per Concrete Class Table per Class Family Kollektionen Zusammenfassung Internationalisierung Oracle im multilingualen Kontext Was ist das Problem? Zeichensatzkodierungen Datumsformate Sortierung National Language Support (NLS) Datenmodelle zur Übersetzung von Stammdaten Sprachtabelle Übersetzung mit einer Übersetzungstabelle Übersetzung mit einer zentralen Übersetzungstabelle Entity-Attribute-Value-Tabellen Übersetzung in einer Tabelle, reloaded Index

18 5 Grundlagen: Kapitel 5 Auswahl und Projektion Nähern wir uns der ersten SQL-Anweisung, indem wir die Möglichkeiten und einfache Anwendungen der Anweisung betrachten. 5 In diesem Kapitel möchte ich die Grundlagen für die Anwendung der select-anweisung legen. Die select-anweisung ist für das Lesen von Daten aus Tabellen erforderlich und stellt die wohl am häufigsten genutzte Anweisung in SQL dar. Da in die Zuständigkeit dieser Anweisung aber nicht nur die Auswahl der Zeilen fällt, sondern auch das Zusammentragen dieser Informationen aus den verschiedenen Tabellen sowie die Aufarbeitung der Daten für den auszugebenden Bericht, ist die Anweisung gespickt mit Optionen, Erweiterungen und komplizierten logischen Problemen, die gelöst werden wollen. Viele Anwender meinen diese Anweisung, wenn sie sagen, sie arbeiteten mit SQL. Die Beschäftigung mit dieser Anweisung ist streckenweise wahrscheinlich alles andere als einfach, aber es ist auch faszinierend, welche Fragestellung mit Hilfe dieser Anweisung beantwortet werden können. Und keine Bange: Diese Probleme bekommen wir in den Griff. Die Einführung dieser Anweisung habe ich in diesem Kapitel in die Bereiche Auswahl, Projektion, Fallunterscheidung und null-wert-behandlung untergliedert. Die Entscheidung hierfür fiel deshalb, weil diese Grundfunktionen ohne weitergehende Konstrukte wie Zeilenfunktionen oder die Verbindung mehrerer Tabellen möglich sind und Ihnen bereits einige Möglichkeiten zur Abfrage von Daten zur Verfügung stellen. Ab diesem Kapitel werde ich Ihnen auch eine kleine Auswahl an Übungen zu dem Stoff anbieten, denn Lesen ist das eine, viel wichtiger ist es, SQL selber zu schreiben und sich mit der Syntax aktiv auseinanderzusetzen. Lösungen zu diesen Aufgabenstellungen können Sie natürlich als Skript auf der Webseite zum Buch herunterladen. 5.1 Projektion Auswahl und Projektion sind zwei zentrale Begriffe, wenn es darum geht, Daten aus Tabellen zu lesen. Unter der Auswahl verstehen wir die Auswahl von Zeilen einer Tabelle für die Ausgabe. Projektion bezeichnet im Gegenzug die Auswahl gewisser Spalten einer Tabelle. Mit der Auswahl beschäftigt sich der nächste Abschnitt, hier 115

19 5 Grundlagen: Auswahl und Projektion soll es zunächst um die Projektion von Spalten gehen. Das ist zunächst eine ganz einfache Angelegenheit, doch nutze ich die Einfachheit dieses Teils von SQL, um Ihnen direkt einige weitergehende Möglichkeiten zu zeigen, die Ihnen erläutern werden, auf welche Weise SQL unter der Haube eigentlich arbeitet. Dieses Wissen ist sehr wichtig, damit Sie sich später einfach erklären können, warum einige Dinge funktionieren und andere nicht Spalten einschränken Nun geht es also los: Wir schreiben unsere erste SQL-Anweisung. Ich verbinde mich mit dem Benutzer SCOTT, denn für unsere ersten Gehversuche hat dieser Benutzer den Vorteil, kleine Tabellen anzubieten, so dass man die select-anweisungen notfalls händisch kontrollieren kann. Sie können die Anweisung gern im SQL Developer schreiben (wie Sie sich dort anmelden, hatte ich ja in Kapitel 2,»Verwendete Werkzeuge und Skripte«, beschrieben; sehen Sie dort nach, wenn Sie Schwierigkeiten mit der Anmeldung haben sollten). Ich werde die Anweisungen im einfachen SQL*Plus schreiben, nicht weil ich grafischen Oberflächen nicht traue (im Gegenteil entwickle ich meinen Datenbankcode fast ausschließlich im SQL Developer), sondern, weil ich die Anweisungen damit besser in diesem Buch darstellen kann. Ich wäre ansonsten gezwungen, Sie mit einer großen Menge an Bildschirmfotos zu langweilen. Das nimmt nicht nur Platz weg, sondern ist auch weniger klar als die einfache Ausgabe des SQL*Plus, zumal das Buch ohnehin in Schwarzweiß gedruckt ist und Sie die sehr praktische Hervorhebung der Schlüsselworte nicht erkennen könnten. Eine select-anweisung besteht bei Oracle immer aus mindestens zwei verpflichtenden Schlüsselworten, nämlich select und from. select leitet die Auswahl der Spalten ein, während from angibt, in welcher Tabelle die Daten stehen, die wir sehen möchten. Ich starte mit der einfachsten select-anweisung. Nach dem Eintippen führen Sie die Anweisung aus, indem Sie die Schaltfläche Anweisung ausführen wählen oder aber den Tastaturbefehl (Strg)+( ). SQL> select * 2 from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO SMITH CLERK ALLEN SALESMAN WARD SALESMAN , Zeilen ausgewählt. Listing 5.1 Eine einfache SQL-Anweisung 116

20 5.1 Projektion Hinter dem Schlüsselwort select sehen Sie, dass ich ein * eingefügt habe. Das bedeutet alle Spalten. Gut zu wissen, wir werden es aber sehr selten verwenden, denn besser ist es, explizit hinzuschreiben, welche Spalten wir tatsächlich sehen möchten. Zur Formatierung der SQL-Abfrage: Sie können an jeder beliebigen Stelle neue Zeilen einfügen (außer innerhalb eines Schlüsselwortes wie select oder from natürlich) und Einrückungen verwenden, wie Sie mögen. Dieser Weißraum, wie diese Einrückungen gern genannt werden, hilft bei der Strukturierung der Anweisung und schafft Überblick. Zudem können Sie die Anweisung in Groß- oder Kleinschreibung (oder in irgendeiner Zwischenform) schreiben, da SQL grundsätzlich Groß- und Kleinschreibung nicht unterscheidet. 5 Hier steht also gewissermaßen der englische Satz: Wähle alle Spalten aus der Tabelle mit dem Namen EMP. Da wir zudem keine Festlegung getroffen haben, die einschränkt, welche Zeilen wir sehen möchten oder nicht (das ist die Aufgabe der Auswahl, die wir im nächsten Abschnitt besprechen), hat die Datenbank so reagiert, dass uns eben einfach alle Zeilen gesendet wurden. Aber hierzu direkt einige kleine Anmerkungen: Ich habe in Abschnitt 4.1,»Wie arbeitet eine Oracle-Datenbank?«, gesagt, dass das Ergebnis einer Abfrage auf dem Datenbankserver verbleibt und nicht auf einen Rutsch zur Anwendung geschickt wird. Das aber scheint hier genau passiert zu sein, denn die Anwendung zeigt uns ja direkt alle Zeilen. Aber auch in diesem Fall hat sich die Anwendung um das Lesen der Daten gekümmert. Das Ganze lief so ab: Sie haben den SQL Developer angewiesen, eine Zeichenkette, die (hoffentlich) eine korrekte select-anweisung darstellt, an die Datenbank zu senden. Dort wurde die Anweisung ausgeführt und die Ergebnismenge bereitgestellt. Der SQL Developer hat daraufhin so lange, wie ihm danach war, Zeilen angefordert, in ein Tabellenlayout umgerechnet und diese Tabelle anschließend angezeigt. Das ist nicht nur eine launige Formulierung, denn der SQL Developer wird bei Anweisungen, die sehr viele Zeilen zurückliefern, nach 50 oder 100 Zeilen aufhören, die Daten aus der Datenbank zu lesen. Erst wenn wir in der Tabelle nach unten rollen, werden weitere Daten aus der Datenbank gelesen. Auf diese Weise gehen wir einigermaßen sinnvoll mit dem Arbeitsspeicher um und garantieren gleichzeitig auch noch gute Antwortzeiten. Es mag aber gerade zu Beginn verwirrend sein, auseinanderzuhalten, welche Arbeit von der Datenbank und welche vom Anwendungsprogramm geleistet wird, mit dem Sie gerade arbeiten. Die zweite Bemerkung betrifft das Semikolon am Ende der SQL-Anweisung. Dieses Semikolon werden Sie im Buch immer sehen, es handelt sich allerdings nicht um einen Teil der SQL-Anweisung, sondern um ein Steuerzeichen in SQL*Plus, das anzeigt, dass die SQL-Anweisung hier zu Ende ist und durch die Eingabe der Zeilentaste ausgeführt werden soll. Bei der Konsolenanwendung SQL*Plus steht mir keine Taste zur Ausführung einer SQL-Anweisung zur Verfügung. Da die Anweisung andererseits über mehrere Zeilen geht, benötigt das Programm also eine Möglichkeit, zu 117

21 5 Grundlagen: Auswahl und Projektion entscheiden,»ob noch etwas kommt«oder ob es die Anweisung ausführen soll. Beim SQL Developer benötigen Sie dieses Semikolon nicht, ich empfehle aber, es dennoch zu schreiben. Der Grund: Wenn Sie mehrere SQL-Anweisungen untereinander schreiben, können Sie eine einzelne Anweisung ausführen, indem Sie die Schreibmarke irgendwo innerhalb der Anweisung platzieren und die Anweisung ausführen. SQL Developer wird nun die SQL-Anweisung bis zum nächsten Semikolon auswählen und ausführen. Das ist sehr praktisch und funktioniert ohne Semikolon nicht immer fehlerfrei. Die letzte Anmerkung bezieht sich auf die Reihenfolge, in der die SQL-Anweisung ausgeführt wird. Ich werde im Laufe des Buches noch häufiger auf die Reihenfolge der Ausführung zu sprechen kommen, denn sie entscheidet mit darüber, was in select-anweisungen geht und was nicht. In diesem einfachen Beispiel liest die Datenbank die Anweisung wie folgt: Gehe zur Tabelle EMP und lese dort alle Spalten. Die Reihenfolge ist also umgekehrt zu dem, was Sie schreiben, zunächst wird die from-klausel (als Klausel bezeichnen wir die einzelnen Bestandteile der SQL-Anweisung) ausgeführt und erst dann die select-klausel. Das macht hier noch nichts, aber wir halten im Hinterkopf, dass dies so funktioniert. Erweitern wir unsere Anweisung, indem wir die Spaltenauswahl einschränken. Das geht ganz einfach dadurch, dass wir, durch Kommata getrennt, die Spalten aufführen, die wir sehen möchten: SQL> select ename, job, sal 2 from emp; ENAME JOB SAL SMITH CLERK 800 ALLEN SALESMAN 1600 WARD SALESMAN 1250 JONES MANAGER Zeilen ausgewählt. Listing 5.2 Auswahl der Spalten Sie sehen, dass die Anweisung einfach nur die Spalten ausgibt, die Sie anfordern. Noch etwas fällt auf: Die Spaltenbezeichnungen in der Ausgabe sind in Großbuchstaben notiert, obwohl wir die Anweisung in Kleinbuchstaben formuliert haben. Das ist eine Eigenheit von SQL, denn in SQL wird die Groß- und Kleinschreibung generell nicht unterschieden. Sie können also alles kleinschreiben, so wie ich das eigentlich grundsätzlich tue (ich habe das Gefühl, der Computer schreie mich an, wenn ich etwas in Großbuchstaben schreibe, und das mag ich nicht). Oder Sie schreiben die 118

22 5.1 Projektion Schlüsselworte der SQL-Anweisung in Großbuchstaben, wie Sie das vielleicht in SQL- Anweisungen oder in anderen SQL-Fachbüchern oft sehen. Ich halte mich an andere Konventionen: So rücke ich die Klauseln rechtsbündig unter das erste Schlüsselwort, in unserem Fall also select. Durch diese Einrückung entsteht eine Art»weißer Spalte«rechts neben den Schlüsselworten, und rechts dieser Spalte kommen die Einschränkungen, die Spaltenliste, die Tabellennamen usw. Damit komme ich relativ lange aus und diese Formatierung, an die ich mich mittlerweile einfach gewöhnt habe, erscheint mir auch in gedruckter Form noch klar genug. Im SQL Developer kommt hinzu, dass die Schlüsselworte ohnehin farbig unterlegt sind, dann haben Sie gar keine Schwierigkeiten bei der Unterscheidung. 5 Ich finde an dem Beispiel oben aber noch etwas anderes interessant: Die Reihenfolge der Ausgabe der Spalten entspricht genau unserer Vorgabe. Lassen Sie uns doch damit noch etwas spielen. Wie wäre es vielleicht mit folgender Anweisung? SQL> select job, ename, job, sal, sal 2 from emp; JOB ENAME JOB SAL SAL CLERK SMITH CLERK SALESMAN ALLEN SALESMAN SALESMAN WARD SALESMAN MANAGER JONES MANAGER Zeilen ausgewählt. Listing 5.3 Wiederholte Spaltenausgabe Wir sehen, dass wir eine Spalte mehrfach ausgeben können, indem wir sie einfach mehrfach nennen. Auch die Reihenfolge ist gemäß unserer Vorgabe. Das meine ich mit dem Begriff deskriptive Programmiersprache, denn wir beschreiben nur, wie der Bericht am Ende aussehen soll. Den Rest macht die Datenbank. Damit wir uns nicht falsch verstehen: Diese Anweisung macht vielleicht überhaupt keinen Sinn, es ist jedoch schön, zu wissen, dass es geht Mit Spaltenwerten rechnen Nun gut, wir können nun also Spalten auswählen und die Inhalte anzeigen. Aber natürlich geht noch viel mehr. So können wir zum Beispiel mit den Spaltenwerten rechnen und neue Ergebnisse erzielen. Lassen Sie uns doch einmal ausgeben, um welchen Betrag das Gehalt eines Mitarbeiters stiege, wenn wir eine Gehaltserhöhung von pauschal 3% gewährten. Wichtig bei der nun folgenden Abfrage ist es, im 119

23 5 Grundlagen: Auswahl und Projektion Hinterkopf zu behalten, dass diese Art Abfrage niemals Daten der Tabelle ändern kann. Wir lesen die Daten der Tabelle, rechnen die Werte um und zeigen das Ergebnis auf dem Bildschirm an. Das ist alles. Das Rechnen mit Spaltenwerten geht ganz einfach, es ist nicht nötig, für jede Zeile einer Tabelle eine Formel anzugeben, wie das in Excel zum Beispiel nötig wäre, sondern wir rechnen einfach mit den Spaltenbezeichnern, etwa so: SQL> select ename, job, sal, sal * from emp; ENAME JOB SAL SAL* SMITH CLERK ALLEN SALESMAN WARD SALESMAN ,5 JONES MANAGER , Zeilen ausgewählt. Listing 5.4 Spaltenwerte können einfach berechnet werden. In diesem Beispiel wurde das neue Gehalt als das 1,03fache des bisherigen Gehalts ausgegeben. Alles, was hierzu erforderlich war, ist, den Namen der Spalte mit 1.03 zu multiplizieren. Beachten Sie bitte, dass Sie in diesem Fall als Dezimaltrenner den Punkt verwenden müssen, ansonsten wäre für SQL nicht unterscheidbar, ob eine neue Spalte ausgegeben oder eine Dezimalzahl eingegeben werden soll. Als Rechenanweisung ist auf diese einfache Weise die Multiplikation (*), Division (/), Addition (+) und Subtraktion (-) möglich. Wir haben zwar auch noch weitere Rechenmöglichkeiten, die jedoch werden durch den Aufruf einer Zeilenfunktion ermöglicht. Zeilenfunktionen besprechen wir in Kapitel 7,»Zeilenfunktionen«. Bitte experimentieren Sie mit eigenen Rechenabfragen. Subtrahieren Sie zum Beispiel die Spalte MGR von der Spalte EMPNO, addieren Sie doch einmal ganz frech 14 zur Spalte HIREDATE und sehen Sie, was herauskommt. Zur Überprüfung der Rechnungen können Sie einfach so verfahren, wie ich in meiner Anweisung: Wiederholen Sie die Spalte, einmal mit, einmal ohne Rechnung. Dann haben Sie die beiden Werte direkt nebeneinanderstehen. Rechnungen mit Operatoren unterliegen im Übrigen den gleichen Vorrangregelungen, die Sie schon aus der Grundschule kennen, es gilt Punkt- vor Strichrechnung. Ich empfehle aber nicht, Anweisungen im Vertrauen hierauf zu schreiben: Da es möglich ist, Klammern zu verwenden, um einen Spaltenwert zu berechnen, sollten Sie dies auch tun und sich nicht auf diese Regeln verlassen. Dafür gibt es keinen»harten«grund, lediglich einen Grund, dessen Nichtbeachtung Sie hart ankommen könnte: Es erhöht das Verständnis der SQL-Anweisung, wenn Sie Klammern verwenden. Ich 120

24 5.1 Projektion habe mir angewöhnt, immer die einfachste Form zu wählen, eine Formel zu schreiben, weil ich weiß, dass im Regelfall ich derjenige sein werde, der die Formel nach drei Wochen noch verstehen muss. Und da bin ich schon einige Male böse hereingefallen, habe auf den ersten Blick gedacht: Was soll denn der Unsinn, das muss doch eigentlich anders heißen und habe einen Fehler eingebaut. Mit numerischen Spalten können wir nun rechnen. Und wenn Sie das Datum einmal um 14 erweitert haben, sehen Sie, dass gewisse Rechnungen sogar mit Datumsspalten funktionieren. Dass bei der Addition einer Zahl zu einem Datum Tage hinzuaddiert werden, ergibt sich aus dem, was ich zur Speicherung des Datumstyps in Abschnitt 4.2,»Oracle-Datentypen«, geschrieben habe. Was aber können wir mit alphanumerischen Spalten tun? Das sehen wir uns im folgenden Abschnitt an Mit alphanumerischen Spalten arbeiten Alphanumerische Spalten lassen sich natürlich nicht mit Algebra beeindrucken. Versuchen Sie dies, erhalten Sie eine Fehlermeldung, die Ihnen sagt, dass diese Operation numerische Datentypen erwartet, diese aber nicht erhält: SQL> select ename from emp; select ename + 24 * FEHLER in Zeile 1: ORA-01722: Ungültige Zahl Listing 5.5 Alphanumerische Spalten können nicht rechnen. It s not a bug, it s a feature: Sehen wir das Ganze von der positiven Seite und halten fest, dass die Datenbank eine Plausibilitätsprüfung unserer Anweisungen vornimmt. Das Beispiel oben ist offensichtlicher Unfug (grober Unfug ist leider nicht mehr strafrechtlich zu ahnden, sondern lediglich eine Ordnungswidrigkeit, was in Anbetracht mancher Softwareprodukte wirklich schade ist...), doch können wir uns ja vorstellen, eine Spalte enthielte offensichtlich nur Zahlen, das Rechnen damit ist jedoch dennoch nicht möglich, weil die Spalte als alphanumerische Spalte angelegt wurde. Das könnte dann auf einen Fehler in der Datenmodellierung hindeuten. Oft tauchen diese Fehler auch im Umfeld von Datumsangaben auf. Das ist besonders schade, denn in einer alphanumerischen Spalte, die Datumsangaben speichert, können Sie nicht verhindern, dass ein Kunde am»grün«geburtstag hat. Was aber können wir mit alphanumerischen Spalten machen? Zum einen können wir diese Spalten aneinanderkleben, konkatenieren, wie das heißt. Dafür gibt es einerseits eine Funktion, die ich allerdings noch nie benutzt habe, und einen Operator, den ich immer verwende: 121

25 5 Grundlagen: Auswahl und Projektion SQL> select ename job 2 from emp; ENAME JOB SMITHCLERK ALLENSALESMAN WARDSALESMAN JONESMANAGER Zeilen ausgewählt. Listing 5.6 Konkatenation alphanumerischer Spalten mit Operator Ich möchte Ihnen die Funktion zum Konkatenieren nicht vorenthalten, werde sie aber nachreichen, wenn wir über Zeilenfunktionen sprechen. Nun ja, die Ausgabe oben ist noch etwas verbesserungsfähig. Zumindest ein Leerzeichen zwischen den Spaltenwerten wäre doch schön. Doch wie können Sie ein solches Zeichen zwischen zwei Spalten einfügen? Zum Glück ist auch diese Erweiterung noch ganz einfach machbar: Sie fügen die Zeichenkette mit einfachen Anführungsstrichen einfach ein: SQL> select ename ' ' job 2 from emp; ENAME '' JOB SMITH CLERK ALLEN SALESMAN WARD SALESMAN JONES MANAGER MARTIN SALESMAN Zeilen ausgewählt. Listing 5.7 Konkatenation alphanumerischer Spalten mit Leerzeichen Wichtig ist hier, dass Sie einfache Anführungsstriche verwenden. Doppelte Anführungszeichen oder irgendwelche anderen Zeichen sind nicht erlaubt. Dann haben wir einfach zweimal den Verbindungsoperator verwendet. Dieser senkrechte Strich wird auf Windows dadurch erzeugt, dass Sie die Taste (Alt_Gr)+(<) drücken (unten links auf der Tastatur). Dieses Zeichen heißt zwar offiziell Verkettungsoperator, wird aber viel häufiger Pipe genannt. Der Name rührt vom Betriebssystem UNIX her, wo dieses Zeichen dazu verwendet wird, die Ausgabe mehrerer Konsolenprogramme zu verketten. Wir verwenden zur Verkettung also ein doppeltes Pipe-Zeichen. 122

26 5.1 Projektion Auch mit diesen neuen Fähigkeiten möchte ich nun etwas herumspielen. Was wäre eigentlich, wenn ich einfach nur eine Zeichenkette ausgäbe, ganz ohne Spalte? Geht so etwas überhaupt? Und wenn das mit Zeichenfolgen geht, gehen dann auch Zahlen? Nicht lange fragen, einfach machen: SQL> select 'Willi hat Durst!', 17 2 from emp; 5 'WILLIHATDURST!' Willi hat Durst! 17 Willi hat Durst! 17 Willi hat Durst! 17 Willi hat Durst! 17 Willi hat Durst! Zeilen ausgewählt. Listing 5.8 Ausgabe konstanter Zeichenketten und Zahlen Hm, die Ausgabe ist vielleicht etwas verwirrend auf den ersten Blick. Wir haben keine Spalte angegeben und dennoch 14 Zeilen zurückerhalten. Wie kann das sein? Die Antwort liegt wieder einmal in der Art, wie SQL arbeitet: Die Fragestellung lautet hier nämlich: Gehe zur Tabelle EMP und gib für jede Zeile der Tabelle die Zeichenfolge»Willi hat Durst!«und die Zahl 17 aus. Nun ja, und genau das hat die Datenbank auch gemacht. Halten Sie diese Möglichkeit im Hinterkopf, denn das können wir an mancher Stelle sehr schön benutzen. Ich versuche einmal eine Anfrage, die Ihnen ein Gefühl dafür geben kann, wie diese einfachen Textverkettungen (diesmal aber wieder mit einem Spaltenwert) zu etwas Sinnvollem genutzt werden könnten. Ich stelle mir vor, in einer Tabelle stünden Dateinamen. Nun müssten diese Dateien, die in einem Verzeichnis auf Festplatte stehen, in ein anderes Verzeichnis kopiert werden. Schön wäre eine Batchdatei, die das Umkopieren der Daten in einem Rutsch erledigen könnte. Damit alles etwas realistischer rüberkommt, stellen wir uns weiterhin vor, die Dateien lägen in verschiedenen Ordnern, so dass die Operation auch nicht einfach so im Betriebssystem erledigt werden kann. Unser Dateiname ist in der Spalte ENAME hinterlegt, der Ordner ist in Spalte JOB abgelegt. Dann könnte eine Anfrage etwa so aussehen: SQL> select 'cp C:\my_files\' job '\' 2 ename '.txt' ' E:\ files\' job 3 '\' ename '.txt ' 4 from emp; 123

27 5 Grundlagen: Auswahl und Projektion 'CPC:\MY_FILES\' JOB '\' cp C:\my_files\CLERK\SMITH.txt E:\files\CLERK\SMITH.txt cp C:\my_files\SALESMAN\ALLEN.txt E:\files\SALESMAN\ALLEN.txt cp C:\my_files\SALESMAN\WARD.txt E:\files\SALESMAN\WARD.txt cp C:\my_files\MANAGER\JONES.txt E:\files\MANAGER\JONES.txt Zeilen ausgewählt. Listing 5.9 Ein Anwendungsbeispiel zur Konkatenation von Textspalten Finden Sie nicht so beeindruckend? Na ja, wir stehen ja auch erst am Anfang unserer Möglichkeiten. Dennoch gehört nicht viel Fantasie dazu, sich vorzustellen, dass Anweisungen dieser Art sehr viel Zeit sparen können. Wir müssten aus einer wirklich großen Tabelle so eine Abfrage zum Beispiel kombinieren mit einer Filterung nur der Dateien, die aufgrund irgendwelcher Gründe kopiert werden müssten, um zu verstehen, wie uns das helfen kann Die Tabelle DUAL In den ersten Abfragen haben wir gesehen, dass wir Zeilen einer Tabelle ausgeben können. Insbesondere das Beispiel aus Listing 5.8 hat uns aber auch gezeigt, dass es nicht immer Sinn macht, sich auf eine Tabelle zu beziehen. In diesem Beispiel machte die Ausgabe keinen Sinn, weil ich nicht 14 identische Ausgaben erzeugen wollte, sondern nur eine. Andere Informationen haben deshalb keinen Bezug zu einer Tabelle, weil sie nirgendwo in unseren Tabellen gespeichert werden. Ein Beispiel hierfür wäre das aktuelle Datum. Wo soll dieses Datum auch gespeichert werden, es ändert sich ja ständig. Tatsächlich haben wir oft Anwendungsfälle, bei denen wir eigentlich keine Tabelle benötigen. Das Problem: Wir brauchen den Bezug auf eine Tabelle, weil bei Oracle die Klausel from verpflichtend ist. Andere Datenbanken haben diese Einschränkung nicht, Oracle schon. Wie lösen wir also diese Situation? Oracle bietet für solche Zwecke eine Tabelle an, die eigentlich gar keine ist. Diese Tabelle heißt DUAL und wird immer dann angesprochen, wenn keine Tabelle gemeint ist. Ich könnte hier das Beispiel von vorhin noch einmal verwenden, doch ist die Situation günstig, die schon bei den Datentypen besprochene Funktion sysdate zu verwenden. Sysdate liefert das aktuelle Datum und ist nirgendwo gespeichert. Wenn Sie also wissen möchten, welches Datum wir haben, schreiben Sie: SQL> select sysdate 2 from dual; SYSDATE :39:43 124

28 5.1 Projektion Diese Tabelle ist Thema vieler Forumseinträge und Objekt wildester Spekulationen. Insbesondere drehen sich die Mutmaßungen um die Frage: Warum heißt die Tabelle DUAL so, wie sie heißt? Sie ahnen es schon: Man weiß es nicht. Oracle hat wohl einfach seinen Spaß an diesem Namen, und wir haben unseren Spaß an Oracle. Wichtiger ist, dass die Tabelle genau so aussieht, wie Sie sie für Ihre Anfrage brauchen. Wenn Sie vier Spalten ausgeben müssen, ist das genauso in Ordnung wie eine einzige Spalte. Es ist einfach ein Platzhalter, mit dessen Hilfe Sie ein syntaktisch korrektes SQL selbst dann schreiben können, wenn Sie keine Tabelle ansprechen möchten. 5 Experimentieren Sie doch mit dieser Tabelle, und machen Sie sich mit der Verwendung vertraut. Über diese Tabelle sollten Sie später nicht mehr nachdenken müssen, sondern sie einfach als syntaktischen Teil vieler SQL-Anweisungen benutzen Spalten- und Tabellenalias Ein Schönheitsfehler unserer Anfragen liegt sicher darin, dass Formeln oder längere Konkatenationen von alphanumerischen Spalten in lange und nichtssagende Spaltenüberschriften münden. Doch ist es nicht nur ein ästhetisches Problem, dass ein Anwender mit diesen Spaltenüberschriften haben könnte, sondern es gibt auch handfeste technische Gründe dafür, solche Spaltenüberschriften zu unterbinden: SQL-Anweisungen können ineinander geschachtelt werden oder aber als sogenannte View in der Datenbank hinterlegt werden. Wenn das gemacht wird, müsste eine SQL- Anweisung, die sich auf diese Spalte bezieht, diesen kryptischen Namen wiederholen. Das ist nicht nur unschön, sondern auch nicht erlaubt, denn die Namenskonvention für Spalten einer Tabelle (oder Abfrage, das ist in diesem Fall das Gleiche), legt fest, dass nur Buchstaben (ohne Umlaute oder sonstige Sonderzeichen) und die Sonderzeichen _ und $ bzw. #, wobei die letzten beiden Zeichen von Oracle»strongly discouraged«sind, also nicht verwendet werden sollten, obwohl es möglich ist. Wenn nun aber eine Spaltenbezeichnung eine Rechenregel enthält, verstößt diese gegen die Namenskonventionen für Spalten. Einfaches Spaltenalias Wir schlagen nun zwei Fliegen mit einer Klappe, wenn wir Spaltenaliase einführen. Ein Spaltenalias ist ein alternativer Name für eine Spalte. Dieser alternative Name wird, durch ein Leerzeichen getrennt, hinter der Spalte oder der Formel, die eine Spalte berechnet, eingefügt und anschließend ausgegeben. Dieses Spaltenalias kann entweder die Groß- und Kleinschreibung beachten oder auch nicht, je nachdem, wie er verwendet wird. Sehen wir uns zunächst eine Abfrage mit einfacher Verwendung an. In dieser Form verhält er sich ganz so, als hieße die Spalte immer schon wie das Alias, Groß- und Kleinschreibung werden nicht beachtet: 125

29 5 Grundlagen: Auswahl und Projektion SQL> select ename mitarbeiter, job beruf 2 from emp; MITARBEITER BERUF SMITH CLERK ALLEN SALESMAN WARD SALESMAN JONES MANAGER MARTIN SALESMAN Zeilen ausgewählt. Listing 5.10 Verwendung eines einfachen Spaltenalias Das Spaltenalias wird für eine Spalte vereinbart, indem es, durch ein Leerzeichen getrennt, hinter den Spaltennamen geschrieben wird. Schon diese einfache Verwendung hat viel Schönes: So wird maskiert, wie die Spalte eigentlich heißt, und der Spaltenname durch eine sprechende Bezeichnung ersetzt. Gerade im Berichtswesen ist das oftmals eine große Hilfe, denn die Leser des Berichts sind normalerweise nicht die gleichen, die auch die SQL-Anweisung geschrieben haben oder gar das Datenmodell der Datenbank kennen. Die Spalten sind in Datenmodellen oft nicht so bezeichnet, wie es der Leser eines Berichts erwarten würde, weil in Datenbanken an den Namen der Spalte oftmals noch weitere Anforderungen gestellt werden als nur die Bezeichnung des Inhalts. Genauso werden Spaltenaliase aber auch benutzt, um eine Rechenformel zu maskieren. Das Auseinanderdividieren von Beginn und Ende der Rechenformel und Beginn des Alias können Sie dabei beruhigt der Datenbank überlassen. Dennoch gibt es schnell einmal Fehler bei der Syntax, wenn Ihnen ein Komma zu viel oder zu wenig in die Abfrage hineinrutscht. Daher also noch einmal die Regel: Ein Alias wird direkt hinter der Spaltenbezeichnung oder der Formel einer Spaltenberechnung geschrieben, lediglich durch ein Leerzeichen getrennt. Das Komma hat hier nichts zu suchen, sondern wird ausschließlich verwendet, um neue Spalten zu beschreiben. Eine alternative Schreibform existiert noch, die ich allerdings nur sehr selten benutze: Sie können zwischen Spalte und Alias noch ein optionales Schlüsselwort as verwenden. Viele andere Datenbanken fordern von Ihnen dieses Schlüsselwort, und auch im SQL-Standard ist es definiert. Bevor ich Ihnen begründe, warum ich es dennoch nicht verwende, möchte ich Ihnen die Verwendung zunächst einmal zeigen. Bitte sehen Sie sich das nachfolgende Beispiel für eine Abfrage an, die neben diesem Schlüsselwort auch noch eine Rechenformel maskiert: SQL> select ename as mitarbeiter, (12*sal) as jahresgehalt 2 from emp; 126

30 5.1 Projektion MITARBEITER JAHRESGEHALT SMITH 9600 ALLEN WARD JONES Zeilen ausgewählt. 5 Listing 5.11 Verwendung eines einfachen Spaltenalias mit Schlüsselwort AS Was habe ich gegen dieses Schlüsselwort? Einerseits ist es nicht nötig, aber man könnte natürlich argumentieren, dass die Verwendung die Klarheit der Anweisung erhöht. Diesen Gedanken finde ich eigentlich auch richtig. Mich stört aber eine Eigenheit von Oracle: Ein solches Alias ist, wie wir bald sehen werden, auch für Tabellen möglich. Dort wird es ebenso vereinbart wie ein Spaltenalias. Dort aber ist das Schlüsselwort as verboten. Einmal optional erlaubt, einmal verboten da lasse ich es einfach überall weg. Na ja, ist halt eine Eigenart von mir, schreiben Sie es gern, wenn Sie mögen. Spaltenalias für Sonderzeichen In der zweiten Variante haben wir ein Spaltenalias, dass nicht nur Groß- und Kleinschreibung beachtet, sondern zudem auch noch alle Sonderzeichen erlaubt, die im Spaltenalias in der einfachen Form oben verboten sind. Diese Schreibweise empfehle ich Ihnen, noch bevor ich Sie Ihnen zeige, nur für den wirklich allerletzten Schritt vor der Darstellung der Anweisung oder dem Ausdruck. SQL-Anweisungen können auch in der Datenbank gespeichert werden (wir sprechen dann von einer View, wie Sie im weiteren Verlauf des Buches noch lernen werden), und diese View kann dann wiederum mit SQL befragt werden. Wenn dies geschieht, muss die Abfrage die Spalten der View exakt so ansprechen, wie Sie das Alias definiert haben, also in Groß- und Kleinschreibung und in der gleichen syntaktischen Form, die wir im nächsten Beispiel sehen. Das mag Ihnen zwar möglich erscheinen, die allermeisten SQL-Anwender rechnen aber nicht mit solchen Fallstricken, Fehler sind die unausweichliche Folge. Die Schreibweise ist eigentlich genau gleich, nur wird das Spaltenalias mit wichtig! doppelten Anführungszeichen eingerahmt. Das sieht dann so aus: SQL> select ename "Mitarbeiter", (12*sal) " Gehalt/Jahr" 2 from emp; Mitarbeiter Gehalt/Jahr SMITH 9600 ALLEN WARD

31 5 Grundlagen: Auswahl und Projektion JONES MARTIN Zeilen ausgewählt. Listing 5.12 Verwendung eines expliziten Spaltenalias Diese Funktionalität ist schon sehr leistungsfähig und muss in speziellen Abfragen auch benutzt werden, zum Beispiel, wenn aus SQL XML erstellt werden soll, das Groß- und Kleinschreibung unterscheidet. Nur ist klar, dass die Benennung einer Tabellenspalte mit einem solchen Konstrukt (Ja, das ist möglich, aber ich wollte, das hätte ich Ihnen nicht verraten!) ein Alptraum ist. Glauben Sie auch nicht, die Ausgabe dieser Anweisung hätte in SQL*Plus so»ohne Weiteres«funktioniert! Die Eingabe mit dem Summenzeichen ist möglich gewesen, die Ausgabe enthielt aber ein einfaches»s«an Stelle des Summenzeichens. Mit so etwas wollen Sie sich in SQL eigentlich nicht herumschlagen, das ist etwas für Oberflächenentwickler. Bedenken Sie auch, dass die allermeisten Anwendungen Ihnen erlauben, die Spaltenbeschriftung im Bericht selbst und nicht in SQL festzulegen. Vielleicht machen Sie in solchen Situationen eher Gebrauch von dieser Möglichkeit. Lassen Sie sich bei der Erstellung einer SQL-Anweisung nicht von ästhetischen Überlegungen treiben (es sei denn, sie formatieren die Abfrage, da ist das sogar dringend gewünscht). SQL ist eine Programmiersprache, um aus Datenbanken Daten herauszulesen und zu Informationen zusammenzustellen, nicht aber, um hübsche Ausgaben zu erzeugen. Das machen wir später, in der Oberfläche oder im Berichtswerkzeug. Tabellenalias Ich hatte bereits angedeutet, dass ein Alias auch für eine Tabelle vereinbart werden kann. In unseren Beispielen ist das zwar noch nicht nötig und sinnvoll, aber wenn ich schon Aliase bespreche, dürfen diese nicht fehlen, zumal es hierzu wenig Aufregendes zu sagen gibt. Ein Alias für eine Tabelle ist in SQL erforderlich, wenn Sie eine Abfrage gegen mehrere Tabellen durchführen. Wenn Sie mit mehreren Tabellen arbeiten, kann es sein, dass zwei Spalten in den beiden Tabellen den gleichen Namen haben, etwa die Spalten DEPTNO in der Tabelle EMP und DEPT. Oracle wüsste nun nicht, welche der beiden Spalten Sie meinen, wenn Sie einfach DEPTNO schrieben. Daher können Spalten in SQL auch immer als <Tabelle>.<Spalte> geschrieben werden, also zum Beispiel als EMP.ENAME statt einfach ENAME. Und hier kommt das Spaltenalias ins Spiel: Definieren Sie ein Alias für eine Tabelle, kann dieses Alias statt des Tabellennamens verwendet werden und erspart Ihnen Tipparbeit. Wenn wir also das Alias E für die Tabelle EMP und das Alias D für die Tabelle DEPT vereinbart haben, können wir von E.DEPTNO und D.DEPTNO sprechen, und die Konfusion ist behoben. Ein solches Tabellenalias wird genauso definiert wie ein Spaltenalias, nur dass hier das Schlüsselwort as nicht verwendet werden darf (warum auch immer, der SQL- 128

1 Einführung 21. TEILI Einführung und Grundlagen 35

1 Einführung 21. TEILI Einführung und Grundlagen 35 Auf einen Blick Auf einen Blick 1 Einführung 21 TEILI Einführung und Grundlagen 35 2 Verwendete Werkzeuge und Skripte 37 3 Konzept einer relationalen Datenbank 65 4 Aufbau einer Oracle-Datenbank 97 TEIL

Mehr

Auf einen Blick. Auf einen Blick

Auf einen Blick. Auf einen Blick Auf einen Blick Auf einen Blick 1 Einführung... 21 TEIL I Einführung und Grundlagen... 35 2 Verwendete Werkzeuge und Skripte... 37 3 Konzept einer relationalen Datenbank... 65 4 Aufbau einer Oracle-Datenbank...

Mehr

Auf einen Blick. Einführung und Grundlagen. TEIL II Die SELECT-Anweisung. TEIL III Datenmanipulation und Erzeugung von Datenbankobjekten

Auf einen Blick. Einführung und Grundlagen. TEIL II Die SELECT-Anweisung. TEIL III Datenmanipulation und Erzeugung von Datenbankobjekten Auf einen Blick Auf einen Blick 1 Einführung... 19 TEIL I Einführung und Grundlagen 2 Verwendete Werkzeuge und Skripte... 33 3 Konzept einer relationalen Datenbank... 57 4 Aufbau einer Oracle-Datenbank...

Mehr

Entspricht dem kartesischen Produkt von zwei oder mehr selektierten Tabellen ohne Join-Bedingung.

Entspricht dem kartesischen Produkt von zwei oder mehr selektierten Tabellen ohne Join-Bedingung. Tipps & Tricks: Neuerungen Joins Bereich: SQL Erstellung: 07/2004 HA Versionsinfo: 10.1, 10.2, 11.1, 11.2 Letzte Überarbeitung: 06/2009 MA Neuerungen zu Joins Ab Version 9i sind alle dem SQL:1999-Standard

Mehr

[ SQL] Wissen, das sich auszahlt

[  SQL] Wissen, das sich auszahlt [www.teia.de SQL] Wissen, das sich auszahlt INHALT SEITE 12 [I] 1] Einführung in SQL und relationale Datenbanken 12 14 16 18 11 1.1 1.2 Einführung Die Structured Query Language (SQL) Tabellen Mehrere Tabellen

Mehr

Nähern wir uns der ersten SQL-Anweisung, indem wir die Möglichkeiten und einfache Anwendungen der Anweisung betrachten.

Nähern wir uns der ersten SQL-Anweisung, indem wir die Möglichkeiten und einfache Anwendungen der Anweisung betrachten. 5 Grundlagen: Kapitel 5 Auswahl und Projektion Nähern wir uns der ersten SQL-Anweisung, indem wir die Möglichkeiten und einfache Anwendungen der Anweisung betrachten. 5 In diesem Kapitel möchte ich die

Mehr

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort... 13

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort... 13 Auf einen Blick Vorwort... 13 Teil 1 Vorbereitung Kapitel 1 Einleitung... 17 Kapitel 2 SQL der Standard relationaler Datenbanken... 21 Kapitel 3 Die Beispieldatenbanken... 39 Teil 2 Abfrage und Bearbeitung

Mehr

1.1 Datenbanken Tabellen SQL und die Befehlseingabe Beispieldatenbank 36

1.1 Datenbanken Tabellen SQL und die Befehlseingabe Beispieldatenbank 36 Vorwort 11 1 Einleitung 15 1.1 Datenbanken 21 1.2 Tabellen 29 1.3 SQL und die Befehlseingabe 29 1.4 Beispieldatenbank 36 2 Am Anfang 38 2.1 Aufrufen der SQL-Eingabemaske 38 2.2 Schließen der SQL-Eingabemaske

Mehr

Abfragen (Queries, Subqueries)

Abfragen (Queries, Subqueries) Abfragen (Queries, Subqueries) Grundstruktur einer SQL-Abfrage (reine Projektion) SELECT [DISTINCT] {* Spaltenname [[AS] Aliasname ] Ausdruck} * ; Beispiele 1. Auswahl aller Spalten SELECT * ; 2. Auswahl

Mehr

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort 13

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort 13 Auf einen Blick Vorwort 13 Teil 1 Vorbereitung Kapitel 1 Einleitung 17 Kapitel 2 SQL - der Standard relationaler Datenbanken 21 Kapitel 3 Die Beispieldatenbanken 39 Teil 2 Abfrage und Bearbeitung Kapitel

Mehr

Erzeugung und Veränderung von Tabellen

Erzeugung und Veränderung von Tabellen Datenbanken - Objekte Erzeugung und Veränderung von Tabellen Objekt Tabelle View Sequence Index Synonym Basiseinheit zum Speichern; besteht aus Zeilen und Spalten; Logische Repräsentation; kann Teilmengen

Mehr

Es geht also im die SQL Data Manipulation Language.

Es geht also im die SQL Data Manipulation Language. 1 In diesem Abschnitt wollen wir uns mit den SQL Befehlen beschäftigen, mit denen wir Inhalte in Tabellen ( Zeilen) einfügen nach Tabelleninhalten suchen die Inhalte ändern und ggf. auch löschen können.

Mehr

SQL. Datenmanipulation. Datenmanipulationssprache. Ein neues Tupel hinzufügen. Das INSERT Statement

SQL. Datenmanipulation. Datenmanipulationssprache. Ein neues Tupel hinzufügen. Das INSERT Statement SQL Datenmanipulation Datenmanipulationssprache Ein DML Statement wird ausgeführt wenn: neue Tupel eingefügt werden existierende Tupel geändert werden existierende Tupel aus der Tabelle gelöscht werden

Mehr

Inhaltsverzeichnis. Vorwort 13. Kapitel 1 Einleitung 15

Inhaltsverzeichnis. Vorwort 13. Kapitel 1 Einleitung 15 Vorwort 13 Kapitel 1 Einleitung 15 Kapitel 2 SQL-der Standard relationaler Datenbanken... 19 2.1 Die Geschichte 19 2.2 Die Bestandteile 20 2.3 Die Verarbeitung einer SQL-Anweisung 22 2.4 Die Struktur von

Mehr

Übersicht der wichtigsten MySQL-Befehle

Übersicht der wichtigsten MySQL-Befehle Übersicht der wichtigsten MySQL-Befehle 1. Arbeiten mit Datenbanken 1.1 Datenbank anlegen Eine Datenbank kann man wie folgt erstellen. CREATE DATABASE db_namen; 1.2 Existierende Datenbanken anzeigen Mit

Mehr

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15 Vorwort..................................................... 13 Kapitel 1 Einleitung.......................................... 15 Kapitel 2 SQL der Standard relationaler Datenbanken... 19 2.1 Die Geschichte................................

Mehr

Dieter Staas Das Einsteigerseminar SQL

Dieter Staas Das Einsteigerseminar SQL 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Dieter Staas Das Einsteigerseminar SQL Vorwort 15 Einleitung 17 Lernen

Mehr

Mengen- oder SET-Operatoren fassen das Ergebnis von zwei oder mehreren Teilabfragen zu einem Ergebnis zusammen.

Mengen- oder SET-Operatoren fassen das Ergebnis von zwei oder mehreren Teilabfragen zu einem Ergebnis zusammen. Tipps & Tricks: Mengenoperatoren Bereich: DBA, SQL Erstellung: 06/2004 MP Versionsinfo: 10.1, 10.2, 11.1, 11.2 Letzte Überarbeitung: 06/2009 MA Mengenoperatoren Mengen- oder SET-Operatoren fassen das Ergebnis

Mehr

Inhaltsverzeichnis. Inhalt. 1 Einführung in die Datenbanktechnologie

Inhaltsverzeichnis. Inhalt. 1 Einführung in die Datenbanktechnologie 3 Inhaltsverzeichnis 1 Einführung in die Datenbanktechnologie 1.1 Einleitung... 8 1.1.1 Zielsetzung... 8 1.1.2 Aufbau des Studienbuches... 9 1.1.3 Abgrenzung... 10 1.2 Grundbegriffe... 10 1.3 Datenbanksysteme...

Mehr

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert.

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert. Betrifft Autor FIRST, LAST Markus Jägle (markus.jaegle@trivadis.com) Art der Info Technische Background Info (April 2002) Quelle Aus dem NF9i-Kurs, NF9i-Techno-Circle der Trivadis und Oracle9i Data Warehousing

Mehr

Professioneller Einstieg in Oracle SQL - LVC

Professioneller Einstieg in Oracle SQL - LVC Oracle University Contact Us: 1.800.529.0165 Professioneller Einstieg in Oracle SQL - LVC Duration: 5 Days What you will learn Dieser Kurs richtet sich an Oracle8i-, Oracle9i- und Oracle Database 10g-Benutzer.

Mehr

MCSA: SQL 2016 Database Development

MCSA: SQL 2016 Database Development MCSA: SQL 2016 Database Development Querying Data with Transact-SQL & Developing SQL Databases Seminarziel In diesem 6-tägigen Kurs werden die Teilnehmer von Grund auf in die Entwicklung

Mehr

Oracle Database 12c: Introduction to SQL (ORA-D80174)

Oracle Database 12c: Introduction to SQL (ORA-D80174) Oracle Database 12c: Introduction to SQL (ORA-D80174) Sie erhalten in diesem Kurs eine fundierte Einführung in die Datenbankserver-Technologie. Sie behandeln die Konzepte, Funktionen und Anwendungen von

Mehr

SQL mit ORACLE. Wolf-Michael Kahler

SQL mit ORACLE. Wolf-Michael Kahler Wolf-Michael Kahler SQL mit ORACLE Eine aktuelle Einfuhrung in die Arbeit mit relationalen und objektrelationalen Datenbanken unter Einsatzvon ORACLE Express Mit 311 Abbildungen 3., aktualisierte und erweiterte

Mehr

Views erzeugen. Datenbank - Objekte. Wozu braucht man Views? Was ist eine View?

Views erzeugen. Datenbank - Objekte. Wozu braucht man Views? Was ist eine View? Datenbank - Objekte Views erzeugen Objekt Tabelle View Sequence Index Synonym Objekt Beschreibung Basiseinheit zum Speichern; besteht aus Zeilen und Spalten; Logische Repräsentation; kann Teilmengen von

Mehr

Skripte schreiben. Überblick SQL*Plus. Einloggen in SQL*Plus. Tabellenstrukturen anzeigen

Skripte schreiben. Überblick SQL*Plus. Einloggen in SQL*Plus. Tabellenstrukturen anzeigen Skripte schreiben Überblick Login in. Beschreiben der Tabellenstrukturen. Editieren der SQL-Anweisung Ausführen von SQL aus. SQL-Anweisungen in Dateien speichern bzw. SQL-Anweisungen anhängen. Ausführen

Mehr

CARL HANSER VERLAG. Christopher Allen. Oracle PL/SQL für Einsteiger Der Einsatz von SQL und PL/SQL in der Oracle-Datenbank 3-446-21801-7

CARL HANSER VERLAG. Christopher Allen. Oracle PL/SQL für Einsteiger Der Einsatz von SQL und PL/SQL in der Oracle-Datenbank 3-446-21801-7 CARL HANSER VERLAG Christopher Allen Oracle PL/SQL für Einsteiger Der Einsatz von SQL und PL/SQL in der Oracle-Datenbank 3-446-21801-7 www.hanser.de Inhaltsverzeichnis Danksagung...XI Einleitung...XIII

Mehr

Funktionen in JavaScript

Funktionen in JavaScript Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Mithilfe von Funktionen kann man denselben Code von mehreren Stellen des Programms aus aufrufen.

Mehr

Oracle Database 11g: Professioneller Einstieg in SQL Release 2 (Deutsch)

Oracle Database 11g: Professioneller Einstieg in SQL Release 2 (Deutsch) Oracle University Kontakt: 0180-2000-526 / +49 89-14301200 Oracle Database 11g: Professioneller Einstieg in SQL Release 2 (Deutsch) Dauer: 5 Tage Lerninhalte Die Teilnehmer lernen die relationalen Datenbankkonzepte

Mehr

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de 08 Datenbanken Übung SQL Einführung Eckbert Jankowski www.iit.tu-cottbus.de Datenmodell (Wiederholung, Zusammenfassung) Objekte und deren Eigenschaften definieren Beziehungen zwischen den Objekten erkennen/definieren

Mehr

SQL-Einführung Teil 2

SQL-Einführung Teil 2 SQL-Einführung Teil 2 Prof. Dr. Waldemar Rohde Dipl.-Ing. Jörg Höppner 19.10.2006 1 Datenmanipulationssprache (DML) Select DML ermöglicht es Daten mit SELECT abzurufen UPDATE zu verändern Delete DML Update

Mehr

Inhaltsverzeichnis Vorwort zur vierten Auflage Vorwort zur dritten Auflage Vorwort zur zweiten Auflage Vorwort zur ersten Auflage Hinweise zur CD

Inhaltsverzeichnis Vorwort zur vierten Auflage Vorwort zur dritten Auflage Vorwort zur zweiten Auflage Vorwort zur ersten Auflage Hinweise zur CD Vorwort zur vierten Auflage 11 Vorwort zur dritten Auflage 13 Vorwort zur zweiten Auflage 15 Vorwort zur ersten Auflage 17 Hinweise zur CD 19 1 Datenbanken und Datenbanksysteme 21 1.1 Zentralisierung der

Mehr

Datenbank und Tabelle mit SQL erstellen

Datenbank und Tabelle mit SQL erstellen Datenbank und Tabelle mit SQL erstellen 1) Übung stat Mit dem folgenden Befehlen legt man die Datenbank stat an und in dieser die Tabelle data1 : CREATE DATABASE stat; USE stat; CREATE TABLE data1 ( `id`

Mehr

Oracle SQL. Marco Skulschus Marcus Wiederstein

Oracle SQL. Marco Skulschus Marcus Wiederstein www.comelio-medien.com Oracle SQL Marco Skulschus Marcus Wiederstein Oracle SQL Marco Skulschus Marcus Wiederstein Oracle SQL Marco Skulschus Marcus Wiederstein Webseite zum Buch: www.comelio-medien.com/buch-katalog/oracle/oracle_sql

Mehr

Daniel Warner SQL. Das Praxisbuch. Mit 119 Abbildungen. Franzis

Daniel Warner SQL. Das Praxisbuch. Mit 119 Abbildungen. Franzis Daniel Warner SQL Das Praxisbuch Mit 119 Abbildungen Franzis Inhaltsverzeichnis Teil I - Einleitung 15 1 Einleitung 17 1.1 Zum Aufbau des Buchs 17 1.2 Hinweise zur Buch-CD 18 1.3 Typografische Konventionen

Mehr

12 BG EDV Access / Inf-SQL1 Theodor-Heuss-Schule Wetzlar

12 BG EDV Access / Inf-SQL1 Theodor-Heuss-Schule Wetzlar Abfragen aus einer Tabelle mit Hilfe der Datenbank-Sprache SQL SQL (Structured Query Language) ist eine Computersprache zum Speichern, Bearbeiten und Abfragen von Daten in relationalen Datenbanken. Eine

Mehr

Funktionen in JavaScript

Funktionen in JavaScript Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Es können ganze Programmteile aufgenommen werden. Mithilfe von Funktionen kann man denselben

Mehr

Variable. Interaktive Skripte

Variable. Interaktive Skripte Interaktive Skripte Variable...sal =? deptno=?.. ename =?... Werte eingeben während der Laufzeit. Nutzer SQL1 basierend auf OAI-Kurs Copyright Oracle Corporation, 1998. All rights reserved SQL2 basierend

Mehr

Inhaltsverzeichnis. Einleitung

Inhaltsverzeichnis. Einleitung vn Inhaltsverzeichnis Einleitung Kapitel 1: Eine Einführung in relationale Datenbanken 7 Was ist eine relationale Datenbank? 9 Verknüpfen der einzelnen Tabellen 10 Die Reihenfolge der Zeilen ist beliebig

Mehr

2 Anlegen und Konfigurieren von Datenbanken 35

2 Anlegen und Konfigurieren von Datenbanken 35 Inhalt 1 Einführung und Installation 9 1.1 Einführung 11 1.1.1 Aufbau 11 1.1.2 Schreibkonventionen 12 1.1.3 Zur Beispieldatenbank 13 1.1.4 Kurz-Installation 19 1.2 Die Oracle-Installation 20 1.3 Die Installation

Mehr

Datenbanksysteme Teil 6 MySQL DML Die SELECT-Anweisung. Stefan Maihack Dipl. Ing. (FH) Datum:

Datenbanksysteme Teil 6 MySQL DML Die SELECT-Anweisung. Stefan Maihack Dipl. Ing. (FH) Datum: Datenbanksysteme Teil 6 MySQL DML Die SELECT-Anweisung Stefan Maihack Dipl. Ing. (FH) Datum: 28.10.2005 1 einfachste SELECT-Anweisung Alle Inhalte einer Tabelle holen: SELECT * FROM land; 2 DML - SELECT

Mehr

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. MySQL-Befehle 1. Einleitung In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. 2. Arbeiten mit Datenbanken 2.1 Datenbank anlegen Eine Datenbank kann man wie folgt

Mehr

12. Datenschutz: Zugriffsrechte in SQL Datenschutz: Zugriffsrechte in SQL

12. Datenschutz: Zugriffsrechte in SQL Datenschutz: Zugriffsrechte in SQL 12. Datenschutz: Zugriffsrechte in SQL 12-1 Datenschutz: Zugriffsrechte in SQL 12. Datenschutz: Zugriffsrechte in SQL 12-2 Inhalt 1. Anforderungen, Allgemeines 2. Die SQL-Befehle GRANT und REVOKE 3. Sichten

Mehr

Gregor Kuhlmann Friedrich Müllmerstadt. MySQL. Der Schlüssel zu Datenbanken-Design und -Programmierung. c 3 E. i- O Rowohlt Taschenbuch Verlag

Gregor Kuhlmann Friedrich Müllmerstadt. MySQL. Der Schlüssel zu Datenbanken-Design und -Programmierung. c 3 E. i- O Rowohlt Taschenbuch Verlag Gregor Kuhlmann Friedrich Müllmerstadt MySQL Der Schlüssel zu Datenbanken-Design und -Programmierung r?: X c 3 E i- O uu Rowohlt Taschenbuch Verlag Inhalt Editorial 11 Einleitung 12 1 Einführung in das

Mehr

Professioneller Einstieg in Oracle Database 11g SQL

Professioneller Einstieg in Oracle Database 11g SQL Oracle University Kontakt: +41- (0) 56 483 31 31 Professioneller Einstieg in Oracle Database 11g SQL Dauer: 5 Tage Lerninhalte Die Teilnehmer lernen die relationalen Datenbankkonzepte kennen. Der Kurs

Mehr

insert, update, delete Definition des Datenbankschemas select, from, where Rechteverwaltung, Transaktionskontrolle

insert, update, delete Definition des Datenbankschemas select, from, where Rechteverwaltung, Transaktionskontrolle Einführung in SQL insert, update, delete Definition des Datenbankschemas select, from, where Rechteverwaltung, Transaktionskontrolle Quelle Wikipedia, 3.9.2015 SQL zur Kommunikation mit dem DBMS SQL ist

Mehr

Prakt. Datenbankprogrammierung. Sommersemester 2005

Prakt. Datenbankprogrammierung. Sommersemester 2005 Prakt. Datenbankprogrammierung Sommersemester 2005 A,2: Hierarchische Anfragen Martin-Luther-Universität Halle, Institut für Informatik, Datenbanken Christian Goldberg Wann ist eine hierarchische Anfrage

Mehr

Datenbankprogrammierung mit MySQL 5 und PHP 5 Spona

Datenbankprogrammierung mit MySQL 5 und PHP 5 Spona DAS EINSTEIGERSEMINAR Datenbankprogrammierung mit MySQL 5 und PHP 5 von Helma Spona Neuausgabe Datenbankprogrammierung mit MySQL 5 und PHP 5 Spona schnell und portofrei erhältlich bei beck-shop.de DIE

Mehr

Erzeugen von Constraints

Erzeugen von Constraints Erzeugen von Constraints Was sind Constraints? Durch Constraints werden Regeln auf einem bestimmtem Tabellen-Level erzwungen. Die folgenden Constraint-Typen sind in Oracle integriert: NOT NULL UNIQUE Key

Mehr

SQL. Komplexe Abfragen. SQL-Komplexe Abfragen. SQL-Komplexe Abfragen. Komplexe Abfragen verknüpfen mehrere Tabellen miteinander.

SQL. Komplexe Abfragen. SQL-Komplexe Abfragen. SQL-Komplexe Abfragen. Komplexe Abfragen verknüpfen mehrere Tabellen miteinander. SQL Komplexe Abfragen Komplexe Abfragen verknüpfen mehrere Tabellen miteinander. Voraussetzung für das Verständnis ist die Beherrschung einfacher SELECT-Abfragen Die Möglichkeit, Tabellen zu verknüpfen,

Mehr

SQL-Sprachvielfalt. Peter Willadt (Ludwig-Erhard-Schule) SQL-Befehle / 47

SQL-Sprachvielfalt. Peter Willadt (Ludwig-Erhard-Schule) SQL-Befehle / 47 SQL-Sprachvielfalt DML Data Manipulation Language: Daten einfügen, ändern und löschen DQL Data Query Language: Daten abfragen DDL Data Definition Language: Tabellen und andere Strukturelemente erzeugen,

Mehr

Oracle und SQL. Kursinhalte. Kompakt-Intensiv-Training. Oracle und SQL

Oracle und SQL. Kursinhalte. Kompakt-Intensiv-Training. Oracle und SQL Oracle und SQL Kompakt-Intensiv-Training In unsere Schulung "Oracle und SQL" erhalten Sie einen breitgefächerten Überblick über die fachmännische und effektive Nutzung der SQL-Implementierung in Oracle.

Mehr

Bibliografische Informationen digitalisiert durch http://d-nb.info/995021198

Bibliografische Informationen digitalisiert durch http://d-nb.info/995021198 Auf einen Blick 1 Einleitung 15 2 Datenbankentwurf 23 3 Datenbankdefinition 43 4 Datensätze einfügen (INSERT INTO) 95 5 Daten abfragen (SELECT) 99 6 Daten aus mehreren Tabellen abfragen (JOIN) 143 7 Unterabfragen

Mehr

Intensivübung zu Algorithmen und Datenstrukturen

Intensivübung zu Algorithmen und Datenstrukturen Intensivübung zu Algorithmen und Datenstrukturen Silvia Schreier Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Übersicht Programmierung Fallunterscheidung Flussdiagramm Bedingungen Boolesche

Mehr

Marcus Throll, Oliver Bartosch. Einstieg in SQL. Verstehen, einsetzen, nachschlagen. Galileo Press

Marcus Throll, Oliver Bartosch. Einstieg in SQL. Verstehen, einsetzen, nachschlagen. Galileo Press Marcus Throll, Oliver Bartosch Einstieg in SQL Verstehen, einsetzen, nachschlagen Galileo Press Auf einen Blick 1 Einleitung 15 2 Datenbankentwurf 23 3 Datenbankdefinition 43 4 Datensätze einfügen (INSERT

Mehr

Oracle SQL. Seminarunterlage. Version vom

Oracle SQL. Seminarunterlage. Version vom Seminarunterlage Version: 12.16 Version 12.16 vom 12. Oktober 2017 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen

Mehr

Datenschutz: Zugriffsrechte in SQL

Datenschutz: Zugriffsrechte in SQL 12. Datenschutz: Zugriffsrechte in SQL 12-1 12. Datenschutz: Zugriffsrechte in SQL 12-2 Inhalt Datenschutz: Zugriffsrechte in SQL 1. Anforderungen, Allgemeines 2. Die SQL-Befehle GRANT und REVOKE 3. Sichten

Mehr

Einleitung. ROLLUP, CUBE und GROUPING. Markus Jägle (markus.jaegle@trivadis.com) Art der Info Technische Background Info (April 2002)

Einleitung. ROLLUP, CUBE und GROUPING. Markus Jägle (markus.jaegle@trivadis.com) Art der Info Technische Background Info (April 2002) Betrifft Autör: GROUPING_ID Markus Jägle (markus.jaegle@trivadis.com) Art der Info Technische Background Info (April 2002) Quelle Aus dem Oracle9i Data Warehousing Guide und den Kursen New Features Oracle9i

Mehr

SQL. SQL SELECT Anweisung SQL-SELECT SQL-SELECT

SQL. SQL SELECT Anweisung SQL-SELECT SQL-SELECT SQL SQL SELECT Anweisung Mit der SQL SELECT-Anweisung werden Datenwerte aus einer oder mehreren Tabellen einer Datenbank ausgewählt. Das Ergebnis der Auswahl ist erneut eine Tabelle, die sich dynamisch

Mehr

SQL als Zugriffssprache

SQL als Zugriffssprache SQL als Zugriffssprache Der Select Befehl: Aufbau Select- und From-Klausel Where-Klausel Group-By- und Having-Klausel Union Join-Verbindung Order-By-Klausel Der Update-Befehl Der Delete-Befehl Der Insert-Befehl

Mehr

Variablen in MATLAB. Unterschiede zur Mathematik: Symbolisches und numerisches Rechnen. Skriptdateien. for-schleifen.

Variablen in MATLAB. Unterschiede zur Mathematik: Symbolisches und numerisches Rechnen. Skriptdateien. for-schleifen. Variablen in MATLAB. Unterschiede zur Mathematik: Symbolisches und numerisches Rechnen. Skriptdateien. for-schleifen. Wir wollen uns heute dem Thema Variablen widmen und uns damit beschäftigen, wie sich

Mehr

SELECT dient dazu, aus einer vorhandenen Datenbank bestimmte Spalten und Zeilen auszugeben es handelt sich also um eine Auswahlabfrage.

SELECT dient dazu, aus einer vorhandenen Datenbank bestimmte Spalten und Zeilen auszugeben es handelt sich also um eine Auswahlabfrage. SELECT-FROM SELECT dient dazu, aus einer vorhandenen Datenbank bestimmte Spalten und Zeilen auszugeben es handelt sich also um eine Auswahlabfrage. Inhaltsverzeichnis 1 Der grundlegende Aufbau 2 Doppelte

Mehr

Zellenbasierende Berechnungen und Spreadsheets in Oracle 10g

Zellenbasierende Berechnungen und Spreadsheets in Oracle 10g Zellenbasierende Berechnungen und Spreadsheets in Oracle 10g Marc Bastien ORACLE Deutschland GmbH Geschäftstelle Hamburg Schlüsselworte OLAP, Spreadsheet, Model, Cell-Based-Access, Inter-Row Calculations

Mehr

Prakt. Datenbankprogrammierung. Sommersemester 2005

Prakt. Datenbankprogrammierung. Sommersemester 2005 Prakt. Datenbankprogrammierung Sommersemester 2005 II,2: Schreiben von ausführbaren Statements Martin-Luther-Universität Halle, Institut für Informatik, Datenbanken Christian Goldberg PL/SQL-Block-Syntax

Mehr

1 Vorstellung Kursbeispiel

1 Vorstellung Kursbeispiel 1 Vorstellung Kursbeispiel Dieses Kapitel basiert auf den datenbanktheoretischen Grundlagen des Kapitel 1 und stellt die im Kurs verwendete Testdatenbank vor. Weiterhin soll grob skizziert werden, wie

Mehr

Prakt. Datenbankprogrammierung. Sommersemester Was sind Constraints? I,11: Verwendung von Constraints. Festlegung von Constraints

Prakt. Datenbankprogrammierung. Sommersemester Was sind Constraints? I,11: Verwendung von Constraints. Festlegung von Constraints Prakt. Datenbankprogrammierung Sommersemester 2005 I,11: Verwendung von Constraints Was sind Constraints? Constraints stellen Regeln auf Tabellenebene sicher. Constraints verhindern das Löschen aus einer

Mehr

SQL. erfolgreich Madrid Amsterdam An imprint of Pearson

SQL. erfolgreich Madrid Amsterdam An imprint of Pearson 10 01101110 John-Harry 01110 Wieken 0110 0110 0110 10 01101 011 01110 0110 010 011011011 0 10 01111010 01101 011011 0110 0110 01110 011011101 01101 0110 010 0101 10 011011101 0101 0110 010 010 0110 01101110

Mehr

Prakt. Datenbankprogrammierung. Sommersemester I,5: Aggregieren von Daten mit Gruppen-Funktionen

Prakt. Datenbankprogrammierung. Sommersemester I,5: Aggregieren von Daten mit Gruppen-Funktionen Prakt. Datenbankprogrammierung Sommersemester 2005 I,5: Aggregieren von Daten mit Gruppen-Funktionen Martin-Luther-Universität Halle, Institut für Informatik, Datenbanken Christian Goldberg Was sind Gruppen-Funktionen?

Mehr

Die SQL-Schnittstelle

Die SQL-Schnittstelle Die SQL-Schnittstelle Merlin 16 Version 16.0 vom 09.10.2012 Inhalt Die SQL-Export-Schnittstelle... 4 Der Menüpunkt Abfrage durchführen... 4 Beschreibung Fenster Abfrage durchführen... 4 Schaltflächen Fenster

Mehr

Aggregatfunktionen in SQL

Aggregatfunktionen in SQL Aggregatfunktionen in SQL Michael Dienert 14. April 2008 1 Definition von Aggregatfunktionen Ihren Namen haben die Aggregatfunktionen vom englischen Verb to aggregate, was auf deutsch anhäufen, vereinigen,

Mehr

3.1 Allgemeines. Abbildung 3.1: Eröffnungsmenü einer Excel-Mappe

3.1 Allgemeines. Abbildung 3.1: Eröffnungsmenü einer Excel-Mappe 3.1 Allgemeines Nach Aufruf des Programms-MS-Excel wird eine leere Datei, auch als Arbeitsmappe oder Excel-Worksheet als bezeichnet, geöffnet (= Abb. 3.1). Eine Arbeitsmappe besteht aus einem Stapel von

Mehr

Datenbankabfragen und Datenmanipulation

Datenbankabfragen und Datenmanipulation Datenbankabfragen und Datenmanipulation Datenbankabfragen auf einer Tabelle...1 SELECT Abfrage...1 Projektion...2 Wertausdrücke...3 Numerische Wertausdrücke...3 Zeichenkettenwertausdrücke...3 Datums und

Mehr

ACCESS. Berechnete Felder in Tabellen TABELLEN ENTWERFEN BERECHNETE FELDER IN TABELLEN BASICS

ACCESS. Berechnete Felder in Tabellen TABELLEN ENTWERFEN BERECHNETE FELDER IN TABELLEN BASICS Berechnete Felder in Tabellen Berechnete Felder in Tabellen sind ein Feature, das mit der Version 2010 von Access hinzugekommen ist. Dabei handelt es sich um die Möglichkeit, die Inhalte der übrigen Felder

Mehr

Wiederholung VU Datenmodellierung

Wiederholung VU Datenmodellierung Wiederholung VU Datenmodellierung VU Datenbanksysteme Reinhard Pichler Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Wintersemester

Mehr

SQL,Teil 3: Unterabfragen, Views & Berechnungen

SQL,Teil 3: Unterabfragen, Views & Berechnungen SQL,Teil 3: Unterabfragen, Views & Berechnungen W. Spiegel Übersicht Hinweis... Unterabfragen (subqueries) Virtuelle Spalten: AS Logik Berechnungen: Aggregatfunktionen in SQL GROUP BY & HAVING Views (Sichten)

Mehr

Berechnung von Kennzahlen mit der SQL Model Clause

Berechnung von Kennzahlen mit der SQL Model Clause Berechnung von Kennzahlen mit der Thomas Mauch 12.07.2018 DOAG BASEL BERN LAUSANNE ZÜRICH DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MÜNCHEN STUTTGART WIEN 1 AGENDA 1. Einführung 2. Syntax 3. Performance

Mehr

In diesem Abschnitt wollen wir uns mit einem besonderen Thema widmen. Dem Thema SQL-JOIN.

In diesem Abschnitt wollen wir uns mit einem besonderen Thema widmen. Dem Thema SQL-JOIN. 1 In diesem Abschnitt wollen wir uns mit einem besonderen Thema widmen. Dem Thema SQL-JOIN. Logisch angesiedelt ist dieses Thema bei dem SQL-DML Anweisungen, da es sich um einen besonderen Aspekt bei Select

Mehr

SQL Intensivpraktikum SS 2008

SQL Intensivpraktikum SS 2008 SQL Intensivpraktikum SS 2008 Aggregation von Daten Arbeit mit Gruppen SQL1 basierend auf OAI-Kurs Copyright Oracle Corporation, 1998. All rights reserved. Gruppenfunktionen Gruppenfunktionen verarbeiten

Mehr

Oracle Database: Introduction to SQL

Oracle Database: Introduction to SQL Oracle University Kontakt: Local: 0180 2000 526 Intl: +49 8914301200 Oracle Database: Introduction to SQL Dauer: 5 Tage Lerninhalte Mit dem vorliegenden Kurs Oracle Database: Introduction to SQL werden

Mehr

ACCESS SQL ACCESS SQL

ACCESS SQL ACCESS SQL ACCESS SQL Datenbankabfragen mit der Query-Language ACCESS SQL Datenbankpraxis mit Access 34 Was ist SQL Structured Query Language Bestehend aus Datendefinitionssprache (DDL) Datenmanipulationssprache

Mehr

MS SQL Server Einstieg in relationale Datenbanken und SQL Marco Skulschus Marcus Wiederstein

MS SQL Server Einstieg in relationale Datenbanken und SQL Marco Skulschus Marcus Wiederstein www.comelio-medien.com MS SQL Server Einstieg in relationale Datenbanken und SQL Marco Skulschus Marcus Wiederstein MS SQL Server Einstieg in relationale Datenbanken und SQL Marco Skulschus Marcus Wiederstein

Mehr

Microsoft Access Abfragen: Informationen anzeigen und sortieren

Microsoft Access Abfragen: Informationen anzeigen und sortieren Microsoft Access Abfragen: Informationen anzeigen und sortieren Alle Kunden Die Namen der Mitarbeiter und deren E-Mail-Adresse Bestellungen, nach dem Datum sortiert Anja Aue 16.11.16 Abfragen Zusammenstellung

Mehr

01 Einführung in PHP. Einführung in PHP 1/13 PHP in Aktion

01 Einführung in PHP. Einführung in PHP 1/13 PHP in Aktion 01 Einführung in PHP Einführung in PHP 1/13 PHP in Aktion PHP ist eine Programmiersprache, die ganz verschiedene Dinge tun kann: von einem Browser gesendete Formularinhalte auswerten, angepasste Webinhalte

Mehr

Inhaltsverzeichnis. Lothar Piepmeyer. Grundkurs Datenbanksysteme. Von den Konzepten bis zur Anwendungsentwicklung ISBN:

Inhaltsverzeichnis. Lothar Piepmeyer. Grundkurs Datenbanksysteme. Von den Konzepten bis zur Anwendungsentwicklung ISBN: Lothar Piepmeyer Grundkurs Datenbanksysteme Von den Konzepten bis zur Anwendungsentwicklung ISBN: 978-3-446-42354-1 Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-42354-1

Mehr

Microsoft Access Abfragen. Verknüpfung von Tabellen

Microsoft Access Abfragen. Verknüpfung von Tabellen Microsoft Access Abfragen. Verknüpfung von Tabellen Welche Bestellungen hat Kunde... aufgegeben? Welche Kunden im Staat USA haben Waren im Wert von mindestens... bestellt? Welche Waren wurden nicht bestellt?

Mehr

Inhaltsverzeichnis... 1 Bestandteile einer Formel... 1 Die Funktion Summenprodukt... 4

Inhaltsverzeichnis... 1 Bestandteile einer Formel... 1 Die Funktion Summenprodukt... 4 Inhaltsverzeichnis Inhaltsverzeichnis... 1 Bestandteile einer Formel... 1 Die Funktion SUMME... 2 Die Funktion AUTOSUMME... 2 Die Funktion SUMMEWENN... 2 Die Funktion SUMMEWENNS... 3 Die Funktion Summenprodukt...

Mehr

Einführung in SQL Datenbanken bearbeiten

Einführung in SQL Datenbanken bearbeiten Einführung in SQL Datenbanken bearbeiten Jürgen Thomas Entstanden als Wiki-Buch Bibliografische Information Diese Publikation ist bei der Deutschen Nationalbibliothek registriert. Detaillierte Angaben

Mehr

Online Kurse Modulbeschreibungen

Online Kurse Modulbeschreibungen Online Kurse Modulbeschreibungen K0100 SQL Basics M0101 DB Theorie Dieses Modul führt in die Thematik von Datenbanken und deren grundlegenden Begriffen und Konzepten ein. Es werden Fragen beantwortet,

Mehr

Tabellen verknüpfen: Joins

Tabellen verknüpfen: Joins SQL2-1 - Tabellen verknüpfen: Joins Bisher haben wir Tabellen mittels Unterabfragen verknüpft d. h. eine Spalte einer anderen Tabelle kann ein Selektionskriterium liefern. Wie kann man aber eine "echte"

Mehr

8 DML (1) Daten abfragen

8 DML (1) Daten abfragen 8 DML (1) Daten abfragen Eine Datenbank enthält eine Vielzahl verschiedener Daten. Abfragen dienen dazu, bestimmte Daten aus der Datenbank auszugeben. Dabei kann die Ergebnismenge gemäß den Anforderungen

Mehr

Oracle 8i und 9i New Features. DOAG November Peter Jensch, Trivadis GmbH

Oracle 8i und 9i New Features. DOAG November Peter Jensch, Trivadis GmbH Oracle 8i und 9i New Features DOAG November 200 Peter Jensch, Trivadis GmbH Facts & Figures Über 300 Mitarbeiter (D und CH) Über 200 Oracle Consultant Über 300 Kunden (ohne Schulung) Über 000 Projekte

Mehr

<? $ZeilenMax = 9; $SpaltenMax = 9; echo "<pre>";

<? $ZeilenMax = 9; $SpaltenMax = 9; echo <pre>; Vorbemerkungen Diese Schrittanleitung bezieht sich auf die Aufgaben 4 bis 6 von "Übung 2 - Schleifenbeispiele (1)" Sie soll als Anregung dienen, wie Sie Ihren Code blockweise erstellen und testen können.

Mehr

SQL - Datenbankdesign - Aufbau

SQL - Datenbankdesign - Aufbau SQL - Datenbankdesign - Aufbau Kompakt-Intensiv-Training Unsere fünftägige ANSI SQL Schulung vermittelt Ihnen alle nötigen Kenntnisse zur Erstellung von Datenauswertungen und Programmierung wiederkehrender

Mehr

Ü 416 Grundrechnungen

Ü 416 Grundrechnungen Ü 416 Grundrechnungen addieren subtrahieren multiplizieren dividieren Benötigte Datei: Übungsmappe.xlsx Es ist endlich so weit: In dieser Übung lernen Sie in Excel eine Formel zu erstellen. Aufgabe 1.

Mehr