SQL Structured Query Language Grundlagen zu Abfrage Jede SQL-Abfrage enthält die drei SQL Hauptbefehle: select (engl. auswählen), from (engl. von) und where (engl. wo). Mit select gibt man an, welche Spalten man ausgegeben haben möchte; mit from gibt man die Tabelle an, aus der die Spalten stammmen; mit where gibt man die Bedingung an, unter der die Datensätze ausgesucht werden, dabei muss where nicht vorkommen, wenn es keine Bedingung gibt. Hinweise Wenn man alle Spalten einer Tabelle angezeigt haben möchte, kann man auch einfach einen * einsetzen. SQL Zeichenketten (Strings) wie zum Beispiel 'Michael Schumacher' setzt man in einfache Anführungszeichen. Bei den Tabellennamen muss die Groß-/ Kleinschreibung beachtet werden. Eine einfache Abfrage select Saison, Fahrerweltmeister, Konstrukteurswm from WMTitel where Fahrerweltmeister = 'Michael Schumacher' SQL Operatoren SQL Mit den Operatoren < (kleiner), <= (kleiner oder gleich), = (gleich), <> (ungleich), >= (größer oder gleich), > (größer) kann man Vergleichsbedingungen in der where-Klausel formulieren. Mit den Operatoren and, or, not kann man logische Bedingungen in der where-Klausel formulieren. Beispiel mit logischem Operator und Vergleichsoperator select Saison, Fahrerweltmeister, WM_Punkte from WMTitel where Fahrerweltmeister 'Michael Schumacher‘ WM_Punkte 100 between-Operator Eine where-Klausel mit WM_Punkte >= 80 and <= 110 funktioniert nicht, weil beim zweiten Vergleich der Vergleichspartner fehlt. Für Bereichsvergleiche verwendet man den betweenOperator. FALSCH: WM_Punkte >= 80 and <= 110 RICHTIG: WM_Punkte between 80 and 110 like-Operator Mit dem like-Operator kann man Muster für StringVergleiche benutzen: das Prozentzeichen % steht für eine beliebige Folge von Zeichen der Unterstrich _ steht für ein einziges beliebiges Zeichen den like-Operator kann man auch zusammen mit not benutzen: not like select Saison, KonstrukteursWM from WMTitel where KonstrukteursWM like '%Renault%' in-Operator Hat man eine ganze Liste von Kriterien für die gesuchten Daten, so kann der inOperator weiter helfen. Man kann den in-Operator auch zusammen mit not benutzen: not in select Saison, Fahrerweltmeister from WMTitel where Fahrerweltmeister in ('Ayrton Senna', 'Alain Prost', 'Damon Hill‘) is-Operator Wenn beim Einfügen von Daten in eine Datenbanktabelle ein Wert noch nicht bekannt ist, so wird dieser mit dem sogenannten NULL-Wert belegt. Solche NULL-Werte kann man mit dem is-Operator finden. Man kann den is-Operator auch zusammen mit not benutzen: not is select * from WMTitel where Team_Punkte is NULL distinct-Operator Mit dem distinct-Operator sorgt man dafür, dass in der Ergebnistabelle keine Einträge mehrfach vorkommen. select distinct Fahrerweltmeister from WMTite as-Operator und Grundrechenarten In der select-Klausel können mit den Grundrechenarten (+, -, *, /) Berechnungen durchgeführt werden. Für das Ergebnis steht eigentlich keine Spalte zur Verfügung, daher muss man der Ergebnisspalten mit dem as-Operator eine Bezeichnungen geben. select Fahrerweltmeister, WM_Punkte/160*100 as Ausbeute from WMTitel order by-Operator Will man seine Ergebnisse nach bestimmten Kriterien sortiert ausgegeben haben, so setzt man den order byOperator ein. Standardmäßig werden Strings in alphabetischer Reihenfolge von A bis Z sortiert (asc) und Zahlen der Größe nach. Mit dem Zusatz desc werden die Daten absteigend sortiert. select Fahrerweltmeister, WM_Punkte/160*100 as Ausbeute from WMTitel order by Ausbeute desc Nach mehreren Kriterien sortieren Man kann nach mehreren Kriterien sortieren, wenn man nach dem order by-Operator mehrere Spalten angibt. select Fahrerweltmeister, WM_Punkte/160*100 as Ausbeute from WMTitel order by Ausbeute desc, Fahrerweltmeister Man kann statt der Spaltennamen auch einfach die Spaltennummern angeben, nach der das Ergebnis sortiert werden soll. Das ist besonders für berechnete Spalten nützlich. select Fahrerweltmeister, WM_Punkte/160*100 as Ausbeute from WMTitel order by 2 desc, 1 asc limit-Klausel Die limit-Klausel wird benutzt, um die Anzahl von Datensätzen, die von einer select-Anweisung zurückgegeben wird, zu beschränken. limit erwartet ein oder zwei numerische Argumente: limit 3, 5 gibt ab dem 4. Datensatz insgesamt 5 Datensätze zurück, die Zählung beginnt also ab 0 limit 10 gibt die ersten zehn Datensätze zurück (entspricht limit 0, 10) limit-Beispiel Von der prozentualen Ausbeute der WM-Punkte sollen nur die Plätze 5 bis 7 dargestellt werden. Ergebnisse ohne limit: select Fahrerweltmeister, WM_Punkte/160*100 as Ausbeute from WMTitel order by Ausbeute desc, Fahrerweltmeister limit 4, 3 Ergebnisse mit limit: