Projekt:2023/InstaHub: Unterschied zwischen den Versionen
Ngb (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Ngb (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 72: | Zeile 72: | ||
## Das vorletzte Photo. | ## Das vorletzte Photo. | ||
{{Aufgabe:End}} | {{Aufgabe:End}} | ||
=== Bedingungen === | === Bedingungen === | ||
Zeile 90: | Zeile 88: | ||
# Alle Nutzer, die keine Größe eingetragen haben. | # Alle Nutzer, die keine Größe eingetragen haben. | ||
{{Aufgabe:End}} | {{Aufgabe:End}} | ||
{{Aufgabe:Start}} | {{Aufgabe:Start}} |
Version vom 12. Januar 2024, 12:57 Uhr
Seite zum Projekt InstaHub des Informatik GK im Schuljahr 2023/24.
Projekt InstaHub
Erstelle Dir einen Zugang zu InstaHub. Das Video zeigt dir, wie du vorgehen musst: https://youtu.be/6DnmVjtF3UU
Grundlagen von Datenabfragen
Benutze in InstaHub die Suchfunktion (Datenbanksymbol -> Suche), um die folgenden Abfragen zu stellen. Setze dabei den Haken bei "Zeige SQL" und vergleiche die SQL-Abfrage mit der Suchmaske und der Ergebnistabelle. Notiere Dir wichtige Befehle.
- Alle Nutzenden.
- Alle männlichen / alle weiblichen Nutzenden.
- Alle Nutzenden, die sich nach dem 23.09.2017 registriert haben.
- Alle Nutzenden aus München.
- Alle Nutzenden, sortiert nach Geburtstag.
- Nutzernamen und Passwort aller Nutzenden.
- Nutzernamen und Passwort aller Nutzenden, die kleiner als 1,60 Meter sind.
- Alle Männer, die größer als 1,80 Meter sind, sortiert nach Datum der Registrierung.
- Alle Frauen, deren Nutzername die Ziffern
45
enthält.
Benutze in InstaHub die SQL Abfragefunktion (Datenbanksymbol -> SQL), um SQL-Abfragen für die folgenden Informationen zu erstellen. Nutze dazu die Befehlsreferenz SQL im Wiki als Hilfe.
- Alle Photos.
- Alle Photos des Nutzenden mit der ID
42
. - Alle Photos, sortiert nach Erstellungsdatum.
- Die ID des Nutzenden und die URL aller Photos.
- Alle Photos, deren Beschreibung die Zeichenkette
#sonne
enthält.
Denk dir weitere Abfragen aus, mit der du die Syntax des SELECT
-Befehls ausprobieren kannst.
Bearbeite den Lernpfad SQL: Daten abfragen.
Abfragen einschränken und sortieren
SELECT
Abfragen lassen sich mit den Schlüsselwörtern LIMIT
, OFFSET
, ORDER BY
und DISTINCT
weiter präzisieren.
- Führe die Abfragen aus und analysiere die Funktion und Syntax der
LIMIT
undOFFSET
Schlüsselwörter.SELECT * FROM users LIMIT 5
SELECT * FROM users LIMIT 10
SELECT * FROM users LIMIT 5 OFFSET 5
- Führe die Abfragen aus und analysiere die Funktion und Syntax des
ORDER BY
Schlüsselwortes.SELECT id,username,centimeters FROM users
SELECT id,username,centimeters FROM users ORDER BY id
SELECT id,username,centimeters FROM users ORDER BY username
SELECT id,username,centimeters FROM users ORDER BY centimeters
SELECT id,username,centimeters FROM users ORDER BY centimeters ASC
SELECT id,username,centimeters FROM users ORDER BY centimeters DESC
- Führe die Abfragen aus und analysiere die Funktion und Syntax des
DISTINCT
Schlüsselwortes.SELECT city FROM users
SELECT DISTINCT city FROM users
- Kombiniere nun die neuen Schlüsselwörter miteinander und entwickele Abfragen zu folgenden Datensätzen:
- Die fünf größten männlichen Nutzenden.
- Die acht kleinsten weiblichen Nutzenden, beginnend ab der Drittkleinsten.
- 15 unterschiedliche aufsteigend sortierte Namen.
- Das zuletzt gepostete Photo.
- Das vorletzte Photo.
Bedingungen
Mittels der WHERE
-Klausel lassen sich Datensätze gezielt auf bestimmte Bedingungen einschränken. Jedes Datenfeld hat einen festgelegten Datentyp (im Wesentlichen Zahl, Text und Datum). Je nach Datentyp lassen sich unterschiedliche Bedingungen nutzen. Bedingungen sind entweder TRUE
oder FALSE
. Bedingungen können mit AND
OR
verknüpft, oder mit NOT
negiert werden.
Lies im Wikibook Einführung in SQL den Abschnitt WHERE-Klausel im Detail. Studiere vor allem die Vergleichsoperatoren und die Schlüsselwörter BETWEEN
, LIKE
und IS NULL
.
Entwirf dann Abfragen für folgende Datensätze:
- Alle Kommentare, die zwischen 2018-09-21 07:57:19 und 2018-09-21 09:57:19 erstellt wurden.
- Zehn Photos, deren Beschreibung
#sonne
,#strand
oder#meer
enthalten. - Alle Photos, deren URL
animals
enthält. - Alle Photos, deren URL nicht
animals
enthält. - Alle Nutzer, die aus Frankfurt oder Berlin kommen und zwischen 150 und 168 Zentimeter groß sind.
- Alle Nutzer, die keine Größe eingetragen haben.
Eine mächtige Bedingung ist das IN
Schlüsselwort. Mit ihm kann ein Wert mit einer ganzen Liste von Werten verglichen werden. Der Operator prüft also, ob ein Wert in einer Liste vorkommt, oder nicht.
Betrachte beispielsweise folgende Abfragen und vergleiche sie miteinander. Was fragen sie ab und wie ist der IN
Befehl aufgebaut?
SELECT * FROM users WHERE city = "Frankfurt" OR city = "Berlin" OR city = "Leipzig" OR city = "München"
SELECT * FROM users WHERE city IN ("Frankfurt","Berlin","Leipzig","München")
SELECT FROM users WHERE city NOT IN ("Frankfurt","Berlin","Leipzig","München")
Funktionen
SQL bietet auch Möglichkeiten, die abgefragten Datensätze durch die Anwendung von Rechenoperationen und Funktionen zu transformieren.
Um zum Beispiel die Größe der Nutzer nicht in Zentimetern, sondern in Millimetern abzufragen, könnte die Abfrage so lauten:
SELECT username,centimeters*10 FROM users
Einen Überblick der wichtigsten Funktionen gibt es in der Befehlsreferenz SQL. Analysiere mit deren Hilfe folgende Abfragen und notiere ihre Bedeutung, ohne sie vorher auszuführen. Prüfe dann deine Vermutung in InstaHub.
SELECT COUNT(*) FROM comments
SELECT MIN(centimeters), MAX(centimeters),AVG(centimeters),ROUND(AVG(centimeters),2),ROUND(AVG(centimeters)),SUM(centimeters) FROM users
SELECT centimeters+100,4+3,centimeters*2,id%2 FROM users
SELECT UPPER(username),CONCAT(city,", ",country) FROM users
SELECT CONCAT(name," aus ", city, " (",UPPER(LEFT(country,3)),")") FROM users
SELECT DAY(created_at),MONTH(created_at),YEAR(created_at) FROM users ORDER BY created_at DESC LIMIT 1
SELECT DAY(created_at),MONTH(created_at),YEAR(created_at) FROM users LIMIT 1 ORDER BY created_at DESC
Mit der Funktion RAND()
können Zufallszahlen generiert werden.
SELECT RAND()
In der Regel wird sie nur selten benötigt, aber für einen Fall ist sie recht nützlich, denn man kann sie als Argument für den ORDER BY
befehl benutzen:
SELECT username FROM users ORDER BY RAND()
Führe die Abfrage mehrmals aus und beobachte die Ergebnisse.