Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
modul:m290_guko:learningunits:lu02:theorie:b_sql_select [2025/08/24 15:08] gkochmodul:m290_guko:learningunits:lu02:theorie:b_sql_select [2025/08/31 11:27] (aktuell) gkoch
Zeile 1: Zeile 1:
-====== Daten mit SQL abfragen ======+====== LU02b - Daten mit SQL abfragen ======
  
  
 ===== Daten abfragen ===== ===== Daten abfragen =====
-Das //SELECT//-Statement ist das am häufigsten verwendete SQL-Kommando.   +Das //SELECT//-Statement ist das am häufigsten verwendete SQL-Statement.   
-Mit <code sql>SELECT</code> können Daten in verschiedenen Varianten ausgegeben werden:  +Mit <WRAP center box round 80%><code sql>SELECT</code></WRAP> können Daten in verschiedenen Varianten ausgegeben werden:  
   * alle Spalten     * alle Spalten  
   * bestimmte Spalten     * bestimmte Spalten  
Zeile 10: Zeile 10:
   * sortiert     * sortiert  
  
----- 
  
 ===== Alle Spalten ausgeben ===== ===== Alle Spalten ausgeben =====
 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;
-</code>+</code></WRAP> 
 + 
 +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 31: 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, Released_Year, IMDB_Rating SELECT Series_Title, Released_Year, IMDB_Rating
 FROM imdb_top_1000; FROM imdb_top_1000;
-</code>+</code></WRAP>
  
-Beispielauszug:   
  
 +Beispielauszug:  
 +<WRAP center box round 80%>
 ^ Filmtitel ^ Jahr ^ Bewertung ^ ^ Filmtitel ^ Jahr ^ Bewertung ^
 | The Godfather | 1972 | 9.2 | | The Godfather | 1972 | 9.2 |
Zeile 45: Zeile 47:
 | The Green Mile | 1999 | 8.6 | | The Green Mile | 1999 | 8.6 |
 | Whiplash | 2014 | 8.5 | | Whiplash | 2014 | 8.5 |
 +</WRAP>
  
  
 ===== Ausgabe sortieren ===== ===== Ausgabe sortieren =====
-Mit <code sql>ORDER BY</code> 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, Released_Year, IMDB_Rating SELECT Series_Title, Released_Year, IMDB_Rating
 FROM imdb_top_1000 FROM imdb_top_1000
 ORDER BY Released_Year ASC; ORDER BY Released_Year ASC;
-</code>+</code></WRAP>
  
-Oder umgekehrt, die besten Filme zuerst:  +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, Released_Year, IMDB_Rating SELECT Series_Title, Released_Year, IMDB_Rating
 FROM imdb_top_1000 FROM imdb_top_1000
 ORDER BY IMDB_Rating DESC; ORDER BY IMDB_Rating DESC;
-</code>+</code></WRAP>
  
  
 ===== Abfragen filtern ===== ===== Abfragen filtern =====
-Nicht immer sind alle Daten interessant – mit <code sql>WHERE</code> 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 //FROM//-Anweisungen in jedem //SELECT//-Befehl vorkommen müssen, ist die **WHERE-Anweisung optional**. 
 +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/n** -> z.B. //FROM imbd_top_1000//
 +  * Unter **welcher/n Bedingung/en?** (welche **Feldwerte** -> z.B. //WHERE IMDB_Rating > 8.5//) 
 +\\ 
 + 
 +<WRAP center box round 80%><code sql>
 -- Alle Filme mit Bewertung über 8.5 -- Alle Filme mit Bewertung über 8.5
 SELECT Series_Title, IMDB_Rating SELECT Series_Title, IMDB_Rating
 FROM imdb_top_1000 FROM imdb_top_1000
 WHERE IMDB_Rating > 8.5; WHERE IMDB_Rating > 8.5;
-</code>+</code></WRAP>
  
 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 |
 +</WRAP>
  
 ===== Operatoren ===== ===== Operatoren =====
-Im <code sql>WHERE</code>-Statement können verschiedene Operatoren eingesetzt werden, um die Auswahl von Datensätzen einzuschränken.  +Im //WHERE//-Statement können verschiedene Operatoren eingesetzt werden, um die Auswahl von Datensätzen einzuschränken.  
  
-  * **Vergleichsoperatoren:** <code>= , < , > , <= , >= , <></code>   +==== Vergleichsoperatoren ==== 
-    → werden vor allem bei Zahlen verwendet.   +<WRAP center box 80%><code>= , < , > , <= , >= , <></code></WRAP> 
-    Beispiel: nur Filme anzeigen, die **vor 1970** erschienen sind.  +→ werden vor allem bei Zahlen verwendet.   
 +Beispiel: nur Filme anzeigen, die **vor 1970** erschienen sind.  
  
-<code sql>+<WRAP center box round 80%><code sql>
 SELECT Series_Title, Released_Year SELECT Series_Title, Released_Year
 FROM imdb_top_1000 FROM imdb_top_1000
 WHERE Released_Year < 1970; WHERE Released_Year < 1970;
-</code>+</code></WRAP>
  
---- 
  
-  * **Logische Verknüpfungen:** <code>AND, OR, NOT</code>   +==== Logische Verknüpfungen ====
-    → verbinden mehrere Bedingungen.   +
-    Beispiel: Filme von Regisseuren //Christopher Nolan// **oder** //Francis Ford Coppola//:  +
  
-<code sql>+<WRAP center box round 80%><code>AND, OR, NOT</code></WRAP> 
 +→ verbinden mehrere Bedingungen.   
 +Beispiel: Filme von Regisseuren //Christopher Nolan// **oder** //Francis Ford Coppola//:   
 + 
 +<WRAP center box round 80%><code sql>
 SELECT Series_Title, Director SELECT Series_Title, Director
 FROM imdb_top_1000 FROM imdb_top_1000
 WHERE Director = 'Christopher Nolan' OR Director = 'Francis Ford Coppola'; WHERE Director = 'Christopher Nolan' OR Director = 'Francis Ford Coppola';
-</code>+</code></WRAP>
  
-Mit <code>AND</code> kann man Bedingungen kombinieren, z. B.:   +Mit //AND/kann man Bedingungen kombinieren, z. B.:   
-<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, Director, Genre SELECT Series_Title, Director, Genre
 FROM imdb_top_1000 FROM imdb_top_1000
-WHERE Director = 'Christopher Nolan' AND Genre LIKE '%Sci-Fi%'; +WHERE Director = 'Christopher Nolan' AND Genre 'Drama'; 
-</code> +</code></WRAP>
- +
----+
  
-  * **IN-Operator:** <code>IN, NOT IN</code>   +==== IN-Operator ==== 
-    → vereinfacht Abfragen mit vielen Bedingungen.  +<WRAP center box round 80%><code>IN, NOT IN</code></WRAP>   
 +→ 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, Director SELECT Series_Title, Director
 FROM imdb_top_1000 FROM imdb_top_1000
 WHERE Director IN ('Christopher Nolan', 'Francis Ford Coppola'); WHERE Director IN ('Christopher Nolan', 'Francis Ford Coppola');
-</code>+</code></WRAP>
  
-Das Gegenteil mit <code>NOT IN</code>:   +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, Director SELECT Series_Title, Director
 FROM imdb_top_1000 FROM imdb_top_1000
 WHERE Director NOT IN ('Christopher Nolan', 'Francis Ford Coppola'); WHERE Director NOT IN ('Christopher Nolan', 'Francis Ford Coppola');
-</code>+</code></WRAP>
  
  
  • modul/m290_guko/learningunits/lu02/theorie/b_sql_select.1756040931.txt.gz
  • Zuletzt geändert: 2025/08/24 15:08
  • von gkoch