ZFSL/MS/SQL/wikea
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>SQL</language>
== '''Datenbank für die Auftragsverwaltung der wikea GmbH''' ==
<canvas>'dies ist ein canvas'</canvas>
Das Unternehmen WIKEA GmbH ist ein mittelständisches Industrieunternehmen, das auf die Produktion von Designer-Tischen ausgerichtet ist. Weiter vertreibt das Unternehmen hochwertige Möbel von führenden Lieferanten der Möbelbranche. In der folgenden Tabelle sind wichtige Unternehmensdaten zusammengefasst:
[[Bild:Wikea-unternehmen.gif]]
Zur Verwaltung der Aufträge liegt eine Datenbank mit der folgenden Tabellenstruktur vor:
[[Bild:Wikea-tabellenstruktur.gif]]
<code id="53a42d4f27f50" hidden>
CREATE TABLE artikel (
ArtikelID int NOT NULL,
Artikel varchar(50) NOT NULL,
VKPreis double NOT NULL,
PRIMARY KEY (ArtikelID)
) ;
INSERT INTO artikel (ArtikelID, Artikel, VKPreis) VALUES
(101002, 'Quadratischer Tisch', 75),
(101005, 'Rechteckiger Tisch', 899),
(101007, 'Couchtisch Umbria', 129),
(202019, 'Schreibtisch mit Schubladen', 681),
(202029, 'Sofa Palermo, grün', 1458),
(204123, 'Sessel Wien', 420),
(204127, 'Stuhl Sizilien', 100),
(204333, 'Arzneischrank', 98),
(204455, 'Kommode', 520);
CREATE TABLE auftrag (
AuftragsID int NOT NULL,
Auftragsdatum date NOT NULL,
KundenID integer NOT NULL,
PRIMARY KEY (AuftragsID),
) ;
INSERT INTO auftrag (AuftragID, Auftragsdatum, KundenID) VALUES
(1, '2010-10-12', 1),
(2, '2010-10-15', 14),
(3, '2010-10-15', 30),
(4, '2010-10-18', 58),
(5, '2010-10-18', 39),
(6, '2010-10-18', 1),
(7, '2010-10-19', 30),
(8, '2010-10-19', 46),
(9, '2010-10-19', 24),
(10, '2010-10-19', 30),
(11, '2011-02-03', 55),
(99, '2011-02-03', 30);
CREATE TABLE auftragsposition (
AuftragsID int NOT NULL,
ArtikelID int NOT NULL,
Anzahl int NOT NULL,
PRIMARY KEY (AuftragID,ArtikelID)
) ;
INSERT INTO auftragsposition (AuftragID, ArtikelID, Anzahl) VALUES
(1, 101005, 1),
(1, 202029, 30),
(2, 101007, 2),
(3, 101005, 1),
(3, 101007, 20),
(3, 202019, 1),
(4, 202029, 1),
(4, 204123, 5),
(5, 204123, 40),
(5, 204455, 120),
(6, 204127, 1),
(7, 101005, 4),
(8, 202019, 10),
(8, 204127, 75),
(9, 204123, 1),
(9, 204455, 100),
(10, 101007, 45),
(11, 202029, 55),
(99, 101005, 2),
(99, 101007, 2333);
CREATE TABLE kunde (
KundenID int NOT NULL,
Nachname varchar(30) NOT NULL,
PLZ varchar(5) NOT NULL,
PRIMARY KEY (KundenID)
) ;
INSERT INTO kunde (KundenID, Nachname, PLZ) VALUES
(1, 'Möbelhaus Nord', '10125'),
(6, 'Meyer', '20115'),
(7, 'Schmid', '12345'),
(8, 'Schmidt', '14000'),
(9, 'Schmitt', '13000'),
(10, 'Schmied', '20115'),
(11, 'Müller', '80215'),
(12, 'Miller', '80000'),
(14, 'Hinz Möbelhaus', '12000'),
(15, 'Kunz', '12345'),
(16, 'Schlummer', '15010'),
(17, 'Grummel', '16010'),
(19, 'Gruber', '20500'),
(20, 'Schlotterbeck', '20134'),
(21, 'Schröder', '80000'),
(22, 'Schumann', '80100'),
(23, 'Meier', '80200'),
(24, 'Hoffmanns Möbelhaus', '20000'),
(25, 'Bäcker', '12345'),
(26, 'Becker', '20123'),
(28, 'Scharping', '80500'),
(29, 'Pohlke', '20500'),
(30, 'Müller-Lüdenscheid', '12345'),
(32, 'Lehmann', '80099'),
(33, 'Grabowski', '20010'),
(35, 'Landmann', '80000'),
(36, 'Konopke', '20000'),
(37, 'Wagner', '80999'),
(38, 'Mahler', '20500'),
(39, 'Schulte', '20200'),
(40, 'Obermeier', '12345'),
(42, 'Minsky', '10500'),
(43, 'Pawlow', '12000'),
(44, 'Murnau', '20123'),
(45, 'Brandt', '12345'),
(46, 'Hotel zur Eiche', '45250'),
(48, 'Minimarkt', '44787'),
(49, 'Domowina', '44787'),
(50, 'Handwerkerland', '47055'),
(51, 'Restaurant Oase', '45233'),
(52, 'Domspitzengalerie', '51200'),
(53, 'Oskars Hotel', '60123'),
(54, 'Möbel Hellstern', '88353'),
(55, 'Lösken Massivmöbel', '45234'),
(56, 'Rosis Möbelstube', '41088'),
(57, 'Möbelstube GmbH', '40120'),
(58, 'Seidenweber & Co KG', '56206'),
(59, 'Kasimir', '12157'),
(60, 'Möbelhaus Meyer & Partner', '80123');
CREATE TABLE ort (
PLZ varchar(5)NOT NULL,
Ort varchar(50) NOT NULL,
PRIMARY KEY (PLZ)
) ;
INSERT INTO ort (PLZ, Ort) VALUES
('10125', 'Berlin'),
('10500', 'Berlin'),
('12000', 'Berlin'),
('12157', 'Berlin'),
('12345', 'Berlin'),
('13000', 'Berlin'),
('14000', 'Berlin'),
('15010', 'Berlin'),
('16010', 'Berlin'),
('19339', 'Plattenberg'),
('20000', 'Hamburg'),
('20010', 'Hamburg'),
('20115', 'Hamburg'),
('20123', 'Hamburg'),
('20134', 'Hamburg'),
('20200', 'Hamburg'),
('20500', 'Hamburg'),
('40120', 'Düsseldorf'),
('41088', 'Mülheim'),
('44787', 'Bochum'),
('45233', 'Duisburg'),
('45234', 'Duisburg'),
('45250', 'Duisburg'),
('45721', 'Halern'),
('47055', 'Duisburg'),
('49179', 'Ostercappeln'),
('50668', 'Köln'),
('50733', 'Köln'),
('50735', 'Köln'),
('50999', 'Köln'),
('51103', 'Köln'),
('51143', 'Köln'),
('51200', 'Köln'),
('51373', 'Leverkusen'),
('51379', 'Leverkusen'),
('51465', 'Bergisch Gladbach'),
('51503', 'Rösrath'),
('52373', 'Leverkusen'),
('53332', 'Bornheim'),
('56206', 'Krefeld'),
('59302', 'Oelde'),
('60123', 'Frankfurt'),
('80000', 'München'),
('80099', 'München'),
('80100', 'München'),
('80123', 'München'),
('80200', 'Berlin'),
('80215', 'München'),
('80500', 'München'),
('80797', 'München'),
('80999', 'München'),
('86489', 'Deisenhausen'),
('88353', 'Kiülegg'),
('88376', 'Königseggwald'),
('95100', 'Selb'),
('96247', 'Michelau');
</code>
'''12 Auswahlabfragen'''
'''12.1 Auswahlabfragen vom Typ Projektion'''
- Es wird eine Liste mit allen Daten aus der Kundentabelle benötigt.
<code id="53a44a295b908" hidden>SELECT * FROM Kunde;</code>
<run id="53a42df84d55d" ></run>
- Es wird eine Liste aller Kunden benötigt, die die Kundennummer und den Nachnamen enthält.
<code id="53a44a295b9c5" hidden>SELECT KundenID, Nachname
FROM Kunde;
</code>
<run id="53a42df84d658" ></run>
- Es wird eine Liste aller Kunden benötigt, die die Kundennummer, den Nachnamen und den Vornamen enthält.
<code id="53a44a295ba6b" hidden>SELECT KundenID, Nachname
FROM Kunde;
</code>
<run id="53a42c0a695d6"></run>
'''12.2 Auswahlabfragen vom Typ Selektion'''
- Es wird der Artikels 101002 gesucht.
<code id="53a44a295bb10" hidden>SELECT *
FROM Artikel
WHERE ArtikelID = 101002;
</code>
<run id="53a42c0a6967b"></run>
- Es werden alle Artikel mit einem VkPreis ab 500 Euro gesucht.
<code id="53a44a295bbb7" hidden>SELECT * form
FROM Artikel
WHERE VKPreis >= 500;
</code>
<run id="53a42c0a69732"></run>
- Es werden alle Aufträge der letzten 3 Tage gesucht
<code id="53a44a295bc5e" hidden>SELECT * FROM AUFTRAG
WHERE TIMESTAMPDIFF(SQL_TSI_Day,Auftragsdatum, CURDATE()) >=3;
</code>
<run id="53a42c0a697ed"></run>
'''12.3 Auswahlabfragen mit Sortierung'''
- Es wird eine Liste gewünscht, in welcher die Kundennummer und der Nachname des Kunden aufsteigend sortiert angezeigt werden
<code id="53a44a295bd13" hidden>SELECT KundenID, Nachname
FROM Kunde
ORDER BY Nachname;
</code>
<run id="53a430aa6cb0a"></run>
- Es wird eine Liste mit den Aufträgen benötigt, die absteigend nach den Auftragsnummern sortiert ist.
<code id="53a44a295be53" hidden>SELECT AuftragID, KundenID, Auftragsdatum
FROM AUFTRAG
ORDER BY AuftragsID DESC;
</code>
<run id="53a430aa6cbca"></run>
'''12.4 Auswahlabfragen mit Bedingungen'''
- Es wird eine Übersicht über diejenigen Mitarbeiter gewünscht, die vor 1960 geboren sind.
<run id="53a430aa6cc73"></run>
- Es werden alle Kunden gesucht, die aus dem Postleitzahlbereich 4 kommen.
<code id="53a44a295bf1f" hidden>SELECT * FROM Kunde
WHERE PLZ LIKE '4%';
</code>
<run id="53a430aa6cd29"></run>
- Es werden alle Kunden gesucht, deren Nachnamen mit „Schmi“ beginnen.SELECT KundenID, Nachname
FROM Kunde
WHERE Nachname LIKE 'Schmi%';
<run id="53a430aa6ce42"></run>
'''12.5 Abfragen mit Bereichsbeschränkungen (BETWEEN)'''
- Es werden alle Mitarbeiter gesucht, die zwischen 1970 und 1990 geboren sind.
<run id="53a4324fa91bc"></run>
- Es werden alle Mitarbeiter gesucht, die zwischen 1980 und 1990 (einschließlich) geboren wurden.
<run id="53a4324fa9301"></run>
- Es werden alle Mitarbeiter mit den Anfangsbuchstaben ‚'A' bis 'E' und 'K' bis 'M' gesucht.
<run id="53a4324fa9430"></run>
'''12.6 Abfragen mit Einschränkungen auf Listenwerte (IN)'''
- Im Lager werden alle Artikel gesucht, die eine Länge von 60, 80 bzw. 100 cm haben.
<run id="53a4324fa952c"></run>
'''12.7 Abfragen mit zusammengesetzten Bedingungen (AND, OR)'''
- Es wird ein Kunde gesucht. Eine Telefonnotiz wurde irrtümlich zerrissen. Auf dem Papier sind vom Kunden noch der Anfangsbuchstabe 'M' sowie ein Teil des Ansprechpartners „don“ zu erkennen.
<run id="53a4324fa9629"></run>
- Es werden alle Mitarbeiterinnen, die nicht aus dem Postleitzahlbereich „8“ sind, gesucht.
<run id="53a4324fa97dc"></run>
- Es werden alle Kunden aus den Postleitzahlbereichen „2“ und „5“ gesucht.
<code id="53a44f2c733a2" hidden>Select *
FROM Kunde
WHERE PLZ LIKE '2%' OR PLZ LIKE '5%';
</code>
<run id="53a4324fa992c"></run>
'''12.8 Abfragen mit verneinten Bedingungen'''
- Es werden alle Mitarbeiter gesucht, die nicht aus dem PLZ-Bezirk 8000 (München) kommen.
<code id="53a44f2c73491" hidden>SELECT * FROM Kunde
WHERE NOT PLZ= '8000';
</code>
<run id="53a4324fa9a3f"></run>
- Es werden alle Kunden gesucht, die keine Ansprechpartner haben.
<run id="53a4324fa9b46"></run>
'''13 Abfragen über mehrere Tabellen (Join-Abfragen)'''
'''13.1 Inner-Join-Abfragen'''
- Es wird eine Liste aller Kunden benötigt. In dieser Liste soll zur besseren Übersicht neben der PLZ auch der Ort angeführt werden.
<code id="53a44f2c7356b">SELECT Kunde.KundenID, Kunde.Nachname, Kunde.PLZ, Ort.Ort As Ort FROM Kunde
INNER JOIN Ort
ON Kunde.PLZ = Ort.PLZ; </code>
<run id="53a4324fa9c4c"></run>
- Es wird eine Liste mit allen Aufträgen der Kunden benötigt.
<code id="53a44f2c7362a" hidden>SELECT Kunde.KundenID, Kunde.Nachname, Auftrag.AuftragID, Auftrag.Auftragsdatum
FROM Kunde
INNER JOIN Auftrag
ON Kunde.KundenID = Auftrag.KundenID;
</code>
<run id="53a4324fa9d49"></run>
- Es wird eine Liste aller Aufträge mit den jeweiligen Auftragspositionen benötigt.
<code id="53a44f2c73709">
SELECT Kunde.KundenID, Kunde.Nachname, Auftrag.AuftragsID, Auftrag.Auftragsdatum FROM Kunde
INNER JOIN Auftrag
ON Kunde.KundenID = Auftrag.KundenID;</code>
<run id="53a4324fa9e58"></run>
'''13.2 Outer-Join-Abfragen'''
- Es wird eine Liste aller Kundenaufträge benötigt. Dabei sollen auch die Kunden angezeigt werden, für die keine Aufträge vorliegen haben.
<run id="53a4324fa9f9d"></run>
- Es wird eine Liste mit den Artikeln der Artikelgruppen gewünscht. Dabei sollen auch die Artikelgruppen angezeigt werden, denen keine Artikel zugewiesen sind.
<run id="53a4324faa0ee"></run>
''' 14 Abfragen mit Berechnungen'''
- Es wird eine Liste mit allen Aufträgen und Auftragspositionen gewünscht. Hierbei soll ne-ben der Anzahl und dem Verkaufspreis auch der Gesamtpreis ausgewiesen werden.
<run id="53a4324faa1fc"></run>
- Es wird eine Mitarbeiterliste benötigt, die in einer zusätzlichen Spalte das Alter der Mitarbeiter anzeigt.
<run id="53a4324faa336"></run>
'''15 Abfragen mit Gruppierungen'''
- Es wird eine Liste mit der Anzahl der Artikel je Artikelgruppe gewünscht.
<run id="53a4324faa46f"></run>
- Es wird eine Liste benötigt, die anzeigt, wie viele Kunden aus den einzelnen Postleitzahl-Gebieten stammen. Die Gebiete werden anhand der ersten zwei Stellen der Postleitzahl gruppiert.
<run id="53a4324faa58d"></run>
- Es wird eine Liste mit den Gesamtumsätzen der einzelnen Aufträge gewünscht.
<run id="53a4324faa6b1"></run>
- Es wird eine Liste mit den Umsätzen der einzelnen Kunden benötigt.
<run id="53a4324faa8a2"></run>
'''15.1 Die COUNT()-Funktion'''
- Es wird die Anzahl der in der Datenbank verwalteten Kunden benötigt.
<run id="53a4324faaa3a"></run>
- In der Tabelle Auftragsposition wird die Anzahl der Aufträge gesucht.
<run id="53a4324faac1e"></run>
- Es wird eine Liste mit den PLZ gesucht, aus denen die Kunden kommen
<run id="53a4324faad36"></run>
'''15.2 Die HAVING-Klausel'''
- Es wird eine Liste gesucht mit der Anzahl der männlichen und weiblichen Kunden aus München (PLZ 80000).
<run id="53a4324faae6b"></run>
- Es wird eine Liste gesucht mit den PLZ der Orte, in denen mehr als zwei Kunden aus München (PLZ 80000) wohnen.
<run id="53a4324fab104"></run>
- Es sollen alle Artikelgruppen angezeigt werden, die mehr als zwei Artikel haben.
<run id="53a4324fab5e5"></run>
- Es wird eine Liste gesucht mit der Anzahl der männlichen und weiblichen Kunden aus München (PLZ 80000).
<run id="53a4324fab728"></run>
- Es wird eine Liste gesucht mit den PLZ der Orte, in denen mehr als zwei Kunden aus München (PLZ 80000) wohnen.
<run id="53a4324fab84b"></run>
- Es sollen alle Artikelgruppen angezeigt werden, die mehr als zwei Artikel haben.
<run id="53a4324fab9a9"></run>
- Die Kundennummer sollen so umgestellt werden, dass unterschiedliche Nummernbereiche für Privatkunden und Geschäftskunden gebildet werden. Die vorhandenen Nummern der Geschäftskunden sollen dazu um 1000 erhöht werden.
<run id="53a4324fabacf"></run>
- Alle Kunden aus dem Postleitzahlbereich 5 sollen aus dem Bestand gelöscht werden.
<run id="53a4324fabbe7"></run>
<run id="53a41cd743eae" ></run>