13
Übung 1: SQL Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPD IPD Übung 1: SQL Übung 1: SQL Übungen finden bei Bedarf Übungen finden bei Bedarf anstelle der Vorlesungen anstelle der Vorlesungen statt statt Fragen? Fragen? [email protected] [email protected]

Übung 1: SQL

  • Upload
    skip

  • View
    24

  • Download
    0

Embed Size (px)

DESCRIPTION

Übung 1: SQL. Übungen finden bei Bedarf anstelle der Vorlesungen statt Fragen?  [email protected]. Fragen aus der Vorlesung. Wie sieht eine äquivalente Anfrage zu select Titel from Bücher where ISBN in (select ISBN from Empfiehlt) ohne Schachtelung aus? - PowerPoint PPT Presentation

Citation preview

Page 1: Übung 1: SQL

Übung 1: SQL

Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPD IPD

Übung 1: SQLÜbung 1: SQL

Übungen finden bei Bedarf Übungen finden bei Bedarf anstelle der Vorlesungen stattanstelle der Vorlesungen statt

Fragen? Fragen? [email protected] [email protected]

Page 2: Übung 1: SQL

Übung 1: SQL

Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPD IPD

Fragen aus der VorlesungFragen aus der Vorlesung

Wie sieht eine äquivalente Anfrage zuWie sieht eine äquivalente Anfrage zu select Titel from Bücher where ISBN select Titel from Bücher where ISBN in (select ISBN from Empfiehlt)in (select ISBN from Empfiehlt) ohne Schachtelung aus?ohne Schachtelung aus?

select b.titel from Bücher b inner join select b.titel from Bücher b inner join Empfielt e on b.ISBN = e.ISBNEmpfielt e on b.ISBN = e.ISBN

oder:oder:

select b.titel from Bücher b, Empfielt e select b.titel from Bücher b, Empfielt e where b.ISBN = e.ISBNwhere b.ISBN = e.ISBN

Page 3: Übung 1: SQL

Übung 1: SQL

Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPD IPD

Fragen aus der VorlesungFragen aus der Vorlesung

Was liefern Aggregatfunktionen, wenn die Was liefern Aggregatfunktionen, wenn die Relation leer ist oder kein Tupel dieRelation leer ist oder kein Tupel die wherewhere--Klausel erfüllt?Klausel erfüllt?

0

null

null

Funktion Ergebnis

count()

min()

max()

sum() null

Page 4: Übung 1: SQL

Übung 1: SQL

Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPD IPD

Fragen aus der VorlesungFragen aus der Vorlesung

Ist die Abfrage Ist die Abfrage select * from Person where select * from Person where note = max(note)note = max(note) zulässig?zulässig?

Nein, korrekt wäre:Nein, korrekt wäre:

select * from Person where note in select * from Person where note in (select max(note) from Person)(select max(note) from Person)

oder:oder:

select * from Person where note = select * from Person where note = (select max(note) from Person)(select max(note) from Person)

Page 5: Übung 1: SQL

Übung 1: SQL

Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPD IPD

Übungsblatt 1Übungsblatt 1

Page 6: Übung 1: SQL

Übung 1: SQL

Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPD IPD

Übungsblatt 1Übungsblatt 1

Namen der Kontinente, Namen der darin Namen der Kontinente, Namen der darin gelegenen Länder, sortiert nach Namen der gelegenen Länder, sortiert nach Namen der Kontinente und darin nach Namen der LänderKontinente und darin nach Namen der Länder

select co.name, ct.name from continent select co.name, ct.name from continent co, country ct, encompasses e where co, country ct, encompasses e where co.name = e.continent and ct.cid = e.cid co.name = e.continent and ct.cid = e.cid order by co.name, ct.nameorder by co.name, ct.name

Erstellen Sie ein Abfrage, die folgende Informationen liefert:Erstellen Sie ein Abfrage, die folgende Informationen liefert:

Page 7: Übung 1: SQL

Übung 1: SQL

Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPD IPD

Übungsblatt 1Übungsblatt 1

Namen der Kontinente, Anzahl der darin Namen der Kontinente, Anzahl der darin gelegenen Länder, sortiert nach Namen der gelegenen Länder, sortiert nach Namen der KontinenteKontinente

select co.name, count(ct.name) from select co.name, count(ct.name) from continent co, country ct, encompasses e continent co, country ct, encompasses e where co.name = e.continent and ct.cid = where co.name = e.continent and ct.cid = e.cid group by co.name order by co.namee.cid group by co.name order by co.name

Erstellen Sie ein Abfrage, die folgende Informationen liefert:Erstellen Sie ein Abfrage, die folgende Informationen liefert:

Page 8: Übung 1: SQL

Übung 1: SQL

Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPD IPD

Übungsblatt 1Übungsblatt 1

Namen der Länder, Anzahl ihrer Nachbarländer, Namen der Länder, Anzahl ihrer Nachbarländer, sortiert nach Namen der Ländersortiert nach Namen der Länder

select co.name, count(b.country1) from select co.name, count(b.country1) from country co, borders b where b.country1 = country co, borders b where b.country1 = co.cid or b.country2 = co.cid group by co.cid or b.country2 = co.cid group by co.name order by co.nameco.name order by co.name

Erstellen Sie ein Abfrage, die folgende Informationen liefert:Erstellen Sie ein Abfrage, die folgende Informationen liefert:

Page 9: Übung 1: SQL

Übung 1: SQL

Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPD IPD

Übungsblatt 1Übungsblatt 1

Namen der Länder, Namen ihrer Hauptstädte, Einwohnerzahl Namen der Länder, Namen ihrer Hauptstädte, Einwohnerzahl des Landes, Einwohnerzahl der Hauptstadt, Anteil der des Landes, Einwohnerzahl der Hauptstadt, Anteil der Bevölkerung der Hauptstadt an der Gesamtbevölkerung in Bevölkerung der Hauptstadt an der Gesamtbevölkerung in %, sortiert nach Namen der Länder%, sortiert nach Namen der Länder

select co.name, ci.name, co.population, select co.name, ci.name, co.population, ci.population, ceil((ci.population / ci.population, ceil((ci.population / co.population) * 100) as CapPopPerc from country co.population) * 100) as CapPopPerc from country co, city ci where ci.name = co.capital and co.cid co, city ci where ci.name = co.capital and co.cid = ci.cid order by co.name= ci.cid order by co.name

Erstellen Sie ein Abfrage, die folgende Informationen liefert:Erstellen Sie ein Abfrage, die folgende Informationen liefert:

Page 10: Übung 1: SQL

Übung 1: SQL

Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPD IPD

Übungsblatt 1Übungsblatt 1

Namen der Länder, Anzahl der Städte im Land, Einwohnerzahl Namen der Länder, Anzahl der Städte im Land, Einwohnerzahl des Landes, Einwohnerzahl der Städte zusammen, Anteil des Landes, Einwohnerzahl der Städte zusammen, Anteil der Bevölkerung der Städte an der Gesamtbevölkerung der Bevölkerung der Städte an der Gesamtbevölkerung des Landes in %, sortiert nach Namen der Länderdes Landes in %, sortiert nach Namen der Länder

select co.name, count(ci.name), co.population, select co.name, count(ci.name), co.population, sum(ci.population), ceil((sum(ci.population) / sum(ci.population), ceil((sum(ci.population) / co.population) * 100) from country co, city ci co.population) * 100) from country co, city ci where co.cid = ci.cid group by co.name, where co.cid = ci.cid group by co.name, co.population order by co.name co.population order by co.name

Erstellen Sie ein Abfrage, die folgende Informationen liefert:Erstellen Sie ein Abfrage, die folgende Informationen liefert:

Page 11: Übung 1: SQL

Übung 1: SQL

Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPD IPD

Übungsblatt 1Übungsblatt 1

Namen der Länder, Anzahl der Städte im Land, Einwohnerzahl des Landes, Namen der Länder, Anzahl der Städte im Land, Einwohnerzahl des Landes, Einwohnerzahl der Städte, Anteil der Bevölkerung der Städte an der Einwohnerzahl der Städte, Anteil der Bevölkerung der Städte an der Gesamtbevölkerung des Landes in %, aber nur für verstädterte Länder Gesamtbevölkerung des Landes in %, aber nur für verstädterte Länder (Anteil der Stadt- an der Gesamtbevölkerung >= 50%), sortiert nach (Anteil der Stadt- an der Gesamtbevölkerung >= 50%), sortiert nach Namen der LänderNamen der Länder

select co.name, count(ci.name), co.population, select co.name, count(ci.name), co.population, sum(ci.population), ceil((sum(ci.population) / co.population) sum(ci.population), ceil((sum(ci.population) / co.population) * 100) from country co, city ci where co.cid = ci.cid group by * 100) from country co, city ci where co.cid = ci.cid group by co.name, co.population having (ceil((sum(ci.population) / co.name, co.population having (ceil((sum(ci.population) / co.population) * 100) >= 50 and count(ci.name) > 1) order by co.population) * 100) >= 50 and count(ci.name) > 1) order by co.name co.name

Erstellen Sie ein Abfrage, die folgende Informationen liefert:Erstellen Sie ein Abfrage, die folgende Informationen liefert:

Page 12: Übung 1: SQL

Übung 1: SQL

Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPD IPD

Übungsblatt 1Übungsblatt 1

Namen der Länder, Namen der Nachbarländer mit gleicher Namen der Länder, Namen der Nachbarländer mit gleicher Regierungsform, Regierungsform beider Länder, sofern das Regierungsform, Regierungsform beider Länder, sofern das Land ein Nachbarland mit gleicher Regierungsform hat, Land ein Nachbarland mit gleicher Regierungsform hat, sortiert nach Namen der Länder und darin nach Namen der sortiert nach Namen der Länder und darin nach Namen der NachbarländerNachbarländer

select c1.name, c2.name, c2.government from country select c1.name, c2.name, c2.government from country c1, country c2, borders b where ((b.country1 = c1, country c2, borders b where ((b.country1 = c1.cid and b.country2 = c2.cid) or (b.country2 = c1.cid and b.country2 = c2.cid) or (b.country2 = c1.cid and b.country1 = c2.cid)) and (c1.government c1.cid and b.country1 = c2.cid)) and (c1.government = c2.government) order by c1.name, c2.name= c2.government) order by c1.name, c2.name

Erstellen Sie ein Abfrage, die folgende Informationen liefert:Erstellen Sie ein Abfrage, die folgende Informationen liefert:

Page 13: Übung 1: SQL

Übung 1: SQL

Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPD IPD

Übungsblatt 1Übungsblatt 1

Namen der Flüsse, ihre Länge, Fluß in den sie münden, Namen der Flüsse, ihre Länge, Fluß in den sie münden, dessen Länge, sofern der Fluß in einen anderen mündet, dessen Länge, sofern der Fluß in einen anderen mündet, der kürzer ist als er selbst, sortiert nach Namen der der kürzer ist als er selbst, sortiert nach Namen der FlüsseFlüsse

select r1.name, r1.length, r2.name, r2.length from select r1.name, r1.length, r2.name, r2.length from river r1, river r2 where r1.river is not null river r1, river r2 where r1.river is not null and r1.river = r2.name and r2.length < r1.length and r1.river = r2.name and r2.length < r1.length order by r2.nameorder by r2.name

Erstellen Sie ein Abfrage, die folgende Informationen liefert:Erstellen Sie ein Abfrage, die folgende Informationen liefert: