2.1 Einführung in SQL
Wenn Sie über eine Datenbank (DB) und darin eine Tabelle mit einigen Daten verfügen, besteht die häufigste Aufgabe darin, bestimmte Daten in dieser Tabelle zu finden. Dafür wurde SQL vor 40 Jahren erfunden.
SQL steht für Structured Query Language .
Die einfachste SQL-Abfrage sieht so aus:
SELECT column1, column2, … columnN FROM table
Nehmen wir an, Sie haben eine Mitarbeitertabelle mit einer Liste der Mitarbeiter Ihres Startups:
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 |
4 | Rabinovich Moisha | Direktor | 200.000 | 35 | 12.05.2015 |
5 | Kirienko Anastasia | Büroleiter | 40.000 | 25 | 10.10.2015 |
6 | Vaska | Der Kater | 1.000 | 3 | 01.01.2018 |
employee names
Sie möchten eine Abfrage schreiben, die diese ebenfalls anzeigt salaries
. Dann müssen Sie eine Abfrage schreiben:
SELECT name, salary FROM employee
Sie erhalten das Abfrageergebnis:
Name | Gehalt |
---|---|
Iwanow Iwan | 100.000 |
Petrov Petr | 80.000 |
Iwanow Sergej | 40.000 |
Rabinovich Moisha | 200.000 |
Kirienko Anastasia | 40.000 |
Vaska | 1.000 |
Wenn Sie alle Spalten Ihrer Tabelle anzeigen möchten , können Sie statt der Auflistung aller Spaltennamen einfach ein Sternchen schreiben. Beispiel:
SELECT * FROM employee
Sie erhalten das 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 |
4 | Rabinovich Moisha | Direktor | 200.000 | 35 | 12.05.2015 |
5 | Kirienko Anastasia | Büroleiter | 40.000 | 25 | 10.10.2015 |
6 | Vaska | Der Kater | 1.000 | 3 | 01.01.2018 |
2.2 Erweiterte Ansicht der SQL-Abfrage
Die SQL-Sprache wurde so benutzerfreundlich wie möglich gestaltet.
Erstens spielt die Groß-/Kleinschreibung des Anfragetextes keine Rolle . Sie können SELECT, Select oder select schreiben und alles wird funktionieren. Zweitens werden Zeilenumbrüche in keiner Weise berücksichtigt . Das DBMS wandelt die Abfrage weiterhin in eine lange Zeichenfolge um, sodass Sie sie nach Belieben schreiben können.
Wie Sie wahrscheinlich bereits vermutet haben, sind die Schlüsselwörter SELECT und FROM nicht beschränkt. Sonst würde nicht so viel über SQL geredet. Die erweiterte Ansicht der SQL-Abfrage sieht folgendermaßen aus:
SELECT columns
FROM table
WHERE condition
GROUP BY columns
HAVING columns
ORDER BY sorting
Mit Hilfe eines Schlüsselwortes WHERE
können Sie eine Bedingung/Filter für die ausgewählten Zeilen festlegen.
Beispiel 1 . Schreiben wir eine Abfrage, die Mitarbeiter mit dem Beruf „Programmierer“ auswählt:
SELECT * FROM employee WHERE occupation = 'Programmer'
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 |
Wie Sie sehen, werden als Ergebnis der Abfrageausführung nur Zeilen angezeigt, in denen der Beruf des Mitarbeiters „Programmierer“ heißt.
Die Schlüsselwörter GROUP BY
und werden ORDER BY
wir HAVING
in den nächsten Vorlesungen behandeln. Und darin werden wir noch ein paar Beispiele mit dem Wort WHERE analysieren.
Beispiel 2 . Schreiben wir nun eine Abfrage, die uns alle Mitarbeiter mit einem Gehalt von mehr als 100.000 anzeigt. So wird es aussehen:
SELECT * FROM employee WHERE salary > 100000
Wir erhalten das folgende Abfrageergebnis:
Ausweis | Name | Beruf | Gehalt | Alter | Beitrittsdatum |
---|---|---|---|---|---|
4 | Rabinovich Moisha | Direktor | 200.000 | 35 | 12.05.2015 |
Beispiel 3 . Versuchen wir nun etwas Schwierigeres. Wie werden alle Mitarbeiter angezeigt, die im Jahr 2015 eingestellt wurden? Und so:
SELECT * FROM employee WHERE YEAR(join_date) = 2015
Wir erhalten das folgende Abfrageergebnis:
Ausweis | Name | Beruf | Gehalt | Alter | Beitrittsdatum |
---|---|---|---|---|---|
4 | Rabinovich Moisha | Direktor | 200.000 | 35 | 12.05.2015 |
5 | Kirienko Anastasia | Büroleiter | 40.000 | 25 | 10.10.2015 |
In dieser Abfrage verwenden wir eine spezielle Funktion YEAR()
, die es uns ermöglicht, das Jahr aus einem Datum zu ermitteln und dann das Jahr des Datums mit der Zahl 2015 zu vergleichen.
2.3 Kommentare in SQL-Abfragen
Und ein weiterer wichtiger Punkt sind Kommentare in SQL-Abfragen. Kommentare sind eine sehr nützliche Sache. Erstens können Sie darin Erklärungen und/oder Ihre Ideen verfassen. Zweitens können Sie mithilfe von Kommentaren fehlerhaften Code deaktivieren. Oder kommentieren Sie die alte Version des Codes aus.
SQL verfügt wie Java über einzeilige und mehrzeilige Kommentare. Darüber hinaus sieht ein mehrzeiliger Kommentar genauso aus wie in Java. Sein Aussehen:
/*
comment text
comment text
comment text
*/
Natürlich kann es auch in einer Zeile verwendet werden. Beispiel:
/*comment text*/
Es gibt auch eine Art Kommentar „vom Anfang bis zum Ende der Zeile“, ähnlich dem Java „//“. Nur in SQL müssen Sie zwei Minuszeichen und ein Leerzeichen schreiben . Allgemeine Meinung zu einem solchen Kommentar:
-- comment text
Beispiel:
SELECT * FROM employee -- WHERE YEAR(join_date) = 2015
Im obigen Beispiel haben wir die Abfragebedingung auskommentiert, sodass MySQL nur die Abfrage ausführt:
SELECT * FROM employee
2.4 SQL-Aussprache
Wenn Sie mit ausländischen Kunden kommunizieren oder ein Online-Interview für ein amerikanisches Unternehmen bestehen, werden Sie möglicherweise nach Ihren Erfahrungen mit der Fortsetzungssprache gefragt . Sie werden ehrlich sagen, dass Sie nicht mit ihm zusammengearbeitet haben und das Vorstellungsgespräch sofort durchgefallen sind.
Und die Sache ist, dass die SQL-Sprache ursprünglich SEQUEL hieß, was wie eine Fortsetzung (ˈsēkwəl) ausgesprochen wird, sodass man in den USA und anderen englischsprachigen Quellen sehr oft nicht „escuel“, sondern „sequel“ hört. SQL wird geschrieben und die Fortsetzung wird gelesen. Hier ist so ein historisches Paradoxon.