Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| gf2:datenbanken:sql [2023/06/12 09:31] – marroc | gf2:datenbanken:sql [2024/11/05 12:13] (aktuell) – marroc | ||
|---|---|---|---|
| Zeile 6: | Zeile 6: | ||
| Beispielaufgabe: | Beispielaufgabe: | ||
| - | Hier kann über die Suche auch die SQL-Abfrage angezeigt werden. | + | Exakt formuliert bedeutet dies, es muss eine Abfrage formuliert werden, welche die Tabelle users nach allen Nutzerinnen durchsucht und den Benutzernamen dieser Nutzerinnen zurückgibt. \\ Hier kann über die Suche auch die SQL-Abfrage angezeigt werden. |
| Die SQL-Abfrage ist somit: | Die SQL-Abfrage ist somit: | ||
| Zeile 15: | Zeile 15: | ||
| </ | </ | ||
| {{ : | {{ : | ||
| + | <WRAP nicebox grey> | ||
| + | Die SQL Befehle sind alle am Seitenende beschrieben! | ||
| + | </ | ||
| <WRAP nicebox green> | <WRAP nicebox green> | ||
| **Auftrag 1** \\ | **Auftrag 1** \\ | ||
| - | Bearbeiten Sie die folgenden kurzen Aufträge mithilfe Ihres Instahubs. Dabei nutzen Sie wieder die Datenbank-Suche oben rechts in Instahub. Notieren Sie anschliessend die SQL-Abfragen. | + | Bearbeiten Sie die folgenden kurzen Aufträge mithilfe Ihres Instahubs. Dabei nutzen Sie wieder die Datenbank-Suche |
| Ziel ist es, in einem zweiten Schritt nicht mehr über die Suche, sondern direkt eine SQL-Abfrage formulieren zu können. | Ziel ist es, in einem zweiten Schritt nicht mehr über die Suche, sondern direkt eine SQL-Abfrage formulieren zu können. | ||
| - Alle Benutzer: | - Alle Benutzer: | ||
| Zeile 26: | Zeile 28: | ||
| **Auftrag 2** \\ | **Auftrag 2** \\ | ||
| - | Was genau wird durch die folgenden Abfragen genau als Ergebnis von Instahub herausgefiltert? | + | Was genau wird durch die folgenden Abfragen genau als Ergebnis von Instahub herausgefiltert? |
| <code SQL> | <code SQL> | ||
| SELECT name, birthday | SELECT name, birthday | ||
| Zeile 42: | Zeile 44: | ||
| **Auftrag 3** \\ | **Auftrag 3** \\ | ||
| - | Was genau passiert | + | Was genau passiert |
| - | < | + | //Erste Abfrage// |
| + | < | ||
| INSERT INTO users (id, username, email, password, name, gender, birthday, city, country, centimeters) | INSERT INTO users (id, username, email, password, name, gender, birthday, city, country, centimeters) | ||
| VALUES (" | VALUES (" | ||
| - | und | + | //Zweite Abfrage// |
| - | < | + | < |
| INSERT INTO users (id, username, email, password, name, gender, birthday, city, country, centimeters) | INSERT INTO users (id, username, email, password, name, gender, birthday, city, country, centimeters) | ||
| VALUES (" | VALUES (" | ||
| </ | </ | ||
| **Auftrag 4**\\ | **Auftrag 4**\\ | ||
| - | - Was genau wird hier im folgenden Beispiel mit dem Befehl ' | + | - Was genau wird hier im folgenden Beispiel mit dem Befehl |
| - | FROM comments </ | + | - Was genau wird hier im folgenden Beispiel mit dem Befehl |
| - | - Was genau wird hier im folgenden Beispiel mit dem Befehl 'COUNT (DISTINCT...)' | + | - Wie viele verschiedene Fotos wurden |
| - | | + | |
| - | - Wie viele verschiedene Fotos wurden geliked? Bestimmen Sie dies durch eine Abfrage wie bei der obigen Aufgabe. | + | |
| ** Auftrag 5 ** \\ | ** Auftrag 5 ** \\ | ||
| - | Testen Sie die Befehle MIN(), MAX(), AVG(), SUM() gleich wie den Count-Befehl oben. Was ist der Zweck dieser Abfragebefehle? | + | Testen Sie die Befehle |
| - | Beispiel | + | |
| <code SQL> | <code SQL> | ||
| FROM users </ | FROM users </ | ||
| - | </WRAP> | + | ** Auftrag 6 ** \\ |
| + | a) Was genau passiert bei dieser Abfrage? | ||
| + | <code SQL> | ||
| + | SELECT users.username, | ||
| + | FROM users JOIN photos on photos.user_id=users.id | ||
| + | WHERE users.gender = " | ||
| + | </ | ||
| + | b) Wie kann diese Abfrage erklärt werden? | ||
| + | <code SQL> | ||
| + | SELECT users.username | ||
| + | FROM users Join likes on users.id = likes.user_id | ||
| + | WHERE likes.updated_at > " | ||
| + | </ | ||
| + | <code SQL> | ||
| + | SELECT users.username, | ||
| + | FROM users | ||
| + | Join likes on users.id = likes.user_id | ||
| + | Join tags on tags.photo_id = likes.photo_id | ||
| + | WHERE likes.updated_at > " | ||
| + | </code> | ||
| + | c) Formulieren Sie mindestens zwei weitere Abfragen, die ein '' | ||
| + | \\ | ||
| + | d) Wie können Sie einem interessierten Passanten auf der Strasse erklären, was die Stärke von Relationalen Datenbanken ist und welche wichtige Rolle dabei ein '' | ||
| - | === Einige wichtige Befehle von SQL === | + | ** Auftrag 7 ** \\ |
| + | a) Führen Sie den Befehl aus(Kopieren des SQL - Befehls in die Eingabezeile der Datenbankabfrage.) | ||
| + | |||
| + | <code SQL> | ||
| + | SELECT * | ||
| + | FROM analytics | ||
| + | </ | ||
| + | |||
| + | b) Rufen Sie mehrere Bilder bzw. Fotos in Instahub in der Einzelansicht auf (mindestens 6 oder 7 Fotos). Wiederholen Sie danach die Aufgabe a). Was hat sich verändert? | ||
| + | |||
| + | c) Was ist der Sinn und Zweck der Tabelle // | ||
| + | '' | ||
| + | |||
| + | d) Diskutieren Sie zu zweit die folgenden drei Aussagen: | ||
| + | * Aussage 1: " | ||
| + | * Aussage 2: "Sogar der Browser, mit welchem auf die Fotos zugegriffen wurde, kann ausgelesen werden." | ||
| + | * Aussage 3: "Als Nutzer muss man sich jedoch keine Sorgen um den Datenschutz machen." | ||
| + | |||
| + | Nützlicher Link: [[https:// | ||
| + | |||
| + | </ | ||
| + | ===== Einige wichtige Befehle von SQL ===== | ||
| ^SQL-Klausel ^Zweck ^Erklärung ^ | ^SQL-Klausel ^Zweck ^Erklärung ^ | ||
| - | |SELECT |Gibt die Felder mit den gewünschten Daten an |Hiermit | + | |SELECT |Gibt die Felder mit den gewünschten Daten an. |Damit lässt sich entscheiden, |
| + | '' | ||
| |FROM |Enthält die Tabellen mit den Feldern, die in der SELECT-Klausel angegeben sind |In welchen Tabellen liegen die Felder (Spalten), die wir erhalten wollen? | | |FROM |Enthält die Tabellen mit den Feldern, die in der SELECT-Klausel angegeben sind |In welchen Tabellen liegen die Felder (Spalten), die wir erhalten wollen? | | ||
| + | |JOIN|Verbindet zwei verschiedene Tabellen via einen gemeinsam existenten Schlüssel.| Wie kann eine Abfrage über mehr als eine Tabelle gemacht werden? --> Durch das Verbinden von Tabellen anhand eines gemeinsam existierenden Feldes. | | ||
| |WHERE |Gibt Feldkriterien an, die jeder Datensatz erfüllen muss, um in die Ergebnisse einbezogen zu werden|Hier lassen sich Datensätze herausfiltern (z.B. wenn wir nur gewisse Daten einer Tabelle anzeigen wollen). | | |WHERE |Gibt Feldkriterien an, die jeder Datensatz erfüllen muss, um in die Ergebnisse einbezogen zu werden|Hier lassen sich Datensätze herausfiltern (z.B. wenn wir nur gewisse Daten einer Tabelle anzeigen wollen). | | ||
| |INSERT INTO ...VALUES ...|So kann die Datenbank durch einen weiteren Datensatz mithilfe von SQL erweitert werden. | INSERT INTO: Durch diesen Befehl kann ein weiterer Datensatz in die Tabelle eingefügt werden. Es müssen die vordefinierten Fehler durch die genaue Bezeichnung genannt und nach VALUES die Werte in " | |INSERT INTO ...VALUES ...|So kann die Datenbank durch einen weiteren Datensatz mithilfe von SQL erweitert werden. | INSERT INTO: Durch diesen Befehl kann ein weiterer Datensatz in die Tabelle eingefügt werden. Es müssen die vordefinierten Fehler durch die genaue Bezeichnung genannt und nach VALUES die Werte in " | ||
| - | |COUNT | ...|...| | + | ^Funktionen^ Die untenstehenden Funktionen berechnen aus mehreren Datensätzen einen bestimmten Wert, und geben diesen dann zurück.^^ |
| - | |MIN | ...|...| | + | |COUNT | Zählt die Anzahl der gefundenen Datensätze|| |
| - | |MAX | ...|...| | + | |MIN | Gibt den Minimalwert der gefilterten Datensätze zurück|| |
| - | |AVG | ...|...| | + | |MAX | Gibt den Maximalwerte der gefilterten Datensätze zurück|| |
| - | |SUM | ...|...| | + | |AVG | Berechnet den Durchschnittswert der Datensätze|| |
| + | |SUM | Berechnet die Summe der Datensätze|| | ||
| + | |DISTINCT| Gibt nur alle verschiedenen Datensätze zurück, gleiche werden nicht doppelt aufgelistet, | ||
| + | |GROUP BY | Resultate der obigen Funktionen gruppieren | '' | ||
| === Operatoren === | === Operatoren === | ||
| ^Zeichen bzw. Bezeichnung ^Bedeutung ^ | ^Zeichen bzw. Bezeichnung ^Bedeutung ^ | ||
| Zeile 90: | Zeile 138: | ||
| |logischer Operator OR | mindestens eine der beiden genannten Bedingungen muss erfüllt sein| | |logischer Operator OR | mindestens eine der beiden genannten Bedingungen muss erfüllt sein| | ||
| - | + | [[gf2: | |
| - | [[gf2: | + | [[gf2: |