Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| gf2:datenbanken:sql [2024/05/18 15:38] – marroc | gf2:datenbanken:sql [2024/11/05 12:13] (aktuell) – marroc | ||
|---|---|---|---|
| Zeile 6: | Zeile 6: | ||
| Beispielaufgabe: | Beispielaufgabe: | ||
| - | Exakt formuliert bedeutet dies, es muss eine Abfrage formuliert werden, welche die Tabelle users nach allen Nutzerninnen | + | Exakt formuliert bedeutet dies, es muss eine Abfrage formuliert werden, welche die Tabelle users nach allen Nutzerinnen |
| 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** \\ | ||
| 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 | ||
| FROM users | FROM users | ||
| WHERE username LIKE " | WHERE username LIKE " | ||
| - | |||
| <code SQL> | <code SQL> | ||
| SELECT name, birthday | SELECT name, birthday | ||
| FROM users | FROM users | ||
| WHERE centimeters > 160 AND (username NOT LIKE " | WHERE centimeters > 160 AND (username NOT LIKE " | ||
| - | |||
| <code SQL> | <code SQL> | ||
| SELECT id, name, password | SELECT id, name, password | ||
| Zeile 45: | Zeile 45: | ||
| **Auftrag 3** \\ | **Auftrag 3** \\ | ||
| Was genau passiert durch diesen SQL-Befehl? Besprechen Sie dies zu zweit, testen Sie und generieren Sie einen weiteren Befehl dieser Art.\\ | Was genau passiert durch diesen SQL-Befehl? Besprechen Sie dies zu zweit, testen Sie und generieren Sie einen weiteren Befehl dieser Art.\\ | ||
| - | *Erste Abfrage* | + | //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 (" | ||
| - | *Zweite Abfrage* | + | //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 |
| - | <code SQL> | + | - Was genau wird hier im folgenden Beispiel mit dem Befehl |
| - | FROM comments </ | + | |
| - | - Was genau wird hier im folgenden Beispiel mit dem Befehl 'COUNT (DISTINCT...)' | + | |
| - | Was ist der Unterschied zur ersten Aufgabe? \\ <code SQL> | + | |
| - | | + | |
| - Wie viele verschiedene Fotos wurden " | - Wie viele verschiedene Fotos wurden " | ||
| ** 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 </ | ||
| - | </ | ||
| - | === Einige wichtige Befehle von SQL === | + | ** 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 > " | ||
| + | </ | ||
| + | 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 '' | ||
| + | |||
| + | ** 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 94: | 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: |