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 statt anstelle der Vorlesungen statt Fragen? Fragen? [email protected] [email protected]

Übung 1: SQL - KITipd/institut/dbe2004-05/Uebung1-SQL.pdf · Übung 1: SQL Vorlesung Datenbankeinsatz WS 04/05 IPD Übungsblatt 1 Namen der Länder, Anzahl der Städte im Land, Einwohnerzahl

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

  • Übung 1: SQL

    Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPDIPD

    Ü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]@ira.uka.de

  • Übung 1: SQL

    Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPDIPD

    Fragen aus der VorlesungFragen aus der Vorlesung

    Wie sieht eine äquivalente Anfrage zuWie sieht eine äquivalente Anfrage zuselect 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

  • Übung 1: SQL

    Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPDIPD

    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 Ergebniscount()

    min()

    max()

    sum() null

  • Übung 1: SQL

    Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPDIPD

    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)

  • Übung 1: SQL

    Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPDIPD

    Übungsblatt 1Übungsblatt 1

  • Übung 1: SQL

    Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPDIPD

    Übungsblatt 1Übungsblatt 1

    Namen der Kontinente, Namen der darin Namen der Kontinente, Namen der darin gelegenen Lgelegenen Läänder, sortiert nach Namen der nder, sortiert nach Namen der Kontinente und darin nach Namen der LKontinente und darin nach Namen der Läändernder

    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:

  • Übung 1: SQL

    Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPDIPD

    Übungsblatt 1Übungsblatt 1

    Namen der Kontinente, Anzahl der darin Namen der Kontinente, Anzahl der darin gelegenen Lgelegenen Läänder, sortiert nach Namen der 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:

  • Übung 1: SQL

    Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPDIPD

    Übungsblatt 1Übungsblatt 1

    Namen der LNamen der Läänder, Anzahl ihrer Nachbarlnder, Anzahl ihrer Nachbarläänder, nder, sortiert nach Namen der Lsortiert nach Namen der Läändernder

    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:

  • Übung 1: SQL

    Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPDIPD

    Übungsblatt 1Übungsblatt 1

    Namen der LNamen der Läänder, Namen ihrer Hauptstnder, Namen ihrer Hauptstäädte, dte, Einwohnerzahl des Landes, Einwohnerzahl der Einwohnerzahl des Landes, Einwohnerzahl der Hauptstadt, Anteil der BevHauptstadt, Anteil der Bevöölkerung der Hauptstadt an lkerung der Hauptstadt an der Gesamtbevder Gesamtbevöölkerung in %, sortiert nach Namen der lkerung in %, sortiert nach Namen der LLäändernder

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

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

  • Übung 1: SQL

    Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPDIPD

    Übungsblatt 1Übungsblatt 1

    Namen der LNamen der Läänder, Anzahl der Stnder, Anzahl der Stäädte im Land, dte im Land, Einwohnerzahl des Landes, Einwohnerzahl der StEinwohnerzahl des Landes, Einwohnerzahl der Stäädte dte zusammen, Anteil der Bevzusammen, Anteil der Bevöölkerung der Stlkerung der Stäädte an der dte an der GesamtbevGesamtbevöölkerung des Landes in %, sortiert nach lkerung des Landes in %, sortiert nach Namen der LNamen der Läändernder

    select co.name, count(select co.name, count(cici.name), co.population, .name), co.population, sum(sum(cici.population), ceil((sum(.population), ceil((sum(cici.population) / .population) / co.population) * 100) from country co, city co.population) * 100) from country co, city ciciwhere co.cid = where co.cid = cici.cid group by co.name, .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:

  • Übung 1: SQL

    Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPDIPD

    Übungsblatt 1Übungsblatt 1

    Namen der LNamen der Läänder, Anzahl der Stnder, Anzahl der Stäädte im Land, Einwohnerzahl des dte im Land, Einwohnerzahl des Landes, Einwohnerzahl der StLandes, Einwohnerzahl der Stäädte, Anteil der Bevdte, Anteil der Bevöölkerung der lkerung der StStäädte an der Gesamtbevdte an der Gesamtbevöölkerung des Landes in %, aber nur flkerung des Landes in %, aber nur füür r verstverstäädterte Ldterte Läänder (Anteil der Stadtnder (Anteil der Stadt-- an der an der GesamtbevGesamtbevöölkerung >= 50%), sortiert nach Namen der Llkerung >= 50%), sortiert nach Namen der Läändernder

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

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

  • Übung 1: SQL

    Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPDIPD

    Übungsblatt 1Übungsblatt 1

    Namen der LNamen der Läänder, Namen der Nachbarlnder, Namen der Nachbarläänder mit gleicher nder mit gleicher Regierungsform, Regierungsform beider LRegierungsform, Regierungsform beider Läänder, sofern nder, sofern das Land ein Nachbarland mit gleicher Regierungsform das Land ein Nachbarland mit gleicher Regierungsform hat, sortiert nach Namen der Lhat, sortiert nach Namen der Läänder und darin nach nder und darin nach Namen der NachbarlNamen der Nachbarläändernder

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

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

  • Übung 1: SQL

    Vorlesung Datenbankeinsatz WS 04/05 Vorlesung Datenbankeinsatz WS 04/05 IPDIPD

    Übungsblatt 1Übungsblatt 1

    Namen der FlNamen der Flüüsse, ihre Lsse, ihre Läänge, Flunge, Flußß in den sie min den sie müünden, nden, dessen Ldessen Läänge, sofern der Flunge, sofern der Flußß in einen anderen min einen anderen müündet, ndet, der kder küürzer ist als er selbst, sortiert nach Namen der rzer ist als er selbst, sortiert nach Namen der FlFlüüssesse

    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:

    Übung 1: SQLFragen aus der VorlesungFragen aus der VorlesungFragen aus der VorlesungÜbungsblatt 1Übungsblatt 1Übungsblatt 1Übungsblatt 1Übungsblatt 1Übungsblatt 1Übungsblatt 1Übungsblatt 1Übungsblatt 1