15_8335_302-SQL-DML

Werbung
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.
Es geht also im die SQL – Data Manipulation Language.
2
Wenn es um das Ändern von Datenbankinhalten geht, dann wird meist der
Begriff CRUD verwendet.
C – Steht für Create  also das Einfügen von neuen Zeilen in eine Tabelle
R – steht for Read  also das Lesen von Daten aus einer oder mehreren
Tabellen
U – steht für update  als das Ändern von Attributen in einer oder mehreren
Zeilen
D – steht für Delete  also das Löschen einer oder mehrerer Zeilen in einer
Tabelle
3
Zunächst müssen wir erst einmal Daten in eine Datenbank eintragen. Dies erfolgt
mittels des SQL Befehls INSERT INTO
4
Der SQL Befehl INSERT INTO kann in zwei verschiedenen Varianten
angewendet werden.
Variant 1
In Variante 1 werden zunächst die Spaltennamen aufgelistet, die wir mit Werten
belegen wollen. ( erster Klammerausdruck). Anschließend kommt nach dem
Schlüsselwort VALUES eine weitere Klammer, welche die Liste der Werte
enthält.
Hierbei gilt folgende Regel.
Der erste Wert wird in die Spalte mit dem ersten Spaltennamen eingetragen
Der zweite Wert wird in die Spalte mit dem zweiten Spaltennamen eingetragen
usw.
Es ist somit offensichtlich,
1. dass die Liste der Werte genau so viele Werte enthält, wie Spaltennamen
aufgeführt sind.
2. Die Datentypen der aufgeführten Werte auch zu den Datentypen zu den
Spalten passen, so wie sie in der aktuellen Tabelle-Definition hinterlegt sind.
5
Variante 2
In Variante 2 sind die Spalten und Werte in der Form
spaltenName = Wert
explizit aufgeführt. Die einzelnen Zuweisungen sind durch Komma getrennt.
Für welche Variante sie sich entscheiden, hängt im wesentlichen von den persönlichen
Präferenzen ab.
Aber auch hierbei gilt, wie bei der Variante 1, dass die Datentypen der Werte zu den
Datentypen aus der Tabellendefinition passen (gleicher Datentyp).
TIPP:
Führen Sie alle Übungen aus dem Übungsbuch durch, zu dem Thema „Daten in Tabellen
einfügen“.
5
Als nächstes schauen wir uns näher an, wie wir Daten aus einer Datenbank
auslesen können.
Hierzu verwenden wir die SELECT Anweisung. Wie der Name dabei schon
andeutet, können wir hiermit festlegen, welche Daten wir selektieren wollen.
Am Beispiel der SELECT Anweisung wird es offensichtlich, dass SQL eine
deskriptive Sprache ist. Da wir nur angeben, für WELCHE Daten wir uns
interessieren, aber nicht WIE man die Datenmenge bestimmt.
Wie sie dann auch gleich feststellen werden, ist die SELECT Anweisung eines
der mächtigsten und damit auch eines der komplexesten Anweisung in SQL:
Wir werden uns hier nur die wichtigsten Grundformen ansehen und auch in
Übungen ausprobieren.
Die Komplexität werden sie leicht selbst feststellen können, wenn Sie versuchen,
das Basis-Konzept der einzelnen Varianten miteinander zu kombinieren. Auch
das ist möglich.
6
Wie schauen uns hier die drei wichtigsten Varianten an
Variante 1:
Dient zum Lesen aller Attribute und aller Reihen aus einer Tabelle
Variante 2:
Dient zum Lesen von bestimmten Attributen ( column1, column2,..) aus einer
Tabelle. Es werden dabei alle Zeilen gelesen.
Es kann dabei vorkommen, dass doppelte Zeilen gemeldet werden.
HINWEIS:  hier sehen Sie, dass SQL an dieser Stelle nicht streng dem
relationalen Modell folgt, nach dem alle Element einer Menge unterscheidbar
sind.
Variante 3:
Dient zum Lesen von bestimmten Attributen ( column1, column2,..) aus einer
Tabelle. Es werden dabei alle Zeilen gelesen.
7
Es kann dabei aber NICHT vorkommen, dass doppelte Zeilen gemeldet werden. Dies
wird durch das Schlüsselwort DISTINCT sichergestellt.
7
In den wenigsten Fällen will man in der Praxis immer alle Datensätze einer
Tabelle lesen.
Um dies zu erreichen, kann man bei der SELECT ANWEISUNG eine
sogenannte WHERE-Klausel angeben.
In der WHERE-Klausel kann man nun Bedingungen angeben, die die
Datensätze erfüllen müssen,
In der Abbildung sind die beiden wichtigsten Varianten dargestellt.
Variante 1
In dieser Variante werden in der WHERE-KLAUSE unter <condition> logische
Ausdrücke der Form
spaltenName <operator> wert
Eine Liste der möglichen Operatoren finden Sie in dem Abschnitt „Einführung in
SQL“
Diese sind unter anderem =, like , >, >= , < , <=
8
Beispiel:
Select * from Mitarbeiter where gehalt >= 450
 Schlüsselwort sind FETT dargestellt
Variante 2
Die Variante 2 ist eine Erweiterung von Variante 1. Hier werden einzelne Spaltennamen
miteinander verknüpft.
Beispiel:
Select * from Mitarbeiter where gehalt >= 450 AND abteilung like
‚Einkauf‘
 Schlüsselwort sind FETT dargestellt.
TIPP:
Führen Sie jetzt die Übungen aus dem Übungsbuch zu dem Thema SELECT durch.
8
In dieser Abbildung sehen Sie zwei weitere Varianten einer SELECT Anweisung
mit erweiterten Möglichkeiten / Bedingungen in der WHERE-Klausel
Variante 1
In dieser Variante wird angegeben, dass der Wert einer Spalte in der Menge
enthalten sein muss , die innerhalb der runden Klammern nach dem
Schlüsselwort IN aufgeführt ist.
In der Syntax in der Abbildung sind als mögliche Werte einzelne Werte explizit
aufgeführt.
Beispiel:
select * from Persons where degree like ‚Bachelor*‘ and country IN
(‘Deutschland‘, ‘ Schweiz‘ )
Bei weitergehenden Betrachtungen der Sprach-Syntax werden Sie feststellen,
dass es auch die Möglichkeit gibt, anstatt die Werte explizit aufzuführen,
innerhalb der Klammer auch ein eigenständiges SELECT Statement zu
definieren.
Dies bedeutet, dass die Menge zur Laufzeit bestimmt wird. In diesem Fall
9
bezeichnet man die Select-Anweisung innerhalb der Klammer auch als SUB-QUERY
Ein Beispiel für ein für eine solche Form sieht wie folgt aus:
select * from Persons where degree like ‚Bachelor*‘ and country IN (
select name from Countries where location = `EUROP` )
 Schlüsselworte in FETT
Variante 2
Die Variante 2 dient dazu eine Bedingung anzugeben, bei dem ein Wert einer Spalte
innerhalb eines bestimmten Bereiche liegen muss.
Ein Beispiel für ein für eine solche Form sieht wie folgt aus:
select * from Mitarbeiter where jahresGehalt BETWEEN 20000 AND
45000
 Schlüsselworte in FETT
9
Nun lernen wir eine weitere Möglichkeit kennen, um SELECT Anweisungen zu
erweitern, die es uns ermöglicht eine selektierte Datenmenge auch gleich sortiert
auslesen zu können.
Hierzu erweitert man ein Select-Anweisung, um ein ORDER BY Klausel, so
kann erreicht werden, dass die Ausgabemenge sortiert ausgegeben wird. Die
ORDER BY Klause enthält dabei die Angabe, ob die Datenmenge aufsteigend
oder absteigend sortiert werden soll.
ASC bedeutet dabei – AUFSTEIGENDE Sortierung
DESC bedeute dabei - ABSTEIGENDE Sortierung
Besonderheiten
• Bei nummerischen Wert entspricht die Ordnung wie in der Mathematik üblich.
• Bei Zeichenketten wird dabei die lexikalische Ordnung zu Grunde gelegt.
• Gibt man in der ORDER BY Klause mehr als einen Spaltennamen an, so legt
die erste Spalte das Kriterium fest, welches als erstes überprüft wird. Sind die
Werte der Spalten aus zwei Zeilen gleich, so wird als nächstes Kriterium die
Spalte verwendet, die als zweites in der ORDER BY Klause angegeben wurde,
usw…
10
Beispiel
select name, gehalt from Persons oder by gehalt ASC
 Schlüsselworte in FETT
10
In der Abbildung sehen Sie nun eine weitere Form einer SELECT Anweisung.
Wie Sie sehen, kann man eine SELECT Anweisung mit einer GROUP BY
Klausel erweitern.
Dies ist eine besonders mächtige Klausel. Durch sie kann man erreichen, dass die
selektierten Zeilen in Gruppen zusammengefasst werden, um dann auf dieser
Gruppe eine Funktion auszuführen.
Eine Liste der Funktionen finden Sie in dem Abschnitt „Einführung in SQL“
Am besten verdeutlichen wir uns die Verwendung anhand eines Beispiels.
Beispiel
select abteilung , sum( gehalt) from Persons group by abteilung
 Schlüsselworte in FETT dargestellt
11
Was wir dadurch erreichen, ist folgendes.
Es werden alle Zeilen der Tabelle Personen gelesen. Die Personen die in der Spalte
‚abteilung‘ den gleichen Wert haben, werden zu einer Gruppe zusammengefasst.
In der Ausgabemenge steht nun die Funktion sum(gehalt) . Die legt fest, dass alle
Gehälter der Personen, die in der gleichen Abteilung sind, aufsummiert werden .
TIPP:
Führen Sie jetzt die Übungen aus dem Übungsbuch zu dem Thema „Daten Lesen …“
durch
11
Mittels der DELETE Anweisung können wir Zeilen aus einer Tabelle löschen.
12
Hier gibt es wieder zwei Varianten.
Wie Sie der Abbildung entnehmen können, ist in der Variante 1 keine WHERE
Klause vorhanden. Während in der zweiten Variante eine Wehere Klause
angeben wird.
Variante 1
Dies ist die einfachste Variante. Da keine Bedingung angegeben wurde, werden
also ALLE Zeilen einer Tabelle gelöscht.
Variante 2
Diese Variante dient zum Löschen der Eintrage in einer Tabelle für die die
Bedingung in der WHERE Klausel zutrifft.
TIPP:
Führen Sie jetzt die Übungen aus dem Übungsbuch zu dem Thema „Löschen von
Einträgen“ durch
13
Mittel einer SQL UPDATE Anweisung können wir die Werte von Attributen
ändern.
14
Die wichtigsten beiden Varianten für das Ändern von Attributwerten sind in der
Abbildung aufgeführt
Variante 1
In dieser Variante fehlt eine WHERE Klausel. Somit werden alle Zeilen einer
Tabelle geändert.
Das Zuweisen der Werte zu den Spalten ist analog wie bei der INSERT
Anweisung
Variante 2
Die zweite Variante dient zum Ändern der Einträge in einer Tabelle für die die
Bedingung in der WHERE Klausel zutrifft.
Das Zuweisen der Werte zu den Spalten ist analog wie bei der INSERT
Anweisung bzw. wie bei Variante 1.
TIPP:
Führen Sie jetzt die Übungen aus dem Übungsbuch zu dem Thema „ÄNDERN
von Werten“ durch
15
16
Herunterladen