Heute dreht sich alles um die vier Grundbefehle in SQL:
INSERT, SELECT, UPDATE, DELETE
INSERT INTO Customers VALUES
(9999, "Mannis Stübchen", "Manfred Liebherr", "Hinteres Eck 3", "Obersdorf",
"87561", "Germany")
ID: 9999
Name: Mannis Stübchen
Kontakt: Manfred Liebherr
Adresse: Hinteres Eck 3
Stadt: Obersdorf
PLZ: 87561
Land: Germany
Dein Online Shop läuft erfolgreich und du hast drei neue Kunden akquiriert. Trage ihre Daten bitte in deine Datenbank ein:
ID: 10000
Name: Carne de Mamacita
Kontakt: Maria Gonzales
Adresse: Gran Via de les Corts 660
Stadt: Barcelona
PLZ: 08010
Land: Spain
ID: 10001
Name: SKANDINAVIUM
Kontakt: Olaf Andersson
Adresse: Blasieholms 4A
Stadt: Stockholm
PLZ: 11148
Land: Schweden
Insert ohne Spaltenangabe kann Zeit sparen, funktioniert jedoch nur, wenn Daten zu allen Spalten angegeben werden.
Aufgaben
www.appcamps.de
Was passiert, wenn du eine neue Zeile mit der ID "1" einfügen möchtest?
Die folgende Fehlermeldung wird angezeigt:
Warum kann die Zeile nicht eingefügt werden?
www.appcamps.de
Aufgabe
Da du so viele neue Kunden gewonnen hast, brauchst du auch neue MitarbeiterInnen. Trage ihre Daten bitte in deine Datenbank ein:
INSERT INTO Employees
(LastName, FirstName, BirthDate, Photo, Notes)
VALUES ("Klug", "Anna", "1996-08-06", "annaKlug96.pic", "Praktikantin. Studiert Informatik.")
Auto-increment erstellt automatisch einen Wert z.B. für die ID, sobald eine Zeile mit Daten befüllt wird. Dieser Wert entspricht niemals einer bereits existierenden ID und wird automatisch erhöht.
Name: Anna Klug
Geburtstag: 1996-08-06
Bild: annaKlug96.pic
Notizen: Praktikantin. Studiert Informatik.
Name: Tarek Fischer
Geburtstag: 1992-12-30
Bild: tarekFischer92.pic
Notizen: Absolvent. Bachelor. Probezeit 6 Monate.
www.appcamps.de
Aufgabe
Tipp: Du musst dir die passende EmployeeID raussuchen. Anna hat in dem Beispiel die ID 11.
Du hast deine neuen MitarbeiterInnen erfolgreich in die Datenbank eingetragen. Leider ist bei der Datenabfrage ein Fehler unterlaufen und es muss etwas ergänzt werden. Ändere die Daten in deiner Datenbank:
UPDATE Employees
SET Notes = "Praktikantin (3 Monate). Studiert Informatik."
WHERE EmployeeID = 11
Name: Anna Klug
Geburtstag: 1996-08-06
Bild: annaKlug96.pic
Notizen: Praktikantin (3 Monate). Studiert Informatik.
Name: Tarek Fischer
Geburtstag: 1992-11-30
Bild: tarekFischer92.pic
Notizen: Absolvent. Bachelor. Probezeit 6 Monate.
www.appcamps.de
Aufgabe
Es ist ein Jahr vergangen und deine Praktikantin Anna hat ihr Praktikum erfolgreich abgeschlossen. Auch Tarek wechselt zu einem anderen Online-Shop, da er nach Australien auswandert. Passe deine Datenbank entsprechend an:
DELETE FROM Employees WHERE EmployeeID = 11
Name: Anna Klug
Geburtstag: 1996-08-06
Bild: annaKlug96.pic
Notizen: Praktikantin. Studiert Informatik.
Name: Tarek Fischer
Geburtstag: 1992-12-30
Bild: tarekFischer92.pic
Notizen: Absolvent. Bachelor. Probezeit 6 Monate.
Ein Primärschlüssel ist immer eindeutig. Das bedeutet, es gibt immer genau einen Wert für eine Zeile (also für jeden Mitarbeiter, für jeden Kunden etc.). Deswegen werden meistens Zahlen verwendet. Der Primärschlüssel wird häufig mit auto-increment vergeben, um die Dateneingabe zu vereinfachen.
www.appcamps.de
Für deinen Online Shop bekommst du folgende Bestellung, die du in deine Datenbank in die Tabellen Orders und OrderDetails eintragen möchtest:
Hier findest du die Tabellen zu den Bestellungen (Orders) und den Bestelldetails (OrderDetails):
Aufgabe
Auf den nächsten Seiten findest du eine Erläuterung, wie die Bestellung in der Datenbank gespeichert wird.
Beachte! In der Order-Tabelle stehen keine Mitarbeiterdaten (Employee) wie Name oder Geburtsdatum. Du findest dort lediglich die EmployeeID. Über diese ID kommst du aber an die ganzen Mitarbeiterdaten ran. Wie? Indem du in der Employee-Tabelle nach der entsprechenden EmployeeID suchst.
Diese EmployeeID nennt man auch Fremdschlüssel. So findest du die EmployeeID als Primärschlüssel in der Mitarbeitertabelle (Employees) und als Fremdschlüssel in der Tabelle zu den Bestellungen (Orders). Ein Mitarbeiter, z.B. mit der EmployeeID = 1, kann mehrere Bestellungen (Orders) verwalten. Die EmployeeID kann also mehrfach vorkommen. Durch das Verwenden der IDs kannst du also mehrere Bestellungen demselben Mitarbeiter zuweisen, ohne immer die gesamten Mitarbeiterdaten bei jeder Bestellung angeben oder ändern zu müssen. Die Daten können leichter verwaltet und bei Bedarf geändert werden.
www.appcamps.de
Für deinen Online Shop bekommst du folgende Bestellung, die du in deine Datenbank in die Tabellen Orders und OrderDetails eintragen möchtest:
Aufgabe
In welchen Tabellen werden weitere Informationen gespeichert, damit du z.B. den Namen des Kunden oder des Mitarbeiters herausfinden kannst? Nimm dir ein paar Minuten Zeit, um das herauszufinden.
Auf der nächsten Seite findest du mögliche Antworten. Überleg aber zuerst selbst, bevor du weiter klickst.
www.appcamps.de
Aufgaben
Auf der nächsten Seite findest du mögliche Antworten. Überleg aber zuerst selbst, bevor du weiter klickst.
Informationen zu den Bestellungen findest du hier:
Für Bestellungen (Orders) benötigst du Informationen aus folgenden Tabellen:
außerdem musst du eintragen:
Für Bestelldetails (OrderDetails) benötigst du Informationen aus folgenden Tabellen:
außerdem musst du eintragen:
Für Informationen zu Kategorien und Lieferanten bestellter Produkte brauchst du:
Produkte (Products)
Kunden (Customers)
Lieferanten (Suppliers)
Kategorien (Categories)
Mitarbeiter (Employees)
Bestellungen (Orders)
Bestelldetails (OrderDetails)
Spediteure (Shippers)
Bestellungen (Orders)
OrderDate
Quantity
Bestellungen (Orders)
Kunden (Customers)
www.appcamps.de
Produkte (Products)
Kunden (Customers)
Lieferanten (Suppliers)
Kategorien (Categories)
Mitarbeiter (Employees)
Bestellungen (Orders)
Bestelldetails (OrderDetails)
Spediteure (Shippers)
Bestellungen (Orders)
OrderDate
Quantity
Aufgaben
Auf der nächsten Seite geht es weiter mit dem Beispielszenario.
www.appcamps.de
Für deinen Online Shop bekommst du folgende Bestellung, die du in deine Datenbank in die Tabellen Orders und OrderDetails eintragen möchtest:
Aufgabe
Auf der nächsten Seite findest du mögliche Antworten. Überleg aber zuerst selbst, bevor du weiter klickst.
www.appcamps.de
Wir schauen uns nun an, wie du Bestellungen in die Tabellen (Orders und OrderDetails) eintragen kannst.
INSERT INTO Orders
(CustomerID, EmployeeID, OrderDate, ShipperID)
VALUES (2, 1, "2017-06-22", 2)
Der Kunde mit der ID "2" bestellt am 22 Juni 2017. Die Bestellung wird von dem Mitarbeiter mit der ID "1" betreut und der Spediteur hat die ID "2".
Anders ausgedrückt: Ana Trujillo bestellt 34 Mal Gnocchi. Die Bestellung wird am 22. Juni 2017 aufgenommen und von Nancy Davolio bearbeitet. Der involvierte Spediteur ist "United Package".
INSERT INTO OrderDetails
(OrderID, ProductID, Quantity)
VALUES (10444, 56, 34)
Bei der Bestellung mit der ID "10444" wurde 34 Mal das Produkt mit der ID "56" geordert.
Tipp: Um die richtigen Details den richtigen Bestellungen zuzuweisen, musst du die entsprechende OrderID nachschauen.
Aufgabe
Auf den nächsten Folien findest du Übungen. Viel Spaß dabei!
www.appcamps.de
Wir schauen uns zunächst die Tabelle mit den Bestellungen (Orders) und den Bestelldetails (OrderDetails) an.
Aufgaben
INSERT INTO Orders
(OrderID, CustomerID, OrderDate)
VALUES (10446, 4, "2016-08-02")
INSERT INTO OrderDetails
(OrderID, ProductID, Quantity)
VALUES (10446, 33, 20), (10446, 44, 2)
Fügt die Daten (Values) in die Spalten ein, die genannt werden.
Fügt zwei Bestelldetails gleichzeitig in die Datenbank ein.
Null ist ein Wert, der von SQL automatisch in die Datenbank eingetragen wird, wenn keine Angabe erfolgt.
INSERT INTO Orders
VALUES (99999, 12, 3, "2017-06-18", 2)
Fügt die Bestellungen ohne Spaltenangabe direkt ein.
www.appcamps.de
Aufgaben
Mit INSERT hast du erfolgreich Daten zu Bestellungen und den entsprechenden Bestelldetails in die Datenbank eingetragen.
Dabei ist es immer sinnvoll mit SELECT zu überprüfen, ob du die Daten auch richtig eingetragen hast.
Falls du etwas ändern willst, verwendest du UPDATE.
www.appcamps.de
Aufgabe
Auf der nächsten Seite findest du eine mögliche Lösung zu Letzterem. Überleg aber zuerst selbst, bevor du weiter klickst.
Die Überprüfung der Bestellungen und der Bestelldetails gelingt dir z.B. mit folgenden Abfragen:
Bei genauerer Betrachtung der Bestellungen und der Bestelldetails fällt auf, dass bei der Bestellung mit der ID "10445" weder ein Mitarbeiter noch ein Spediteur zugeteilt ist. Außerdem sind bei der Bestellung mit der ID "99999" keine Bestelldetails angegeben, sodass weder klar ist, welche Produkte bestellt wurden, noch in welcher Menge.
SELECT * FROM Orders
WHERE OrderID >= 10444
Gibt alle Spalten mit einer OrderID größer-gleich 10444 aus.
SELECT * FROM OrderDetails
WHERE OrderID >= 10444
Gibt aus der Tabelle OrderDetails alle Spalten mit einer OrderID größer-gleich 10444 aus.
www.appcamps.de
Wir schauen uns zunächst die Tabelle mit den Bestellungen (Orders) und den Produkten (Products) an.
Aufgaben
UPDATE Orders
SET EmployeeID = 8, ShipperID = 3
WHERE OrderID = 10446
UPDATE Products
SET Price = 25
WHERE Price > 25
Ergänzt die angegeben Spalten mit den entsprechenden Daten.
Ändert den Preis für alle Zeilen auf 25, wenn der Preis größer als 25 ist.
www.appcamps.de
Wir schauen uns zunächst die Tabelle mit den Bestellungen (Orders) und den Produkten (Products) an.
Aufgaben
UPDATE Products
SET Price = 25
Ändert den Preis für alle Zeilen auf 25.
UPDATE Products
SET Price = 25
WHERE Price LIKE "1%"
Ändert den Preis für alle Zeilen auf 25, wenn der Preis mit 1 beginnt.
www.appcamps.de
Aufgabe
Nimm dir ein paar Minuten, um die einzelnen Tabellen durchzugehen. Welche Daten können nach einem Jahr gegebenenfalls bereinigt werden?
Folgende Fragen sollen dir dabei helfen:
Auf der nächsten Seite findest du mögliche Antworten. Überleg aber zuerst selbst, bevor du weiter klickst.
Dein Online-Shop bereinigt die Datenbank ein Mal im Jahr...
www.appcamps.de
Betrachten wir die Tabelle Orders genauer:
... offenbar ist in den Daten aus der ursprünglichen Datenbank aktuell das Jahr 1997. Angenommen alle Bestellungen aus dem Vorjahr werden jedes Jahr nach der Inventur und Sicherstellung, dass alle Bestellungen aus dem Vorjahr ohne Verspätung abgearbeitet wurden, im März gelöscht, dann können alle Bestellungen aus dem Jahr 1996 aus der Datenbank entfernt werden.
Aufgabe
Auf der nächsten Seite findest du mögliche Antworten. Überleg aber zuerst selbst, bevor du weiter klickst.
Achtung! Durch das Löschen der Bestellungen werden die entsprechenden Bestelldetails nicht automatisch gelöscht.
www.appcamps.de
Aufgabe
In der Tabelle Orders wurden die Daten chronologisch gespeichert. Entsprechend können alle Daten zu Bestelldetails mit der OrderID < 10400 gelöscht werden.
Betrachten wir außerdem die Tabelle Employees genauer:
Der Mitarbeiter Adam West geht in Rente. Herr West kann also aus der Datenbank entfernt werden.
Achtung! Auch hier werden durch das Löschen des Mitarbeiters nicht automatisch die entsprechenden Bestellungen gelöscht.
www.appcamps.de
Wir schauen uns zunächst die Tabelle mit den Bestellungen (Orders) und den Mitarbeitern (Employees) an.
DELETE FROM Orders
WHERE OrderDate LIKE "1996%"
Löscht alle Bestellungen aus dem Jahr 1996.
DELETE FROM Orders
WHERE EmployeeID IN (2, 4, 10)
Löscht alle Bestellungen, die die Mitarbeiter mit der ID 2, 4 oder 10 bearbeiten.
DELETE FROM Orders
Löscht alle Bestellungen.
Aufgaben
www.appcamps.de
Super! Dann geht es jetzt weiter mit dem Quiz!
www.appcamps.de