Online-Kurs 'Datenbanken und Datenmodellierung'

Save this PDF as:
 WORD  PNG  TXT  JPG

Größe: px
Ab Seite anzeigen:

Download "Online-Kurs 'Datenbanken und Datenmodellierung'"

Transkript

1 Online-Kurs 'Datenbanken und Datenmodellierung' n Print-Version (c) StR S. Winter - Universität Passau Inhaltsverzeichnis 1 Der Aufbau von SQL-Anfragen im Überblick 1.1 Der Aufbau einer SQL-Anfrage 2 Einfache SQL-Anfragen 2.1 SELECT - FROM - Anfrage 2.2 Auswahl aller Attribute 2.3 Vermeidung von Duplikaten 2.4 Umbenennung der Ergebnisspalten - Alias 2.5 Übungen 3 SQL-Anfragen mit Bedingungen 3.1 Anfrage mit Bedingung 3.2 Syntaxdiagramm 3.3 Übungen 4 Sortierung der Ergebnismenge 4.1 Die ORDER BY- Klausel 4.2 Aufsteigende und absteigende Sortierung 4.3 Übungen 5 Gruppieren von Datensätzen 5.1 Die GROUP BY- Klausel 5.2 Aggregatfunktionen 5.3 Aggregatfunktion ohne GROUP BY- Klausel 5.4 Rechenoperationen in SQL 5.5 Übungen 6 Gruppierungen mit Bedingungen 6.1 Die HAVING - Klausel 6.2 Übungen 7 SQL-Anfragen über mehrere Tabellen 7.1 Verknüpfung von Tabellen - Join 7.2 Bedeutung der WHERE-Klausel 7.3 Self-Join 7.4 Übungen 8 Geschachtelte SQL-Anfragen mit Vergleichsoperatoren 8.1 Teilanfragen (Subqueries) mit einem Ergebnis 8.2 Übungen 9 Geschachtelte SQL-Anfragen mit speziellen Operatoren 9.1 Teilanfragen mit mehr als einem Ergebnis 9.2 Eine einfache Möglichkeit mit dem IN - Operator 9.3 Erweiterte Möglichkeiten 9.4 Übungen 10 Unteranfragen in der SELECT-Klausel, Korreliertheit 10.1 Unteranfragen in der SELECT-Klausel 10.2 Korrelierte Unteranfragen 10.3 Übungen 11 Verknüpfen mehrerer Ergebnismengen 11.1 UNION-, INTERSECT- und EXCEPT- Operation 11.2 Übungen 12 Weitere Sprachkonstrukte

2 12.1 Der LIKE-Operator 12.2 Übungen 13 Das Erstellen von Sichten (Views) 13.1 Was sind Sichten (Views) 13.2 Die CREATE VIEW - Anweisung 13.3 Syntaxdiagramm 13.4 Arbeiten mit Views 13.5 Übungen 14 Das Löschen von Sichten (Views) 14.1 Die DROP VIEW - Anweisung 14.2 Syntaxdiagramm 15 SQL mit MS ACCESS 15.1 Ansichten in MS ACCESS 15.2 Die SQL-Ansicht in MS ACCESS 15.3 Aufruf der SQL-Ansicht 1 Der Aufbau von SQL-Anfragen im Überblick 1.1 Der Aufbau einer SQL-Anfrage Anfragen (Queries) in SQL orientieren sich grundsätzlich an folgendem Schema: Reihenfolge SQL-Klausel Bedeutung Angabe notwendig 1 SELECT Auswahl der gewünschten Attribute ja 2 FROM Angabe der Tabelle(n), die die gewünschte Information ja enthalten 3 WHERE Angabe von Bedingungen für die gesuchte Information nein 4 GROUP BY (HAVING) Gruppieren der Daten nach bestimmten Kategorien nein 5 ORDER BY Sortierung des Ergebnisses nein Die Klauseln mit den Schlüsselwörtern WHERE, GROUP BY, HAVING, ORDER BY sind optional. Die Reihenfolge der einzelnen Klauseln ist aber verbindlich. Wird eine Anfrage an die Datenbank gestellt, so erhält man die gewünschte Information in Form einer Tabelle, der Ergebnistabelle, zurück. Das untenstehende Syntaxdiagramm zeigt alle Möglichkeiten einer SQL-Anfrage.

3 Bemerkung: Im Rahmen dieses Kapitels werden nur die wichtigsten - aber in der Regel ausreichenden - Möglichkeiten hinsichtlich der SQL-Anfragen besprochen. Die Syntaxdiagramme dagegen zeigen alle Möglichkeiten auf. Vertiefende Informationen zu den nicht näher erläuterten Konstrukte finden Sie beispielsweise bei [DD98]. Bemerkung: Die nachfolgenden Übungsbeispiele können auf der Offline-Datenbank nachvollzogen werden. Achten Sie darauf, dass Sie auf dem vollständigen Datenbestand arbeiten. Eventuell müssen Sie die Datenbank füllen. 2 Einfache SQL-Anfragen 2.1 SELECT - FROM - Anfrage Die einfachste Form einer SQL-Anfrage besteht aus der SELECT - und der FROM - Klausel. Beispiel: Welche Lehrerinnen und Lehrer - unter Angabe des Namens - gibt es im Kollegium?

4 ; Das SQL-Statement wird vom System folgendermaßen interpretiert: Nimm die Spalte Name der Tabelle Lehrkraft und zeige alle in dieser Spalte eingetragenen Daten an. Als Ergebnis liefert die Datenbank eine einspaltige Ergebnistabelle mit der Spaltenüberschrift Name zurück. Um mehrere Attribute auszuwählen, werden in der SELECT - Klausel die gewünschten Spaltennamen, durch Kommata getrennt, angegeben. Beispiel: Welche Lehrerinnen und Lehrer - unter Angabe von Personalnummer und Namen - gibt es im Kollegium? SELECT PersNr, Name ; Die Reihenfolge der Spaltennamen in der SELECT- Klausel legt dabei die Anordnung der Ergebnisspalten fest. Beispiel: Welche Lehrerinnen und Lehrer - unter Angabe Namen und Personalnummer - gibt es im Kollegium?, PersNr ; 2.2 Auswahl aller Attribute Will man alle Spalten einer Tabelle anzeigen lassen, gibt man hinter dem SELECT - Schlüsselwort einen Stern * an. Beispiel: Welche Daten sind über die Schülerinnen und Schüler gespeichert? SQL - Anfrage

5 SELECT * FROM Schueler ; 2.3 Vermeidung von Duplikaten In zahlreichen Fällen kommt derselbe Wert in einer gegebenen Spalte mehrmals vor. Beispiel: Aus welchen Orten kommen die Mitglieder des Lehrerkollegiums? SELECT Wohnort ; Duplikate werden also nicht automatisch ausgesondert. Um Mehrfachnennungen zu vermeiden, bietet SQL das Schlüsselwort DISTINCT an. Beispiel: Welche unterschiedlichen Wohnorte haben die Mitglieder des Lehrerkollegiums? SELECT DISTINCT Wohnort ; Das Schlüsselwort ALL erzwingt die Ausgabe aller Datensätze inklusive Duplikaten. Die Angabe ist aber nicht unbedingt notwendig. Die Queries SELECT Wohnort ; bzw. liefern identische Ergebnisse. SELECT ALL Wohnort ; Das Schlüsselwort ALL erzwingt die Ausgabe aller Datensätze inklusive Duplikaten. Die Angabe ist aber nicht unbedingt notwendig. Die Queries SELECT Wohnort FROM Professor ; bzw.

6 SELECT ALL Wohnort FROM Professor ; liefern identische Ergebnisse. 2.4 Umbenennung der Ergebnisspalten - Alias Zum besseren Verständnis der Ergebnistabelle ist es oft zweckmäßig, die Ergebnisspalten anders zu bezeichnen. Diese Umbenennung nennt man ALIAS. Dazu ist nur die Angabe des Schlüsselwortes AS und des gewünschten Namens in der SELECT - Klausel erforderlich. Beispiel: Welche Lehrerinnen und Lehrer gibt es im Kollegium? Gewünscht sind nur die Namen. Die ausgegebene Ergebnisspalte soll "Lehrerkollegium" heißen. AS Lehrerkollegium ; Bemerkung: Das Schlüsselwort AS ist neu in SQL/92 und wird nicht von allen Systemen akzeptiert. MS ACCESS verlangt die in SQL/92 vorgegebene Schreibweise. Bei ORACLE kann das Wort AS weggelassen werden, dafür muss der Aliasname in Anführungsstriche gesetzt werden. Die SELECT - Klausel lautet damit "Lehrerkollegium" ; Der neue Spaltenname darf keine Leer- oder Sonderzeichen enthalten. 2.5 Übungen Welche Lehrkräfte - unter Angabe von Personalnummer, Name und Geschlecht - gibt es im Kollegium? SELECT PersNr, Name, Geschlecht ; Welche Schülerinnen und Schüler - unter Angabe von Eintrittsjahr, Nummer und Name - sind an der Schule? SELECT Eintrittsjahr, Nr, Name FROM Schueler ;

7 Welche Fächer werden an der Schule unterrichtet? Die Ausgabespalte soll den Namen "Angebotene Faecher" erhalten. AS Angebotene_Faecher FROM Fach ; Da beim Spaltenname kein Leerzeichen zulässig ist, wurde das Leerzeichen durch einen Unterstrich ersetzt. Welche Schülernamen existieren an der Schule? Duplikate sollen nicht ausgegeben werden. SELECT DISTINCT Name FROM Schueler ; 3 SQL-Anfragen mit Bedingungen 3.1 Anfrage mit Bedingung Im WHERE- Teil können Bedingungen angegeben werden, um Datensätze nach bestimmten Kriterien auszuwählen. Beispiel: Welche Lehrerinnen und Lehrer wohnen in Passau? SELECT PersNr, Name WHERE Wohnort = 'Passau' ; Die Anfrage ist folgendermaßen zu interpretieren: Wähle aus der Tabelle Lehrkraft alle Datentupel aus, bei denen der Wert des Attributs Wohnort Passau ist und gib dann von diesen jeweils PersNr und Name aus. Dabei gilt: Einfache Bedingungen können durch Vergleiche erstellt werden. Dazu stehen die Vergleichsoperatoren,,, und = zur Verfügung. Bei Vergleichen mit einer Zeichenkette muss diese in Hochkommata gesetzt werden. (MS ACCESS verwendet statt Hochkommata Anführungszeichen.) Durch den Operator NOT (...) kann eine Bedingung bestimmt werden, die nicht erfüllt werden soll. Durch den Operator BETWEEN <wert1> AND <wert2> kann ein Bereich angegeben werden, in dem sich der gesuchte Attributwert befinden muss. Attributwerte, die gleich den Bereichsgrenzen <wert1> und <wert2> sind, gehören zum ausgewählten Bereich. Der BETWEEN-Operator kann nur auf Attribute angewendet werden, auf deren Domäne eine Reihenfolge vordefiniert ist. Beispielsweise ist das bei Zahlen immer der Fall. Mehrere Bedingungen können durch OR, d.h. mindestens eine der Bedingungen muss erfüllt sein, oder AND, d.h. jede der Bedingungen muss erfüllt sein, miteinander verknüpft werden.

8 Durch Setzen von Klammern kann festgelegt werden, welche Bedingungen "zusammengehören". Werden keine Klammer gesetzt, so gelten folgende Regeln: NOT bindet stärker als AND, d.h. der NOT - Operator wird vor dem AND- Operator ausgewertet. AND bindet stärker als OR. Beispiel: Welche Daten sind über die Lehrerinnen gespeichert, die zwischen 1949 und 1960 geboren sind? SQL - Anfrage SELECT * FROM Lehrkraft WHERE Geschlecht = 'w' AND Geburtsjahr BETWEEN 1949 AND 1960 ; Beispiel: Welche Lehrerinnen und Lehrer - unter Angabe von Name, PersNr, Wohnort - wohnen nicht in Passau?, PersNr, Wohnort WHERE NOT (Wohnort = 'Passau') ; 3.2 Syntaxdiagramm

9 3.3 Übungen Welche Lehrer haben eine dreistellige Personalnummer?, PersNr WHERE Geschlecht = 'm' AND PersNr BETWEEN 100 AND 999 ; Welche Lehrerinnen - unter Angabe von Personalnummer und Name - wohnen in Berlin oder Muenchen? SELECT PersNr, Name WHERE Geschlecht = 'w' AND (Wohnort = 'Berlin' OR Wohnort = 'Muenchen') ; Welche Schülernamen gibt es bei den Bekenntnislosen in der fünften Klasse? SELECT DISTINCT Name FROM Schueler WHERE Konfession = 'bk' AND gehoert_zu = 5 ; Welche Ergebnisse liefern folgende Anfragen? 1. WHERE Geschlecht = 'm' OR Wohnort = 'Passau' AND Geburtsjahr = 1945 ; 2. WHERE (Geschlecht = 'm' OR Wohnort = 'Passau' ) AND Geburtsjahr =1945 ; Tabelle 1. Anfrage

10 Tabelle 2. Anfrage Im ersten Fall sind alle männlichen Lehrkräfte sowie alle nach 1945 geborenen Lehrkräfte, die aus Passau kommen, gesucht. Die zweite Anfrage filtert die nach 1945 geborenen Lehrkräfte heraus, die männlich sind oder aus Passau kommen. 4 Sortierung der Ergebnismenge 4.1 Die ORDER BY- Klausel Um sortierte Ergebnisse zu erhalten, verwendet man das Schlüsselwort ORDER BY. Die ORDER BY- Klausel beinhaltet die Spalte, nach der sortiert werden soll. Dabei gibt es folgende Sortiermöglichkeiten: bei Zeichenketten alphabetisch, bei Zahlen nach der Größe bzw. bei expliziter Angabe einer Domäne nach der aufgeschriebenen Reihenfolge. Beispiel: Gewünscht ist eine alphabetisch geordnete Liste des Lehrerkollegiums mit Angabe der Personalnummer., PersNr ORDER BY Name ; Es können auch mehrere Sortierungsspalten, durch Kommata getrennt, angegeben werden. Dann bestimmt die erste Spalte das Hauptsortierungskriterium. Sind Datensätze bezüglich dieser Spalte identisch, erfolgt eine weitere Sortierung nach dem zweiten Attribut usw. Beispiel: Gewünscht ist eine Liste mit Klasse und Schülernamen, sortiert nach Klasse und Alphabet.

11 SELECT gehoert_zu AS Klasse, Name FROM Schueler ORDER BY gehoert_zu, Name ; 4.2 Aufsteigende und absteigende Sortierung Die bisherigen Beispiele waren aufsteigend sortiert. Durch Angabe des Schlüsselwortes DESC kann eine absteigende Sortierung erreicht werden. Bemerkung: Für die aufsteigende Sortierung steht auch das Schlüsselwort ASC zur Verfügung. Die Angabe dieses Schlüsselwortes ist optional. Wird die ORDER BY- Klausel ohne zusätzliche Angabe verwendet, wird das Ergebnis automatisch aufsteigend sortiert. Beispiel: Gewünscht ist eine Lehrerliste mit Personalnummer und Name, absteigend sortiert nach der Personalnummer. SELECT PersNr, Name WHERE Geschlecht = 'm' ORDER BY PersNr DESC ; 4.3 Übungen Welche Fächer, alphabetisch sortiert, gibt es an der Schule? bzw. FROM Fach ORDER BY Name ASC ; FROM Fach ORDER BY Name ; Gewünscht ist Klasse, Eintrittsjahr und Name aller katholischen Schülerinnen und Schüler, sortiert nach der Klasse und innerhalb der Klasse nach dem Eintrittsjahr.

12 SELECT gehoert_zu AS Klasse, Eintrittsjahr, Name FROM Schueler WHERE Konfession = 'rk' ORDER BY gehoert_zu ASC, Eintrittsjahr ASC ; bzw. SELECT gehoert_zu AS Klasse, Eintrittsjahr, Name FROM Schueler WHERE Konfession = 'rk' ORDER BY gehoert_zu, Eintrittsjahr ; Der Attributname gehoert_zu wurde mit dem AS-Operator in Klasse umbenannt. Gesucht sind Personalnummer und Name der Lehrerinnen, die in Passau wohnen, absteigend sortiert nach dem Geburtsjahr. SELECT PersNr, Name WHERE Geschlecht = 'w' AND Wohnort = 'Passau' ORDER BY Geburtsjahr DESC ; 5 Gruppieren von Datensätzen 5.1 Die GROUP BY- Klausel SQL erlaubt das Gruppieren von Datensätzen unter Berücksichtigung bestimmter Eigenschaften. Dafür steht die GROUP BY - Klausel zur Verfügung. Pro Gruppe kann mit Hilfe der Aggregatfunktionen ein Informationswert berechnet werden. 5.2 Aggregatfunktionen Folgende Aggregatfunktionen können verwendet werden: Aggregatfunktion COUNT (Ausdruck) SUM (Ausdruck) AVG (Ausdruck) MIN (Ausdruck) MAX (Ausdruck) Bedeutung Anzahl der Datensätze je Gruppe Summe der Werte von (Ausdruck) je Gruppe Durchschnitt der Werte von (Ausdruck) je Gruppe Minimum aller Werte von (Ausdruck) je Gruppe Maximum aller Werte von (Ausdruck) je Gruppe Diese Gruppierungsausdrücke werden in der SELECT - Klausel verwendet. Mehrfach auftretende Werte werden innerhalb der Aggregatfunktionen mehrfach gezählt. Duplikatzählung verhindert man durch Verwendung des Schlüsselwort DISTINCT innerhalb der Aggregatfunktion. Bemerkung: Ist das Ergebnis einer Aggregatfunktion, angewendet auf eine Spalte mit der Domäne INTEGER, eine Dezimalzahl, so hängt es von der verwendeten Datenbank ab, ob als das Ergebnis als INTEGER- Zahl, also unter Vernachlässigung der Nachkommastellen, oder als Dezimalzanl angezeigt wird. Beispiel: Aus welchen Wohnorten stammt das Lehrerkollegium? Wie viele Personen kommen jeweils aus einem bestimmten Ort?

13 SELECT Wohnort, count(*) AS Anzahl GROUP BY Wohnort ; Bei Ausführung des obigen Befehls gruppiert das System in einem ersten Schritt die Datentupel aller Lehrkräfte nach dem Wohnort, in einem zweiten Schritt werden die Datensätze pro Wohnort gezählt und dann ausgegeben. Die Angabe eines Sterns innerhalb der COUNT- Klausel weist das System an, jeweils alle Datensätze innerhalb einer Gruppe zu zählen. Bemerkung: ACHTUNG: Außer Aggregaten dürfen in der SELECT - Klausel nur Attribute vorkommen, die in der GROUP BY - Klausel aufgeführt sind. 5.3 Aggregatfunktion ohne GROUP BY- Klausel Wird die GROUP BY - Klausel weggelassen und trotzdem eine Aggregatfunktion in der SELECT - Klausel verwendet, so werden alle Datensätze der Tabelle zu einer einzigen Gruppe zusammengefasst. Beispiel: Was ist das durchschnittliche Geburtsjahr im Lehrerkollegium? SELECT AVG (Geburtsjahr) AS Durchschnitt ; 5.4 Rechenoperationen in SQL In der SELECT- und der WHERE- Klausel können auch Rechenoperationen durchgeführt werden. Grundsätzlich möglich ist die Verwendung von +, -, / und * sowie die Verwendung von Klammern. Daneben ist auch die Verwendung von Funktionen, wie beispielsweise die Wurzelfunktion, möglich, sofern sie von der Datenbank zur Verfügung gestellt werden. Als Operanden können Zahlen und Ergebnisse von Aggregatfunktionen verwendet werden. Beispiel: Wie viele Stunden Unterricht werden durchschnittlich pro Fach und pro Klasse erteilt? SELECT SUM (Stundenzahl) / COUNT (*) AS Durchschnittsstundenzahl FROM ist_fachlehrkraft_von ; Hinweis: Das Ergebnis erhält man einfacher durch Ausnutzung der AVG- Funktion. Bemerkung: zum obigen Beispiel Die Onlinedatenbank schneidet bei der Ergebnisausgabe die Nachkommastellen ab, d.h. das Ergebnis der Anfrage ist 3! 5.5 Übungen Wie viele Lehrerinnen bzw. der Lehrer aus Passau gibt es? bzw. SELECT Geschlecht, COUNT (Geschlecht) AS Anzahl WHERE Wohnort = 'Passau' GROUP BY Geschlecht ;

14 SELECT Geschlecht, COUNT (*) AS Anzahl WHERE Wohnort = 'Passau' GROUP BY Geschlecht ; Wie viele Schülerinnen und Schüler pro Konfession gibt es in der elften Klasse? SELECT Konfession, COUNT (*) AS Anzahl FROM Schueler WHERE gehoert_zu = 11 GROUP BY Konfession ; Wie groß sind die Klassenstärken? SELECT gehoert_zu AS Klasse, COUNT (*) AS Klassenstaerke FROM Schueler GROUP BY gehoert_zu ; Zu wie vielen Fächern gibt es eine Fachbetreuung? SELECT COUNT ( DISTINCT Fach) FROM hat_fachbetreuung_in ; MS ACCESS und die Übungsdatenbank "verstehen" diese Anweisung nicht! Gesucht ist die höchste laufende Nummer innerhalb eines Eintrittsjahres! Zusätzlich ausgegeben werden soll dazu das jeweilige Eintrittsjahr. SELECT Eintrittsjahr, MAX (Nr) FROM Schueler GROUP BY Eintrittsjahr ; Wie viele Mathematikstunden sind von Lehrkräften zu halten, wenn der Stundenansatz pro Klasse um 2 erhöht wird?

15 SELECT SUM (Stundenzahl) + (2 * COUNT (*)) FROM ist_fachlehrkraft_von WHERE Fach = 'Mathematik' ; Der SELECT-Ausdruck berechnet die Gesamtanzahl der Mathematikstunden und addiert dazu die Anzahl der Zusatzstunden. Da pro Klasse die Stundenzahl um 2 erhöht werden muss, berechnet sich diese Anzahl beispielsweise wie oben realisiert: 2 * Anzahl der Datensätze ( = Klassen), bei denen das Attribut Fach den Wert Mathematik besitzt. 6 Gruppierungen mit Bedingungen 6.1 Die HAVING - Klausel Oft werden bei einer Gruppierung nur die Gruppen gewünscht, die bestimmte Bedingungen erfüllen. Entsprechende Bedingungen werden in der HAVING - Klausel formuliert. Dabei dürfen Gruppierungsausdrücke verwendet werden. Beispiel: In welchen Jahren traten mindestens zwei Schülerinnen bzw. Schüler in die Schule ein? SELECT Eintrittsjahr FROM Schueler GROUP BY Eintrittsjahr HAVING COUNT (*) > 1 ; Das System gruppiert zuerst alle Datentupel gemäß dem Eintrittsjahr und überprüft im Anschluss, welche dieser Gruppen mehr als ein Tupel enthält. Die entsprechenden Gruppen werden dann ausgegeben. Grundsätzlich werden Anfragen mit einer GROUP BY - Klausel in folgender Reihenfolge bearbeitet: 1. Auswahl der Tupel durch die WHERE - Klausel 2. Bildung der Gruppen durch die GROUP BY - Klausel 3. Auswahl der Gruppen, die die HAVING - Klausel erfüllen. 6.2 Übungen Zu welchem Fach gibt es nur eine Lehrkraft? SELECT Fach FROM hat_lehrbefaehigung_in GROUP BY Fach HAVING COUNT (*) = 1 ; Welche Klassen haben derzeit mehr als 10 Stunden Unterricht? Auszugeben sind die Klasse und deren Gesamtstundenzahl.

16 SELECT Klasse, SUM (Stundenzahl) FROM ist_fachlehrkraft_von GROUP BY Klasse HAVING SUM (Stundenzahl) > 10 ; Ist folgende Anfrage vernünftig? SELECT Konfession FROM Schueler WHERE gehoert_zu = 11 GROUP BY Konfession HAVING COUNT(*) = 0 ; Es werden nur Konfessionen gruppiert, die auch in der Basistabelle vorkommen. Damit muss wenigstens eine Schülerin oder ein Schüler der entsprechenden Konfession zugehören. Es gibt also keine Gruppe mit 0 Tupeln. Die Anfrage liefert damit eine leere Tabelle. Anfragen mit der HAVING - Klausel HAVING COUNT(*) = 0 besitzen keine Aussagekraft. 7 SQL-Anfragen über mehrere Tabellen 7.1 Verknüpfung von Tabellen - Join Relationale Datenbanken bestehen in der Regel aus sehr vielen Tabellen. Oft werden bei einer SQL-Anfrage Daten gewünscht, die aus verschiedenen Tabellen stammen. Dazu müssen die Tabellen verknüpft werden. Solche Verknüpfungen nennt man Joins. Beispiel: Gewünscht ist eine Liste mit den Klassenleitern und der jeweiligen Klasse. Die Tabelle Lehrkraft liefert zwar den Namen der in Frage kommenden Personen, aber keine Information über die Klassenleitung. In der Tabelle Klasse findet man zwar die Personalnummer, nicht aber den Namen des jeweiligen Klassenleiters. Die Verknüpfung der Tabellen erfolgt durch Angabe der beteiligten Tabellen in der FROM - Klausel. Häufig haben Attribute, die aus verschiedenen Tabellen stammen, identische Namen. Wird ein solches Attribut in der SQL-Anfrage verwendet, muss zusätzlich noch der Tabellenname angegeben werden. Man schreibt: Tabellenname.Attributname. Beispiel: Der Attributname Name ist zweideutig. Er beschreibt einerseits die Lehrernamen, andererseits die Klasse. In unserem Bespiel muss der Name der Klasse mit Klasse.Name und der Name der Lehrkraft mit Lehrkraft.Name angesprochen werden. Bemerkung: Ist der Spaltenname eindeutig, kann auf das Voranstellen des Tabellennamen verzichtet werden. Folgende Query zeigt das Prinzip. Die Bedeutung der WHERE - Klausel wird nachfolgend genauer erklärt.

17 Beispiel: Gewünscht ist eine Liste der Klassenleiter mit den jeweiligen Klassen. SELECT Klasse.Name, Lehrkraft.Name, Klasse WHERE PersNr = Klassenleitung ; Innerhalb der FROM - Klausel ist eine Umbenennung der Tabellennamen möglich. Dazu stellt SQL das Schlüsselwort AS zur Verfügung, das aber nicht unbedingt verwendet werden muss. Damit ist beispielsweise folgende Formulierung der obigen Anfrage möglich: bzw. SELECT l.name, k.name AS l, Klasse AS k WHERE l.persnr = k.klassenleitung ; SELECT l.name, k.name l, Klasse k WHERE l.persnr = k.klassenleitung ; Da PersNr und Klassenleitung eindeutige Attributnamen sind, kann die WHERE -Klausel auch lauten: WHERE PersNr = Klassenleitung Innerhalb der FROM - Klausel ist eine Umbenennung der Tabellennamen möglich. Dazu stellt SQL das Schlüsselwort AS zur Verfügung, das aber nicht unbedingt verwendet werden muss. Damit ist beispielsweise folgende Formulierung der obigen Anfrage möglich: bzw. SELECT p.name, d.raumnr FROM Professor AS p, Dienstzimmer AS d WHERE p.persnr = d.persnr ; SELECT p.name, d.raumnr FROM professor p, Dienstzimmer d WHERE p.persnr = d.persnr ; Da name und RaumNr eindeutige Attributnamen sind, kann die SELECT -Klausel auch lauten:, RaumNr Bemerkung: ORACLE lässt die Verwendung von AS in der FROM - Klausel nicht zu! Der Aliasname wird einfach hinter den Tabellennamen geschrieben. MS ACCESS bzw. die Übungsdatenbank akzeptiert beide Möglichkeiten. 7.2 Bedeutung der WHERE-Klausel Das Weglassen der WHERE - Klausel in obigem Beispiel führt zu nachfolgendem Ergebnis: Beispiel:

18 Die Entstehung dieses Ergebnisses kann man sich folgendermaßen vorstellen. Bei einem Join wird jeder Datensatz der einen Tabelle mit jedem Datensatz der anderen Tabelle verknüpft. Das Ergebnis wird in einer virtuellen Tabelle "abgelegt", die sowohl die Spalten der einen wie auch der anderen Tabellen enthält. Aus dieser virtuellen Tabelle werden dann die Spalten l.name und k.name ausgewählt und angezeigt. Bis auf die erste und zwölfte Datenzeile der obigen Tabellen sind aber alle Ausgabezeilen unsinnig, da bei diesen die Werte der Personalnummer und der Klassenleitung nicht übereinstimmen. Im obigen Beispiel muss deshalb gelten: l.persnr = k.klassenleitung. Diese Bedingung wird in der WHERE - Klausel angegeben. Mit Hilfe der WHERE - Klausel können Gleichheitsbedingungen angegeben werden, die unsinnige bzw. nicht aussagekräfte Kombinationen ausschließen. 7.3 Self-Join Manchmal wird eine Tabelle mit sich selbst verknüpft. Dieser spezielle Join heißt Self-Join. Beispiel: Welche Lehrkräfte (Angabe der PersNr) haben die Lehrbefähigung für mehr als ein Fach?

19 SELECT DISTINCT l1.lehrkraft FROM hat_lehrbefaehigung_in l1, hat_lehrbefaehigung_in l2 WHERE l1.lehrkraft = l2.lehrkraft AND NOT (l1.fach = l2.fach) ; In diesem Beispiel wird ein Selfjoin verwendet. Zur Auswertung der Anfrage wird eine (virtuelle) Tabelle mit den vier Spalten l1.lehrkraft, l1.fach, l2.lehrkraft und l2.fach berechnet, aus der die Datensätze ausgewählt werden, bei denen die Lehrkraft- Attribute übereinstimmen und die Fach- Attribute verschieden sind. Anschließend wird von diesen Datensätzen die erste Spalte unter Entfernung von Duplikaten ausgegeben. 7.4 Übungen Welche Fächer dürfen die einzelnen Lehrkräfte unterrichten? Gewünscht ist die Ausgabe der Namen von Lehrkraft und Fach., Fach, hat_lehrbefaehigung_in WHERE PersNr = Lehrkraft ; Welche Lehrerin bzw. welcher Lehrer (Angabe des Namens) ist Fachbetreuer in Deutsch?, hat_fachbetreuung_in WHERE PersNr = Lehrkraft AND Fach= 'Deutsch' ; Gesucht sind die Namen der Lehrkräfte, die die Schülerin Falbala unterrichten? SELECT l.name l, Schueler s, ist_fachlehrkraft_von i WHERE i.klasse = s.gehoert_zu AND i.lehrkraft = l.persnr AND s.name = 'Falbala' ; Gibt es Lehrkräfte (Angabe der PersNr), die mehr als ein Fach in derselben Klasse unterrichten? SELECT a.lehrkraft FROM ist_fachlehrkraft_von a, ist_fachlehrkraft_von b WHERE a.lehrkraft = b.lehrkraft AND a.klasse = b.klasse AND NOT (a.fach = b.fach) ;

20 Hier handelt es sich um einen Self-Join, da die Tabelle ist_fachlehrkraft_von mit sich selbst gejoint wird. 8 Geschachtelte SQL-Anfragen mit Vergleichsoperatoren 8.1 Teilanfragen (Subqueries) mit einem Ergebnis In der WHERE- Klausel kann sich eine Bedingung auch auf eine untergeordnete SELECT- Anfrage beziehen. In vielen Fällen liefert die untergeordnete Anfrage genau ein Ergebnis zurück. Beispiel: Gesucht ist der Klassenleiter der fünften Klasse. WHERE PersNr = ( SELECT Klassenleitung FROM Klasse WHERE Name = 5 ) ; Bemerkung: Die Domäne (Definitionsmenge) des Attributs Klasse.Name ist INTEGER, weshalb keine Hochkommata - die bei Zeichenketten benötigt werden - verwendet werden. Anfragen, die mittels einer Unteranfrage gelöst werden, können in der Regel auch mittels eines Joins berechnet werden und umgekehrt. Zur Ermittlung der Ergebnistabellen wird dazu im ersten Schritt die untergeordnete Anfrage SELECT Klassenleitung FROM Klasse WHERE Name = 5 ; ausgewertet. Die Zwischenergebnistabelle enthält den Wert der Spalte Klassenleitung im Datensatz der Klasse 5, also die Personalnummer 245. Mit diesem Zwischenergebnis wird die übergeordnete Query beantwortet, die dann der Anfrage WHERE PersNr = 15 ; entspricht. Diese Anfrage funktioniert aufgrund der Verwendung des Gleichheitszeichens nur dann, wenn die Ergebnistabelle der untergeordneten Anfrage genau einen Wert liefert. Zur Ermittlung der Ergebnistabellen wird dazu im ersten Schritt die untergeordnete Anfrage SELECT PersNr FROM Professor WHERE Name = 'Zuse' ; ausgewertet. Die Zwischenergebnistabelle enthält den Wert der Spalte PersNr im Datensatz des Professors Zuse, also die Personalnummer 36. Mit diesem Zwischenergebnis wird die übergeordnete Query beantwortet, die dann der Anfrage SELECT RaumNr FROM Dienstzimmer WHERE PersNr = 36 ; entspricht. Diese Anfrage funktioniert aufgrund der Verwendung des Gleichheitszeichens nur dann, wenn die Ergebnistabelle der untergeordneten Anfrage genau einen Wert liefert. Als Vergleichsoperatoren können neben dem Gleichheitszeichen auch, ;, und verwendet werden. Voraussetzung ist aber immer, dass die Unteranfrage nur einen Wert zurückliefert! 8.2 Übungen

21 Welche Lehrkraft ist Fachbetreuer in Sport? WHERE PersNr = ( ) ; SELECT Lehrkraft FROM hat_fachbetreuung_in WHERE Fach = 'Sport' Achtung: Die Anfrage funktioniert natürlich nur dann, wenn man weiß, dass es nur eine Fachbetreuerin bzw. einen Fachbetreuer in Sport gibt. Ist man sich nicht sicher, ist der Operator IN zu wählen, Welche Lehrkräfte sind älter als der Durchschnitt des Kollegiums? WHERE Geburtsjahr < ( ) ; SELECT AVG (Geburtsjahr) Aufgrund der Aggregatfunktion AVG ist es sicher, dass die Unteranfrage nur einen Wert zurückliefert! 9 Geschachtelte SQL-Anfragen mit speziellen Operatoren 9.1 Teilanfragen mit mehr als einem Ergebnis In vielen Fällen kann man nicht garantieren, dass in der Unteranfrage nur ein Ergebnis zurückgeliefert wird. Bemerkung: Im Zweifelsfall sollte man auf geschachtelte Anfragen mit,,, und = verzichten! Für untergeordnete Anfragen, die mehrere Ergebnisse, also eine Ergebnismenge, zurückliefern, stellt SQL spezielle Operatoren zur Verfügung. 9.2 Eine einfache Möglichkeit mit dem IN - Operator Der IN - Operator eignet sich auch zur Auswahl von Datensätzen, wenn das zu vergleichende Attribut aus einer kleinen, diskreten Menge stammt. Die Auswahlmenge wird in Form ihrer Elemente hinter dem IN - Operator angegeben. Beispiel: Welche Schülerinnen und Schüler - unter Angabe von Name und Klasse - sind katholisch oder evangelisch?

22 , gehoert_zu AS Klasse FROM Schueler WHERE Konfession IN ('rk', 'ev') ; Diese Verwendung ersetzt eine (in der Regel längere) Formulierung mit OR- Operatoren. 9.3 Erweiterte Möglichkeiten Die Auswahlmenge kann auch auf Grund einer untergeordneten Query erzeugt werden. Dazu stehen folgende Operatoren zur Verfügung: Name des Operators Bedeutung IN Test auf Mengenmitgliedschaft NOT IN Test, ob ein Element nicht in einer Menge ist. ( =,,...) ANY Test, ob es mindestens ein Element in der Unteranfrage gibt, das den Vergleich mit dem Vergleichswert erfüllt. ( =,,...) ALL Test, ob alle Elemente in der Unteranfrage den Vergleich mit dem Vergleichswert erfüllen. EXISTS NOT EXISTS UNIQUE Test, ob die von der Unteranfrage bestimmte Menge nicht leer ist. Test, ob die von der Unteranfrage bestimmte Menge leer ist. Test, ob das Ergebnis duplikatfrei ist. Beispiel: Welche Lehrkräfte haben eine Fachbetreuung? WHERE PersNr IN ( SELECT Lehrkraft FROM hat_fachbetreuung_in ) ; Beispiel: Welche Lehrkraft ist am jüngsten? WHERE Geburtsjahr >= ALL ( SELECT Geburtsjahr ) ; 9.4 Übungen Welche Lehrerinnen sind 1950, 1952, 1956 oder 1957 geboren?

23 WHERE Geburtsjahr IN (1950, 1952, 1956, 1957) AND Geschlecht = 'w' ; Welche Lehrkräfte haben die Fachbetreuung in Mathematik? WHERE PersNr IN ( ; SELECT Lehrkraft FROM hat_fachbetreuung_in WHERE Fach = 'Mathematik') Welchen Lehrkräften, alphabetisch absteigend sortiert, wurden bereits Klassen zugeteilt? WHERE PersNr = ANY ( SELECT Lehrkraft FROM ist_fachlehrkraft_von ) ORDER BY Name DESC ; 10 Unteranfragen in der SELECT-Klausel, Korreliertheit 10.1 Unteranfragen in der SELECT-Klausel Auch in der SELECT- Klausel ist die Verwendung von Unteranfragen möglich Korrelierte Unteranfragen Unteranfragen können sich auch auf Attribute der übergeordneten Anfragen beziehen. In diesem Fall spricht man von einer korrelierten Unteranfrage. Bei namensgleichen Attributen in der Ober- und Unteranfrage müssen wieder die Tabellennamen bzw. deren Aliasnamen verwendet werden. Beispiel: Welche Fachbetreuer unter Angabe des Faches gibt es?

24 SELECT Fach, ( WHERE Lehrkraft = PersNr ) AS Fachbetreuung FROM hat_fachbetreuung_in ; Bemerkung: Im obigen Beispiel ist das Attribut Name mehrdeutig, damit muss der entsprechende Tabellenname oder Aliasname zusätzlich angegeben werden. Bei eindeutigen Attributen wie PersNr ist das nicht notwendig. Die obige SQL-Anfrage soll lediglich das Prinzip korrelierter Unteranfragen zeigen. Die Fragestellung kann mit Hilfe eines Joins einfacher formuliert werden! SELECT Fach, Name AS Fachbetreuung, hat_fachbetreuung_in WHERE Lehrkraft = PersNr ; 10.3 Übungen Welche Lehrkräfte haben die Lehrbefähigung im Fach Informatik? WHERE PersNr = ( ; SELECT Lehrkraft FROM hat_lehrbefaehigung_in WHERE Fach = 'Informatik' AND PersNr = Lehrkraft) Die Unteranfrage bezieht sich in PersNr = Lehrkraft auf das Attribut PersNr der übergeordneten Anfrage. Welche Lehrkräfte haben noch keine Unterrichtstunden? WHERE NOT EXISTS ( ; SELECT * FROM ist_fachlehrkraft_von WHERE PersNr = Lehrkraft) Die Unteranfrage bezieht sich in PersNr = Lehrkraft auf das Attribut PersNr der übergeordneten Anfrage.

25 Gesucht sind die Personalnummern der Lehrkräfte, die gleichzeitig in Fachbetreuung und Klassenleitung eingebunden sind. SELECT Lehrkraft FROM hat_fachbetreuung_in WHERE Lehrkraft IN ( ; SELECT Klassenleitung FROM Klasse WHERE Klassenleitung = Lehrkraft) Die Unteranfrage bezieht sich in Klassenleitung = Lehrkraft auf das Attribut Lehrkraft der übergeordneten Anfrage. 11 Verknüpfen mehrerer Ergebnismengen 11.1 UNION-, INTERSECT- und EXCEPT- Operation Die klassischen Operationen der Mengenlehre werden auch von SQL zur Verfügung gestellt. Mengenoperation Vereinigung von Mengen UNION Schnitt von Mengen Differenz von Mengen SQL - Schlüsselwort INTERSECT EXCEPT Damit können die Ergebnismengen mehrerer SQL-Anfragen mit Mengenoperationen verknüpft werden. Beispiel: Welche Kolleginnen bzw. Kollegen haben gleichzeitig Fachbetreuung und Klassenleitung? SELECT Lehrkraft AS Doppelfunktion FROM hat_fachbetreuung_in INTERSECT SELECT Klassenleitung FROM Klasse ; Bei der Verwendung der Mengenoperatoren ist zu beachten: Die Ergebnisse beider SELECT - Anweisungen müssen bezüglich Anzahl und Typ der Attribute identisch sein. Ohne das Schlüsselwort ALL werden vor der Mengenoperation Duplikate aus den beiden Teilergebnissen entfernt. Die beteiligten SELECT - Anweisungen dürfen nicht in Klammern geschrieben werden. Bemerkung: Statt dem Schlüsselwort EXCEPT verwendet ORACLE die Bezeichnung MINUS. In MS ACCESS und der Übungsdatenbank stehen die Mengenoperatoren INTERSECT und EXCEPT nicht zur Verfügung Übungen Gesucht sind alle Schülerinnen und Schüler mit Ausnahme der Bekenntnislosen.

26 SELECT gehoert_zu AS Klasse, Name FROM Schueler EXCEPT SELECT gehoert_zu, Name FROM Schueler WHERE Konfession = 'bk' ; Gesucht sind die Namen des Lehrerkollegiums und der Schülerschaft. UNION FROM Schueler ; Welchen Lehrkräften (Angabe der Personalnummer) wurden bereits Klassen zugeteilt? SELECT PersNr INTERSECT SELECT Lehrkraft FROM ist_fachlehrkraft_von ; 12 Weitere Sprachkonstrukte 12.1 Der LIKE-Operator Bei der Suche nach ähnlichen oder nicht genau bekannten Begriffen erweist sich oft die Konstruktion LIKE als hilfreich. SQL stellt dabei zwei Hilfen zur Verfügung: Zeichen Bedeutung % Platzhalter für beliebig viele Zeichen _ Platzhalter für genau ein Zeichen Bemerkung: Entsprechende Möglichkeiten werden auch in MS ACCESS zur Verfügung gestellt: * als Platzhalter für beliebig viele Zeichen,? als Platzhalter für genau ein Zeichen Beispiel: Welche Namen der Lehrkräfte enthalten die Buchstabenfolge "us"? WHERE Name LIKE '%us%' ;

27 Beispiel: Welche Schülernamen haben an der vorletzten Stelle den Buchstaben i? SELECT DISTINCT Name FROM Schueler WHERE Name LIKE '%i_' ; Um Duplikate bei den Schülernamen auszuschließen, wurde das Schlüsselwort DISTINCT verwendet Übungen Welche Fächer mit dem Anfangsbuchstaben M gibt es? FROM Fach WHERE Name LIKE 'M%' ; Welche Lehrernamen haben an der zweiten Stelle den Buchstaben u? WHERE Name LIKE '_u%' ; Heißt die Schülerin aus der 11. Klasse Fabala oder Falbala? FROM Schueler WHERE Name LIKE 'Fa%bala' ; 13 Das Erstellen von Sichten (Views) 13.1 Was sind Sichten (Views) Um Benutzern eines Datenbanksystems eine Sicht auf die für sie relevanten Daten zu ermöglichen, verwendet man

28 sogenannte Sichten oder Views. Views kann man als virtuelle Tabellen auffassen, die ihre Einträge nicht selbst speichern, sondern bei Bedarf nach einer vorher festgelegten Vorschrift aus Basistabellen oder anderen bereits existierenden Views berechnen. Bemerkung: Views werden im Drei-Schichten-Modell von ANSI/SPARC als eigene Schicht eingeführt. Beispiel: Die Schuldatenbank soll zum Informationssystem für Eltern erweitert werden. Diese dürfen zwar beispielsweise die Namen der Fachbetreuer einsehen, nicht aber deren persönlichen Daten. Mittels einer View können die benötigten Informationen aus den Tabellen Lehrkraft und hat_fachbetreuung_in berechnet werden Die CREATE VIEW - Anweisung Der CREATE VIEW-Befehl dient zur Festlegung einer Sicht. Beispiel: Die zulässigen Daten des obigen Beispiels kann man durch die SQL-Abfrage SELECT Fach, Name AS Betreuung, hat_fachbetreuung_in WHERE PersNr = Lehrkraft ; herausfiltern. Mit Hilfe von CREATE VIEW kann dieser Anfrage ein Name, beispielsweise Fachbetreuung, zugeordnet werden und dann unter diesem Namen abgespeichert. Die entsprechende SQL-Anweisung lautet dann CREATE VIEW Fachbetreuung AS SELECT Fach, Name AS Betreuung, hat_fachbetreuung_in WHERE PersNr = Lehrkraft ; Views sind damit nichts anderes als benannte SQL-Abfragen. Die Ergebnistabellen von Views werden beim Aufruf der View immer neu berechnet. Bemerkung: In MS ACCESS können Datenbankanfragen unter Verwendung von Namen abgespeichert werden. Diese Anfragen sind damit nichts anderes als Views Syntaxdiagramm

29 13.4 Arbeiten mit Views Views können bzgl. Anfragen genauso behandelt werden wie Basistabellen. Beispiel: Welche Lehrkräfte haben die Fachbetreuung im Fach Mathematik? SELECT Betreuung AS Mathematikfachbetreuung FROM Fachbetreuung WHERE Fach = 'Mathematik' ; Beispiel: Gibt es einen Fachbetreuer von Wahlfächern? SELECT Fach, Betreuung FROM Fachbetreuung, Fach WHERE Fach = Name AND Pflichtfach = 'nein' ; 13.5 Übungen Es soll eine View mit dem Namen Klasse_5 erstellt werden, die die Namen aller Schüler der fünften Klasse zeigt. CREATE VIEW Klasse_5 AS FROM Schueler WHERE gehoert_zu = 5 ; Gibt es in der fünften Klasse einen Schüler mit dem Namen Asterix? Erstellen Sie eine View Schuelersuche unter Ausnutzung der Lösung der Vorgängeraufgabe. CREATE VIEW Schuelersuche AS FROM Klasse_5 WHERE Name = 'Asterix' ;

30 Gewünscht ist eine Sicht mit dem Namen Lehrkraefte_5, die eine Liste mit den Lehrkräften, die in der Klasse 5 unterrichten, und dem entsprechenden Fach berechnet. CREATE VIEW Lehrkraefte_5 AS, Fach, ist_fachlehrkraft_von WHERE PersNr = Lehrkraft AND Klasse = 5 ; 14 Das Löschen von Sichten (Views) 14.1 Die DROP VIEW - Anweisung Der DROP VIEW - Befehl erlaubt das Löschen einer Sicht. Beispiel: Die Sicht Fachbetreuung wird nicht mehr benötigt. DROP VIEW Fachbetreuung; Bemerkung: Bei MS ACCESS und der Übungsdatenbank erfolgt das Löschen von Views (leider) über den DROP TABLE- Befehl Syntaxdiagramm 15 SQL mit MS ACCESS MS ACCESS stellt zum Erstellen von Tabellen, Abfragen usw. im Allgemeinen Assistenten zur Verfügung. Trotzdem ist auch das direkte Arbeiten mit SQL möglich! 15.1 Ansichten in MS ACCESS MS ACCESS unterscheidet bei Tabellen und Anfragen grundsätzlich: die Datenblattansicht: Damit kann die Instanz einer Basistabelle bzw. die Ergebnistabelle einer Anfrage angezeigt werden. Diese Ansicht erlaubt auch die Eingabe, die Änderung und das Löschen von Daten in einer Basistabelle. die Entwurfsansicht: Hier können Tabellen bzw. Anfragen "ohne"" SQL erzeugt werden. die SQL-Ansicht: Diese erlaubt das direkte Arbeiten mit SQL Die SQL-Ansicht in MS ACCESS Die SQL-Ansicht erlaubt die Definition von Tabellen (CREATE TABLE), das Ändern von Tabellen (ALTER TABLE), das Löschen von Tabellen (DROP TABLE),

31 das Einfügen von Daten in Tabellen (INSERT INTO), das Ändern von Daten in Tabellen (UPDATE), das Löschen von Daten in Tabellen (DELETE) und die Erstellung von SQL-Anfragen (SELECT) Aufruf der SQL-Ansicht Wählen Sie als Objekt Abfragen. Klicken Sie auf Neu in der Symbolleiste des Datenbankfensters. Klicken Sie im Dialogfeld Neue Abfrage auf Entwurfsansicht und dann auf OK. Klicken Sie im Dialogfeld Tabelle anzeigen auf Schließen, ohne Tabellen oder Abfragen hinzuzufügen. Die SQL-Ansicht erhält man durch Auswahl des Punktes SQL-Ansicht im Menüpunkt Ansicht Ansicht oder Auswahl des Punktes SQL-Ansicht im Kontextmenü (rechte Maustaste), falls sich die Maus im Abfragefenster befindet oder Auswahl des des Punktes SQL-Ansicht in der Icon-Leiste Geben Sie den SQL-Befehl in das SQL-Fenster ein. Um die Abfrage auszuführen, klicken Sie in der Symbolleiste auf Ausführen. Unter dem Menüpunkt Abfrage finden Sie den Punkt Ausführen ebenfalls.

32 Bemerkung: Der eingegebene SQL-Befehl kann unter einem frei wählbaren Namen abgespeichert werden. Es gilt: Anfragen an die Datenbank können durch Doppelklicken des Namens ohne Probleme mehrmals ausgeführt werden, da dabei keine Daten hinzugefügt, verändert oder gelöscht werden. Einmalige Aktionen, z.b. Ausführen von create table oder insert into, sollten nur einmal ausgeführt werden! Ist nämlich beispielsweise eine Tabelle mit dem Namen Beispiel bereits erstellt und mit Daten gefüllt, wird durch den Befehl create table Beispiel... die Tabelle samt Inhalt gelöscht und eine neue (leere) Tabelle Beispiel erstellt!

Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY.

Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY. SELECT - Der Grundbefehl zur Auswahl von Daten Die SELECT-Anweisung fragt Daten aus einer Datenbank ab und stellt diese in einer virtuellen Tabelle zur Verfügung. Diese virtuelle Tabelle, eine Menge von

Mehr

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo. Mengenvergleiche: Mehr Möglichkeiten als der in-operator bietet der θany und der θall-operator, also der Vergleich mit irgendeinem oder jedem Tupel der Unteranfrage. Alle Konten außer das, mit dem größten

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

Kapitel 3: Datenbanksysteme

Kapitel 3: Datenbanksysteme LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS Skript zur Vorlesung: Einführung in die Informatik: Systeme und Anwendungen Sommersemester 2015 Kapitel 3: Datenbanksysteme Vorlesung:

Mehr

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language: SQL Structured Query Language: strukturierte Datenbankabfragesprache eine Datenbanksprache zur Definition, Abfrage und Manipulation von Daten in relationalen Datenbanken In der SQL-Ansicht arbeiten In

Mehr

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten Einführung in SQL Die Sprache SQL (Structured Query Language) ist eine Programmiersprache für relationale Datenbanksysteme, die auf dem ANSI-SQL-Standard beruht. SQL wird heute von fast jedem Datenbanksystem

Mehr

Eine völlig andere Form Abfragen zu erstellen ist, sie mit Hilfe der Datenbankabfragesprache SQL zu gestalten.

Eine völlig andere Form Abfragen zu erstellen ist, sie mit Hilfe der Datenbankabfragesprache SQL zu gestalten. Einführung SQL 2010 Niko Becker Mit unseren Übungen zu ACCESS können Sie Aufbau und Struktur einer relationalen Datenbank kennenlernen. Wir zeigen Ihnen wie Sie Tabellen, Formulare und Berichte erstellen

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

Views in SQL. 2 Anlegen und Verwenden von Views 2

Views in SQL. 2 Anlegen und Verwenden von Views 2 Views in SQL Holger Jakobs bibjah@bg.bib.de, holger@jakobs.com 2010-07-15 Inhaltsverzeichnis 1 Wozu dienen Views? 1 2 Anlegen und Verwenden von Views 2 3 Schreibfähigkeit von Views 3 3.1 Views schreibfähig

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

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software SQL Tutorial SQL - Tutorial SS 06 Hubert Baumgartner INSO - Industrial Software Institut für Rechnergestützte Automation Fakultät für Informatik Technische Universität Wien Inhalt des Tutorials 1 2 3 4

Mehr

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language) Einführung in SQL 1. Grundlagen Structured Query Language Viele Dialekte Unterteilung: i. DDL (Data Definition Language) ii. iii. DML (Data Modifing Language) DRL (Data Retrival Language) 1/12 2. DDL Data

Mehr

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen.

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen. Datenbankabfragen (Query) mit SQL (Structured Query Language) 1 Aufbau des SELECT-Befehls Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen. SQL-Syntax: SELECT spaltenliste FROM tabellenname

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

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

Kompaktes Datenbank-Wissen rund um die Datenbank-Programmierung mit Transact-SQL

Kompaktes Datenbank-Wissen rund um die Datenbank-Programmierung mit Transact-SQL UnternehmensDatenbanken im Netzwerk Teil 3: SQL Programmierung - Grundlagen SQL-Befehle Funktionen Operatoren Datentypen Datenbank erstellen Tabellen SQL-Abfragen Autor: Rainer Egewardt Copyright Kompaktes

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

Abfragen: Grundbausteine

Abfragen: Grundbausteine Abfragen: Grundbausteine Abfragen sollen gezielt Teile der Information wiedergeben. Das Ergebnis einer solchen Operation ist eine. Der Aufbau der Ergebnistabelle wird durch zwei Grundverfahren festgelegt:

Mehr

Access Grundkurs. M. Eng. Robert Maaßen

Access Grundkurs. M. Eng. Robert Maaßen Access Grundkurs M. Eng. Robert Maaßen Wer steht da? M. Eng. Robert Maaßen ich@robertmaassen.de www.robertmaassen.de Studium: Informatik Vertiefungsrichtung Medientechnik, Diplom Ingenieur (FH), HAWK,

Mehr

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien 1.1 Definition Datenbank Ein Datenbanksystem (DBS) ist ein System zur elektronischen Datenverwaltung. Die wesentliche Aufgabe eines DBS

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

Unterabfragen (Subqueries)

Unterabfragen (Subqueries) Unterabfragen (Subqueries) Die kürzeste Formulierung ist folgende: SELECT Felderliste FROM Tabelle1 WHERE Tabelle1.Feldname Operator (SELECT Feldname FROM Tabelle2 WHERE Bedingung); wobei Tabelle1 und

Mehr

Informatik 12 Datenbanken SQL-Einführung

Informatik 12 Datenbanken SQL-Einführung Informatik 12 Datenbanken SQL-Einführung Gierhardt Vorbemerkungen Bisher haben wir Datenbanken nur über einzelne Tabellen kennen gelernt. Stehen mehrere Tabellen in gewissen Beziehungen zur Beschreibung

Mehr

Sructred Query Language

Sructred Query Language Sructred Query Language Michael Dienert 11. November 2010 Inhaltsverzeichnis 1 Ein kurzer Versionsüberblick 1 2 SQL-1 mit einigen Erweiterungen aus SQL-92 2 3 Eine Sprache zur Beschreibung anderer Sprachen

Mehr

Welche Kunden haben die gleiche Ware bestellt? select distinct a1.name, a2.name from Auftrag a1, Auftrag a2 where a1.ware = a2.ware.

Welche Kunden haben die gleiche Ware bestellt? select distinct a1.name, a2.name from Auftrag a1, Auftrag a2 where a1.ware = a2.ware. *HVFKDFKWHOWH$QIUDJHQ In einer SQL-Anweisung können in der where-klausel, from-klausel, select-klausel wieder SQL-Anweisungen auftreten. Man spricht dann auch von einer geschachtelten Anfrage oder Unteranfrage.

Mehr

dbis Praktikum DBS I SQL Teil 2

dbis Praktikum DBS I SQL Teil 2 SQL Teil 2 Übersicht Fortgeschrittene SQL-Konstrukte GROUP BY HAVING UNION / INTERSECT / EXCEPT SOME / ALL / ANY IN / EXISTS CREATE TABLE INSERT / UPDATE / DELETE 2 SELECT Syntax SELECT FROM [WHERE [GROUP

Mehr

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #4. SQL (Teil 2)

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #4. SQL (Teil 2) Vorlesung #4 SQL (Teil 2) Fahrplan Eine weitere Aggregation: median Geschachtelte Anfragen in SQL Korrelierte vs. Unkorrelierte Anfragen Entschachtelung der Anfragen Operationen der Mengenlehre Spezielle

Mehr

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7 1 Data Definition Language (DDL)... 2 1.1 Tabellen erstellen... 2 1.1.1 Datentyp...... 2 1.1.2 Zusätze.... 2 1.2 Tabellen löschen... 2 1.3 Tabellen ändern (Spalten hinzufügen)... 2 1.4 Tabellen ändern

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

Datumsangaben, enthält mindestens Jahr, Monat, Tag

Datumsangaben, enthält mindestens Jahr, Monat, Tag Datenbanken mit SQL Informatik - Sprenger Häufig wird mit Tabellenkalkulationen gearbeitet, obwohl der Einsatz von Datenbanken sinnvoller ist. Tabellenkalkulationen wie Microsoft Excel oder LibreOffice

Mehr

Vorlesung Datenbankmanagementsysteme

Vorlesung Datenbankmanagementsysteme Vorlesung Datenbankmanagementsysteme SQL zur Datenanalyse & Einführung Online Analytical Processing (OLAP) (auf Basis von Oracle) Vorlesung Datenbankmanagementsysteme SQL zur Datenanalyse M. Lange, S.

Mehr

SQL structured query language

SQL structured query language Umfangreiche Datenmengen werden üblicherweise in relationalen Datenbank-Systemen (RDBMS) gespeichert Logische Struktur der Datenbank wird mittels Entity/Realtionship-Diagrammen dargestellt structured query

Mehr

SQL. Structured Query Language

SQL. Structured Query Language SQL Structured Query Language Grundlagen zu Abfrage SQL Jede SQL-Abfrage enthält die drei Hauptbefehle: select (engl. auswählen), from (engl. von) und where (engl. wo). Mit select gibt man an, welche Spalten

Mehr

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I SQL SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R VII-1 Beispielrelationen Filiale ( Name Leiter Stadt Einlagen ) Konto ( KontoNr KundenNr FilialName Saldo ) Kredit

Mehr

SQL. Abfragesprache Datenmanipulation - DML

SQL. Abfragesprache Datenmanipulation - DML SQL Abfragesprache Datenmanipulation - DML SQL DML-Operationen DML = Data Manipulation Language Sprache zur Veränderung der Daten Operationen Daten selektieren Daten einfügen Daten ändern Daten löschen

Mehr

SQL-Befehlsliste. Vereinbarung über die Schreibweise

SQL-Befehlsliste. Vereinbarung über die Schreibweise Vereinbarung über die Schreibweise Schlüsselwort [optionale Elemente] Beschreibung Befehlsworte in SQL-Anweisungen werden in Großbuchstaben geschrieben mögliche, aber nicht zwingend erforderliche Teile

Mehr

Ein wesentliches, charakteristisches Merkmal aller Datenbankmanagement

Ein wesentliches, charakteristisches Merkmal aller Datenbankmanagement Anfrageformulierung: Allgemeines Ein wesentliches, charakteristisches Merkmal aller Datenbankmanagement nkmanagement- systeme ist die Unterstützung einer (oder mehrerer) Anfragesprachen. Eine Anfrage ist

Mehr

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Programmierung 2

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Programmierung 2 SQL SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R IV-1 Beispielrelationen Filiale ( Name Leiter Stadt Einlagen ) Konto ( KontoNr KundenNr FilialName Saldo ) Kredit

Mehr

SQL: Weitere Funktionen

SQL: Weitere Funktionen Vergleich auf Zeichenketten SQL: Weitere Funktionen LIKE ist ein Operator mit dem in Zeichenketten andere Zeichenketten gesucht werden; zwei reservierte Zeichen mit besonderer Bedeutung sind hier % (manchmal

Mehr

SQL. Ziele. Grundlagen von SQL. Beziehung zur relationalen Algebra SELECT, FROM, WHERE. Joins ORDER BY. Aggregatfunktionen. dbis.

SQL. Ziele. Grundlagen von SQL. Beziehung zur relationalen Algebra SELECT, FROM, WHERE. Joins ORDER BY. Aggregatfunktionen. dbis. SQL Lehr- und Forschungseinheit Datenbanken und Informationssysteme Ziele Grundlagen von SQL Beziehung zur relationalen Algebra SELECT, FROM, WHERE Joins ORDER BY Aggregatfunktionen Lehr- und Forschungseinheit

Mehr

Leseprobe: SQL mit MySQL - Band 4 Kompendium mit Online-Übungs-DB. Kompendium zur schnellen Kurzinformation der Datenbanksprache SQL/MySQL 5.

Leseprobe: SQL mit MySQL - Band 4 Kompendium mit Online-Übungs-DB. Kompendium zur schnellen Kurzinformation der Datenbanksprache SQL/MySQL 5. Leseprobe: SQL mit MySQL - Band 4 Kompendium mit Online-Übungs-DB Kompendium zur schnellen Kurzinformation der Datenbanksprache SQL/MySQL 5.1 im Internet: www.datenbanken-programmierung.de... 3.0 SQL nach

Mehr

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar Qt-Seminar Dienstag, 10.2.2009 SQL ist......die Abkürzung für Structured Query Language (früher sequel für Structured English Query Language )...ein ISO und ANSI Standard (aktuell SQL:2008)...eine Befehls-

Mehr

Structured Query Language (SQL) 1

Structured Query Language (SQL) 1 Structured Query Language (SQL) 1 1. Grundlagen und Hilfsmittel Structured Query Language, kurz SQL, wurde in den 70er Jahren bei IBM entwickelt, als eine Arbeitsgruppe die erste relationale Datenbank

Mehr

Datenbanken Microsoft Access 2010

Datenbanken Microsoft Access 2010 Datenbanken Microsoft Access 2010 Abfragen Mithilfe von Abfragen kann ich bestimmte Informationen aus einer/mehrerer Tabellen auswählen und nur diese anzeigen lassen die Daten einer/mehrerer Tabellen sortieren

Mehr

Structured Query Language (SQL) als standardisierte Anfragesprache für relationale Datenbanken

Structured Query Language (SQL) als standardisierte Anfragesprache für relationale Datenbanken Rückblick Structured Query Language (SQL) als standardisierte Anfragesprache für relationale Datenbanken Data Definition Language zur Schemadefinition (z.b. CREATE TABLE zum Anlegen von Tabellen) Data

Mehr

Übungen zu Datenbanksysteme

Übungen zu Datenbanksysteme Institut für Informatik Universität Osnabrück, 19.05.2009 Prof. Dr. Oliver Vornberger http://www-lehre.inf.uos.de/ dbs Dipl.-Math. Patrick Fox Abgabe bis 02.06.2009, 12:00 Uhr Übungen zu Datenbanksysteme

Mehr

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5 Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5 Aufgabe 1: Projektion Datenbanksysteme I π A1,...,A n (π B1,...,B

Mehr

8 Access-Abfragen migrieren

8 Access-Abfragen migrieren Leseprobe aus Access und SQL Server http://www.acciu.de/asqllesen 8 Access-Abfragen migrieren Mit der Migration der Tabellen Ihrer Anwendung zu einer SQL Server-Datenbank und dem Verknüpfen der SQL Server-Tabellen

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

Arbeiten mit ACCESS 2013

Arbeiten mit ACCESS 2013 Dipl.-Hdl., Dipl.-Kfm. Werner Geers Arbeiten mit ACCESS 2013 Datenbanken mit Datenmodellierung Tabellen, Abfragen, Formularen und Berichten Beziehungen Makros Datenaustausch SQL Structured Query Language

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

Tabellenausdrücke. Bedingungen

Tabellenausdrücke. Bedingungen Anfragetypen in SQL zwei Typen von SQL-Ausdrücken: Resultat: abgeleitete Tabelle ( derived table ) Tabellenausdrücke DB Bedingungen Problem (?): Nur Tabellenausdrücke dürfen direkt vom Benutzer als Anfrage

Mehr

SQL 2. Ziele. Fortgeschrittene SQL-Konstrukte. Aggregatfunktionen revisited. Subqueries. Korrelierte Subqueries

SQL 2. Ziele. Fortgeschrittene SQL-Konstrukte. Aggregatfunktionen revisited. Subqueries. Korrelierte Subqueries SQL 2 Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1 Ziele Fortgeschrittene SQL-Konstrukte groupby having union / intersect / except Aggregatfunktionen revisited Subqueries Korrelierte

Mehr

Fortsetzung: Projektion Selektion. NULL Werte

Fortsetzung: Projektion Selektion. NULL Werte Fortsetzung: Anfragen mit SQL Bisher: Projektion Selektion Duplikatbehandlung NULL Werte Professoren PersNr Name Rang Raum 2125 Sokrates 226 2126 Russel 232 2127 Kopernikus C3 310 2133 Popper C3 52 2134

Mehr

Die SQL-Syntax für den Befehl CREATE TABLE sieht folgendermassen aus:

Die SQL-Syntax für den Befehl CREATE TABLE sieht folgendermassen aus: Einführung in MySQL SQL (Structured Query Language) ist eine Computersprache zum Speichern, Bearbeiten und Abfragen von Daten in relationalen Datenbanken. Eine relationale Datenbank kann man sich als eine

Mehr

Einleitung Projektion Selektion Join Mengenop. Vollst.keit. Einleitung Projektion. Selektion Join. Vollst.keit. Einleitung Projektion Selektion Join

Einleitung Projektion Selektion Join Mengenop. Vollst.keit. Einleitung Projektion. Selektion Join. Vollst.keit. Einleitung Projektion Selektion Join Parsen der Anfrage (SQL) Transformation in eine Standardform (Relationenalgebra) Logische Optimierung Transformation in alternative Zugriffspläne, Physische Optimierung Ausführung des gewählten Zugriffsplans

Mehr

Microsoft Access 2010 Auswahlabfragen erstellen. Leibniz Universität IT Services Anja Aue

Microsoft Access 2010 Auswahlabfragen erstellen. Leibniz Universität IT Services Anja Aue Microsoft Access 2010 Auswahlabfragen erstellen Leibniz Universität IT Services Anja Aue Abfragen... stellen Informationen aus ein oder mehreren Tabellen neu zusammen. verknüpfen mehrere Tabellen. sortieren

Mehr

Kapitel 3 Abfragen mit SQL Seite 1. Abbildung 3.1: Die Datenbank EDV_Kurse

Kapitel 3 Abfragen mit SQL Seite 1. Abbildung 3.1: Die Datenbank EDV_Kurse Kapitel 3 Abfragen mit SQL Seite 1 3 Abfragen mit SQL Um bestimmte Datensätze aus der Datenbank zu gewinnen, verwendest du die»programmiersprache«sql (Structured Query Language). Sie ist derzeit die am

Mehr

SQL Teil 2. SELECT Projektion Selektion Vereinigung, Schnitt, Differenz Verbund Komplexer SELECT-Ausdruck

SQL Teil 2. SELECT Projektion Selektion Vereinigung, Schnitt, Differenz Verbund Komplexer SELECT-Ausdruck SELECT Projektion Selektion Vereinigung, Schnitt, Differenz Verbund Fahren fort mit SQL Befehlen. Bilden Relationenalgebra auf SQL ab. So Umsetzung von Anfragen an die DB (bzw. Tabellen) möglich. SELECT

Mehr

Tutorial Excel Übung 8 Datenbanken II -1- Die Aufgabenstellung ist der folgenden URL zu entnehmen: Übung 8.

Tutorial Excel Übung 8 Datenbanken II -1- Die Aufgabenstellung ist der folgenden URL zu entnehmen: Übung 8. Tutorial Excel Übung 8 Datenbanken II -1-1 Aufgabenstellung Die Aufgabenstellung ist der folgenden URL zu entnehmen: Übung 8. 2 Abfragen auf Muster und nach Listenelementen Zur Formulierung von Abfragen

Mehr

4.1 SQL. Wichtige skalare Datentypen

4.1 SQL. Wichtige skalare Datentypen 4. Basierend auf dem Tupelkalkül und der relationalen Algebra wurden mit dem Aufkommen relationaler DBMS auch spezielle Sprachen entwickelt. SQL ist die derzeit am weitesten verbreitete Anfragesprache

Mehr

Datenbanksysteme noch Kapitel 7: SQL. Vorlesung vom Oliver Vornberger. Institut für Informatik Universität Osnabrück

Datenbanksysteme noch Kapitel 7: SQL. Vorlesung vom Oliver Vornberger. Institut für Informatik Universität Osnabrück Datenbanksysteme 2015 noch Kapitel 7: SQL Vorlesung vom 12.05.2015 Oliver Vornberger Institut für Informatik Universität Osnabrück SQL: Schlüsselworte select from where order by asc desc as like upper

Mehr

SQL: statische Integrität

SQL: statische Integrität SQL: statische Integrität.1 SQL: statische Integrität Im allgemeinen sind nur solche Instanzen einer Datenbank erlaubt, deren Relationen die der Datenbank bekannten Integritätsbedingungen erfüllen. Integritätsbedingungen

Mehr

SQL - Übungen Bearbeitung der Datenbank Personal (1)

SQL - Übungen Bearbeitung der Datenbank Personal (1) Bearbeitung der Datenbank Personal (1) 1. Abfragen einer einzigen Tabelle 1.1. Zeigen Sie alle Informationen an, die über die Kinder der Mitarbeiter gespeichert sind. 1.2. Zeigen Sie aus der Tabelle stelle

Mehr

Projektion. Projektion. Operation: Projektion

Projektion. Projektion. Operation: Projektion Projektion einfache Abfragen Aufbereiten der Ergebnisse von Abfragen Ausdrücke und Formeln Abfragen im Verbund aggregierende Abfragen gruppierende Abfragen Angabe der zu bearbeitenden Tabelle(n) Angabe

Mehr

Aufgabensammlung SQL SW4 1. Einfache Anfragen

Aufgabensammlung SQL SW4 1. Einfache Anfragen Aufgabensammlung SQL SW4 1. Einfache Anfragen Buch: Kapitel 4.6 und 4.7. Datenbank: Die folgenden Anfragen beziehen sich auf die Universitätsdatenbank des Buches. Alle Umlaute werden umschrieben (hören

Mehr

(Von der Nähe zur Distanz zum User geordnet)

(Von der Nähe zur Distanz zum User geordnet) Datebanken Was ist eigentlich eine Datenbank? Datenbanken, Datenhaltungsschicht und Datenbankensysteme (hier als Synonyme zu verstehen) finden viele unterschiedliche Anwendungsbereiche. Datenbanken kann

Mehr

5.3 Datenänderung/-zugriff mit SQL (DML)

5.3 Datenänderung/-zugriff mit SQL (DML) 5.3 Datenänderung/-zugriff mit SQL (DML) Hinweis: - DML-Anweisungen sind mengenorientiert - Mit einer Anweisungen kann mehr als ein Tupel eingefügt, geändert, gelöscht oder gelesen werden Benutzungs- und

Mehr

27 Transact-SQL-Erweiterungen in Bezug auf Analysis Services

27 Transact-SQL-Erweiterungen in Bezug auf Analysis Services 531 27 Transact-SQL-Erweiterungen in Bezug auf Analysis Services Im zweiten Teil dieses Buches haben wir die Eigenschaften der Transact-SQL- Sprache in Bezug auf die Bearbeitung von operativen Daten gezeigt.

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

Datenbanken Wintersemester 11/12. Prof. Dr. W. May

Datenbanken Wintersemester 11/12. Prof. Dr. W. May AG Datenbanken und Informationssysteme Institut für Informatik Universität Göttingen Datenbanken Wintersemester 11/12 Prof. Dr. W. May 3. Übungsblatt: SQL Besprechung voraussichtlich am 20/21.12.2011 Aufgabe

Mehr

U 8 SQL. = Structured Query Language (heute auch Standard Query Language) ALLGEMEIN:

U 8 SQL. = Structured Query Language (heute auch Standard Query Language) ALLGEMEIN: U 8 SQL = Structured Query Language (heute auch Standard Query Language) ALLGEMEIN: - Abfragesprache für relationale Datenbanken, die plattformübergreifend verwendet wird - Vereinfachte Verwendung über

Mehr

SQL ist eine relational vollständige Datenbanksprache.

SQL ist eine relational vollständige Datenbanksprache. SQL-Abfragen 1. Einleitung SQL ist eine relational vollständige Datenbanksprache. SQL steht für Structured Query Language. Der englische Ausdruck Query steht für Abfrage. SQL wurde in den siebziger Jahren

Mehr

Seminar 1 SQL Abfragen DML. MatrNr Name Vorname Age Gruppe Schmidt Hans Meisel Amelie

Seminar 1 SQL Abfragen DML. MatrNr Name Vorname  Age Gruppe Schmidt Hans Meisel Amelie Seminar 1 SQL Abfragen DML Studenten MatrNr Name Vorname Email Age Gruppe 1234 Schmidt Hans schmidt@cs.ro 21 331 1235 Meisel Amelie meisel@cs.ro 22 331 1236 Krause Julia krause@cs.ro 21 332 1237 Rasch

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

Kapitel 6. Datenmalipulation (DML) d. h. insert, update, delete, select im Relationenmodell (in Oracle)

Kapitel 6. Datenmalipulation (DML) d. h. insert, update, delete, select im Relationenmodell (in Oracle) Kapitel 6 Datenmalipulation (DML) d. h. insert, update, delete, select im Relationenmodell (in Oracle) 1 Datenmanipulationssprache (DML) SQL Einfügen: Insert-Statement Ändern: Update-Statement Löschen:

Mehr

Fachbereich Informatik Praktikum 1

Fachbereich Informatik Praktikum 1 Hochschule Darmstadt DATA WAREHOUSE SS2015 Fachbereich Informatik Praktikum 1 Prof. Dr. S. Karczewski Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 14.April.2015 1. Kurzbeschreibung In diesem Praktikum geht

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

Datenbanken Kapitel 2

Datenbanken Kapitel 2 Datenbanken Kapitel 2 1 Eine existierende Datenbank öffnen Eine Datenbank, die mit Microsoft Access erschaffen wurde, kann mit dem gleichen Programm auch wieder geladen werden: Die einfachste Methode ist,

Mehr

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell Jetzt: -> Formulierung in DDL Daten-Definitionssprache (DDL) DDL ist Teil von SQL (Structured

Mehr

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird. Thomas Studer Relationale Datenbanken: Von den theoretischen Grundlagen zu Anwendungen mit PostgreSQL Springer, 2016 ISBN 978-3-662-46570-7 Dieser Foliensatz darf frei verwendet werden unter der Bedingung,

Mehr

zwei verschiedene Darstellungsformen derselben Abfrage.

zwei verschiedene Darstellungsformen derselben Abfrage. SQL Sprache Die strukturierte Abfragesprache SQL (englisch: Structured Query Language) bildet einen Standard zur Formulierung von Abfragen. Das SQL und das Abfragefenster bilden zwei verschiedene Darstellungsformen

Mehr

Datenbankanfragen und -operationen mittels SQL

Datenbankanfragen und -operationen mittels SQL Datenbankanfragen und -operationen mittels SQL Über den verschiedenen Tabellen einer Datenbank werden Operationen ausgeführt, die immer wieder eine Tabelle als Ergebnis zurückgeben. Mathematisch modelliert

Mehr

Einführung in die Wirtschaftsinformatik Akademisches Jahr 2006/07 Prof. Andreas Meier Assistentin: Andreea Ionas. SQL-Grundlagen

Einführung in die Wirtschaftsinformatik Akademisches Jahr 2006/07 Prof. Andreas Meier Assistentin: Andreea Ionas. SQL-Grundlagen Einführung in die Wirtschaftsinformatik Akademisches Jahr 2006/07 Prof. Andreas Meier Assistentin: Andreea Ionas SQL-Grundlagen 1 Einleitung 1 2 Abfragen mit SELECT 2 2.1 Attribute auswählen (select-klausel)

Mehr

1. Einleitung. SQL-Abfragen. 3. Das ERM der Übungsdatenbank. 2. Grundstruktur von SQL-Abfragen

1. Einleitung. SQL-Abfragen. 3. Das ERM der Übungsdatenbank. 2. Grundstruktur von SQL-Abfragen 1. Einleitung 9. Oktober 2012 SQL ist eine relational vollständige Datenbanksprache. SQL steht für Structured Query Language. Der englische Ausdruck Query steht für Abfrage. SQL wurde in den siebziger

Mehr

Berechnungen in Access Teil I

Berechnungen in Access Teil I in Access Teil I Viele Daten müssen in eine Datenbank nicht eingetragen werden, weil sie sich aus anderen Daten berechnen lassen. Zum Beispiel lässt sich die Mehrwertsteuer oder der Bruttopreis in einer

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

Access 2000 und MS SQL Server im Teamwork

Access 2000 und MS SQL Server im Teamwork Access 2000 und MS SQL Server im Teamwork von Irene Bauder, Jürgen Bär 1. Auflage Hanser München 2000 Verlag C.H. Beck im Internet: www.beck.de ISBN 978 3 446 21473 6 Zu Inhaltsverzeichnis schnell und

Mehr

Datenbank- und Informationssysteme. Lösungsvorschläge zu Übungsblatt 2. Sommersemester 1999. CREATE DOMAIN KennzeichenDomain AS VARCHAR(9);

Datenbank- und Informationssysteme. Lösungsvorschläge zu Übungsblatt 2. Sommersemester 1999. CREATE DOMAIN KennzeichenDomain AS VARCHAR(9); Institut für Angewandte Informatik AIFB und Formale Beschreibungsverfahren Universität Karlsruhe (TH) Prof. Dr. W. Stucky U. Schmidle Tel.: 0721 / 608-3812, 3509 Fax.: 0721 / 693717 e-mail: stucky schmidle

Mehr

Wirtschaftsinformatik. SQL Abfragen und QBE. Unterrichtsskript. Version: 2.0

Wirtschaftsinformatik. SQL Abfragen und QBE. Unterrichtsskript. Version: 2.0 Wirtschaftsinformatik SQL Abfragen und QBE Unterrichtsskript Version: 2.0 Autor: Jonas Lanz Datum: 02.06.2006 FHNW Hochschule für Wirtschaft 2 / 29 Inhaltsverzeichnis 1. Einführung 3 1.1 Relationale Operationen

Mehr

Taschenbuch der Wirtschaftsinformatik und Wirtschaftsmathematik

Taschenbuch der Wirtschaftsinformatik und Wirtschaftsmathematik Taschenbuch der Wirtschaftsinformatik und Wirtschaftsmathematik von Wolfgang König, Heinrich Rommelfanger, Dietrich Ohse, Oliver Wendt, Markus Hofmann, Michael Schwind, Klaus Schäfer, Helmut Kuhnle, Andreas

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

Labor 3 - Datenbank mit MySQL

Labor 3 - Datenbank mit MySQL Labor 3 - Datenbank mit MySQL Hinweis: Dieses Labor entstand z.t. aus Scripten von Prof. Dr. U. Bannier. 1. Starten des MySQL-Systems MySQL ist ein unter www.mysql.com kostenlos erhältliches Datenbankmanagementsystem.

Mehr

Einführung in SQL mit Oracle

Einführung in SQL mit Oracle Seminar Einführung in SQL mit Oracle von Prof. Dr. Rainer Schwenkert Hochschule München c Vervielfältigung nur mit Zustimmung des Autors Themenbereiche SQL-Historie Wichtige DDL- und DML-Anweisungen Der

Mehr

Datenbanksysteme Kapitel: SQL Data Definition Language

Datenbanksysteme Kapitel: SQL Data Definition Language Datenbanksysteme Kapitel: SQL Data Definition Language Prof. Dr. Peter Chamoni Mercator School of Management Lehrstuhl für Wirtschaftsinformatik, insb. Business Intelligence Prof. Dr. Peter Chamoni - Prof.

Mehr

SQL C.J. Dates Empfehlungen

SQL C.J. Dates Empfehlungen In seinem Buch SQL and Relational Theory: How to Write Accurate SQL Code, erschienen 2009 bei O Reilly, setzt sich C.J. Date mit SQL auseinander. Kurz gesagt: es ist beklagenswert, wie weit entfernt SQL

Mehr

6. Sichten, Integrität und Zugriffskontrolle. Vorlesung "Informa=onssysteme" Sommersemester 2015

6. Sichten, Integrität und Zugriffskontrolle. Vorlesung Informa=onssysteme Sommersemester 2015 6. Sichten, Integrität und Zugriffskontrolle Vorlesung "Informa=onssysteme" Sommersemester 2015 Überblick Sichten Integritätsbedingungen Zugriffsrechte SQL- Schema und SQL- Katalog Das Informa=onsschema

Mehr

Microsoft Access 2010 Gruppierte Daten in Berichten

Microsoft Access 2010 Gruppierte Daten in Berichten Microsoft Access 2010 Gruppierte Daten in Berichten Berichte... zeigen Daten zum Lesen an. können Daten gruppieren und berechnen. beziehen die Daten aus einer Tabelle oder Abfrage / SQL- Anweisung. bereiten

Mehr

Kapitel 5 Dr. Jérôme Kunegis. SQL: Grundlagen. WeST Institut für Web Science & Technologien

Kapitel 5 Dr. Jérôme Kunegis. SQL: Grundlagen. WeST Institut für Web Science & Technologien Kapitel 5 Dr. Jérôme Kunegis SQL: Grundlagen WeST Institut für Web Science & Technologien Lernziele Kenntnis der Grundkonzepte von SQL Fähigkeit zur praktischen Anwendung von einfachen SQL-Anweisungen

Mehr

Microsoft Excel 2013 Automatisches Ausfüllen

Microsoft Excel 2013 Automatisches Ausfüllen Hochschulrechenzentrum Justus-Liebig-Universität Gießen Microsoft Excel 2013 Automatisches Ausfüllen Automatisches Ausfüllen in Excel 2013 Seite 1 von 10 Inhaltsverzeichnis Lineare Reihen erstellen...

Mehr