[[SQL-Befehle]] <- [[..:..:Informatik-Buch:]], [[..:Datenbank:]] -> [[WWW]] ====== Datenbankabfragen ====== Werden Abfragen an eine Datenbanksoftware gestellt, entstehen die Ergebnisse nicht durch schlichtes Filtern von Daten. Es können neue Relationen entstehen. Grundsätzliche Syntax einer Abfrage: SELECT [ALL|DISTINCT] FROM [WHERE ] [GROUP BY ] [HAVING ] ===== Projektion mit SELECT ===== πAutor, Titel(Buch) wird realisiert durch: SELECT Autor, Titel FROM Buch; Bestimmte Attribute (hier: Autor und Titel) einer Relation werden ausgewählt und als neue Relation verwendet. ===== Selektion mit WHERE ===== σAutor="Helmut Kopka"(Buch) wird realisiert durch: SELECT * FROM Buch WHERE (Autor="Helmut Kopka"); Bestimmte Tupel (hier: Alle Bücher von Helmut Kopka) einer Relation werden herausgefiltert. ===== kartesisches Produkt / Kombination von Relationen ===== ''Buch''✘''Leser'' wird realisiert durch: SELECT * FROM Buch, Leser; Das Ergebnis ist ohne zusätzliche Filterung nicht wirklich sinnvoll, da jedes Buch zusammen mit jedem Leser genau einmal auftaucht. D.h., es gibt Anzahl(Buch) * Anzahl(Leser) Tupel! ===== INNER JOIN ===== Relationen mit einem gemeinsamen Attribut lassen sich vereinigen. Buch ⊗ Ausleihe wird realisiert durch: SELECT * FROM Buch INNER JOIN Ausleihe ON Buch.ID = Ausleihe.BuchID; Die Attribute der Relationen ''Buch'' und ''Ausleihe'' werden kombiniert, sodass eine neue Relation entsteht. Diese neue Relation hat sämtliche Attribute von ''Buch'' und von ''Ausleihe'', wobei das Attribut ''ID'' nur einmal eingefügt wird, da beide IDs gleich sein müssen. In der neuen Relation sind also nur Bücher, die auch ausgeliehen sind. ===== Vereinigung, Durchschnitt, Differenz =====