Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
modul:m290_guko:learningunits:lu02:theorie:b_sql_select [2025/08/24 20:55] – gkoch | modul:m290_guko:learningunits:lu02:theorie:b_sql_select [2025/08/31 11:27] (aktuell) – gkoch | ||
---|---|---|---|
Zeile 4: | Zeile 4: | ||
===== Daten abfragen ===== | ===== Daten abfragen ===== | ||
Das // | Das // | ||
- | Mit <code sql> | + | Mit <WRAP center box round 80%><code sql> |
* alle Spalten | * alle Spalten | ||
* bestimmte Spalten | * bestimmte Spalten | ||
Zeile 14: | Zeile 14: | ||
Die einfachste Abfrageform ist: | Die einfachste Abfrageform ist: | ||
- | <code sql> | + | <WRAP center box round 80%><code sql> |
SELECT * FROM imdb_top_1000; | SELECT * FROM imdb_top_1000; | ||
- | </ | + | </ |
+ | |||
+ | Die **FROM-Anweisung** sagt in welcher Tabelle gesucht werden soll. | ||
Dies gibt **alle Spalten** und **alle Zeilen** der Tabelle zurück. | Dies gibt **alle Spalten** und **alle Zeilen** der Tabelle zurück. | ||
Zeile 30: | Zeile 32: | ||
===== Bestimmte Spalten ausgeben ===== | ===== Bestimmte Spalten ausgeben ===== | ||
- | Wenn nur bestimmte Daten benötigt werden, empfiehlt es sich, die Spalten **explizit** anzugeben: | + | Wenn nur bestimmte Daten benötigt werden, empfiehlt es sich, die Spalten **explizit** anzugeben. Die Spalten werden mit **Kommas (,)** getrennt: |
- | <code sql> | + | <WRAP center box round 80%><code sql> |
SELECT Series_Title, | SELECT Series_Title, | ||
FROM imdb_top_1000; | FROM imdb_top_1000; | ||
- | </ | + | </code></ |
- | Beispielauszug: | ||
+ | Beispielauszug: | ||
+ | <WRAP center box round 80%> | ||
^ Filmtitel ^ Jahr ^ Bewertung ^ | ^ Filmtitel ^ Jahr ^ Bewertung ^ | ||
| The Godfather | 1972 | 9.2 | | | The Godfather | 1972 | 9.2 | | ||
Zeile 44: | Zeile 47: | ||
| The Green Mile | 1999 | 8.6 | | | The Green Mile | 1999 | 8.6 | | ||
| Whiplash | 2014 | 8.5 | | | Whiplash | 2014 | 8.5 | | ||
+ | </ | ||
Zeile 49: | Zeile 53: | ||
Mit //ORDER BY// können Ergebnisse sortiert werden. | Mit //ORDER BY// können Ergebnisse sortiert werden. | ||
- | <code sql> | + | <WRAP center box round 80%><code sql> |
-- Die Filme nach Erscheinungsjahr sortieren | -- Die Filme nach Erscheinungsjahr sortieren | ||
SELECT Series_Title, | SELECT Series_Title, | ||
FROM imdb_top_1000 | FROM imdb_top_1000 | ||
ORDER BY Released_Year ASC; | ORDER BY Released_Year ASC; | ||
- | </ | + | </code></ |
- | Oder umgekehrt, | + | Mit //ASC// (engl. ascending = Aufsteigend) oder //DESC// (engl. descending = Absteigend) kann die Sortierung bestimmt werden. |
- | <code sql> | + | Die besten Filme zuerst: |
+ | |||
+ | <WRAP center box round 80%><code sql> | ||
SELECT Series_Title, | SELECT Series_Title, | ||
FROM imdb_top_1000 | FROM imdb_top_1000 | ||
ORDER BY IMDB_Rating DESC; | ORDER BY IMDB_Rating DESC; | ||
- | </ | + | </code></ |
===== Abfragen filtern ===== | ===== Abfragen filtern ===== | ||
- | Nicht immer sind alle Daten interessant – mit //WHERE// können Bedingungen definiert werden. | + | Nicht immer sind alle Daten interessant – **mit //WHERE// können Bedingungen definiert** werden. |
+ | Während die bisher behandelten //SELECT//- und // | ||
+ | Wegen seiner wichtigen Bedeutung zur Einschränkung (Restriktion) einer Tabelle auf bestimmte Zeilen kommt die WHERE-Anweisung in der Praxis trotzdem in fast allen SELECT-Befehlen vor. Die Struktur einer Abfrage mit Bedingung lautet in Worten: | ||
- | <code sql> | + | * **Was?** (welche **Spalten** werden ausgewählt -> z.B. //SELECT Series_Title// |
+ | * **Woher?** (aus welcher/n **Tabelle/ | ||
+ | * Unter **welcher/n Bedingung/ | ||
+ | \\ | ||
+ | |||
+ | <WRAP center box round 80%><code sql> | ||
-- Alle Filme mit Bewertung über 8.5 | -- Alle Filme mit Bewertung über 8.5 | ||
SELECT Series_Title, | SELECT Series_Title, | ||
FROM imdb_top_1000 | FROM imdb_top_1000 | ||
WHERE IMDB_Rating > 8.5; | WHERE IMDB_Rating > 8.5; | ||
- | </ | + | </code></ |
Ergebnis (Auszug): | Ergebnis (Auszug): | ||
+ | <WRAP center box round 80%> | ||
^ Filmtitel ^ Bewertung ^ | ^ Filmtitel ^ Bewertung ^ | ||
| The Godfather | 9.2 | | | The Godfather | 9.2 | | ||
| The Green Mile | 8.6 | | | The Green Mile | 8.6 | | ||
| Interstellar | 8.6 | | | Interstellar | 8.6 | | ||
+ | </ | ||
===== Operatoren ===== | ===== Operatoren ===== | ||
Zeile 87: | Zeile 100: | ||
==== Vergleichsoperatoren ==== | ==== Vergleichsoperatoren ==== | ||
- | < | + | <WRAP center box 80%>< |
→ werden vor allem bei Zahlen verwendet. | → werden vor allem bei Zahlen verwendet. | ||
Beispiel: nur Filme anzeigen, die **vor 1970** erschienen sind. | Beispiel: nur Filme anzeigen, die **vor 1970** erschienen sind. | ||
- | <code sql> | + | <WRAP center box round 80%><code sql> |
SELECT Series_Title, | SELECT Series_Title, | ||
FROM imdb_top_1000 | FROM imdb_top_1000 | ||
WHERE Released_Year < 1970; | WHERE Released_Year < 1970; | ||
- | </ | + | </code></ |
==== Logische Verknüpfungen ==== | ==== Logische Verknüpfungen ==== | ||
- | < | + | <WRAP center box round 80%>< |
→ verbinden mehrere Bedingungen. | → verbinden mehrere Bedingungen. | ||
Beispiel: Filme von Regisseuren // | Beispiel: Filme von Regisseuren // | ||
- | <code sql> | + | <WRAP center box round 80%><code sql> |
SELECT Series_Title, | SELECT Series_Title, | ||
FROM imdb_top_1000 | FROM imdb_top_1000 | ||
WHERE Director = ' | WHERE Director = ' | ||
- | </ | + | </code></ |
Mit //AND// kann man Bedingungen kombinieren, | Mit //AND// kann man Bedingungen kombinieren, | ||
- | <code sql> | + | <WRAP center box round 80%><code sql> |
-- Alle Sci-Fi-Filme von Christopher Nolan | -- Alle Sci-Fi-Filme von Christopher Nolan | ||
SELECT Series_Title, | SELECT Series_Title, | ||
FROM imdb_top_1000 | FROM imdb_top_1000 | ||
WHERE Director = ' | WHERE Director = ' | ||
- | </ | + | </code></ |
==== IN-Operator ==== | ==== IN-Operator ==== | ||
- | < | + | <WRAP center box round 80%>< |
→ vereinfacht Abfragen mit vielen Bedingungen. | → vereinfacht Abfragen mit vielen Bedingungen. | ||
- | <code sql> | + | <WRAP center box round 80%><code sql> |
-- Filme von Nolan oder Coppola | -- Filme von Nolan oder Coppola | ||
SELECT Series_Title, | SELECT Series_Title, | ||
FROM imdb_top_1000 | FROM imdb_top_1000 | ||
WHERE Director IN (' | WHERE Director IN (' | ||
- | </ | + | </code></ |
Das Gegenteil mit //NOT IN//: | Das Gegenteil mit //NOT IN//: | ||
- | <code sql> | + | <WRAP center box round 80%><code sql> |
-- Alle Filme, die NICHT von Nolan oder Coppola sind | -- Alle Filme, die NICHT von Nolan oder Coppola sind | ||
SELECT Series_Title, | SELECT Series_Title, | ||
FROM imdb_top_1000 | FROM imdb_top_1000 | ||
WHERE Director NOT IN (' | WHERE Director NOT IN (' | ||
- | </ | + | </code></ |