SQL SELECT

Mit dem Befehl SELECT kannst du dir eine oder mehrere bestimmte Spalten einer angelegten Tabelle ausgeben lassen. Wenn du willst kannst du dir auch alle Spalten der Tabelle ausgeben lassen. Verwende hierfür einfach folgenden Befehl in deinem SQL Developer:

SELECT spalte1(, spalte2, …) FROM tabellenname;

Wenn du alle Spalten deiner Tabelle ansehen möchtest gib einfach folgenden Befehl ein:

SELECT * FROM tabellenname;

SQL WHERE

Für den Befehl WHERE benötigst du auch den Befehl SELECT. Mit WHERE legst du in den gesuchten Spalten Bedingungen fest. Es werden dir bei der Ausgabe dann nur die Zeilen der ausgewählten Spalte angezeigt, in der die festgelegte Bedingung auch zutrifft. Zur Veranschaulichung ein kleines Beispiel. Du hast eine Tabelle mit den Taschengeldern deiner Freunde angelegt und möchtest nun wissen, wer von deinen Freunden mehr Taschengeld bekommt als Du. Wir gehen unserem Beispiel davon aus, dass du ein Taschengeld von 20€ im Monat bekommst. Nun der Befehl um herauszufinden wer mehr Taschengeld als Du bekommt:

SELECT NAME, TASCHENGELD FROM TAB1 WHERE TASCHENGELD < 20;

Nun könnte die Ausgabe folgendermaßen aussehen:

NAMETASCHENGELD
Max Mustermann40€
Melanie Mehlig22€

Nun liefern wir Dir natürlich noch den allgemeinen Befehl für WHERE:

SELECT spalte1 (,spalte2, …) FROM tabellenname WHERE Bedingung;

Wenn du dich nun fragst, wie du in SQL mehrere Bedingungen miteinander verknüpfen kannst, wollen wir die Antwort liefern. Möglich wird dies mit den logischen Operatoren AND oder OR. Du musst diese logischen Operatoren einfach nur hinter deine erste Bedingung anhängen und schon ist Platz für eine zweite Bedingung. Mit NOT kannst du die Bedingung negieren. Hier die passenden Befehle:

SELECT spalte1 (,spalte2, …) FROM tabellenname WHERE Bedingung1 AND Bedingung2;

SELECT spalte1 (,spalte2, …) FROM tabellenname WHERE Bedingung1 OR Bedingung2;

SELECT spalte1 (,spalte2, …) FROM tabellenname WHERE NOT Bedingung;

Wenn du mehrere logische Operatoren mischen möchtest für deine Abfragen dann liefern wir dir hier ein passendes Beispiel:

SELECT spalte1 (,spalte2, …) FROM tabellenname WHERE NOT (Bedingung1 AND Bedingung2);

SQL IN

Mit dem Befehl IN machst du im Grunde genommen genau das gleiche wie mit WHERE wobei du nicht nach bestimmten Bedingungen in den Spalten suchst, sondern genau weiß, was du suchen möchtest. Die SQL Syntax sieht hier im Allgemeinen so aus:

SELECT spalte1 (,spalte2, …) FROM tabellenname WHERE spalte1 IN(Wert1, Wert2, …)

Der Befehl mit derselben Ausgabe mit WHERE ohne IN würde dann so aussehen:

SELECT spalte1 (,spalte2, …) FROM tabellenname WHERE spalte1 = Wert1;

SQL BETWEEN

Der Befehl BETWEEN gibt den Bereich zwischen zwei definierten Werten aus. Im Gegensatz dazu kannst du mit dem Befehl IN bestimmte einzelne Werte selektieren. Deine Abfrage mit BETWEEN ist somit nicht auf einen einzelnen oder mehrere Werte begrenzt, sondern du kannst ganze Wertebereiche mit diesem Befehl abfragen. Hier die allgemeine SQL Syntax für BETWEEN:

SELECT spalte1 (,spalte2, …) FROM tabellenname WHERE spalte1 BETWEEN Wert1 AND Wert2;

Hier ein anschauliches Beispiel, dass dir den Unterschied zwischen BETWEEN und IN demonstrieren soll:

Tabellenname: TAB1

NameTaschengeld
Max Mustermann40€
Melanie Mehlig22€
Horst Rübenkopf35€
DU20€
Lukas Test30€

Nun der Befehl mit IN:

SELECT * FROM TAB1 WHERE Taschengeld IN(20,40);

Ausgabe:

NameTaschengeld
Max Mustermann40€
DU20€

Nun der Befehl mit BETWEEN:

SELECT * FROM TAB1 WHERE Taschengeld BETWEEN 29 AND 41;

Ausgabe:

NameTaschengeld
Max Mustermann40€
Horst Rübenkopf35€
Lukas Test30€

SQL LIKE

Mit dem Befehl LIKE kannst du in SQL Abfragen starten, die nach einem spezifischen Muster suchen, das können Zeichenketten sein aber auch Zahlen. Die SQL Syntax für LIKE sieht hierbei folgendermaßen aus:

SELECT spalte1(, spalte2, …) FROM tabellenname WHERE spalte1 LIKE festgelegtes_Muster

Du fragst dich nun sicher wie ein solches Muster aussehen kann. Wir werden deine Frage nun beantworten:

  • %SE% → sucht in der Spalte nach allen Wörtern die „SE“ oder „se“ enthalten.
  • %SE → sucht alle Wörter die mit „se“ enden.
  • SE% → sucht alle Wörter die mit „se“ anfangen.
  • ‘B_N‘ –> sucht alle Zeichenketten, die mit B beginnen und dann ein weiteres beliebiges Zeichen haben („_“) und dann mit N enden. Wenn jedoch zwei oder mehr Zeichen zwischen B und N sind gibt es keinen Treffer.

Nun ein erneutes Beispiel zur Verwendung dieser SQl Syntax. Wir werden uns wieder auf das Taschengeldbeispiel konzentrieren:

Tabellenname: TAB1

Name Taschengeld
Max Mustermann 40€
Melanie Mehlig 22€
Horst Rübenkopf 35€
DU 20€
Lukas Test 30€

SQL * FROM TAB1 WHERE Name LIKE ‘M%’;

Ausgabe:

Name Taschengeld
Max Mustermann 40€
Melanie Mehlig 22€

SQL COUNT

Mit dem SQL COUNT Befehl kannst du Zeilen Zählen. Du kannst den COUNT Befehl beliebig mit Bedingungen oder logischen Operatoren verknüpfen um deine Zählung zu filtern. Hier ist der allgemeine Befehl für COUNT:

SELECT COUNT spalte1(, spalte2, …) FROM tabellenname (WHERE Bedingung);

Nun werden wir dir an unserem Beispiel einen COUNT Befehl demonstrieren. Wir werden hierzu alle Namen die wir angelegt haben zählen aus der Tabelle TAB1.

SQL COUNT Name FROM TAB1;

Ausgabe:

COUNT (NAME)
5

SQL ORDER BY

Mit dem Befehl ORDER BY kannst du deine Ausgabe in SQL besser organisieren, indem du sie nach Spaltenname alphabetisch oder nach Zahlenwert sortieren kannst. Mit dem ORDER By kannst du dir also einen besseren Überblick über deine Ausgegebenen Daten verschaffen und ggf. viel Zeit sparen. Nun aber die allgemeine Syntax für ORDER BY Befehle in SQL:

SELECT spalte1(, spalte2, …) FROM tabellenname (WHERE Bedingung) ORDER BY spalte1 [ASC,DESC];

Du fragst dich nun sicher was ASC und DESC bedeuten. Wenn du nach ORDER BY spalte1 ASC verwendest werden die ausgegebenen Ergebnisse in aufsteigender Reihenfolge präsentiert. Bei DESC geschieht dann das Gegenteil. Die Ergebnisse werden in absteigender Reihenfolge ausgegeben.

Aber nun werden wir dir alles durch unser Taschengeld Beispiel verdeutlichen:

Tabellenname: TAB1:

Name Taschengeld
Max Mustermann 40
Melanie Mehlig 22
Horst Rübenkopf 35
DU 20
Lukas Test 30

Nun die Befehle:

  1. SELECT * FROM TAB1 ORDER BY Taschengeld ASC;
  2. SELECT * FROM TAB1 ORDER BY Taschengeld DESC;

Ausgabe:

1.

Name Taschengeld
DU 20
Melanie Mehlig 22
Lukas Test 30
Horst Rübenkopf 35
Max Mustermann 40

2.

Name Taschengeld
Max Mustermann 40
Horst Rübenkopf 35
Lukas Test 30
Melanie Mehlig 22
DU 20

SQL AVG, MAX, MIN, SUM

Den Befehl COUNT haben wir dir ja schon gezeigt nun wollen wir dir noch weitere Rechenoperationen zeigen die du mit SQL bei einer beliebigen Abfrage tätigen kannst. Mit AVG kannst du den Average (Durchschnitt) einer Spalte berechnen. Mit MIN und MAX kannst du das globale Minimum und Maximum einer Spalte berechnen. Mit SUM kannst du alle Werte in einer Spalte summieren. Nun der allgemeine Befehl für diese Rechenoperationen in SQL:

SELECT AVG/MAX/MIN/SUM (spalte1) FROM tabellenname;

Natürlich lässt sich dieser Befehl wieder auf unser Taschengeld Beispiel übertragen. Wir werden im Folgenden die Taschengelder aller angelegten Namen in der Tabelle TAB1 summieren:

Tabellenname: TAB1:

Name Taschengeld
Max Mustermann 40
Melanie Mehlig 22
Horst Rübenkopf 35
DU 20
Lukas Test 30

Befehl: SELECT SUM(Taschengeld) FROM TAB1;

Ausgabe:

SUM(Taschengeld)
147

SQL JOIN

Mit JOIN ist es möglich mehrere Datentabellen miteinander zu verknüpfen und abzugleichen auf bestimmte Übereinstimmungen. Die Voraussetzung für den JOIN Befehl ist natürlich eine konkrete Verbindung zwischen den Tabellen die mit einer Abfrage angesprochen werden sollen. Wenn man also noch nicht weiß welche Tabellenspalten man JOINen kann sollte man erst eine Analyse durchführen um Übereinstimmungen finden zu können. Aus dieser Analyse kann man dann den JOIN Befehl entwickeln. Gehen wir aber nun davon aus du weißt, was du JOINen möchtest. Nun ist es wichtig zu wissen welche Art von JOIN du durchführen möchtest. Im Folgenden werden Dir die wichtigsten JOIN Befehle an die Hand gegeben mit einer Erklärung.

SQL OUTER JOIN

Der OUTER JOIN differenziert stark zwischen Haupttabelle und Nebentabelle. Man muss also wissen aus welcher Tabelle man sämtliche Reihen in die Ausgabe übernehmen möchte. Die andere Tabelle ist dann logischerweise die Nebentabelle, da aus ihr alle Reihen in die Ausgabe gelangen, die mit den Reihen der Haupttabelle Gleichheit aufweisen. Nun muss nur noch entschieden werden welche Art von OUTER JOIN man durchführen möchte. Im Folgenden werden wir dir zeigen wie Du die OUTER JOIN Befehle benutzt:

Folgende Tabellen sollen hierbei als Beispiel dienen:

Tabellenname: TAB1

Fahrzeughalter Kennzeichen
Max Mustermann S-RS-1000
Melanie Mehlig S-MM-2001
Horst Rübenkopf S-HR-1212
Lukas Test S-LT-262

Tabellenname: TAB2

Kennzeichen Fahrzeug
S-RS-1000 Audi R8
S-MM-2001 Citroen C1
S-HR-1212 Lada 4×4
S-LT-262 Audi A1

SQL LEFT JOIN

Bei einem LEFT JOIN ist wie der Name schon sagt die linke Tabelle die Haupttabelle und die rechte Tabelle dann die Nebentabelle/Nachgeordnete Tabelle. Nun wollen wir TAB1 und TAB2 verjoinen mit einem LEFT JOIN. Vergleichen wollen wir die Spalten Kennzeichen von TAB1 und TAB2. Nun der allgemeine Befehl für einen LEFT JOIN:

SELECT spalte1(, spalte2, …) FROM tabellenname LEFT JOIN tabellenname2 ON tabellenname.spalte1 = tabellenname2.spalte1;

Nun zu dem KFZ Beispiel für das wir TAB1 und TAB2 angelegt haben. Der SQL Befehl für unsere Abfrage lautet:

SELECT * FROM TAB1 LEFT JOIN TAB2 ON TAB1.kennzeichen = TAB2.kennzeichen;

Ausgabe:

Fahrzeughalter Kennzeichen Kennzeichen Fahrzeug
Max Mustermann S-RS-1000 S-RS-1000 Audi R8
Melanie Mehlig S-MM-2001 S-MM-2001 Citroen C1
Horst Rübenkopf S-HR-1212 S-HR-1212 Lada 4×4
Lukas Test S-LT-262 S-LT-262 Audi A1

SQL RIGHT JOIN

Ein RIGHT JOIN funktioniert im Grunde genommen genau andersherum wie ein LEFT JOIN. Der RIGHT JOIN nimmt die rechte Tabelle als Haupttabelle und die linke Tabelle als Nebentabelle. Hier der allgemeine Befehl für einen RIGHT JOIN:

SELECT spalte1(, spalte2, …) FROM tabellenname RIGHT JOIN tabellenname2 ON tabellenname.spalte1 = tabellenname2.spalte1;

Nun zu unserem KFZ Beispiel, das wir angelegt haben. Um dir den Unterschied zwischen LEFT JOIN und RIGHT JOIN verständlicher zu machen ergänzen wir TAB1 und Tab2 um ein paar Angaben:

Tabelle: TAB1

Fahrzeughalter Kennzeichen
Max Mustermann S-RS-1000
Melanie Mehlig S-MM-2001
Horst Rübenkopf S-HR-1212
Lukas Test S-LT-262
(null) –> kein Wert S-PS-200
Ömer Lustig(null)

Tabelle: TAB2

Kennzeichen Fahrzeug
S-RS-1000 Audi R8
S-MM-2001 Citroen C1
S-HR-1212 Lada 4×4
S-LT-262 Audi A1
S-RR-1 Mini ONE
S-PS-200 BMW X3
(null)BMW M3

Nun haben wir die Tabellen TAB1 und TAB2 ergänzt und können diese nun erneut verjoinen:

SELECT * FROM TAB1 LEFT JOIN TAB2 ON TAB1.kennzeichen = TAB2.kennzeichen;

Ausgabe:

Fahrzeughalter Kennzeichen Kennzeichen Fahrzeug
Max Mustermann S-RS-1000 S-RS-1000 Audi R8
Melanie Mehlig S-MM-2001 S-MM-2001 Citroen C1
Horst Rübenkopf S-HR-1212 S-HR-1212 Lada 4×4
Lukas Test S-LT-262 S-LT-262 Audi A1
(null) S-PS-200 S-PS-200 BMW X3
Ömer Lustig(null)(null)(null)

Nun der RIGHT JOIN:

SELECT * FROM TAB1 RIGHT JOIN TAB2 ON TAB1.kennzeichen = TAB2.kennzeichen;

Ausgabe:

Fahrzeughalter Kennzeichen Kennzeichen Fahrzeug
Max Mustermann S-RS-1000 S-RS-1000 Audi R8
Melanie Mehlig S-MM-2001 S-MM-2001 Citroen C1
Horst Rübenkopf S-HR-1212 S-HR-1212 Lada 4×4
Lukas Test S-LT-262 S-LT-262 Audi A1
(null) S-PS-200 S-PS-200 BMW X3
(null) (null) S-RR-1 Mini ONE
(null)(null)(null)BMW M3

Du erkennst nun einen klaren Unterschied zwischen beiden Arten die KFZ Tabellen TAB1 und TAB abzufragen. Nun wird auch klar warum es wichtig ist im Voraus zu wissen welche die Tabelle bei der Abfrage die Haupttabelle sein soll und welche Tabelle die Nebentabelle sein soll. Darum ist es immer wichtig wie bereits erwähnt im Voraus eine JOIN Analyse durchzuführen.          

SQL FULL JOIN

Zu guter Letzt gibt es noch den FULL JOIN, der eine Kombination aus dem LEFT JOIN und RIGHT JOIN darstellt. Hier ist der allgemeine Befehl für den FULL JOIN unter SQL:

SELECT spalte1(, spalte2, …) FROM tabellenname FULL JOIN tabellenname2 ON tabellenname.spalte1 = tabellenname2.spalte1;

Nun zu dem KFZ Beispiel für das wir TAB1 und TAB2 angelegt haben. Der SQL Befehl für unsere Abfrage lautet:

SELECT * FROM TAB1 FULL JOIN TAB2 ON TAB1.kennzeichen = TAB2.kennzeichen;

Ausgabe:

Fahrzeughalter Kennzeichen Kennzeichen Fahrzeug
Max Mustermann S-RS-1000 S-RS-1000 Audi R8
Melanie Mehlig S-MM-2001 S-MM-2001 Citroen C1
Horst Rübenkopf S-HR-1212 S-HR-1212 Lada 4×4
Lukas Test S-LT-262 S-LT-262 Audi A1
(null) S-PS-200 S-PS-200 BMW X3
(null) (null) S-RR-1 Mini ONE
(null) (null) (null) BMW M3
Ömer Lustig (null) (null) (null)

Man kann wie im oberen Teil beobachten, dass der FULL JOIN unter SQL eine Kombination von LEFT-  und RIGHT JOIN ist. Bei der Abfrage werden jedoch auch alle Reihen mit keiner Deckung verjoint und somit unterscheidet sich der FULL JOIN dadurch ganz klar.

 

SQL INNER JOIN

Bei einem INNER JOIN werden nur Reihen angezeigt aus der geprüften Spalte, die auch in der anderen Tabellenspalte zu finden sind. Alle Spalten mit (null) werden nicht ausgegeben, somit ist der INNER JOIN das eigentlich das Gleiche wie ein FULL JOIN. Die beiden Befehle unterscheiden sich jedoch, da nur Felder mit 100 prozentiger Deckung angezeigt werden und nicht auch noch null Zeilen ausgegeben werden. Der allgemeine Befehl für einen INNER JOIN lautet:

SELECT spalte1(, spalte2, …) FROM tabellenname INNER JOIN tabellenname2 ON tabellenname.spalte1 = tabellenname2.spalte1;

Wenn du nun einen INNER JOIN für unser Beispiel ausführst, sieht der Befehl und die Ausgabe der Datensätze folgendermaßen aus:

SELECT * FROM TAB1 INNER JOIN TAB2 ON TAB1.kennzeichen = TAB2.kennzeichen;

Ausgabe:

Fahrzeughalter Kennzeichen Kennzeichen Fahrzeug
Max Mustermann S-RS-1000 S-RS-1000 Audi R8
Melanie Mehlig S-MM-2001 S-MM-2001 Citroen C1
Horst Rübenkopf S-HR-1212 S-HR-1212 Lada 4×4
Lukas Test S-LT-262 S-LT-262 Audi A1
(null) S-PS-200 S-PS-200 BMW X3