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