3.1 Werte vergleichen: <, >, =, <>

Eines der am häufigsten verwendeten Schlüsselwörter beim Schreiben von SQL-Abfragen ist WHERE. Mit seiner Hilfe teilen wir MySQL mit, welche Tabellenzeilen wir filtern (auswählen) möchten.

Nach dem Schlüsselwort WHEREkönnen Sie sehr komplexe und knifflige Bedingungen schreiben. Welche Operationen kann diese Bedingung also enthalten?

Operator Beschreibung Beispiel
< Weniger Gehalt < 40000
> Mehr Gehalt > 100000
<= Weniger oder gleich Alter <= 25
>= Mehr oder gleich Alter >= 18
= Gleich Beruf = 'Programmierer'
<>, != Nicht gleich Jahr(join_date) != 2015

Im Gegensatz zur Java-Sprache wird hier für strikte Gleichheit ein Gleichheitszeichen verwendet und nicht zwei .

Wenn Sie überprüfen möchten, ob die Werte nicht gleich sind, können Sie dies auf zwei Arten tun: <>Entweder !=Der erste Ansatz wird in Sprachen wie Pascal verwendet, der zweite ist typisch für Sprachen wie C++ und Java.

Für die Zuweisung in SQL wird es :=wie in Pascal verwendet, die Zuweisung selbst wird jedoch sehr selten verwendet.

Schreiben wir eine Abfrage, in der wir alle Mitarbeiter anzeigen, die 2015 nicht eingestellt wurden.


SELECT * FROM employee WHERE YEAR(join_date) != 2015
        

Und wir erhalten das folgende Abfrageergebnis:

Ausweis Name Beruf Gehalt Alter Beitrittsdatum
1 Iwanow Iwan Programmierer 100.000 25 30.06.2012
2 Petrov Petr Programmierer 80.000 23 12.08.2013
3 Iwanow Sergej Prüfer 40.000 dreißig 01.01.2014
6 Vaska Der Kater 1.000 3 01.01.2018

3.2 Logische Operationen UND, ODER, NICHT

Sie können auch WHEREdie logischen Operationen AND, ORund verwenden NOT. Und sie sind genau so geschrieben, wie ich sie hier beschrieben habe. Keine &&, ||oder!

Schreiben wir eine SQL-Abfrage, in der wir Mitarbeiter auswählen, die über 20 Jahre alt sind und ein Gehalt von weniger als 50.000 erhalten.


SELECT * FROM employee WHERE age > 20 AND salary < 50000
        

Und wir erhalten das folgende Abfrageergebnis:

Ausweis Name Beruf Gehalt Alter Beitrittsdatum
3 Iwanow Sergej Prüfer 40.000 dreißig 01.01.2014
5 Kirienko Anastasia Büroleiter 40.000 25 10.10.2015

Zu einfach. Schreiben wir eine Abfrage, in der wir Mitarbeiter auswählen, die mehr als 100.000 erhalten und nicht als Direktor arbeiten:


SELECT * FROM employee WHERE salary >= 100000 AND NOT occupation = 'Director'
        

Hier haben wir gezielt !=den Operator anstelle des Symbols verwendet NOT.

Und wir erhalten das folgende Abfrageergebnis:

Ausweis Name Beruf Gehalt Alter Beitrittsdatum
1 Iwanow Iwan Programmierer 100.000 25 30.06.2012

3.3 ZWISCHEN: Wertebereich

Auch in SQL gibt es einen speziellen Operator, BETWEENmit dem man prüfen kann, ob eine Variable zwischen zwei Werten liegt. Dieser Operator wird in booleschen Ausdrücken verwendet. Die allgemeine Form eines solchen Operators ist:


variable BETWEEN bottom line AND top_bound
        

In diesem Fall sind im Gegensatz zur Java-Sprache sowohl die untere als auch die obere Grenze im zulässigen Intervall enthalten.

Schreiben wir ein Beispiel, in dem wir alle Mitarbeiter mit einem Gehalt von 40.000 bis 100.000 auswählen. Die Anfrage sieht folgendermaßen aus:

SELECT * FROM employee WHERE salary BETWEEN 40000 AND 100000

Und wir erhalten das folgende Abfrageergebnis:

Ausweis Name Beruf Gehalt Alter Beitrittsdatum
1 Iwanow Iwan Programmierer 100.000 25 30.06.2012
2 Petrov Petr Programmierer 80.000 23 12.08.2013
3 Iwanow Sergej Prüfer 40.000 dreißig 01.01.2014
5 Kirienko Anastasia Büroleiter 40.000 25 10.10.2015

Der Operator BETWEENunterstützt nicht nur numerische Typen, sondern auch Datumsangaben und sogar String-Typen . Bei der Arbeit mit Strings wird die lexikografische Reihenfolge verwendet: aaba kommt vor aabb

3.4 IN: Werteliste

Darüber hinaus verfügt SQL über einen speziellen Operator, INmit dem Sie prüfen können, ob eine Variable in der angegebenen Liste enthalten ist. Dieser Operator wird in booleschen Ausdrücken verwendet. Die allgemeine Form eines solchen Operators ist:

variable IN (value 1 , value 2 , ... value N)

Schreiben wir eine Abfrage, in der wir Mitarbeiter auswählen, die 20, 25 oder 30 Jahre alt sind. Die Anfrage sieht folgendermaßen aus:

SELECT * FROM employee WHERE age IN (20, 25, 30)

Und wir erhalten das folgende Abfrageergebnis:

Ausweis Name Beruf Gehalt Alter Beitrittsdatum
1 Iwanow Iwan Programmierer 100.000 25 30.06.2012
3 Iwanow Sergej Prüfer 40.000 dreißig 01.01.2014
5 Kirienko Anastasia Büroleiter 40.000 25 10.10.2015

Und jetzt schreiben wir eine Abfrage, bei der wir im Gegenteil Mitarbeiter auswählen, deren Alter not20, 25 oder 30 Jahre beträgt. Die Abfrage sieht so aus:

SELECT * FROM employee WHERE age NOT IN (20, 25, 30)

Und wir erhalten das folgende Abfrageergebnis:

Ausweis Name Beruf Gehalt Alter Beitrittsdatum
2 Petrov Petr Programmierer 80.000 23 12.08.2013
4 Rabinovich Moisha Direktor 200.000 35 12.05.2015
6 Vaska Der Kater 1.000 3 01.01.2018

Alles hat wie erwartet funktioniert. Schönheit.

3.5 LIKE: Saitenmuster

Und schließlich noch ein weiterer wichtiger und sehr oft verwendeter Operator – LIKE. Es wird beim Vergleich von Zeichenfolgen verwendet. Es kann verwendet werden, um ein Saitenmuster festzulegen. Dieser Operator wird in booleschen Ausdrücken verwendet. Die allgemeine Form eines solchen Operators ist:

variable LIKE 'sample'

Im Muster können Sonderzeichen verwendet werden: %und _.

  • Unterstrich bedeutet ein beliebiges Zeichen, immer 1 Stk.
  • Prozent bedeutet ein beliebiges Zeichen und eine beliebige Häufigkeit (einschließlich 0-mal).

Schreiben wir eine Abfrage, die alle Personen auswählt, deren Nachname mit dem Buchstaben „I“ beginnt. Die Anfrage sieht folgendermaßen aus:

SELECT * FROM employee WHERE name LIKE 'I%'

Und wir erhalten das folgende Abfrageergebnis:

Ausweis Name Beruf Gehalt Alter Beitrittsdatum
1 Iwanow Iwan Programmierer 100.000 25 30.06.2012
3 Iwanow Sergej Prüfer 40.000 dreißig 01.01.2014

Jetzt machen wir die Aufgabe komplizierter: Der Name sollte „o“ enthalten und mit „a“ enden. Die Anfrage sieht folgendermaßen aus:

SELECT * FROM employee WHERE name LIKE '%o%a'

Und wir erhalten das folgende Abfrageergebnis:

Ausweis Name Beruf Gehalt Alter Beitrittsdatum
4 Rabinovich Moisha Direktor 200.000 35 12.05.2015

Okay, machen wir es etwas schwieriger. Lassen Sie uns alle Mitarbeiter herausfiltern, deren Alter mit der Zahl „3“ beginnt. Die Anfrage sieht folgendermaßen aus:

SELECT * FROM employee WHERE age LIKE '3%'

Und wir erhalten das folgende Abfrageergebnis:

Ausweis Name Beruf Gehalt Alter Beitrittsdatum
3 Iwanow Sergej Prüfer 40.000 dreißig 01.01.2014
4 Rabinovich Moisha Direktor 200.000 35 12.05.2015
6 Vaska Der Kater 1.000 3 01.01.2018

Unsere Altersspalte ist übrigens vom Typ , funktioniert also nicht nur mit Strings . Was kann man nicht, aber freuen.intLIKE