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 14:50] 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 |
 | Interstellar | 2014 | 8.6 | | Interstellar | 2014 | 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: 
 + 
 +  * **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//) 
 +\\
  
-<code sql> +<WRAP center box round 80%><code sql> 
--- Alle Drama-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.  +Im //WHERE//-Statement können verschiedene Operatoren eingesetzt werden, um die Auswahl von Datensätzen einzuschränken.  
  
-  * Arithmetische Operatoren: <code><, >, =, <=, >=, !=</code  +==== Vergleichsoperatoren ==== 
-  * Logische Operatoren: <code>AND, OR, NOT</code>   +<WRAP center box 80%><code>= , < , > , <= , >= , <></code></WRAP> 
-  * Spezifische Operatoren<code>INNOT IN, LIKE</code>  +→ werden vor allem bei Zahlen verwendet.   
 +Beispielnur Filme anzeigendie **vor 1970** erschienen sind.  
  
-**Beispiele:**   +<WRAP center box round 80%><code sql>
- +
-<code sql> +
--- Alle Filme von 1990 bis 1999+
 SELECT Series_Title, Released_Year SELECT Series_Title, Released_Year
 FROM imdb_top_1000 FROM imdb_top_1000
-WHERE Released_Year BETWEEN 1990 AND 1999+WHERE Released_Year < 1970
-</code>+</code></WRAP>
  
-<code sql+ 
--- Filme von Nolan oder Coppola+==== Logische Verknüpfungen ==== 
 + 
 +<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 IN ('Christopher Nolan''Francis Ford Coppola')+WHERE Director 'Christopher Nolan' OR Director = 'Francis Ford Coppola'; 
-</code>+</code></WRAP>
  
-<code sql> +Mit //AND// kann man Bedingungen kombinieren, z. B.:   
--- Alle Filme, deren Titel mit 'The' beginnt +<WRAP center box round 80%><code sql> 
-SELECT Series_Title, Released_Year+-- Alle Sci-Fi-Filme von Christopher Nolan 
 +SELECT Series_Title, Director, Genre
 FROM imdb_top_1000 FROM imdb_top_1000
-WHERE Series_Title LIKE 'The%'; +WHERE Director = 'Christopher Nolan' AND Genre = 'Drama'; 
-</code>+</code></WRAP>
  
-----+==== IN-Operator ==== 
 +<WRAP center box round 80%><code>IN, NOT IN</code></WRAP>   
 +→ vereinfacht Abfragen mit vielen Bedingungen.  
  
-===== SQL-Funktionen ===== +<WRAP center box round 80%><code sql> 
-SQL stellt hilfreiche Funktionen zur Verfügung:  +-- Filme von Nolan oder Coppola 
 +SELECT Series_Title, Director 
 +FROM imdb_top_1000 
 +WHERE Director IN ('Christopher Nolan', 'Francis Ford Coppola'); 
 +</code></WRAP>
  
-  * Anzahl Datensätze zählen:   +Das Gegenteil mit //NOT IN//:   
-    <code sql>SELECT COUNT(*) FROM imdb_top_1000;</code>+<WRAP center box round 80%><code sql> 
 +-- Alle Filme, die NICHT von Nolan oder Coppola sind 
 +SELECT Series_Title, Director 
 +FROM imdb_top_1000 
 +WHERE Director NOT IN ('Christopher Nolan', 'Francis Ford Coppola'); 
 +</code></WRAP>
  
-  * Durchschnittliche Bewertung:   
-    <code sql>SELECT AVG(IMDB_Rating) FROM imdb_top_1000;</code> 
- 
-  * Höchste Bewertung:   
-    <code sql>SELECT MAX(IMDB_Rating) FROM imdb_top_1000;</code> 
- 
-  * Gruppierung nach Regisseur:   
-    <code sql> 
-    SELECT Director, AVG(IMDB_Rating) AS avg_rating 
-    FROM imdb_top_1000 
-    GROUP BY Director 
-    ORDER BY avg_rating DESC; 
-    </code> 
- 
----- 
  
 ===== Zusammenfassung ===== ===== Zusammenfassung =====
Zeile 143: Zeile 156:
   * <code sql>WHERE</code> – filtert die Zeilen     * <code sql>WHERE</code> – filtert die Zeilen  
   * <code sql>ORDER BY</code> – sortiert die Ergebnisse     * <code sql>ORDER BY</code> – sortiert die Ergebnisse  
-  * <code sql>GROUP BY</code> – fasst Daten zusammen   
  
 Mit diesen Befehlen sind die wichtigsten Grundlagen für Abfragen in relationalen Datenbanken gelegt.   Mit diesen Befehlen sind die wichtigsten Grundlagen für Abfragen in relationalen Datenbanken gelegt.  
  
-----+
  
  • modul/m290_guko/learningunits/lu02/theorie/b_sql_select.1756039856.txt.gz
  • Zuletzt geändert: 2025/08/24 14:50
  • von gkoch