SQL Structured Query Language weit verbreitete Sprache zur Definition und Manipula- tion...

16
SQL Structured Query Language weit verbreitete Sprache zur Definition und Manipula-tion relationaler Datenbanken heute als herstellerunabhängiger Standard weitge-hend akzeptiert

Transcript of SQL Structured Query Language weit verbreitete Sprache zur Definition und Manipula- tion...

Page 1: SQL Structured Query Language weit verbreitete Sprache zur Definition und Manipula- tion relationaler Datenbanken heute als herstellerunabhängiger Standard.

SQL

Structured Query Language

• weit verbreitete Sprache zur Definition und Manipula-tion relationaler Datenbanken

• heute als herstellerunabhängiger Standard weitge-hend akzeptiert

Page 2: SQL Structured Query Language weit verbreitete Sprache zur Definition und Manipula- tion relationaler Datenbanken heute als herstellerunabhängiger Standard.

SELECT < attributenliste >

FROM < relationenliste >

WHERE < bedingungsgefüge > (optional)

Der wichtigste Befehl zur Datenmanipulation lautet:

Page 3: SQL Structured Query Language weit verbreitete Sprache zur Definition und Manipula- tion relationaler Datenbanken heute als herstellerunabhängiger Standard.

Anfragen an die Datenbank mit folgenden Beziehungen

Page 4: SQL Structured Query Language weit verbreitete Sprache zur Definition und Manipula- tion relationaler Datenbanken heute als herstellerunabhängiger Standard.

A1. Geben Sie alle Informationen der Tabelle Mitarbeiter aus!

SELECT persnr, name, gebdat, ort, taet, geh, abtnrFROM mitarb;

SELECT *FROM mitarb;

A2. Geben Sie Name und Geburtsdatum aller Mitarbeiter aus!

SELECT name, gebdatFROM mitarb;

A3. Welche Tätigkeiten gibt es?

SELECT taetFROM mitarb;

A: Projektion

A4. Welche unterschiedlichen Tätigkeiten gibt es?

SELECT DISTINCT taetFROM mitarb;

Page 5: SQL Structured Query Language weit verbreitete Sprache zur Definition und Manipula- tion relationaler Datenbanken heute als herstellerunabhängiger Standard.

B: Selektion

B1.1. Erstellen Sie eine Liste aller Mitarbeiter der Abteilung 20!

SELECT nameFROM mitarbWHERE abtnr = 20;

B1.2. Geben Sie Namen und Abteilungsnummer aller Leiter aus!

SELECT name, abtnrFROM mitarbWHERE taet = ‘Leiter‘;

B1: über ein Attribut

Page 6: SQL Structured Query Language weit verbreitete Sprache zur Definition und Manipula- tion relationaler Datenbanken heute als herstellerunabhängiger Standard.

B2: über mehrere Attribute

B2.1. Geben Sie alle Informationen des Leitungspersonals der Tabelle Mitarbeiter aus!

SELECT *FROM mitarbWHERE taet = ‘Leiter‘ OR taet = ‘Direktor‘;

B2.2. Geben Sie die Personalnummer der Mitarbeiter aus, die an Projekt 20 und / oder Projekt 30 arbeiten!

SELECT DISTINCT persnrFROM mitarb_projWHERE projnr = 20 OR projnr = 30;

Page 7: SQL Structured Query Language weit verbreitete Sprache zur Definition und Manipula- tion relationaler Datenbanken heute als herstellerunabhängiger Standard.

B3: Wertebereichsabfragen

B3.1. Erzeugen Sie eine Auflistung aller Mitarbeiter (Name / Gehalt), die zwischen 1200 € und 1800 € verdienen!

SELECT name, gehFROM mitarbWHERE geh >= 1200 AND geh <= 1800;

B3.2. Geben Sie Namen und Geburtsdatum aller Mitarbeiter aus, die nach 1960 geboren sind!

SELECT name, gebdatFROM mitarbWHERE gebdat > #31/12/60#;

SELECT projnr, pbeg, pendeFROM projWHERE pende - pbeg <=‘730days‘;

B3.3. Listen Sie Projektnummer, Projektbeginn und Projektende der Projekte auf, die eine Laufzeit kleiner gleich zwei Jahre haben!

Page 8: SQL Structured Query Language weit verbreitete Sprache zur Definition und Manipula- tion relationaler Datenbanken heute als herstellerunabhängiger Standard.

B4: Zeichenkettenoperationen

B4.1. Geben Sie die Namen aller Mitarbeiter aus, deren Name mit „M“ beginnt!

SELECT nameFROM mitarbWHERE name LIKE ‘M*‘;

B4.2. Suchen Sie die Namen aller Mitarbeiter heraus, deren Name mit „e“ endet!

SELECT nameFROM mitarbWHERE name LIKE ‘*e‘;

Page 9: SQL Structured Query Language weit verbreitete Sprache zur Definition und Manipula- tion relationaler Datenbanken heute als herstellerunabhängiger Standard.

B5: Ausdrücke

B5.1. Geben Sie zu jedem Namen eines Mitarbeiters sein Jahreseinkommen aus!

SELECT name, 12*geh AS jahresgehalt_euroFROM mitarb;

B5.2. Ermitteln Sie für jeden Mitarbeiter das Tagesgehalt (20 Arbeitstage im Monat) und geben Sie dieses aus!

SELECT name, geh/20 AS tag_in_euroFROM mitarb;

Page 10: SQL Structured Query Language weit verbreitete Sprache zur Definition und Manipula- tion relationaler Datenbanken heute als herstellerunabhängiger Standard.

B6: Gruppenfunktionen

B6.1. Geben Sie das Durchschnittsgehalt, Minimalgehalt, und Maximalgehalt aller Mitarbeiter aus!

SELECT AVG (geh) AS durchsch_geh, MIN (geh) AS mini_geh, MAX (geh) AS maxi_gehFROM mitarb;

B6.2. Ermitteln Sie die Gesamtprojektkapazität und geben Sie diese aus!

SELECT SUM (pkap) AS ges_proj_kapFROM proj;

B6.3. Ermitteln Sie die Anzahl der Mitarbeiter (über Attribut „name“) in Abteilung 20 und geben Sie diese aus!

SELECT COUNT (name) AS anz_mitarbeiter_abt20FROM mitarbWHERE abtnr = 20;

Page 11: SQL Structured Query Language weit verbreitete Sprache zur Definition und Manipula- tion relationaler Datenbanken heute als herstellerunabhängiger Standard.

B7: Bildung von Gruppen (mit gleichen Attributen)

B7.1. Geben Sie für jede Abteilung Nummer und Durchschnittsgehalt gruppiert nach Abteilungsnummer aus!

SELECT abtnr, AVG (geh) AS durchsch_gehFROM mitarbGROUP BY abtnr;

B7.2. Geben Sie Abteilungsnummer, Tätigkeit, Anzahl je Tätigkeit gruppiert nach Abteilungsnummer und Tätigkeit aus!

SELECT abtnr, taet, COUNT (taet) AS AnzahlFROM mitarbGROUP BY abtnr, taet;

Page 12: SQL Structured Query Language weit verbreitete Sprache zur Definition und Manipula- tion relationaler Datenbanken heute als herstellerunabhängiger Standard.

B8: Ordnen der Ergebnisrelation

B8.1. Geben Sie Abteilungsnummer und Name aller Leiter nach Abteilungsnummern geordnet aus!

SELECT abtnr, nameFROM mitarbWHERE taet = ‘Leiter‘ORDER BY abtnr;

B8.2. Geben Sie alle Informationen der Tabelle Mitarbeiter geordnet nach Abteilungen und innerhalb der Abteilungen nach Tätigkeiten aus!

SELECT *FROM mitarbORDER BY abtnr, taet;

Page 13: SQL Structured Query Language weit verbreitete Sprache zur Definition und Manipula- tion relationaler Datenbanken heute als herstellerunabhängiger Standard.

B9: Join über 2 Relationen

B9.1. Geben Sie die Namen aller Projektleiter aus!

SELECT DISTINCT nameFROM mitarb, projWHERE persnr = pleit;

B9.2. Geben Sie die Namen und Personalnummern aller Mitarbeiter aus, die an Projekt 20 und / oder Projekt 30 arbeiten!

SELECT DISTINCT name, mitarb.persnrFROM mitarb, mitarb_projWHERE mitarb.persnr = mitarb_proj.persnr AND (projnr = 20 OR projnr = 30);

B9.3. Geben Sie die Namen und Abteilungsnamen aller Mitarbeiter aus!

SELECT name, abtnameFROM mitarb, abtWHERE mitarb.abtnr = abt.abtnr;

B9.4. Geben Sie Name, Gehalt und Abteilungsort des Mitarbeiters Richter aus!

SELECT name, geh, abt.ortFROM mitarb, abtWHERE mitarb.abtnr = abt.abtnr AND name = ‘Richter‘;

B9.5. Geben Sie Namen, Personalnummern und Abteilungsnamen aller Mitarbeiter aus, die weder in der Direktion noch in der Forschung arbeiten!

SELECT name, persnr, abtnameFROM mitarb, abtWHERE mitarb.abtnr = abt.abtnr AND NOT (abtname = ‘Direktion‘ OR abtname = ‘Forschung‘);

Page 14: SQL Structured Query Language weit verbreitete Sprache zur Definition und Manipula- tion relationaler Datenbanken heute als herstellerunabhängiger Standard.

B10: Join auf sich selbst (nur auf eine Relation bezogen)

B10.1. Geben Sie die Namen und Gehälter aller Mitarbeiter aus, die mehr verdienen als Jaeger!

SELECT y.name, y.gehFROM mitarb AS x, mitarb AS yWHERE x.name = ‘Jaeger‘ AND x.geh < y.geh;

B10.2. Geben Sie die Namen aller Mitarbeiter aus, die in der gleichen Abteilung arbeiten wie Altmann!

SELECT y.nameFROM mitarb AS x, mitarb AS yWHERE x.name = ‘Altmann‘ AND x.abtnr = y.abtnr;

Page 15: SQL Structured Query Language weit verbreitete Sprache zur Definition und Manipula- tion relationaler Datenbanken heute als herstellerunabhängiger Standard.

B11: Join über mehrere Relationen

B11.1. Geben Sie die Namen, Abteilungsnamen von Mitarbeitern aus, die an Projekten arbeiten, die Walther leitet!

SELECT y.name, abtnameFROM mitarb AS x, mitarb AS y, proj, mitarb_proj, abtWHERE x.name = ‘Walther‘ AND x.persnr = pleit

AND proj.projnr = mitarb_proj.projnr AND mitarb_proj.persnr = y.persnr AND y.abtnr = abt.abtnr AND y.name <> ‘Walther‘;

Page 16: SQL Structured Query Language weit verbreitete Sprache zur Definition und Manipula- tion relationaler Datenbanken heute als herstellerunabhängiger Standard.

B12: Unterabfragen (Verschachtelung von SELECT im WHERE-Zweig)

B12.1. Geben Sie die Namen aller Mitarbeiter aus, die in Chemnitz arbeiten!

SELECT nameFROM mitarbWHERE abtnr IN (SELECT abtnr FROM abt WHERE ort = ‘Chemnitz‘);

SELECT nameFROM mitarb, abtWHERE abt.ort = ‘Chemnitz‘ AND abt.abtnr = mitarb.abtnr;

(2..Möglichkeit – siehe auch Join über 2 Relationen)