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/27 17:27] – 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 <WRAP center box 80%>< | + | Mit <WRAP center box round 80%>< |
| * alle Spalten | * alle Spalten | ||
| * bestimmte Spalten | * bestimmte Spalten | ||
| Zeile 14: | Zeile 14: | ||
| Die einfachste Abfrageform ist: | Die einfachste Abfrageform ist: | ||
| - | <WRAP center box 80%>< | + | <WRAP center box round 80%>< |
| 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></ |
| - | |||
| - | Die **FROM-Anweisung** sagt in welcher Tabelle gesucht werden soll. | ||
| Beispielauszug: | Beispielauszug: | ||
| + | <WRAP center box round 80%> | ||
| ^ Filmtitel ^ Jahr ^ Bewertung ^ | ^ Filmtitel ^ Jahr ^ Bewertung ^ | ||
| | The Godfather | 1972 | 9.2 | | | The Godfather | 1972 | 9.2 | | ||
| Zeile 47: | Zeile 47: | ||
| | The Green Mile | 1999 | 8.6 | | | The Green Mile | 1999 | 8.6 | | ||
| | Whiplash | 2014 | 8.5 | | | Whiplash | 2014 | 8.5 | | ||
| + | </ | ||
| Zeile 52: | 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 90: | 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></ |