Ich benutze Cookies und Google Analytics, um Dein Erlebnis zu verbessern. close

Informatik

Aufgaben zu SQL

Aufgabe 1

Beantworte folgende Fragen:

  • Wofür steht SQL?
  • In welche 4 Bereiche lassen sich die Befehle einordnen?
  • Und was ist die "referentielle Integrität"?

Lösung

SQL steht für "structured query language" und wird in:

  • (DQL) zur Abfrage und Aufbereitung der gesuchten Informationen
  • (DML) zur Datenmanipulation und lesendem Zugriff
  • (DDL) zur Definition des Datenbankschemas
  • (DCL) für die Rechteverwaltung und Transaktionskontrolle

Bereich eingeteilt. Die referentielle Integrität beschreibt die Bedingung, dass Informationen miteinander verbunden sind. So muss es für einen Fremdschlüssel den jeweiligen Primärschlüssel geben.

Aufgabe 2

Erstelle die Datenbank "JS-buildings" mit folgenden Tabellen.

  • "Employees": Jeder Angestellte hat eine fortlaufende ID, Vor- und Nachnamen mit jeweils maximal 20 Zeichen, bekommt einen ganzzahligen Lohn, der wenn nicht angegeben 450 beträgt und hat maximal ein optionales Hobby
  • "sold_buildings": Hier sind alle Gebäude verzeichnet, die von den Mitarbeitern gemanagt werden. Jeder Mitarbeiter kümmert sich um ein Gebäude. Die Gebäude haben eine Bezeichnung und verursachen Kosten im 4 stelligen Bereich

Ändere den ganzzahligen Lohn zu einem mit 2 Nachkommastellen im 4 stelligen Bereich und entferne die Spalte Hobby. Die Gebäude erwirtschaften auch Erlöse im 5 stelligen Bereich.

Lösung

CREATE DATABASE `JS-buildings` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE TABLE `employees` (
 id int(11) PRIMARY KEY AUTO_INCREMENT,
 forename varchar(20) NOT NULL,
 sirname varchar(20) NOT NULL,
 salary int(5) NOT NULL DEFAULT 450,
 hobby varchar(50) NULL
);

CREATE TABLE `sold_buildings` (
 id int(11) PRIMARY KEY AUTO_INCREMENT,
 b_name varchar(30) NOT NULL,
 costs decimal(6,2) NOT NULL
);

ALTER TABLE employees
 MODIFY salary decimal(6,2),
 DROP hobby;

ALTER TABLE sold_buildings
 ADD revenues decimal(7,2);

Aufgabe 3

Übertrage die Werte in die Tabellen.

Angestellte

1 Max Peters 450
2 Mila Neumeier 2048
3 Alexa Finke 900,24
4 Julian Schönling 450
5 Fino Neumeier 7030,50
6 Heino Schmidt 1040,20
7 Lisa Neumeier 675
8 Adrian Peters 3090

Gebäude

1 STRG+C-Schule 8250,90 11300
2 Gib-aus-Bank 1760,45 20500
3 Sammelkiosk 3140 13050
4 Luxuswohnung 9990,01 35900
5 STRG+V-Kirche 560 09000
6 Obama-Tower 6500 30001,50
7 Kammer des Fürchtens 2000,60 02500
8 Museum der Toten 900 15670,50
9 Lisa Feller 450 0

Lösung

INSERT INTO employees VALUES
 (1, "Max", "Peters", 450),
 (2, "Mila", "Neumeier", 2048),
 (3, "Alexa", "Finke", 900.24),
 (4, "Julian", "Schönling", 450),
 (5, "Fino", "Neumeier", 7030.5),
 (6, "Heino", "Schmidt", 1040.20),
 (7, "Lisa", "Neumeier", 675),
 (8, "Adrian", "Peters", 3090);

INSERT INTO sold_buildings (b_name, costs, revenues) VALUES
 ("STRG+C-Schule", 8250.9, 11300),
 ("Gib-aus-Bank", 1760.45, 20500),
 ("Sammelkiosk", 3140, 13050),
 ("Luxuswohnung", 9990.1, 35900),
 ("STRG+V-Kirche", 560, 9000),
 ("Obama-Tower", 6500, 39991.5),
 ("Kammer des Fürchtens", 2000.6, 2500),
 ("Museum der Toten", 900, 15670.5),
 ("Lisa Feller", 450, 0);

Aufgabe 4

Ändere die Werte:

  • "" um die Tastenkombinationen
  • Erlöse um 5% verringern
  • lösche Lisa Feller

Lösung

UPDATE sold_buildings
 SET b_name='"STRG+C-Schule"'
 WHERE id=1;
UPDATE sold_buildings
 SET b_name='"STRG+V-Kirche"'
 WHERE id=5;

UPDATE sold_buildings
 SET revenues=revenues*.95;

DELETE FROM sold_buildings
 WHERE b_name="Lisa Feller";

Aufgabe 5

einfache Abfragen

  1. Angestellte (forename, id) aus der Familie Neumeier und Peters
  2. Mitarbeiter, die weniger als 3090 und nicht 675 oder 900,24 verdienen
  3. Alle Familien (Spalte als "Families") die bei JS-buildings angestellt sind
  4. Löhne, die zwischen 450 und 2000 liegen

komplexere Abfragen

  1. Welche Gebäude betreuen Adrian und Julian?
  2. Welches Gebäude erwirtschaftet (auch nach Abzug der Lohnkosten) am meisten und wie viel?
  3. Was verdienen die Angestellten im Durchschnitt

Lösung

SELECT id, forename
 FROM employees
 WHERE sirname IN ('Neumeier', 'Peters'); -- a)

SELECT *
 FROM employees
 WHERE salary < 3090 AND salary NOT IN (675, 900.24); -- b)

SELECT DISTINCT sirname as famalies
 FROM employees; -- c)

SELECT salary
 FROM employees
 WHERE salary BETWEEN 450 AND 2000; -- d)

S

13 SQL Zusammen­fassung SELECT

h

11 html Zusammen­fassung html Grundlagen
mail   Fehler/Feedback senden

Hell

Du bist offline

close