MySQL-HM-Abfragen Flashcards
Operationen für Auswertungs- und Abfrageoptionen
Projektion * Auswahl von Spalten Selektion * Auswahl bestimmter Zeilen nach Kriterien Join * Zusammenfassen mehrerer Tabellen
select feldname [Projektion]
from tabellenname [Join]
where bedingung; [Selektion]
Projektion
* es sollen nur bestimmte Felder aus der Tabelle angezeigt werden select feldname1, feldname2from tabellenname;
Selektion
* es sollen nur Datensätze angezeigt werden, die auf eine betimmte Bedingung zutreffen select *from tabellennamewhere feldname = “bedingung”;
Join
* zeigt Werte aus zwei oder mehr Tabellen in einer Ergebnistabelle an * Verbindung wird meist über Primary und Foreign Keys hergestellt
alternativer Join
select *from tabellenname1, tabellenname2where feldname = bedingung; * Verarbeitung langsamer, da zuerst kartesisches Produkt gebildet wrid und dann die Bedingung überprüft wird
Inner Join
* zeigt Datensätze sooft an, wie in der anderen Tabelle verwandte Datensätze vorhanden sind
select *from tabellenname1 [inner] join tabellenname2on tabellenname1.primärschlüssel = tabellenname2.fremdschlüssel;
Jion über mehrere Tabellen
select *from tabellenname1 join tabellenname2 on tabellenname1.pk = tabellenname2.fk join tabellenname3 on tabellenname2.pk = tabellenname3.fk;
Left [Outer] Join
zeigt Datensätze der rechten Tabelle sooft an, wie in der linken Tabelle verwandte Datensätze vorhanden sind jeder Datensatz der linken Tabelle wird mindestens einmal angezeigt
select * from tabellenname1 left [outer] join tabellenname2 on tabellenname1.pk = tabellenname2.fk
Right [Outer] Join
* zeigt Datensätze der rechten Tabelle sooft an, wie in der linken Tabelle verwandte Datensätze vorhanden sind * jeder Datensatz der rechten Tabelle wird mindestens einmal angezeigt
select * from tabellenname1 right [outer] join tabellenname2 on tabellenname1.pk = tabellenname2.fk
gleiche Spaltennamen / Alias
* werden in verschiedenen Tabellen die gleichen Spaltenbezeichnungen verwendet muss der Tabellenname angegeben werden. * Alias kürzt Tabellenname ab
select t.feldname, t.feldname2, t.feldname3 from tabellenname1 [as] t join tabellenname2 [as] t2on t.pk = t2.fk;
Self Join
* Verknüpfung einer Tabelle mit sich selbst * zusätzlicher Feldname für die Projektion muss angegeben werden
Anwendungsbeispiel 1 (Vorgesetzen anzeigen):
select ma1.persnr, ma1.vorname, ma1.nachname, ma2.vorname v_vorn, ma2.nachname v_nachnfrom mitarbeiter ma1 join mitarbeiter ma2 on ma1.vorgesetzter = ma2.persnr;
Anwendungsbeispiel 2 (Duplikate finden):
select *from kunde as a join kunde as bon a.kdnr != b.kdnrwhere a.vorname = b.vornameand a.nachname = b.nachnameand a.geburtsdatum = b.geburtsdatum;
Cross Join
* berechnet das karthesische Produkt => Datensatz aus jeder Tabelle wird angezeigt * belastet u. U. Datenbankserver und soll nicht verwendet werden
select * from tabellennamejoin tabellenname1join tabellenname2join tabellenname3;
Projektion, Selektion, Join in einem Statement
select feldname1, feldname2, feldname3 from tabellenname join tabellenname2 on tabellenname.pk = tabellenname2.fk where feldname3 = bedingung;
distinct
* zeigt jeden Datensatz nur einmal an, egal wie oft er im Join vorkommt
select distinct feldname1, feldname2, feldname3 from tabellenname join tabellenname2on tabellename.pk = tabellenname.fk;
and und [x]or
and
select feldname1, feldname2, feldname3 from tabellennamewhere feldname1 = wert and feldname2 = wert;
[x]or
select feldname1, feldname2, feldname3 from tabellennamewhere feldname1 = wert[x]or feldname2 = wert;