# SQL
Select statement so viele informationen wie im endergebnis (im select wird beschrieben wie das endergebnis aussehen soll)
Select beginnt immer beim Ausführen mit dem From Statement
From statement baut temporär eine tabelle zur abfrage die aus allen tabellen besteht
tabellen werden gekreuzt
Where statement funktioniert auf der gekreuzten tablle (er sucht die zeilen wo das gesuchte geben ist und löscht den rest)
immer Tabelle.zeile auch bei mehreren abfragen aus einer tabelle
Count Befehl zählt die zeilen die Übrigbleiben7angegeben werden
Mit AS deklariert man abkürzungen/Bezeichner
DISTINCT sorgt dafür jedes ergebnis nur einmal
zwei bedingungen werden mit AND getrennt
Texte in ''
Bei Gleichdeutigkeit Tabelle.Spalte
Select "sichtbare daten" from aus daten where filter
## Aufgabe 1:
select Kunde.Nachname, Buch.Titel from Kunde, Buch where Kunde.id_ku = Buch.id_ku;
## Aufgabe 2:
select Kunde.Nachname, Kunde.Vorname from Buch, Kunde where Buch.Titel = 'Datenbanken' AND Buch.ID_KU = Kunde.ID_KU;
## Aufgabe 3:
select count (Buch.ID_KU) from Buch, Kunde where Buch.ID_KU = Kunde.ID_KU;
## Aufgabe 4:
select Kunde.Vorname, Kunde.Nachname, Buch.Titel from Buch, Kunde, vormerken Where Buch.ID_BU = vormerken.ID_BU AND Kunde.ID_KU = vormerken.ID_KU;
## Aufgabe 5:
select Kunde.Vorname, Kunde.Nachname from Kunde, Buch, vormerken Where vormerken.ID_KU = Kunde.ID_KU AND Buch.ID_BU = vormerken.ID_BU AND Buch.Titel = 'Datenbanken';
| ID_KU | Vorname | Nachname | Geburtsdatum | ID_BU | ISBN | Titel | ID_KU | ID_KU | ID_BU |
| ----- | ------- | -------- | ------------ | ----- | ----------- | --------------- | ----- | ----- | ----- |
| 1 | Eva | Klein | 1995-01-13 | 1 | 1-23456-001 | Leichter lachen | 2 | 1 | 2 |
| 1 | Eva | Klein | 1995-01-13 | 1 | 1-23456-001 | Leichter lachen | 2 | 4 | 1 |
| 1 | Eva | Klein | 1995-01-13 | 1 | 1-23456-001 | Leichter lachen | 2 | 4 | 2 |
| 1 | Eva | Klein | 1995-01-13 | 2 | 1-23456-001 | Datenbanken | 3 | 1 | 2 |
| 1 | Eva | Klein | 1995-01-13 | 2 | 1-23456-001 | Datenbanken | 3 | 4 | 1 |
| 1 | Eva | Klein | 1995-01-13 | 2 | 1-23456-001 | Datenbanken | 3 | 4 | 2 |
| 1 | Eva | Klein | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | | 1 | 2 |
| 1 | Eva | Klein | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | | 4 | 1 |
| 1 | Eva | Klein | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | | 4 | 2 |
| 1 | Eva | Klein | 1995-01-13 | 4 | 1-23456-001 | Haus und garten | 4 | 1 | 2 |
| 1 | Eva | Klein | 1995-01-13 | 4 | 1-23456-001 | Haus und garten | 4 | 4 | 1 |
| 1 | Eva | Klein | 1995-01-13 | 4 | 1-23456-001 | Haus und garten | 4 | 4 | 2 |
| 2 | Kai | Blei | 1995-01-13 | 1 | 1-23456-001 | Leichter lachen | 2 | 1 | 2 |
| 2 | Kai | Blei | 1995-01-13 | 1 | 1-23456-001 | Leichter lachen | 2 | 4 | 1 |
| 2 | Kai | Blei | 1995-01-13 | 1 | 1-23456-001 | Leichter lachen | 2 | 4 | 2 |
| 2 | Kai | Blei | 1995-01-13 | 2 | 1-23456-001 | Datenbanken | 3 | 1 | 2 |
| 2 | Kai | Blei | 1995-01-13 | 2 | 1-23456-001 | Datenbanken | 3 | 4 | 1 |
| 2 | Kai | Blei | 1995-01-13 | 2 | 1-23456-001 | Datenbanken | 3 | 4 | 2 |
| 2 | Kai | Blei | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | | 1 | 2 |
| 2 | Kai | Blei | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | | 4 | 1 |
| 2 | Kai | Blei | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | | 4 | 2 |
| 2 | Kai | Blei | 1995-01-13 | 4 | 1-23456-001 | Haus und garten | 4 | 1 | 2 |
| 2 | Kai | Blei | 1995-01-13 | 4 | 1-23456-001 | Haus und garten | 4 | 4 | 1 |
| 2 | Kai | Blei | 1995-01-13 | 4 | 1-23456-001 | Haus und garten | 4 | 4 | 2 |
| 4 | Ernst | Block | 1995-01-13 | 1 | 1-23456-001 | Leichter lachen | 2 | 1 | 2 |
| 4 | Ernst | Block | 1995-01-13 | 1 | 1-23456-001 | Leichter lachen | 2 | 4 | 1 |
| 4 | Ernst | Block | 1995-01-13 | 1 | 1-23456-001 | Leichter lachen | 2 | 4 | 2 |
| 4 | Ernst | Block | 1995-01-13 | 2 | 1-23456-001 | Datenbanken | 3 | 1 | 2 |
| 4 | Ernst | Block | 1995-01-13 | 2 | 1-23456-001 | Datenbanken | 3 | 4 | 1 |
| 4 | Ernst | Block | 1995-01-13 | 2 | 1-23456-001 | Datenbanken | 3 | 4 | 2 |
| 4 | Ernst | Block | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | | 1 | 2 |
| 4 | Ernst | Block | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | | 4 | 1 |
| 4 | Ernst | Block | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | | 4 | 2 |
| 4 | Ernst | Block | 1995-01-13 | 4 | 1-23456-001 | Haus und garten | 4 | 1 | 2 |
| 4 | Ernst | Block | 1995-01-13 | 4 | 1-23456-001 | Haus und garten | 4 | 4 | 1 |
| 4 | Ernst | Block | 1995-01-13 | 4 | 1-23456-001 | Haus und garten | 4 | 4 | 2 |
| ID_KU | Vorname | Nachname | Geburtsdatum | ID_BU | ISBN | Titel | ID_KU | ID_KU | ID_BU |
| ----- | ------- | -------- | ------------ | ----- | ----------- | --------------- | ----- | ----- | ----- |
| 1 | Eva | Klein | 1995-01-13 | 2 | 1-23456-001 | Datenbanken | 3 | 1 | 2 |
| 4 | Ernst | Block | 1995-01-13 | 2 | 1-23456-001 | Datenbanken | 3 | 4 | 2 |
## Aufgabe 6:
select DISTINCT Buch.Titel, Kunde.Nachname from Buch, Kunde Where Kunde.ID_KU = Buch.ID_KU OR Buch.ID_KU = NULL;
| ID_KU | Vorname | Nachname | Geburtsdatum | ID_BU | ISBN | Titel | ID_KU |
| ----- | ------- | -------- | ------------ | ----- | ----------- | --------------- | ----- |
| 1 | Eva | Klein | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | |
| 1 | Eva | Klein | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | |
| 2 | Kai | Blei | 1995-01-13 | 1 | 1-23456-001 | Leichter lachen | 2 |
| 2 | Kai | Blei | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | |
| 4 | Ernst | Block | 1995-01-13 | 3 | 1-23456-001 | Finazenraten | |
| 4 | Ernst | Block | 1995-01-13 | 4 | 1-23456-001 | Haus und garten | 4 |
1. Buch Inner JOIN Kunde ON B.ID_KU=Kunde.ID_KU
2. Kunde.ID_KU = Buch.ID_KU
3. Buch Left JOIN Kunde ON B.ID_KU=Kunde.ID_KU
SELECT B.Titel, K.Vorname, K.Nachname
FROM Buch LEFT JOIN Kunde ON B.ID_KU = K.ID_KU;
from Buch, Kunde
Left Join Alles Linke Tabelle wird übernommen
Right Join Alles Rechte Tabelle wird übernommen
Inner Join Alles wird übernommen
## Aufgabe 7:
SELECT Kunde.Nachname, Buch.Titel FROM Kunde LEFT JOIN ON Kunde.ID_KU = Buch.ID_KU;
## Aufgabe 8:
SELECT Kunde.Nachname, Buch.Titel FROM Kunden LEFT JOIN ON Kunde.ID_KU = Buch.ID_KU Where K.Nachname Between 'B' and 'O';
## Aufgabe 9:
SELECT Kunde.Nachname, Buch.Titel FROM (Buch LEFT JOIN vormerken ON Buch.ID_BU = vormerken.ID_BU) LEFT JOIN Kunden ON Kunden.ID_KU ON vormerken.ID_KU;
| ID_BU | ISBN | Titel | ID_KU | v ID_KU | v ID_BU |
| ----- | ----------- | --------------- | ----- | ------- | ------- |
| 1 | 1-23456-001 | Leichter Lachen | 2 | 4 | 1 |
| 2 | 1111 | Datenbanken | 3 | 1 | 2 |
| 2 | 1111 | Datenbanken | 3 | 4 | 2 |
| 3 | 1567 | Finanzratgeber | | | |
| 4 | 1234 | Haus Und Garten | 4 | | |
| ID_BU | ISBN | Titel | ID_KU | v ID_KU | v ID_BU |
| ----- | ----------- | --------------- | ----- | ------- | ------- |
| 1 | 1-23456-001 | Leichter Lachen | 2 | 4 | 1 |
| 2 | 1111 | Datenbanken | 3 | 1 | 2 |
| 2 | 1111 | Datenbanken | 3 | 4 | 2 |
| 3 | 1567 | Finanzratgeber | | NULL | |
| 4 | 1234 | Haus Und Garten | 4 | NULL | |
| ID_BU | ISBN | Titel | ID_KU | v ID_KU | v ID_BU | k ID_KU | Vorname | Nachname | Geburtsdatum |
| ----- | ----------- | --------------- | ----- | ------- | ------- | ------- | ------- | -------- | ------------ |
| 1 | 1-23456-001 | Leichter Lachen | 2 | 4 | 1 | 4 | Ernst | Block | 1988-02-02 |
| 2 | 1111 | Datenbanken | 3 | 1 | 2 | 1 | Eva | Klein | 1995-01-13 |
| 2 | 1111 | Datenbanken | 3 | 4 | 2 | 4 | Ernst | Block | 1988-02-02 |
| 3 | 1567 | Finanzratgeber | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| 4 | 1234 | Haus und Garten | 4 | NULL | NULL | NULL | NULL | NULL | NULL |
Alle daten die gebraucht werden entweder Kreutzprodukten oder Joinen und dann welche where bedingungen
Join immer wenn komplett erwähnt wird.
## Aufgabe 10:
SELECT Kunde.Nachname, Buch.Titel from Buch, Kunde, vormerken Where Kunde.ID_KU = Buch.ID_KU AND BUCH.ID_KU = vormerken.ID_KU;
SELECT Kunde.Nachname, Buch.Titel from Buch, Kunde, vormerken Where ((Kunde.ID_KU = Buch.ID_KU AND Buch.Titel = Haus und Garten) And Buch.ID_KU = vormerken.ID_KU);
Select Buch.Titel, Kunde.Nachname from Buch, (SELECT Kunde.Nachname, Buch.Titel, vormerken.ID_BU from Buch, Kunde, vormerken Where ((Kunde.ID_KU = Buch.ID_KU AND Buch.Titel = Haus und Garten) And Buch.ID_KU = vormerken.ID_KU)) As Query Where Query.ID_BU = Buch.ID_BU;
Abfrage in Abfrage
Wichtig die Abfrage in der Abfrage einen Namen geben, und dort auch deklarieren was später gebraucht wird.
Select anfragen im inneren werden zuerst gelöst
Group by nach dem where
bei Group By nur noch so was wie (Rechenfunktionen) gruppiert gleiche sachen