Datenbanken

Heute dreht sich alles um die vier Grundbefehle in SQL:

INSERT, SELECT, UPDATE, DELETE

 

Musterlösung

INSERT INTO Customers VALUES (10000, "Carne de Mamacita", "Maria Gonzales", 
"Gran Via de les Corts 660", "Barcelona", "08010", "Spain")

Mit INSERT kannst du Daten in die Tabellen einfügen.

Aufgaben

  • Trage die neuen Kunden in deine Datenbank ein. Orientiere dich dabei an dem Beispiel oben.  
  • Was passiert, wenn du nur Name und Kontakt angibst? Schaue dir dazu die Infobox unten an.
  • Was passiert, wenn du eine neue Zeile mit der ID "1" einfügen möchtest?
INSERT INTO Customers VALUES  (10001, "SKANDINAVIUM", "Olaf Andersson", "Blasieholms 4A", 
"Stockholm", "111 48", " Schweden")
INSERT INTO Customers 
VALUES ("Terima Kasih", "Wayan Master")
INSERT INTO Customers VALUES  (1, 
"Belgien Beer", "Dawid Madson", "Wordaround 4", 
"Brüssel", "333", " Belgien")

Mögliche Lösung:

Aufgabe

  • Trage die beiden Mitarbeiter ein. Orientiere dich dabei an dem Beispiel oben. Was fällt dir im Vergleich zu vorher auf?  
  • Schau dir die Mitarbeiter-Tabelle an: Warum musst du keine ID vergeben und es wird trotzdem eine erstellt? Was passiert, wenn du eine neue Mitarbeiterin einträgst? Lies dir dazu die Info-Box Auto-increment durch. 
INSERT INTO Employees 
(LastName, FirstName, BirthDate, Photo, Notes)
VALUES  ("Fischer", "Tarek", "1992-12-30", "tarekFischer92.pic", 
"Absolvent. Bachelor. Probezeit 6 Monate.")

Mit INSERT kannst du Daten in die Tabellen einfügen.

Name: Tarek Fischer

Geburtstag: 1992-12-30

Bild: tarekFischer92.pic

Notizen: Absolvent. Bachelor. Probezeit 6 Monate.

Mögliche Lösung:

Aufgabe

  • Aktualisiere die Notizen zu Anna und das Geburtsdatum von Tarek (rot markiert). Bei Anna muss ergänzt werden, dass sie ein 3-monatiges Praktikum macht. Außerdem wurde das Geburtsdatum von Tarek falsch eingetragen und muss korrigiert werden. Orientiere dich dabei an dem Beispiel oben. 

      Tipp: Du musst dir die passende EmployeeID raussuchen. Anna hat in dem Beispiel die ID 11.

UPDATE Employees 
SET BirthDate = "1992-11-30"
WHERE EmployeeID = 12

Name: Tarek Fischer

Geburtstag: 1992-11-30

Bild: tarekFischer92.pic

Notizen: Absolvent. Bachelor. Probezeit 6 Monate.

Mit UPDATE kannst du Daten in der Tabellen ändern.

Mögliche Lösung:

Aufgabe

  • Lösche die Mitarbeiter aus deiner Datenbank. Orientiere dich dabei an dem Beispiel oben. 
  • Schau dir die Abfrage an: Wieso kannst du dir sicher sein, über die EmployeeID auf jeden Fall deine Praktikantin Anna Klug zu löschen und nicht versehentlich einen anderen Mitarbeiter? Lies dir dazu die Info-Box Primärschlüssel durch. 
DELETE FROM Employees WHERE EmployeeID = 12 

Name: Tarek Fischer

Geburtstag: 1992-12-30

Bild: tarekFischer92.pic

Notizen: Absolvent. Bachelor. Probezeit 6 Monate.

Mit DELETE kannst du Daten in der Tabellen entfernen.

Mögliche Lösung:

 

  • Manfred Liebherr bestellt 20 Mal Chang-Bier. Die Bestellung wird am 03. August 2017 aufgenommen und von Tarek Fischer bearbeitet. Der involvierte Spediteur ist "United Package".
  • Anders ausgedrückt: Der Kunde mit der ID "9999" bestellt "20 Mal" das Produkt mit der ID "2". Die Bestellung wird am "2017-08-03" aufgenommen und von dem Mitarbeiter mit der ID "12" bearbeitet. Der involvierte Spediteur hat die ID "2".

 

 

Aufgabe

  • Hast du eine Idee, wie deine passenden SQL-Abfragen aussehen könnten?
  • Überlege dir außerdem eine weitere Bestellung und schreibe diese auf. Du kannst dich an der Beispielbestellung orientieren.

Auf der nächsten Seite findest du mögliche Antworten. Überleg aber zuerst selbst, bevor du weiter klickst.

Mögliche Lösung:

Mit INSERT kannst du Daten in die Tabellen einfügen.

INSERT INTO Orders 
(CustomerID, EmployeeID, OrderDate, ShipperID)  
VALUES (9999, 2, "2017-08-03", 2)

Der Kunde mit der ID "9999" bestellt am 3 August 2017. Die Bestellung wird von dem Mitarbeiter mit der ID "12" betreut und der Spediteur hat die ID "2"

Anders ausgedrückt: Der Kunde mit der ID "9999" bestellt "20 Mal" das Produkt mit der ID "2". Die Bestellung wird am "2017-08-03" aufgenommen und von dem Mitarbeiter mit der ID "12" bearbeitet. Der involvierte Spediteur hat die ID "2".

INSERT INTO OrderDetails
(ProductID, Quantity)  
VALUES (2, 20)

Bei der Bestellung wurde 20 Mal das Produkt mit der ID "2" geordert.

Tipp: Um die richtigen Details den richtigen Bestellungen zuzuweisen, musst du die entsprechende OrderID nachschauen.

Aufgabe

  • Gib die hier aufgeführten SQL Befehle selbst ein und schaue dir die Ergebnisse an. 
  • Gib außerdem deine selbst formulierte Bestellung als SQL-Abfrage ein (sofern du es nicht schon gemacht  hast) und schau dir das Ergebnis an.

Auf den nächsten Folien findest du Übungen. Viel Spaß dabei!

Mögliche Lösung:

Aufgabe

  • Ergänze die Bestelldetails (z.B. 12x Chang-Bier (ID 2), ...) zur OrderID "99999" und überlege, welche Spalten du bei der OrderID "10446" ergänzen musst.

Auf der nächsten Seite findest du eine mögliche Lösung zu Letzterem. Überleg aber zuerst selbst, bevor du weiter klickst.

Der Kunde mit der OrderID 99999 bestellt 20 Mal das Produkt mit der ID 2 (Chang), 100 Mal das Produkt mit der ID 10 (Ikura) und 30 Mal das Produkt mit der ID 14 (Tofu)

INSERT INTO OrderDetails
(OrderID, ProductID, Quantity)  
VALUES (99999, 2, 20), 
(99999, 10, 100), 
(99999, 14, 30)

Mit INSERT kannst du Daten in die Tabellen einfügen.

Mögliche Lösung:

Mit UPDATE kannst du Daten in der Tabellen ändern.

 

Aufgaben

  • Gib die hier aufgeführten SQL Befehle selbst ein und schau dir die Ergebnisse an. 
  • Wie viele Preise hast du durch die zweite Abfrage verändert?

 

  • Probiere weitere Abfragen aus. Der SQL Spickzettel hilft dir dabei.  
  • Überprüfe jeweils mit SELECT, ob deine Änderungen wie angedacht funktioniert haben.
UPDATE Products 
SET Price = 25 
WHERE Price > 25

Mögliche Lösung:

Durch die Query wird der Preis von 28 Produkten auf 25 gesetzt

Mit UPDATE kannst du Daten aus der Tabellen ändern.

 

Aufgaben

  • Gib den ersten SQL Befehl selbst ein und schau dir die Ergebnisse an. 
  • Wie viele Preise hast du durch die Abfrage verändert?
  • Ändere auch den Preis für alle Produkte, die aktuell 20,21,22,23 oder 24 kosten, auf 25.
  • Gib den zweiten SQL Befehl ein und prüfe die Ergebnisse.
  • Ändere den Mitarbeiter für alle Bestellungen, wo die Mitarbeiterin Margaret Peacock und der Spediteur United Package ist, auf Andrew Fuller.
  • Probiere weitere Abfragen aus. Der SQL Spickzettel hilft dir dabei.  
  • Überprüfe jeweils mit SELECT, ob deine Änderungen wie angedacht funktioniert haben.
UPDATE Products 
SET Price = 25 
WHERE Price IN (20,21,22,23,24)

Ändert den Preis für alle Zeilen auf 25, wenn der aktuelle Preis 20, 21, 22, 23 oder 24 beträgt

Mögliche Lösung:

Durch die erste Query wird der Preis von 28 Produkten auf 25 gesetzt

UPDATE Orders 
SET EmployeeID = 2 
WHERE EmployeeID = 4  AND ShipperID = 2

Ändert den Mitarbeiter für alle Bestellungen, wo die Mitarbeiterin Margaret Peacock und der Spediteur United Package ist auf Andrew Fuller.

Mit DELETE kannst du Daten aus der Tabellen entfernen.


DELETE FROM Customers WHERE PostalCode = "05021"
#oder
DELETE FROM Customers WHERE 
City = "Méxicco D.F." AND PostalCode = "05021"

Lösche alle Kunden (aus Mexiko) mit der Postleitzahl 05021.

Aufgaben

  • Gib die hier aufgeführten SQL Befehle selbst ein und schau dir die Ergebnisse an. 
    • Wie viele Bestellungen aus dem Jahr 1996 hast du gelöscht?
    • Wie viele Bestellungen hast du durch das Ausführen der zweiten Abfrage gelöscht?
  • Lösche alle Kunden aus Mexiko mit der Postleitzahl 05021.
  • Lösche die Mitarbeiter mit den IDs 2,4 und 10.

  • Probiere weitere Abfragen aus. Der SQL Spickzettel hilft dir dabei.  
  • Überprüfe jeweils mit SELECT, ob deine Änderungen wie angedacht funktioniert haben.

Es wurden 152 Bestellungen aus dem Jahr 1996 gelöscht

Es wurden 13 Bestellungen mit den entsprechenden Mitarbeitern gelöscht

DELETE FROM Employees 
WHERE EmployeeID IN (2,4,10)

Löscht die Mitarbeiter mit den IDs 2,4 und 10.

Mögliche Lösung:

Datenbanken Musterlösung Sitzung 2

By appcamps

Datenbanken Musterlösung Sitzung 2

  • 84
Loading comments...

More from appcamps