Dies ist eine alte Version des Dokuments!
Einführung in SQL
Stuctured Quere Language (SQL) ist eine standardisierte Abfrage-Sprache um Daten in Datenbanken zu speichern, zu manipulieren und herauszufiltern (zu erhalten).
Im folgenden lernen Sie ein paar Grundzüge dieser Abfragesprache kennen, die sie für verschiedenste Datenbanksysteme (wie MySQL, SQL Server, MS Access, Oracle, Sybase, Informix, Postgres, u.v.m.) verwenden können.
Schauen wir SQL-Beispiele in Instahub an.
Beispielaufgabe: Suchen Sie alle Usernamen der Benutzerinnen aus Ihrer Datenbank. Hier kann über die Suche auch die SQL-Abfrage angezeigt werden.
Die SQL-Abfrage ist somit:
SELECT username FROM users WHERE gender = "female"
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.
Ziel ist es, in einem zweiten Schritt nicht mehr über die Suche, sondern direkt eine SQL-Abfrage formulieren zu können.
- Alle Benutzer:innen, deren Usernamen mit dem Buchstaben „S“ beginnt.
- Alle Usernamen der männlichen Benutzer.
- Die Benutzer:innen, welche das Wort „Johan“ im Benutzernamen haben.
- Die Benutzer, die noch nicht 18 Jahre alt sind.
Auftrag 2
Was genau wird durch die folgenden Abfragen genau als Ergebnis von Instahub herausgefiltert? Beschreiben Sie in eigenen Worten und besprechen Sie zu zweit.
SELECT name, birthday FROM users WHERE username LIKE "%S%" AND birthday < "2010-09-13 00:00:03"
SELECT name, birthday FROM users WHERE centimeters > 160 AND (username NOT LIKE "%K%" AND centimeters < 180)
SELECT id, name, password FROM users WHERE gender = "male" OR created_at < "2017-09-15 00:00:03"
Auftrag 3
Was genau passiert bei diesen SQL-Befehl? Besprechen Sie zu zweit, testen Sie und generieren Sie einen weiteren Befehl dieser Art.
INSERT INTO users (id, username, email, password, name, gender, birthday, city, country, centimeters)
VALUES ("300", "jeanpaul66", "jean.paul@instahub.test", "123456", "papaux", "male", "2066-01-31 00:00:00", "Fribourg", "Schweiz", "197")
und
INSERT INTO users (id, username, email, password, name, gender, birthday, city, country, centimeters)
VALUES ("301", "mathilde", "mathilde@instahub.test", "123456", "mathilde", "female", "2067-01-31 00:00:00", "Fribourg", "Schweiz", "160")
Auftrag 4
- Was genau wird hier im folgenden Beispiel mit dem Befehl 'COUNT' gezählt? Testen und erklären Sie.
SELECT COUNT(photo_id) FROM comments
- Was genau wird hier im folgenden Beispiel mit dem Befehl 'COUNT (DISTINCT…)' gezählt? Testen und erklären Sie. Was ist der Unterschied zur ersten Aufgaben?
SELECT COUNT(DISTINCT photo_id) FROM comments
- Wie viele verschiedene Fotos wurden geliked? Bestimmen Sie dies durch eine Abfrage wie bei der obigen Aufgabe.
Auftrag 5
Testen Sie die Befehle MIN(), MAX(), AVG(), SUM() gleich wie den Count-Befehl oben. Was ist der Zweck dieser Abfragebefehle? Wie werden Sie genau genutzt?
Beispiel
SELECT MIN(birthday) FROM users
Einige wichtige Befehle von SQL
| SQL-Klausel | Zweck | Erklärung |
|---|---|---|
| SELECT | Gibt die Felder mit den gewünschten Daten an | Hiermit lässt sich entscheiden, welche Felder (Spalten) wir anzeigen wollen. Möchte man alle Spalten einer Tabelle auswählen, dann braucht man nicht zwingend alle Felder der Tabelle nach der SELECT-Klausel manuell anzugeben. Man kann hierfür auch das Asterikszeichen * verwenden. SELECT * bedeutet also, dass alle Spalten einer Tabelle angewählt werden. |
| 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? |
| 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 „Anführungsstrichen“ aufgelistet werden. |
| COUNT | … | … |
| MIN | … | … |
| MAX | … | … |
| AVG | … | … |
| SUM | … | … |
Operatoren
| Zeichen bzw. Bezeichnung | Bedeutung |
|---|---|
| = | Gleich wie |
| > | Grösser als |
| >= | Grösser oder gleich gross wie |
| < | Kleiner als |
| <= | Kleiner oder gleich gross wie |
| <> | Ungleich wie (unterschiedlich) |
| BETWEEN a AND b | Zwischen a und b |
| logischer Operator AND | Beide genannten Bedingungen müssen erfüllt sein. |
| logischer Operator OR | mindestens eine der beiden genannten Bedingungen muss erfüllt sein |
