Projekt:2023/InstaHub

Aus Informatik-Box
Zur Navigation springen Zur Suche springen

Seite zum Projekt InstaHub des Informatik GK im Schuljahr 2023/24.

Projekt InstaHub

Icon Heft.png
Arbeitsauftrag

Erstelle Dir einen Zugang zu InstaHub. Das Video zeigt dir, wie du vorgehen musst: https://youtu.be/6DnmVjtF3UU


Icon Info.png
Notiere Dir die Aufgaben und Lösungen in geeigneter Form, damit Du sie später wieder abrufen kannst. Leg Dir beispielsweise ein Textdokument an, in dem Du deine Fortschritte dokumentierst.

Grundlagen von Datenabfragen

Icon Heft.png
Arbeitsauftrag

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.

  1. Alle Nutzenden.
  2. Alle männlichen / alle weiblichen Nutzenden.
  3. Alle Nutzenden, die sich nach dem 23.09.2017 registriert haben.
  4. Alle Nutzenden aus München.
  5. Alle Nutzenden, sortiert nach Geburtstag.
  6. Nutzernamen und Passwort aller Nutzenden.
  7. Nutzernamen und Passwort aller Nutzenden, die kleiner als 1,60 Meter sind.
  8. Alle Männer, die größer als 1,80 Meter sind, sortiert nach Datum der Registrierung.
  9. Alle Frauen, deren Nutzername die Ziffern 45 enthält.


Icon Heft.png
Arbeitsauftrag

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.

  1. Alle Photos.
  2. Alle Photos des Nutzenden mit der ID 42.
  3. Alle Photos, sortiert nach Erstellungsdatum.
  4. Die ID des Nutzenden und die URL aller Photos.
  5. Alle Photos, deren Beschreibung die Zeichenkette #sonne enthält.

Denk dir weitere Abfragen aus, mit der du die Syntax des SELECT-Befehls ausprobieren kannst.


Icon Heft.png
Arbeitsauftrag

Bearbeite den Lernpfad SQL: Daten abfragen.


Abfragen einschränken und sortieren

Icon Heft.png
Arbeitsauftrag

SELECT Abfragen lassen sich mit den Schlüsselwörtern LIMIT, OFFSET, ORDER BY und DISTINCT weiter präzisieren.

  1. Führe die Abfragen aus und analysiere die Funktion und Syntax der LIMIT und OFFSET Schlüsselwörter.
    1. SELECT * FROM users LIMIT 5
    2. SELECT * FROM users LIMIT 10
    3. SELECT * FROM users LIMIT 5 OFFSET 5
  2. Führe die Abfragen aus und analysiere die Funktion und Syntax des ORDER BY Schlüsselwortes.
    1. SELECT id,username,centimeters FROM users
    2. SELECT id,username,centimeters FROM users ORDER BY id
    3. SELECT id,username,centimeters FROM users ORDER BY username
    4. SELECT id,username,centimeters FROM users ORDER BY centimeters
    5. SELECT id,username,centimeters FROM users ORDER BY centimeters ASC
    6. SELECT id,username,centimeters FROM users ORDER BY centimeters DESC
  3. Führe die Abfragen aus und analysiere die Funktion und Syntax des DISTINCT Schlüsselwortes.
    1. SELECT city FROM users
    2. SELECT DISTINCT city FROM users
  4. Kombiniere nun die neuen Schlüsselwörter miteinander und entwickele Abfragen zu folgenden Datensätzen:
    1. Die fünf größten männlichen Nutzenden.
    2. Die acht kleinsten weiblichen Nutzenden, beginnend ab der Drittkleinsten.
    3. 15 unterschiedliche aufsteigend sortierte Namen.
    4. Das zuletzt gepostete Photo.
    5. Das vorletzte Photo.


Bedingungen

Icon Heft.png
Arbeitsauftrag

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:

  1. Alle Kommentare, die zwischen 2018-09-21 07:57:19 und 2018-09-21 09:57:19 erstellt wurden.
  2. Zehn Photos, deren Beschreibung #sonne, #strand oder #meer enthalten.
  3. Alle Photos, deren URL animals enthält.
  4. Alle Photos, deren URL nicht animals enthält.
  5. Alle Nutzer, die aus Frankfurt oder Berlin kommen und zwischen 150 und 168 Zentimeter groß sind.
  6. Alle Nutzer, die keine Größe eingetragen haben.


Icon Heft.png
Arbeitsauftrag

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")


Datensätze zählen

Icon Heft.png
Arbeitsauftrag

Wenn nur die Anzahl der Datensätze abgefragt werden soll, die in einer Tabelle vorhanden sind, dann kann das Schlüsselwort COUNT verwendet werden:

SELECT COUNT(*) FROM users

Ermittle die Anzahl der Datensätze für folgende Abfragen:

  1. Anzahl aller Photos in InstaHub.
  2. Anzahl aller Kommentare.
  3. Anzahl der Kommentare zum Photo mit der ID 701.
  4. Anzahl der Nutzer aus "Bielefeld".
  5. Anzahl der Nutzer aus "Berlin".


Funktionen

Icon Heft.png
Arbeitsauftrag

SQL bietet auch Möglichkeiten, die abgefragten Datensätze durch die Anwendung von Rechenoperationen und Funktionen zu transformieren.

Um etwa 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.

  1. SELECT COUNT(*) FROM comments
  2. SELECT MIN(centimeters), MAX(centimeters),AVG(centimeters),ROUND(AVG(centimeters),2),ROUND(AVG(centimeters)),SUM(centimeters) FROM users
  3. SELECT centimeters+100,4+3,centimeters*2,id%2 FROM users
  4. SELECT UPPER(username),CONCAT(city,", ",country) FROM users
  5. SELECT CONCAT(name," aus ", city, " (",UPPER(LEFT(country,3)),")") FROM users
  6. SELECT DAY(created_at),MONTH(created_at),YEAR(created_at) FROM users ORDER BY created_at DESC LIMIT 1
  7. SELECT DAY(created_at),MONTH(created_at),YEAR(created_at) FROM users LIMIT 1 ORDER BY created_at DESC


Icon Heft.png
Arbeitsauftrag

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.


SQL-Island

Icon Heft.png
Arbeitsauftrag

SQL-Island ist ein Textadventure, das nur mit SQL gespielt wird. Mit Deinem bisherigen Wissen über SQL kannst Du SQL-Island durchspielen. Falls Du stecken bleibst, findest Du die Lösungen unter https://link.ngb.schule/sql-island-loesung (Passwort Dirty Doerthe).

Icon Info.png

Falls Du SQL-Island schon gespielt hast, kannst Du Dich am SQL Bankraub oder am SQL Kurs der Datamonkeys ausprobieren (wähle bei letzterem direkt die "Junior Analyst path" Lektionen aus).

Datenauswertung

Icon Heft.png
Arbeitsauftrag

Bearbeite den Lernpfad SQL: Datenauswertung.


Tabellen verknüpfen

Icon Heft.png
Arbeitsauftrag
  1. Bearbeite den Lernpfad SQL: Tabellen verknüpfen.
  2. Recherchiere zu den verschiedenen JOIN-Typen und fülle das Arbeitsblatt dazu aus.


Abfragen verknüpfen

Icon Heft.png
Arbeitsauftrag

Bearbeite den Lernpfad SQL: Abfragen verknüpfen.


Die CRUD-Operationen

Icon Heft.png
Arbeitsauftrag

Bearbeite den SQL: INSERT, DELETE und UPDATE.


Sprinteraufgaben

Icon Warning.png
Bearbeite die folgenden Aufgaben nur, wenn Du mit allen Aufgaben oben schon fertig bist (prüfe vorher, ob noch neue Aufgaben ergänzt wurde, die Du noch machen musst).

Fallunterscheidungen

Icon Heft.png
Arbeitsauftrag

Manchmal möchte man verschiedene Fälle an Werten unterschieden und darauf basierend die zurückgelieferten Werte steuern. Dazu gibt es in SQL die CASE Anweisung.

SELECT 
  url,description,
  CASE 
    WHEN 
      description LIKE '%natur%' 
      OR description LIKE '%landschaft%'  
      OR description LIKE '%berg%' 
    THEN "ja" 
    ELSE "nein" 
  END as naturphoto
FROM photos 

Analysiere die Abfrage und ihre Bestandteile, probiere sie aus und beschriebe mit eigenen Worten, wie CASE funktioniert.


Werbung

Icon Heft.png
Arbeitsauftrag

Auf einer Photoseite werden unterhalb der Photos Werbebanner eingeblendet. Welche Werbung gezeigt wird, wird durch eine SQL-Abfrage gesteuert. Die Werbung kann auf einen Nutzer zugeschnitten sein, oder auf das Photo, unter dem sie angezeigt wird.

Überlege dir eine Werbeanzeige, die du in InstaHub schalten möchtest und für welche Zielgruppe diese geeignet ist. Wie könntest du Nutzer der Zielgruppe in InstaHub möglichst genau identifizieren? (Um deine Anzeige später zu testen ist es einfacher, die Werbung anhand des Photos zu schalten.)

Entwirf dann eine SQL-Abfrage, die so genau es geht auf die Zielgruppe zugeschnitten ist. Die Vorgaben für eine Werbe-Abfrage lauten:

Die Abfrage muss true oder false ergeben. Alternativ kann auch eine Liste zurückgegeben werden, in welcher die Benutzer-ID gesucht wird. $user kann als Platzhalter für den angemeldeten Benutzer und $photo für das aktuelle Photo verwendet werden.

Teste die Abfrage in InstaHub.

Hinweis: Mit der CASE-Anweisung von oben kannst du zwischen true und false unterscheiden:

SELECT 
  CASE gender 
    WHEN 'female' 
      THEN true 
    ELSE false 
  END 
FROM users 
WHERE id=$user


Icon Heft.png
Arbeitsauftrag

Erstellte ein neues Werbebanner in InstaHub. Gehe dazu auf den Kiosk oben und Wähle "Kampagnen". Klicke das grüne Plus und gib die relevanten Daten ein. (Name und SQL-Anfrage sind notwendig. Wenn du möchtest, kannst du ein eigenes Bild nutzen. Der Rest kann so bleiben wie er ist.)

InstaHub NewAd.png