1 / 26

SQL Structured Query Language

SQL Structured Query Language. Wintersemester 2010. RDBS Relationale Datenbanksysteme. Sind Datenbanksysteme auf Basis des Relationenmodells . Enthalten zumeist die Sprache SQL. Stellen dem Anwender verschiede Systemkomponenten zur Verfügung. ZB in Access: Tabellen

collin
Download Presentation

SQL Structured Query Language

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SQL Structured Query Language Wintersemester 2010

  2. RDBSRelationale Datenbanksysteme • Sind Datenbanksysteme auf Basis des Relationenmodells. • Enthalten zumeist die Sprache SQL. • Stellen dem Anwender verschiede Systemkomponenten zur Verfügung. • ZB in Access: • Tabellen • Abfragen (Erstellung einer externen Sicht) • Formular (Masken etc.) • Berichte • Makros (für automatisierte Arbeitsvorgänge) • Modul (Visual Basic zur Erstellung von Applikationen)

  3. Standardsprache SQL • Ist die sprachliche Fassung des Relationenmodells. • Zentrales Element ist die Abfrage. • Ist deskriptiv, nicht prozedural und enthält: • DDL (DataDescriptionLanguage) – Elemente: • zB CREATE TABLE,… (Anlage eine Tabelle) • DML (Data Manipulation Language) – Elemente: • zB SELECT, UPDATE, DELETE, INSERT INTO, … • DCL (DataControlLanguage) – Elemente: • zB GRANT, … (Vergabe von Zugriffsrechten)

  4. Das Select-Kommando • Erzeugt Ergebnis-Relationen • Auswahl (von bestimmten Zeilen) • Projektion (Auswahl bestimmter Attribute) • Verbund (Verknüpfung von Relationen) • Vereinigung (Vereinigung von Tupeln gleicher Struktur aus verschiedenen Relationen) • Durchschnitt (mengentheoretischer Durchschnitt mehrerer Relationen) • Differenz (mengentheoretische Differenz mehrerer Relationen)

  5. Grundstruktur des Select-Befehls SELECT … FROM … WHERE … GROUP BY … HAVING … UNION … ORDER BY … ; Das Kommando endet mit einem Semikolon, die SQL-Schlüsselwörter werden groß geschrieben.

  6. Das Beispielrelationenschema • MITARBEITER = (MNR, Name, Vorname, Gehalt, AbtNr) • QUALI = (MNR, LNR, Qualifikation) • PRARBEIT = (MNR, PNR, LNR, Std) • PROJ = (PRNR, PrBez) • ABT = (AbtNr, AbtName, AbtLeiter)

  7. Die Projektion • Die angegebenen Attribute gelangen in die Zielrelation • SELECT * FROM MITARBEITER; • SELECT MNR, Name, Vorname FROM MITARBEITER; • SELECT DISTINCT Vorname -> keine doppelten Tupel FROM MITARBEITER

  8. Die Selektion Auf Basis eines logischen Ausdrucks gelangt ein Tupel in die Zielrelation. • Vergleichsoperatoren (<,>,=,<>, …) • logische Operatoren (AND, OR, NOT) • IN-Operator • BETWEEN-Operator • LIKE-Operator • NULL-Operator • Zur Prioritätssteuerung sind Klammern notwendig

  9. Beispiele zur Selection • SELECT * FROM MITARBEITER WHERE Gehalt > 5000; • SELECT * FROM MITARBEITER WHERE (ABTNR = 1) AND (Gehalt < 4000); • SELECT * FROM MITARBEITER WHERE ABTNR in (1, 3, 7); -> alle Mitarbeiter der Abteilung 1, 3 und 7.

  10. Beispiele zur Selection • SELECT * FROM MITARBEITER WHERE Gehalt BETWEEN 3000 AND 5000; • SELECT * FROM MITARBEITER WHERE (Gehalt >= 3000) AND (Gehalt <= 5000); • SELECT * FROM ABT WHERE Abt-Leiter IS NULL; -> alle Abteilungen ohne Abteilungsleiter.

  11. Maskierungsmöglichkeiten • Nach LIKE stehen Maskierungsmöglichkeiten zur Verfügung. • ? für ein einzelnes Zeichen • * für beliebig viele Zeichen • Beispiel: • SELECT * FROM MITARBEITER WHERE Name LIKE ‘M*‘; • SELECT * FROM MITARBEITER WHERE Name LIKE ‘?e*‘;

  12. Der SELECT-Befehl mit Operatoren • Bei Selektion und Projektion können neu berechnete Attribute hinzugefügt werden. • Zum Beispiel: • SELECT MNR, Name, Vorname, 14*Gehalt AS Jahresgehalt FROM MITARBEITER;

  13. Sortierung nach Tupeln • Mit ASC (Default) und DESC können Tupel nach Attributen sortiert werden. • Beispiel: • SELECT * FROM MITARBEITER ORDER BY Name DESC; • SELECT * FROM MITARBEITER ORDER BY ABTNR, Name DESC;

  14. Geschachtelte Unterabfragenim WHERE-Teil • SELECT … SELECT … SELECT … • Wesentliche Operatoren in Unterabfragen sind: • ein Vergleichsoperator • ein IN-Operator • ein ANY- bzw. ALL-Operator • der EXISTS-Operator

  15. Geschachtelte Unterabfragenim WHERE-Teil • Vergleichsoperator kann nur angewandt werden, wenn die Unterabfrage einen einzigen Wert ausgibt. • SELECT * FROM MITARBEITER WHERE Gehalt > (SELECT Gehalt FROM MITARBEITER WHERE MNR = 10); • SELECT * FROM MITARBEITER WHERE Gehalt > (SELECT Gehalt FROM MITARBEITER WHERE NAME = ‘Meyer‘); Gibt es mehrere Meyer mit verschiedenen Gehältern kann der Vergleich nicht mehr sinnvoll bearbeitet werden.

  16. Geschachtelte Unterabfragenim WHERE-Teil • Beispiel: Gesucht sind alle Mitarbeiter die Abteilungsleiter sind. • SELECT * FROM MITARBEITER WHERE MNR IS (SELECT AbtLeiter FROM ABT);

  17. ANY- und ALL-Operatoren • Bilden prädikatenlogische Quantoren ab • ANY entspricht „es existiert“ • ALL entspricht „für alle“ • SELECT * FROM MITARBEITER WHERE Gehalt < ANY (SELECT Gehalt FROM MITARBEITER); Anm.: Gehalt muss kleiner sein als irgendein Gehalt der Mitarbeiter-Relation. „> ALL“ würde hingegen eine leere Tabelle wiedergeben.

  18. ANY- und ALL-Operatoren • Gesucht sind alle Mitarbeiter der Abteilung 1, die mehr verdienen als die Mitarbeiter der Abteilung 2. • SELECT * FROM MITARBEITER WHERE (ABTNR = 1) AND (Gehalt > ALL (SELECT Gehalt FROM MITARBEITER WHERE ABTNR = 2));

  19. Gruppierungen • Tupel werden nach bestimmten Kriterien gruppiert um für jede Gruppe verrechnete Daten zu bestimmen. • Beispiel: Pro Abteilungsnummer soll Anzahl der Mitarbeiter und das Durchschnittsgehalt ausgegeben werden. • SELECT ABTNR; Name, COUNT (*) As Mitarbeiteranzahl FROM Mitarbeiter GROUP BY ABTNR;

  20. Gruppierungen • Folgende Aggregatfunktionen stehen zur Verfügung: • COUNT (*) Anzahl der Tupel in einer Gruppe • COUNT (<Attr>) Attributwert nicht Null • MIN (<Attr>) Minimum des Attributs in der Gruppe • Max (<Attr>) Maximum des Attributs in der Gruppe • SUM (<Attr>) Summe des Attributs • AVG (<Attr>) Mittelwert des Attributs • …

  21. Beispiele zu Gruppierungen • Wieviele Std. wurden pro PRNR in PRARBEIT abgerechnet? SELECT PRNR, SUM (Std) AS Stundensumme FROM PRARBEIT GROUP BY ABTNR; • Welche Abteilungen haben mehr als 5 Mitarbeiter, Ergebnis nach ABTNR: • SELECT ABTNR, COUNT (MNR) AS Mitarbeiteranzahl FROM Mitarbeiter GROUP BY ABTNR HAVING COUNT (MNR) > 5 ORDER BY ABTNR; • Wieviele Mitarbeiter gibt es und wie hoch ist ihr Durchschnittsgehalt: SELECT COUNT (*) AS Anzahl, AVG (Gehalt) AS Durchschnittsgehalt FROM Mitarbeiter;

  22. Joins Auswahl von Tupelteilen aus mehreren Relationen. • Beispiel: Mitarbeiterliste mit Namen des Mitarbeiters (MITARBEITER) und Namen der Abteilung (ABT). • SELECT MNR; Name, Vorname, AbtName FROM MITARBEITER, ABT WHERE MITARBEITER.ABTNR = ABT.ABTNR; Relationenname wird vorangestellt um Verwechslungen zu vermeiden.

  23. Korrelationsnamen (Aliase) • MITARBEITER = (MNR, Name, Vorname, Gehalt, AbtNr) • QUALI = (MNR, LNR, Qualifikation) • PRARBEIT = (MNR, PNR, LNR, Std) • PROJ = (PRNR, PrBez) • ABT = (AbtNr, AbtName, AbtLeiter) SELECT M.MNR, M.Name, M.Vorname, A.AbtName FROM MITARBEITER AS M, ABT AS A WHERE M.ABTNR = A.ABTNR; SELECT M.*, A.AbtName FROM MITARBEITER AS M, ABT AS A WHERE M.ABTNR = A.ABTNR; Ein Aliasname wird bestimmt.

  24. Korrelierte Unterabfragen • Unterabfrage hat einen Bezug (Korrelation) zum übergeordneten SQL-Ausdruck. • SELECT * FROM MITARBEITER M1 WHERE EXISTS (SELECT Name FROM MITARBEITER M2 WHERE (M1.Name = M2.Name) AND (M2.MNR <> M1.MNR));

  25. Unions • Sind strukturvergleichbare Vereinigungen von SQL-Abfragen. • MITARBEITER = (MNR, Name, Vorname, Gehalt, AbtNr) • QUALI = (MNR, LNR, Qualifikation) • PRARBEIT = (MNR, PNR, LNR, Std) • PROJ = (PRNR, PrBez) • ABT = (AbtNr, AbtName, AbtLeiter) • Beispiel: Alle Abteilungsnamen Projektbezeichnungen sollen in einem Attribut ausgegeben werden: SELECT Abtname AS Name FROM ABT UNION SELECT PrBez FROM PROJ;

  26. UNIONS • Alle MNR und PRNR sollen mit entsprechender Bezeichnung sortiert nach Nummern ausgegeben werden: • SELECT MNR AS Nummer, ‘MNR‘ AS ArtderNummer FROM MITARBEITER UNION SELECT PRNR, ‘Projektnummer‘ FROM PROJ ORDER BY Nummer;

More Related