Sie sind auf Seite 1von 29

PRIVATE UNIVERSITÄT VON TACNA

FAKULTÄT FÜR INGENIEURWISSENSCHAFTEN

Fachschule für Systemtechnik

PRAXIS 7 SQL-ABFRAGEN

Kurs: Datenbank-Design

Lehrerin: Ing. Oliver Santana Carbajal

Student:

Puma Villa, Brayan (2015052787)

Tacna - Peru

2021-I
Abfragen zu einer Tabelle
1. Geben Sie die Namen aller Produkte in der Produkttabelle an.

SELECT name

VON Produkt
2. Geben Sie die Namen und Preise aller Produkte in der Produkttabelle an.

SELECT Name, Preis

VON Produkt

3. Listen Sie alle Spalten der Produkttabelle auf.

SELECT *

VON Produkt

4. Geben Sie den Namen der Produkte, den Preis in Euro und den Preis in US-Dollar (USD) an.

SELECT Name, Preis, Preis * 1,15

VON Produkt

5. Geben Sie den Namen der Produkte, den Preis in Euro und den Preis in US-Dollar (USD) an.
Verwenden Sie die folgenden Aliasnamen für die Spalten: Produktname, Euro, Dollar.

SELECT name AS 'Produktname', Preis AS Euro, Preis * 1,15 AS Dollar

VON Produkt
6. Geben Sie die Namen und Preise aller Produkte in der Produkttabelle an, wobei Sie die Namen
in Großbuchstaben umwandeln.

SELECT UPPER(Name), Preis

VON Produkt

7. Geben Sie die Namen und Preise aller Produkte in der Produkttabelle an, wobei Sie die Namen
in Kleinbuchstaben umwandeln.

SELECT LOWER(Name), Preis

VON Produkt

8. In einer Spalte sind die Namen aller Hersteller aufzuführen, in einer weiteren Spalte sind die
ersten beiden Buchstaben des Herstellernamens groß zu schreiben.

SELECT name, UPPER(SUBSTR(name, 1, 2))

vom Hersteller

9. Geben Sie die Namen und Preise aller Produkte in der Produkttabelle an und runden Sie den
Preiswert.

SELECT name, ROUND(preis)

VON Produkt
10. Geben Sie die Namen und Preise aller Produkte in der Produkttabelle an, wobei Sie den
Preiswert so abschneiden, dass er ohne Nachkommastellen angezeigt wird.

SELECT name, TRUNCATE(Preis)

VON Produkt

11. Geben Sie den Code der Hersteller an, die Produkte in der Produkttabelle haben.

SELECT hersteller_code

VON Produkt

12. Führen Sie die Codes der Hersteller auf, die Produkte in der Produkttabelle haben, und
streichen Sie dabei die Codes, die sich wiederholen.

SELECT DISTINCT hersteller_code

VON Produkt

13. Nennen Sie die Namen der Hersteller in aufsteigender Reihenfolge.

SELECT name

vom Hersteller

ORDER BY name ASC

14. Nennen Sie die Namen der Hersteller in absteigender Reihenfolge.

SELECT name

vom Hersteller

ORDER BY name DESC


15. Führen Sie die Produktnamen in aufsteigender Reihenfolge nach dem Namen und in
absteigender Reihenfolge nach dem Preis auf.

SELECT Name, Preis

VON Produkt

ORDER BY name ASC, preis DESC

16. Gibt eine Liste der ersten 5 Zeilen der Herstellertabelle zurück.

SELECT *

vom Hersteller

BEGRENZUNG 5

17. Gibt eine Liste mit 2 Zeilen zurück, beginnend mit der vierten Zeile der Herstellertabelle. Die
vierte Zeile sollte ebenfalls in die Antwort aufgenommen werden.

SELECT *

vom Hersteller

BEGRENZUNG 3, 2

18. Nennen Sie den Namen und den Preis des billigsten Produkts. (Nur ORDER BY- und LIMIT-
Klauseln verwenden)

SELECT Name, Preis

VON Produkt

ORDER BY Preis ASC

BEGRENZUNG 1
19. Nennen Sie den Namen und den Preis des teuersten Produkts. (Nur ORDER BY- und LIMIT-
Klauseln verwenden)

SELECT Name, Preis

VON Produkt

ORDER BY price DESC

BEGRENZUNG 1

20. Geben Sie die Namen aller Produkte des Herstellers an, deren Herstellercode gleich 2 ist.

SELECT name

VON Produkt

WHERE hersteller_code = 2

21. Geben Sie die Namen der Produkte an, deren Preis kleiner oder gleich 120 € ist.

SELECT name

VON Produkt

WHERE Preis <= 120

22. Geben Sie die Namen der Produkte an, deren Preis größer oder gleich 400 € ist.

SELECT name

VON Produkt

WHERE Preis >= 400


23. Geben Sie die Namen der Produkte an, deren Preis nicht höher als oder gleich 400 € ist.

SELECT name

VON Produkt

WHERE NOT Preis >= 400

24. Alle Produkte mit einem Preis zwischen 80 € und 300 € auflisten. Ohne Verwendung des
Operators BETWEEN.

SELECT *

VON Produkt

WHERE Preis >= 80 AND Preis <= 300

25. Alle Produkte mit einem Preis zwischen 60 € und 200 € auflisten. Verwendung des Operators
BETWEEN.

SELECT *

VON Produkt

WHERE Preis ZWISCHEN 60 UND 200

26. Führen Sie alle Produkte auf, deren Preis über 200 € liegt und die einen Herstellercode gleich
6 haben.

SELECT *

VON Produkt
WHERE preis > 200 AND hersteller_code = 6

27. Führen Sie alle Produkte auf, bei denen der Herstellercode 1, 3 oder 5 ist. Ohne Verwendung
des IN-Operators.

SELECT * FROM produkt

WHERE hersteller_code = 1 OR hersteller_code = 3 OR hersteller_code = 5

28. Führen Sie alle Produkte auf, bei denen der Herstellercode 1, 3 oder 5 ist. Verwendung des
IN-Operators.

SELECT * FROM produkt

WHERE hersteller_code IN (1, 3, 5)

29. Geben Sie den Namen und den Preis der Produkte in Cent an (der Preiswert sollte mit 100
multipliziert werden). Erstellen Sie einen Alias für die Spalte, die den Preis enthält, der Cent
heißen soll.

SELECT Name, Preis * 100 AS Rappen

VON Produkt

30. Nennen Sie die Namen der Hersteller, deren Name mit dem Buchstaben S beginnt.

SELECT name

vom Hersteller

WHERE name LIKE 'S%'


31. Nennen Sie die Namen der Hersteller, deren Name mit dem Vokal e endet.

SELECT name FROM hersteller

WHERE name LIKE '%e'

32. Nennen Sie die Namen der Hersteller, deren Name das Zeichen w enthält.

SELECT name FROM hersteller

WHERE name LIKE '%w%'

33. Nennen Sie die Namen der Hersteller, deren Name 4 Zeichen lang ist.

SELECT name FROM hersteller

WHERE name LIKE '____'

34. Gibt eine Liste mit den Namen aller Produkte zurück, die die Zeichenfolge Portable im
Namen enthalten.

SELECT name FROM produkt

WHERE name LIKE '%Laptop%' WHERE name LIKE '%Laptop%' WHERE name LIKE '%Laptop%'

35. Gibt eine Liste mit den Namen aller Produkte zurück, die die Zeichenfolge Monitor im Namen
enthalten und einen Preis von weniger als 215 € haben.

SELECT name FROM produkt

WHERE name LIKE '%Monitor%' AND preis < 215


36. Geben Sie den Namen und den Preis aller Produkte an, deren Preis größer oder gleich 180 €
ist. Sortieren Sie das Ergebnis zunächst nach dem Preis (in absteigender Reihenfolge) und
anschließend nach dem Namen (in aufsteigender Reihenfolge).

SELECT name, preis FROM produkt

WHERE Preis >= 180

ORDER BY preis DESC, name ASC

Mehrtabellenabfragen (Interne Komposition)


Lösen Sie alle Abfragen mit der SQL1- und SQL2-Syntax auf.

1. liefert eine Liste mit dem Produktnamen, dem Preis und dem Herstellernamen aller Produkte
in der Datenbank.

SELECT produkt.name, preis, hersteller.name

FROM produkt INNER JOIN Hersteller

ON produkt.hersteller_code = hersteller.code

2. Gibt eine Liste mit Produktnamen, Preis und Herstellernamen aller Produkte in der Datenbank
zurück. Sortieren Sie das Ergebnis nach dem Namen des Herstellers in alphabetischer
Reihenfolge.

SELECT produkt.name, preis, hersteller.name

FROM produkt INNER JOIN Hersteller

ON produkt.hersteller_code = hersteller.code

ORDER BY hersteller.name ASC


3. Gibt eine Liste mit Produktcode, Produktname, Herstellercode und Herstellernamen aller
Produkte in der Datenbank zurück.

SELECT produkt.code, produkt.name, hersteller.code, hersteller.name

FROM produkt INNER JOIN Hersteller

ON produkt.hersteller_code = hersteller.code

4. Gibt den Namen des Produkts, seinen Preis und den Namen des Herstellers des billigsten
Produkts zurück.

SELECT produkt.name, produkt.preis, hersteller.name

FROM produkt INNER JOIN Hersteller

ORDER BY produkt.preis ASC

BEGRENZUNG 1

5. Gibt den Namen des Produkts, seinen Preis und den Namen des Herstellers für das teuerste
Produkt zurück.

SELECT produkt.name, produkt.preis, hersteller.name

FROM produkt INNER JOIN Hersteller

ORDER BY produkt.preis DESC

BEGRENZUNG 1
6. Liefert eine Liste aller Produkte des Herstellers Lenovo.

SELECT * FROM produkt INNER JOIN Hersteller

ON produkt.hersteller_code = hersteller.code

WHERE Hersteller.Name = 'Lenovo' WHERE Hersteller.Name = 'Lenovo' WHERE Hersteller.Name =


'Lenovo

7. Senden Sie eine Liste aller Produkte des Herstellers Crucial, die einen Preis von mehr als 200€
haben.

SELECT * FROM produkt INNER JOIN Hersteller

ON produkt.hersteller_code = hersteller.code

WHERE hersteller.name = 'Crucial' AND produkt.preis >200

8. Liefert eine Liste mit allen Produkten der Hersteller Asus, Hewlett-Packard und Seagate. Ohne
Verwendung des IN-Operators.

SELECT * FROM produkt INNER JOIN Hersteller

ON produkt.hersteller_code = hersteller.code

WHERE hersteller.name = 'Asus' OR hersteller.name = 'Hewlett-Packard' OR

manufacturer.name = 'Seagate

9. Liefert eine Liste mit allen Produkten der Hersteller Asus, Hewlett-Packard und Seagate.
Verwendung des IN-Operators.

SELECT * FROM produkt INNER JOIN Hersteller

ON produkt.hersteller_code = hersteller.code

WHERE hersteller.name IN ('Asus','Hewlett-Packard','Seagate')


10. Gibt eine Liste mit den Namen und Preisen aller Produkte der Hersteller zurück, deren
Produkte aufgelistet sind.

Namen, die mit dem Vokal e enden.

SELECT produkt.name, produkt.preis FROM produkt INNER JOIN Hersteller

ON produkt.hersteller_code = hersteller.code

WHERE hersteller.name LIKE ('%e')

11. Gibt eine Liste mit dem Namen und dem Preis aller Produkte zurück, deren Herstellername
das Zeichen w im Namen enthält.

SELECT produkt.name, produkt.preis FROM produkt INNER JOIN Hersteller

ON produkt.hersteller_code = hersteller.code

WHERE hersteller.name LIKE ('%w%')

12. Liefert eine Liste mit Produktnamen, Preis und Herstellernamen von allen

Produkte mit einem Preis von über oder gleich 180 €. Ordnen Sie das Ergebnis zunächst nach
dem

Preis (in absteigender Reihenfolge) und zweitens nach Name (in aufsteigender Reihenfolge)

SELECT produkt.name, produkt.preis, hersteller.name

FROM produkt INNER JOIN Hersteller

ON produkt.hersteller_code = hersteller.code

WHERE produkt.preis >= 180

ORDER BY produkt.preis DESC, produkt.name ASC


13. Gibt eine Liste mit dem Herstellercode und -namen zurück, und zwar nur für die Hersteller,
die über zugehörige Produkte in der Datenbank verfügen.

SELECT hersteller.code, hersteller.name FROM hersteller INNER JOIN produkt

ON hersteller.code = produkt.hersteller_code

Konsultationen an mehreren Tischen (externe Zusammensetzung)


Lösen Sie alle Abfragen mit den Klauseln LEFT JOIN und RIGHT JOIN auf.

1. liefert eine Liste aller in der Datenbank vorhandenen Hersteller mit den Produkten, die jeder
einzelne von ihnen anbietet. In der Liste werden auch die Hersteller aufgeführt, die keine
zugehörigen Produkte haben.

SELECT Hersteller.Code, Hersteller.Name, Hersteller.Name, Produkt.Name

FROM Hersteller LEFT JOIN Produkt

ON hersteller.code = produkt.hersteller_code

2. Geben Sie eine Liste nur der Hersteller zurück, die keine zugehörigen Produkte haben.

SELECT hersteller.name FROM hersteller LEFT JOIN produkt

ON Hersteller.Code != Produkt.Code_Hersteller

WHERE NOT hersteller.code = ANY (

SELECT produkt.hersteller_code

FROM produkt) LIMIT 10,2


3. kann es Produkte geben, die nicht mit einem Hersteller verbunden sind? Begründen Sie Ihre
Antwort.

Sie können nicht existieren, da die Beziehung im relationalen Modell 1 zu vielen ist. Dies bedeutet,
dass ein Produkt von mindestens 1 Hersteller hergestellt werden kann.

Zusammenfassende Anfragen
1 Berechnen Sie die Gesamtzahl der Produkte in der Produkttabelle.

SELECT COUNT(*)

VON Produkt

2. Berechnen Sie die Gesamtzahl der Hersteller in der Herstellertabelle.

SELECT COUNT(*)

vom Hersteller

3. Berechnen Sie die Anzahl der verschiedenen Herstellercode-Werte in der Produkttabelle.

SELECT COUNT(DISTINCT hersteller_code)


VON Produkt

4. Berechnen Sie den Durchschnittspreis aller Produkte.

SELECT AVG(Preis)

VON Produkt

5. Berechnen Sie den günstigsten Preis für alle Produkte.

SELECT MIN(Preis)

VON Produkt

6. Berechnen Sie den teuersten Preis für alle Produkte.

SELECT MAX(Preis)

VON Produkt

7. Nennen Sie den Namen und den Preis des billigsten Produkts.

SELECT Name, Preis

VON Produkt

ORDER BY Preis ASC

BEGRENZUNG 1

8. Nennen Sie den Namen und den Preis des teuersten Produkts.

SELECT Name, Preis

VON Produkt

ORDER BY price DESC

BEGRENZUNG 1

9. Berechnen Sie die Summe der Preise für alle Produkte.

SELECT SUM(Preis)
VON Produkt

10. Berechnen Sie die Anzahl der Produkte, die der Hersteller Asus hat.

SELECT COUNT(produkt.code)

FROM Hersteller INNER JOIN Produkt

ON hersteller.code = produkt.hersteller_code

WHERE Hersteller.Name = 'Asus' WHERE Hersteller.Name = 'Asus' WHERE Hersteller.Name = 'Asus

11. Berechnen Sie den Durchschnittspreis aller Produkte des Herstellers Asus.

SELECT AVG(produkt.preis)

FROM Hersteller INNER JOIN Produkt

ON hersteller.code = produkt.hersteller_code

WHERE Hersteller.Name = 'Asus' WHERE Hersteller.Name = 'Asus' WHERE Hersteller.Name = 'Asus

12. Berechnen Sie den günstigsten Preis für alle Produkte des Herstellers Asus.

SELECT MIN(produkt.preis)

FROM Hersteller INNER JOIN Produkt

ON hersteller.code = produkt.hersteller_code

WHERE Hersteller.Name = 'Asus' WHERE Hersteller.Name = 'Asus' WHERE Hersteller.Name = 'Asus

13. Berechnen Sie den teuersten Preis für alle Produkte des Herstellers Asus.

SELECT MAX(produkt.preis)

FROM Hersteller INNER JOIN Produkt

ON hersteller.code = produkt.hersteller_code

WHERE Hersteller.Name = 'Asus' WHERE Hersteller.Name = 'Asus' WHERE Hersteller.Name = 'Asus

14. Berechnen Sie die Summe aller Produkte des Herstellers Asus.

SELECT SUM(produkt.preis)
FROM Hersteller INNER JOIN Produkt

ON hersteller.code = produkt.hersteller_code

WHERE Hersteller.Name = 'Asus' WHERE Hersteller.Name = 'Asus' WHERE Hersteller.Name = 'Asus

15. Es zeigt den Höchstpreis, den Mindestpreis, den Durchschnittspreis und die Gesamtzahl der
Produkte, die der Hersteller Crucial hat.

SELECT MAX(Produkt.Preis), MIN(Produkt.Preis), AVG(Produkt.Preis), COUNT(Produkt.Code)

FROM Hersteller INNER JOIN Produkt

ON hersteller.code = produkt.hersteller_code

WHERE Hersteller.Name = 'Crucial' WHERE Hersteller.Name = 'Crucial' WHERE Hersteller.Name =


'Crucial

16. Zeigt die Gesamtzahl der Produkte, die jeder Hersteller hat. Die Liste sollte auch Hersteller
enthalten, die keine Produkte haben. Das Ergebnis zeigt zwei Spalten, eine mit dem Namen des
Herstellers und eine mit der Anzahl der Produkte, die er hat. Sortieren Sie das Ergebnis in
absteigender Reihenfolge nach der Anzahl der Produkte.

SELECT hersteller.name, COUNT(produkt.code)

FROM Hersteller LEFT JOIN Produkt

ON produkt.hersteller_code = hersteller.code

GROUP BY hersteller.code

ORDER BY 2 ABSTEIGEND

17. Zeigt den Höchstpreis, den Mindestpreis und den Durchschnittspreis für die Produkte jedes
Herstellers. Das Ergebnis zeigt den Namen des Herstellers zusammen mit den gewünschten
Daten an.

SELECT Hersteller.Name, MAX(Produkt.Preis), MIN(Produkt.Preis), AVG(Produkt.Preis)

FROM Hersteller INNER JOIN Produkt

ON produkt.hersteller_code = hersteller.code

GROUP BY hersteller.code
18. Zeigt den Höchstpreis, den Mindestpreis, den Durchschnittspreis und die Gesamtzahl der
Produkte von Herstellern mit einem Durchschnittspreis von über 200 €. Es ist nicht erforderlich,
den Namen des Herstellers anzugeben, der Herstellercode reicht aus.

SELECT hersteller_code, MAX(Preis), MIN(Preis), AVG(Preis), COUNT(*)

VON Produkt

GROUP BY hersteller_code

HAVING AVG(Preis) > 200

19. gibt den Namen jedes Herstellers an, zusammen mit dem Höchstpreis, dem Mindestpreis,
dem Durchschnittspreis und der Gesamtzahl der Produkte von Herstellern mit einem
Durchschnittspreis von über 200 €. Es ist notwendig, den Namen des Herstellers anzugeben.

SELECT Hersteller.Name,

MAX(Produkt.Preis), MIN(Produkt.Preis),

AVG(produkt.preis), COUNT(*)

FROM produkt INNER JOIN Hersteller

ON produkt.hersteller_code = hersteller.code

GROUP BY hersteller.code

HAVING AVG(produkt.preis) > 200

20. Berechnen Sie die Anzahl der Produkte, deren Preis größer oder gleich 180 € ist.

SELECT COUNT(*)

VON Produkt

WHERE Preis >= 180

21. Berechnen Sie die Anzahl der Produkte jedes Herstellers, deren Preis größer oder gleich 180
€ ist.

SELECT hersteller.name, COUNT(*)

FROM produkt INNER JOIN Hersteller

ON produkt.hersteller_code = hersteller.code

WHERE produkt.preis >= 180

GROUP BY produkt.hersteller_code
22. Listet den Durchschnittspreis der Produkte jedes Herstellers auf, wobei nur der Code des
Herstellers angegeben wird.

SELECT AVG(Preis), hersteller_code

VON Produkt

GROUP BY hersteller_code

23. Listet den Durchschnittspreis der Produkte jedes Herstellers auf, wobei nur der Name des
Herstellers angegeben wird.

SELECT AVG(Preis), Hersteller.Name

FROM produkt INNER JOIN Hersteller

ON produkt.hersteller_code = hersteller.code

GROUP BY hersteller.name

24. Nennen Sie die Namen der Hersteller, deren Produkte einen Durchschnittspreis von 150 €
oder mehr haben.

SELECT AVG(Preis), Hersteller.Name

FROM produkt INNER JOIN Hersteller

ON produkt.hersteller_code = hersteller.code

GROUP BY hersteller.name

HAVING AVG(Preis) >= 150

25. Gibt eine Liste mit den Namen der Hersteller zurück, die 2 oder mehr Produkte haben.

SELECT hersteller.name, COUNT(produkt.code)

FROM Hersteller INNER JOIN Produkt

ON hersteller.code = produkt.hersteller_code

GROUP BY hersteller.code

HAVING COUNT(produkt.code) >= 2


26. gibt eine Liste mit den Namen der Hersteller und der Anzahl der Produkte zurück, die jeder
Hersteller zu einem Preis von 220 € oder mehr anbietet. Es ist nicht notwendig, den Namen von
Herstellern anzugeben, deren Produkte die Bedingung nicht erfüllen. Beispiel für das erwartete
Ergebnis:

SELECT hersteller.name, COUNT(produkt.code)


FROM Hersteller INNER JOIN Produkt
ON hersteller.code = produkt.hersteller_code
WHERE produkt.preis >= 220
GROUP BY hersteller.code
ORDER BY 2 ABSTEIGEND

27. Liefert eine Liste mit den Namen der Hersteller und der Anzahl der Produkte, die jeder
Hersteller mit einem Preis von 220 € oder mehr anbietet. Die Liste muss die Namen aller
Hersteller enthalten, d.h. wenn es einen Hersteller gibt, der keine Produkte mit einem Preis von
220 € oder mehr anbietet, muss er in der Liste mit einem Wert von 0 in der Anzahl der Produkte
erscheinen.

(SELECT Hersteller.Name, COUNT(Produkt.Code)


FROM Hersteller INNER JOIN Produkt
ON hersteller.code = produkt.hersteller_code
WHERE produkt.preis >= 220
GROUP BY hersteller.code)
UNION
(SELECT Hersteller.Name, 0
vom Hersteller
WHERE hersteller.code NOT IN (
SELECT hersteller.code
FROM Hersteller INNER JOIN Produkt
ON hersteller.code = produkt.hersteller_code
WHERE produkt.preis >= 220
GROUP BY hersteller.code))
ORDER BY 2 ABSTEIGEND
28. Geben Sie eine Liste mit den Namen der Hersteller zurück, bei denen die Summe der Preise
aller ihrer Produkte größer als 1000 € ist.

SELECT hersteller.name, SUM(produkt.preis)

FROM Hersteller INNER JOIN Produkt

ON hersteller.code = produkt.hersteller_code

GROUP BY hersteller.code

HAVING SUM(produkt.preis) > 1000

29. Geben Sie eine Liste mit den Namen der teuersten Produkte der einzelnen Hersteller zurück.
Das Ergebnis sollte drei Spalten enthalten: Produktname, Preis und Name des Herstellers. Das
Ergebnis muss alphabetisch vom niedrigsten bis zum höchsten Wert nach dem Namen des
Herstellers sortiert werden.

SELECT produkt.name, produkt.preis, hersteller.name

FROM produkt INNER JOIN Hersteller

ON produkt.hersteller_code = hersteller.code

WHERE produkt.preis =

(
SELECT MAX(Preis)

VON Produkt

WHERE hersteller_code = hersteller.code

ORDER BY hersteller.name ASC

Unterabfragen (in der WHERE-Klausel)


Mit einfachen Vergleichsoperatoren

1. alle Produkte des Herstellers Lenovo zurückgeben. (ohne Verwendung von INNER JOIN).

SELECT * FROM produkt

WHERE hersteller_code = (

SELECT-Code

vom Hersteller

WHERE name = 'Lenovo')

2. Gibt alle Daten für Produkte zurück, die den gleichen Preis haben wie das teuerste Produkt
des Herstellers Lenovo. (ohne Verwendung von INNER JOIN).

SELECT * FROM produkt

WHERE Preis = (

SELECT MAX(Preis)

VON Produkt

WHERE produkt.hersteller_code = (

SELECT-Code

vom Hersteller

WHERE name = 'Lenovo'))

3. Nennen Sie den Namen des teuersten Produkts des Herstellers Lenovo.

SELECT produkt.name

FROM Hersteller INNER JOIN Produkt


ON hersteller.code = produkt.hersteller_code

WHERE hersteller.name = 'Lenovo' AND produkt.preis = (

SELECT MAX(Preis)

FROM Hersteller INNER JOIN Produkt

ON hersteller.code = produkt.hersteller_code

WHERE hersteller.name = 'Lenovo')

4. Nennen Sie den Namen des billigsten Produkts des Herstellers Hewlett-Packard.

SELECT produkt.name

FROM Hersteller INNER JOIN Produkt

ON hersteller.code = produkt.hersteller_code

WHERE hersteller.name = 'Hewlett-Packard' AND produkt.preis = (

SELECT MIN(Preis)

FROM Hersteller INNER JOIN Produkt

ON hersteller.code = produkt.hersteller_code

WHERE hersteller.name = 'Hewlett-Packard')

5. Gibt alle Produkte in der Datenbank zurück, deren Preis größer oder gleich dem des teuersten
Produkts des Herstellers Lenovo ist.

SELECT *

VON Produkt

WHERE Preis >= (

SELECT MAX(Preis)

FROM Hersteller INNER JOIN Produkt

ON hersteller.code = produkt.hersteller_code

WHERE hersteller.name = 'Lenovo')

6. Listen Sie alle Produkte des Herstellers Asus auf, deren Preis über dem Durchschnittspreis
aller Asus-Produkte liegt.

SELECT *

FROM Hersteller INNER JOIN Produkt


ON hersteller.code = produkt.hersteller_code

WHERE hersteller.name = 'Asus' AND produkt.preis > (

SELECT AVG(Preis)

FROM Hersteller INNER JOIN Produkt

ON hersteller.code = produkt.hersteller_code

WHERE hersteller.name = 'Asus')

Unterabfragen mit ALL und ANY

8. Liefert das teuerste Produkt, das in der Produkttabelle vorhanden ist, ohne Verwendung von
MAX, ORDER

BY ni LIMIT.

SELECT * FROM produkt

WHERE Preis >= ALL (

SELECT-Preis

FROM Produkt)

9. Liefert das billigste Produkt, das in der Produkttabelle existiert, ohne MIN, ORDER BY oder
LIMIT zu verwenden.

SELECT * FROM produkt

WHERE Preis <= ALL (

SELECT-Preis

FROM Produkt)

10. Gibt die Namen der Hersteller zurück, die zugehörige Produkte haben. (Mit ALL oder ANY).

SELECT name FROM hersteller

WHERE code = ANY (

SELECT hersteller_code

FROM Produkt)
11. Gibt die Namen von Herstellern zurück, die keine zugehörigen Produkte haben. (Mit ALL
oder ANY).

SELECT name FROM hersteller

WHERE code != ALL (

SELECT hersteller_code

FROM Produkt)

Unterabfragen mit IN und NOT IN

12. Gibt die Namen der Hersteller zurück, die zugehörige Produkte haben. (Mit IN oder NOT IN).

SELECT name FROM hersteller

WHERE code IN (SELECT hersteller_code FROM produkt)

13. Gibt die Namen von Herstellern zurück, die keine zugehörigen Produkte haben. (Mit IN oder
NOT IN).

SELECT name FROM hersteller

WHERE code NOT IN (SELECT hersteller_code FROM produkt)

Unterabfragen mit EXISTS und NOT EXISTS

14. Gibt die Namen der Hersteller zurück, die zugehörige Produkte haben. (Mit EXISTS oder NOT
EXISTS).

SELECT name FROM hersteller

WHERE EXISTS (

SELECT hersteller_code

VON Produkt

WHERE produkt.hersteller.code = hersteller.code)


15. Gibt die Namen von Herstellern zurück, die keine zugehörigen Produkte haben.

(Mit EXISTS oder NOT EXISTS).

SELECT name FROM hersteller

WO NICHT VORHANDEN IST (

SELECT hersteller_code

VON Produkt

WHERE produkt.hersteller.code = hersteller.code)

Korrelierte Unterabfragen

16. Nennen Sie den Namen jedes Herstellers sowie den Namen und den Preis seines teuersten
Produkts.

SELECT produkt.name, produkt.preis, hersteller.name

FROM produkt INNER JOIN Hersteller

ON produkt.hersteller_code = hersteller.code

WHERE produkt.preis =

SELECT MAX(Preis)

VON Produkt

WHERE hersteller_code = hersteller.code

17. Gibt eine Liste aller Produkte zurück, deren Preis größer oder gleich dem Mittelwert von

alle Produkte desselben Herstellers.

SELECT *

FROM produkt AS p1

WHERE Preis >= (SELECT AVG(Preis)

FROM produkt AS p2

WHERE p1.hersteller_code = p2.hersteller_code)


18. Nennen Sie den Namen des teuersten Produkts des Herstellers Lenovo.

SELECT produkt.name

FROM Hersteller INNER JOIN Produkt

ON hersteller.code = produkt.hersteller_code

WHERE hersteller.name = 'Lenovo' AND produkt.preis = (

SELECT MAX(Preis)

VON Produkt

WHERE hersteller_code = hersteller.code)

Unterabfragen (in der HAVING-Klausel)

19. Gibt eine Liste mit allen Namen der Hersteller zurück, die die gleiche Anzahl von Produkten
wie der Hersteller Lenovo haben.

SELECT hersteller.name, COUNT(produkt.code)

FROM Hersteller INNER JOIN Produkt

ON hersteller.code = produkt.hersteller_code

GROUP BY hersteller.code

HAVING COUNT(produkt.code) >= (

SELECT COUNT(produkt.code)

FROM Hersteller INNER JOIN Produkt

ON hersteller.code = produkt.hersteller_code

WHERE hersteller.name = 'Lenovo')

Das könnte Ihnen auch gefallen