Heute dreht sich alles um die vier Grundbefehle in SQL:
INSERT, SELECT, UPDATE, DELETE
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. Klicke diesen Link und ergänze die Datenbank, die du von deiner Lehrkraft bekommen hast.
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
INSERT INTO Customers VALUES
(9999, 'Mannis Stübchen', 'Manfred Liebherr', 'Hinteres Eck 3', 'Obersdorf',
'87561', 'Germany' )
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:
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: 08/06/1996
Bild: annaKlug96.pic
Notizen: Praktikantin. Studiert Informatik.
Name: Tarek Fischer
Geburtstag: 12/30/1992
Bild: tarekFischer92.pic
Notizen: Absolvent. Bachelor. Probezeit 6 Monate.
www.appcamps.de
INSERT INTO Employees
(lastname, firstname, birthdate, photo, notes)
VALUES ('Klug', 'Anna', '08/06/1996', 'annaKlug96.pic', 'Praktikantin. Studiert Informatik')
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:
Name: Anna Klug
Geburtstag: 08/06/1996
Bild: annaKlug96.pic
Notizen: Praktikantin (3 Monate). Studiert Informatik.
Name: Tarek Fischer
Geburtstag: 11/30/1992
Bild: tarekFischer92.pic
Notizen: Absolvent. Bachelor. Probezeit 6 Monate.
www.appcamps.de
UPDATE Employees
SET Notes = 'Praktikantin (3 Monate). Studiert Informatik' WHERE employeeid = 11
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:
Name: Anna Klug
Geburtstag: 08/06/1996
Bild: annaKlug96.pic
Notizen: Praktikantin. Studiert Informatik.
Name: Tarek Fischer
Geburtstag: 11/30/1992
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
DELETE FROM Employees WHERE employeeid = 11
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.
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".
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
INSERT INTO Orders
(customerID, employeeID, orderdate, shipperID)
VALUES (2 , 1, '06/22/2017', 2)
INSERT INTO OrderDetails
(OrderID, ProductID, Quantity)
VALUES (10444 , 56, 34)
Wir schauen uns zunächst die Tabelle mit den Bestellungen (Orders) und den Bestelldetails (OrderDetails) an.
Aufgaben
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.
Fügt die Bestellungen ohne Spaltenangabe direkt ein.
www.appcamps.de
INSERT INTO Orders
(OrderID, CustomerID, OrderDate)
VALUES (10446 , 4, '08/02/2016')
INSERT INTO OrderDetails
(OrderID, ProductID, Quantity)
VALUES (10446 , 33, 20 ) , (10446 , 44 , 2 )
INSERT INTO Orders
VALUES (99999 , 12, 3, '06/18/2017', 2 )
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
SELECT * FROM Orders
SELECT * FROM OrderDetails
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 "10446" 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.
Gibt alle Spalten mit einer OrderID größer-gleich 10444 aus.
Gibt aus der Tabelle OrderDetails alle Spalten mit einer OrderID größer-gleich 10444 aus.
www.appcamps.de
SELECT * FROM Orders WHERE OrderID >= 10444
SELECT * FROM OrderDetails WHERE OrderID >= 10444
Wir schauen uns zunächst die Tabelle mit den Bestellungen (Orders) und den Produkten (Products) an.
Aufgaben
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
UPDATE Orders
SET employeeid = 8, shipperid = 3
WHERE orderid = 10446
UPDATE Products
SET price = 25
WHERE price > 25
Wir schauen uns zunächst die Tabelle mit den Bestellungen (Orders) und den Produkten (Products) an.
Aufgaben
Ändert den Preis für alle Zeilen auf 25.
Ändert den Preis für alle Zeilen auf 25, wenn der Preis mit 1 beginnt.
www.appcamps.de
UPDATE Products
SET price =25
WHERE price LIKE '1%'
UPDATE Products
SET price =25
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
SELECT * FROM Orders
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.
Löscht alle Bestellungen aus dem Jahr 1996.
Löscht alle Bestellungen, die die Mitarbeiter mit der ID 2, 4 oder 10 bearbeiten.
Löscht alle Bestellungen.
Aufgaben
www.appcamps.de
DELETE FROM Orders WHERE orderdate LIKE '%1996'
DELETE FROM Orders WHERE employeeid IN (2, 4, 10)
DELETE FROM Orders
Super! Dann geht es jetzt weiter mit dem Quiz!
www.appcamps.de