Eine einfache Abfrage zur Tabelle Artikel aus der

Werbung
SQL
Operatoren in Abfragen
In SQL werden verschiedene Typen von Operatoren beschrieben:
es gibt arithmetische, Vergleichs- , Zeichen- ,logische, Mengen- und verschiedene Operatoren. 1
zunächst Beispiele für arithmetische Operatoren:
Artikel Grosshandel
Tomaten
0,34
Sie besteht nur aus den beiden Spalten Kartoffeln
0,51
Artikel und Grosshandel (=Großhandelspreis) Bananen
0,67
Rueben
0,45
Kaese
0,89
Beim letzten Datensatz (Orangen) fehlt abAepfel
0,23
sichtlich der Preis (s. u.)
Orangen
Betrachten Sie dazu die kleine Tabelle Preis
Wenn Sie die Abfrage eingeben:
ARTIKEL GROSSHANDEL Expr1002
Tomaten
0,34
0,49
Kartoffeln
0,51
0,66
Bananen
0,67
0,82
dann erhalten Sie:
Rueben
0,45
0,6
0,89
1,04
Es wird also eine neue Spalte erzeugt, in der Kaese
Aepfel
0,23
0,38
das Ergebnis der Berechnung zu finden ist
Orangen
SELECT ARTIKEL, GROSSHANDEL,
GROSSHANDEL + 0.15
FROM PREIS;
Sie können diese neue Spalte aber auch direkt benennen:
SELECT ARTIKEL, GROSSHANDEL,
GROSSHANDEL + 0.15 as Einzelverkaufspreis
FROM PREIS;
dann erhalten Sie eine neue Spaltenüberschrift:
ARTIKEL GROSSHANDEL Einzelverkaufspreis
Tomaten
0,34
0,49
Kartoffeln
0,51
0,66
Bananen
0,67
0,82
Rueben
0,45
0,6
Kaese
0,89
1,04
Aepfel
0,23
0,38
Orangen
Aufgabe: Zur Tabelle Preis soll eine Tabelle
entstehen, die eine neue Spalte namens Sonderpreis anzeigt. Diese
Spalte soll den Wert des halben
Grosshandelspreises haben.
1
artikel Grosshandel Sonderpreis
Tomaten
0,34
0,17
Kartoffeln
0,51
0,255
Bananen
0,67
0,335
Rueben
0,45
0,225
Kaese
0,89
0,445
Aepfel
0,23
0,115
Orangen
Bei den meisten Beispielen folge ich zum Teil dem sehr ausführlichen Buch: "SQL in 21 Tagen" aus dem Verlag Markt und
1
Technik . Zum Teil habe ich die Tabellenbeispiele auf Deutsch übersetzt.
1
SQL
Aufgabe: Erstellen Sie eine Abfrage zur Tabelle
Temperatur.
Sie soll folgendes Ergebnis liefern
SQL-BefehL:
Hochtemp Tieftemp Differenz
45
-10
55
48
-5
53
31
-28
59
Vergleichsoperatoren
mit Vergleichsoperatoren hatten Sie es schon zu tun, wenn Sie die where-Klausel verwendet hatten:
Select * from Bücher
(gibt die Bücher von A. Christie aus der Tawhere Autor ="Christie"
belle Bücher aus)
Bisher noch nicht verwendet wurde:
a) Is Null (für nicht vorhanden) Gegenteil: Is not Null
z. B.: where Preis Is Null (wenn die Artikel gefunden werden sollen, für die kein Preis vorhanden ist). Das Gegenteil: Is not Null heißt in der Entwurfsansicht auf deutsch: Ist nicht
leer
b) between = zwischen
select * from Preis
where grosshandel between 0.5 and 0.8
Artikel Grosshandel
Kartoffeln
0,51
Bananen
0,67
c) <> für ungleich (Oracle: !=)
SELECT *
FROM Preis
listet alle Datensätze bis auf Tomaten
gleich:
where not Artikel = "Tomaten"
where Artikel <>"Tomaten"
d) distinct
Betrachten Sie dazu die kleine Tabelle
Namen_Orte:
die Abfrage:
SELECT Ort
FROM Namen_Orte;
zeigt alle Orte an, auch doppelt:
Schreiben Sie:
Name Vorname
Schmitz Regina
Mayer Ludwig
Appel Hans
Mons Gerd
Schmitz Peter
Jordan Gustav
Mayer Claudia
Jordan Hannes
Ort
Köln
Bonn
Bergheim
Troisdorf
Leverkusen
Köln
Bonn
Leverkusen
Ort
Bergheim
2
Ort
Köln
Bonn
Bergheim
Troisdorf
Leverkusen
Köln
Bonn
Leverkusen
SQL
SELECT distinct Ort
FROM Namen_Orte;
Bonn
Köln
Leverkusen
Troisdorf
um keine Orte doppelt zu sehen:
name
Appel
Jordan
Mayer
Mons
Schmitz
Vorsicht bei den Namen:
SELECT distinct name
FROM Namen_Orte;
hier fehlen natürlich tatsächlich Namen!
name ort
Appel Bergheim
Jordan Köln
Jordan Leverkusen
Mayer Bonn
Mons Troisdorf
Schmitz Köln
Schmitz Leverkusen
Wenn die Orte wieder dabei sind, erscheinen
auch die fehlenden Namen (trotz distinct)
wieder:
SELECT distinct name, ort
FROM Namen_Orte;
Der Operator in
Mit in kann man Werte aus Spalten suchen, die verschiedene Kriterien, die auch mit or zu
verbinden wären, entsprechen.
Vergleichen Sie die folgenden Abfragen, die zum gleichen Ergebnis führen:
or
in
Ergebnis
SELECT Name,Ort
SELECT Name,Ort
Name Ort
FROM Namen_Orte
FROM Namen_Orte
Schmitz Köln
where Ort ="Bonn"
Mayer Bonn
where Ort in
("Bonn","Köln","Troisdorf") Mons Troisdorf
or
Jordan Köln
Ort ="Köln"
Mayer Bonn
or
Ort ="Troisdorf"
Zeichenverkettung
Aufgabe: Testen Sie an der Tabelle Namen_Orte auch die Verbindung
Gesamtname
Regina Schmitz
von mehreren Spalten mit dem &-Zeichen:
Ludwig Mayer
SELECT Vorname &" "&Name as Gesamtname
Hans Appel
FROM Namen_Orte;
zwischen Vorname und Nachname muss dabei ein Leerschritt eingefügt Gerd Mons
Peter Schmitz
werden.
Gustav Jordan
In Oracle-Datenbanken müssen Sie statt & ein doppeltes Pipe-Zeichen ||
Claudia Mayer
verwenden.
Hannes Jordan
3
Herunterladen