Also, wir haben schon angefangen, uns mit SELECT zu beschäftigen – das ist der SQL-Befehl, mit dem du Daten aus einer Tabelle oder mehreren Tabellen in der Datenbank rausziehen kannst. Man kann sagen, das ist wie die F5-Taste im Browser, aber für die Datenbank: "Zeig mir, was du hast". Die einfachste Struktur einer Abfrage sieht so aus:
SELECT spalte1, spalte2, … spalteN
FROM tabelle
Wo:
SELECT— das ist das Schlüsselwort, mit dem die Abfrage startet.spalte1, spalte2, ...— das ist die Liste der Spalten, deren Daten du haben willst.FROM tabelle— gibt an, aus welcher Tabelle die Daten geholt werden.
Lass uns das gleich mal mit Beispielen auseinandernehmen!
Grundstruktur vom SELECT-Befehl
Auswahl aller Spalten. Wenn du alle Daten aus einer Tabelle sehen willst, kannst du das Sternchen * benutzen. Zum Beispiel haben wir eine Tabelle students:
| id | name | age | grade |
|---|---|---|---|
| 1 | Alex | 17 | A |
| 2 | Maria | 19 | B |
| 3 | Otto | 21 | C |
Um alle Daten aus dieser Tabelle rauszuholen, benutzt du diese Abfrage:
SELECT * FROM students
Und das Ergebnis ist dann so ein Set von Spalten und Zeilen:
| id | name | age | grade |
|---|---|---|---|
| 1 | Alex | 17 | A |
| 2 | Maria | 19 | B |
| 3 | Otto | 21 | C |
Also – die ganze Tabelle, wie bestellt.
Auswahl bestimmter Spalten
Klar, meistens willst du nur die Spalten holen, die du wirklich brauchst, damit du nicht unnötig viele Daten ziehst. Zum Beispiel willst du die Namen und das Alter der Studenten wissen. Dann schreibst du die Abfrage so:
SELECT name, age FROM students
Das Ergebnis der Abfrage sieht dann so aus:
| name | age |
|---|---|
| Alex | 17 |
| Maria | 19 |
| Otto | 21 |
Merkst du den Unterschied? Wenn du nur die Spalten auswählst, die du brauchst, wird die Abfrage schneller und übersichtlicher.
Reihenfolge der Ausführung einer Abfrage
SQL-Abfragen sind ein bisschen tricky: Auch wenn wir SELECT am Anfang schreiben, wird in Wirklichkeit zuerst der FROM-Teil verarbeitet, und erst danach kommt das Ergebnis zurück. So läuft das unter der Haube ab:
- Die Tabelle im
FROMwird verarbeitet: Der Server sucht die angegebene Tabelle raus. - Bedingungen für Zeilen werden angewendet (falls vorhanden): Es werden nur die Zeilen ausgewählt, die zu den Bedingungen passen.
- Die angegebenen Spalten werden ausgewählt: Aus den übrig gebliebenen Zeilen werden die gewünschten Daten rausgezogen.
Also bei so einem Befehl:
SELECT name FROM students
Findet der Server zuerst die Tabelle students, dann liest er die Spalte name aus und erst dann gibt er das Ergebnis zurück.
Praktische Beispiele
Beispiel Nr. 1: Liste der Studenten.
Stell dir vor, du bist Uni-Admin und brauchst die Namen aller Studenten. Die Abfrage:
SELECT name
FROM students;
Ergebnis:
| name |
|---|
| Alex |
| Maria |
| Otto |
Beispiel Nr. 2: Alter und id hinzufügen.
Jetzt brauchst du id, Namen und Alter. Einfach noch ein paar Spalten dazu packen:
SELECT name, age, id
FROM students;
Ergebnis:
| name | age | id |
|---|---|---|
| Alex | 17 | 1 |
| Maria | 19 | 2 |
| Otto | 21 | 3 |
Beispiel Nr. 3: Ausdrücke hinzufügen.
Angenommen, du willst wissen, wie viele Jahre deinen Studenten noch bis zur Volljährigkeit fehlen.
Dann musst du statt age einfach 21-age schreiben. Wir nehmen hier mal an, dass die Volljährigkeit bei 21 ist:
SELECT name, 21-age
FROM students;
Und das ist das Ergebnis:
| name | 21-age |
|---|---|
| Alex | 4 |
| Maria | 2 |
| Otto | 0 |
Mehr zu Ausdrücken gibt's in den nächsten Vorlesungen. Jetzt schauen wir uns mal die Fehler an, die bestimmt schon einigen von euch passiert sind.
Typische Fehler bei SELECT
Tippfehler bei Tabellen- und Spaltennamen.
Einer der häufigsten Fehler ist, wenn der Name der Tabelle oder Spalte falsch geschrieben ist.
Wenn es in der Datenbank keine Tabelle studentsz gibt, bekommst du einen Fehler:
SELECT name
FROM studentsz; -- Fehler: Tabelle gibt's nicht!
Oder wenn die Spalte name heißt, du aber student_name schreibst, wieder Fehler:
SELECT student_name -- Fehler: Spalte gibt's nicht!
FROM students;
Die Lösung ist einfach: Immer die Namen von Tabellen und Spalten checken.
Syntaxfehler in der Abfrage.
Noch ein häufiger Fehler – du hast das Komma vergessen, wenn du die Spalten auflistest:
SELECT name age id -- Fehler: Komma fehlt!
FROM students;
Aber keine Panik. Die SELECT-Abfrage holt nur Daten. Fehler in so einer Abfrage können deine Datenbank nicht kaputt machen. Aber wenn wir zu Abfragen kommen, die Daten ändern – dann werden Fehler richtig teuer.
Verwendung von * statt bestimmter Spalten.
Wenn du * benutzt, holst du ALLE Daten, auch die, die du gar nicht brauchst. Das macht alles langsamer und kann bei großen Tabellen echt ein Problem sein. Wähle immer nur die Spalten aus, die du wirklich brauchst.
GO TO FULL VERSION