Spalten mit NULL

Werbung
SQL Programmierung
 Tino Reinsdorf
1 von 16
08.04.2017
Index
 Tino Reinsdorf
2 von 16
08.04.2017
Allgemein:
Um eine SQL-Abfrage zu erstellen muss man in Access dann auf Abfragen , eine neue
Abfrage eröffnen und dort dann auf SQL-Ansicht klicken. Die Groß und Kleinschreibung ist
bei den Befehlen sowie die Tabellen- und Spaltennamen egal. Es wird nur bei der
WHERE-Befehel auf die Groß und Kleinschreibung, bei der Konstanten unterschieden. Es
muss mindestens immer ein SELECT und FROM Anweißung vorhanden sein. Die ersten
Befehle, beziehen sich auf das Programm Access und der andere Teil auf Oracle. Wenn vor
der SELECT Funktion ein SQL> steht ist es Oracle ansonsten ist es Access. Bei manchen
Programmen muss auch als letztes Zeichen ein Semikolon stehen. Bei Access nicht. Ich habe
die Bezeichnungen unterschiedlich formatiert. Begriffe, die eingegeben werden müssen, sind
blau geschrieben. Variablen, wo der Name rein muss, wie die Spalte heißt, die Tabelle oder
sonstige Namen, sind kursiv geschrieben. Bei 2. Wörtern für eine Spaltenüberschrift z.B.
„Störung Anlage“ muss man in Access eine eckige Klammer schreiben. Es muss dann heißen:
„[Störung Anlage]“ bei anderen Programmen, kann es anders sein z.B. mit Unterstrich
„Störung_Anlage“ . Dies kommt auf das Programm an.
Suchen:
SELECT Spalte (Hier den Namen der Spalte angeben, das gezeigt werden soll mit Komma
trennen;* für alles Anzeigen.)
FROM Tabelle (Name der Tabelle, wo die Spalten von SELECT drin sind)
Wenn man mit Sterchen eingibt, nimmt das Programm die Reihenfolge der Spalten aus der
Tabelle. Wenn man sie einzeln aufzählt und sie mit Kommas trennt, kann man die Anordnung
der Spalten ändern.
Suchen ohne Wiedergabe von doppelten Datensätzen:
SELECT DISTINCT Spalte
FROM Tabelle
Der Befehl DISTINCT Spalte muss als ersten nach dem SELECT Befehl kommen. Danach,
können noch andere Spalten aufgeführt werden.
Gezielt nach einem Datensatz suchen:
SELECT Spalte
FROM Tabelle
WHERE Spalte (Variable) Vergleichsoperator (=,<,>,<>) „Kriterium“ (Konstante z.B. Zahl,
Buchstabe
Die Konstanten müssen immer in Anführungszeichen kommen! Zahlen können auch ohne
Anführungszeichen stehen, dabei muss aber die Spalte in der Tabelle als Zahl deklariert
worden sein.
Das Plus (+) Zeichen:
SELECT Spalte1, Spalte2, Spalte2 +0.15
FROM Tabelle
Jetzt werden die Spalten 1 und Spalte 2 angezeigt, wie sie in der Tabelle stehen. Die Spalte 3
wird berechnet (virtuell erstellt) und ausgegeben. Es werden also 3 Spalten angezeigt.
SELECT Spalte1+ Spalte2
FROM Tabelle
 Tino Reinsdorf
3 von 16
08.04.2017
Jetzt werden bei Zahlen die Zahlen addiert bei Wörter allerdings, werden die beiden Wörter
zusammen gefasst. (Spalte1Spalte2)
SELECT Spalte1+ „ , „+Spalte2
Dabei wird jetzt zwischen den Wörtern ein Komma gesetzt (Spalte1 , Spalte2). Das Komma
oder andere Zeichen müssen zwischen Anführungszeichen stehen und mit zwei Pluszeichen
verbunden werden.
Namen der Spalte umwandeln:
SELECT Spalte1 as Spalte2(oder eine Name)
FROM Tabelle
Dabei wird die Spalte 1 in Spalte 2 umbenannt. Bei Microsoft Access, muss ein as zwischen
der Spalte und den Namen stehen und es müssen eine Anführungszeichen stehen. Bei anderen
Programmen muss as nicht stehen aber vielleicht muss es in Anführungszeichen.
Andere Operatoren:
SELECT –Spalte1
Dabei werden die Werte in Spalte 1 genau entgegengesetzt. Was plus war wird minus usw. .
Mit den anderen Zeichen (*;/;%) Lässt sich ganz normal Rechnen.
Spalten mit NULL:
SELECT Spalten
FROM Tabelle
WHERE Spalte is NULL
Es werden alle Datensätze angezeigt, wo in der angegebenen Spalte der Wert Null, das heiß es
steht nichts drin, ist.
Größer, Kleiner:
WHERE Spalte < 0
Werden alle angezeigt, die in der Spalte kleiner 0 sind. Bei Buchstaben, gehen Groß- vor
Kleinbuchstaben.
LIKE:
WHERE Spalte LIKE „*Konstante“
Werden alle Wörter gesucht, die als ende die Konstante haben. Das Sternchen (*) ist dabei der
Platzhalter.
WHERE Spalte LIKE „C_“
Werden alle Wörter gesucht, wo der erste Buchstabe ein C ist und das genau Zwei
Buchstaben lang ist. Der _ ist ein Platzhalter für ein Zeichen.
 Tino Reinsdorf
4 von 16
08.04.2017
WHERE Spalte LIKE „6_6_“
Werden alle gesucht, wo der 1 und 3 Buchstabe eine 6 ist und die Zahl 4-Stellig ist.
AND:
SELECT Spalte
FROM Tabelle
WHERE 1.Bedinung
AND
2.Bedinung
Um ein Wahr zu erreichen bzw. um Daten zu bekommen, müssen beide Bedingungen
zutreffen, also wahr (True) sein.
ODER (OR):
SELECT Spalte
FROM Tabelle
WHERE 1.Bedinung
OR
2.Bedinung
Um ein Wahr bzw. Daten zu bekommen, muss mindestens eine Bedingung zutreffen , also ein
Wahr (True) sein. Es können auch beide zutreffen.
NOT:
SELECT Spalte
FROM Tabelle
WHERE Spalte NO LIKE “B*”
Es werden alle Datensätze angegeben, die nicht mit einem B beginnen. Geht auch mit
„WHERE Spalte IS NOT NULL“ es werden nun alle Daten wiedergegeben, die in der Spalte
keinen Nullwert haben, das heißt, wo was drin steht.
NOT NULL:
SELECT Spalte
FROM Tabelle
WHERE Spalte IS NOT NULL
Es werden nun alle Datensätze wieder gegeben, wo et5was drin steht, wo also keine
Leerzeichen drin sind.
UNION und UNION ALL:
SELECT Spalte
FROM Tabelle
UNION
SELECT Spalte
FROM Tabelle
Wenn jetzt eine Wert in beiden Tabellen steht, wird dieser Wert nur einmal wiedergegeben.
Es werden also keine Duplikate angezeigt.
 Tino Reinsdorf
5 von 16
08.04.2017
SELECT Spalte
FROM Tabelle
UNION ALL
SELECT Spalte
FROM Tabelle
Jetzt werden alle Werte in beiden Tabellen angezeigt, Egal, ob sie doppelt sind oder nicht.
IN und BEETWEEN:
SELECT Spalte
FROM Tabelle
WHERE Spalte IN (Konstante,Konstante,...)
Der IN Befehl, ist wie ein ODER-Befehl. Hier stehen die Bedingungen in den Klammern,
hinter dem IN-Befehl.
SELECT Spalte
FROM Tabelle
WHERE Spalte BETWEEN 1.Konstante (0.25) AND 2.Konstante (0.75)
Der BETWEEN-Befehl ist wie ein zwischen Befehl. Hier werden die Daten ausgegeben, die
zwischen der Ersten und Zweiten Konstante liegen. Hier werden alle Datensätze gezeigt, die
zwischen 0.25 und 0.75 stehen. Dabei werden auch die Daten angezeigt, die genau den Wert
einer Konstanten haben also die 0.25 oder 0.75 sind.
COUNT:
SELECT COUNT (*)
FROM Tabelle
WHERE Bedinung
Diese Abfrage ohne WHERE, gibt alle Datensätze an, die es in der angegebenen Spalte gibt.
Mit dem WHERE-Befehl, wird die Anzahl der Daten wiedergegeben, wo die Bedingung
zutrift.
SUM:
SELECT SUM (Spalte)
FROM Tabelle
Addiert alle Werte in der Tabelle. Es können auch mehrere Addiert werden z.B.
SELECT SUM (Spalte1) AS Spalte2,SUM (Spalte3) AS Spalte4,…
FROM Tabelle
Es werden nur mit Zahlen gearbeitet.
AVG:
SELECT AVG (Spalte)
FROM Tabelle
Berechnet den Mittelwert einer Spalte. Arbeitet nur mit Zahlen
 Tino Reinsdorf
6 von 16
08.04.2017
MAX:
SELECT MAX (Spalte)
FROM Tabelle
Jetzt wird der größte Wert in der Spalte wiedergegeben. Bei Namen bzw. Buchstaben, wird
der Wert angegeben, wo die Buchstabe(n) am „Z“ liegen.
MIN:
Entgegengesetzt von Max. Beide können kombiniert werden.
Die nächsten Begriffe, funktionieren nicht in Microsoft Access. Sie funktionieren auf jeden
fall in dem Programm Oracle 8. Sie können auch in anderen Programmen funktionieren bzw. ,
dort lauten die Befehle anderes.
LAST:
SELECT LAST (Spalte) AS Variable
FROM Tabelle
Es wird der letzte werd gesucht, der als eintrag drin ist und dieser wird ausgegeben.
VARIANCE:
SQL> SELECT VARIANCE (Spalte)
FROM Tabelle;
Liefert die Varianz oder Streuung einer Zufallsgröße. Die Varianz ist
das Quadrat der Standardabweichung oder mittleren quadratischen Abweichung. Diesen Wert
verwendet man vor allem in statistischen Berechnungen. Nur für Zahlen.
STDDEV:
SQL> SELECT STDDEV(Spalte)
FROM Tabelle;
Die Gruppenfunktion STDDEV berechnet die Standardabweichung einer Zahlenspalte.
Jetzt kommen Datums und Zeitangaben. Um diese Befehle erfolgreich anzuwenden, müssen
die Daten in der Tabelle das Format Datum (Date) haben.
ADD MONTHS:
SQL> SELECT Spalte
ADD_MONTHS (Spalte, Zahl)
FROM Tabelle;
Auf das Datum, was in der angegebenen Spalte hinter ADD_MONTHS steht, wird die Zahl
(1;2;3...) auf die Monate addiert.
Bsp:
ADD_MONTHS (01.02.00,3)
Jetzt wird auf das Datum (01.02.00), 3 Monate addiert. Das neue Datum lautet dann,
01.05.00 .
SQL>SELECT Spalte
 Tino Reinsdorf
7 von 16
08.04.2017
FROM Tabelle
WHERE ADD_MONTHS (Spalte1,3) > Spalte2
Es werden alle Datensätze angezeigt, wenn das Datum der ersten Spalte + 3 Monate größer
ist, als das Datum in der 2. Spalte.
SQL > SELECT Spalte1, Last_Day (Spalte1)
From Tabelle
Wird der letzte tag des Monats wiedergegeben, der in der Spalte drin steht.
SQL > SELECT LAST_DAY (’01.02.99’) Kein_Schaltjahr,
LAST_DAY (’01.02.00’) Schaltjahr
FROM Tabelle
Die Schaltjahre werden berücksichtigt. Das heißt, es wird das Datum 29.02.00
wiedergegeben. Das Datum steht aber so oft da, wie es Datensätze in der Spalte gibt.
SQL > SELECT DISTINCE LAST_DAY...
Mit dem Zusatz DISTINCE, wird nur noch ein Datensatz angezeigt.
MONTHS_BETWEEN:
SQL> SELECT MONTHS_BETWEEN (Spalte1, Spalte2)
FROM Tabelle
Es wird nun die Anzahl der Monate angegeben, die Zwischen dem Datum der Spalte 1 und 2 liegen.
Dabei wird ein Minuszeichen angezeigt. Damit dies Verschwindet, die Spalte 1 und 2 tauschen.
NEW_TIME:
SQL> SELECT NEW TIME (Datum, Zeitzone1, Zeitzohne 2)
FROM Tabelle
Damit kann man Zeiten an eine Zeitzone anpassen. Daylight steht für Sommerzeit.
 Tino Reinsdorf
8 von 16
08.04.2017
NEXT_DAY:
SQL> SELECT NEXT_DAY(Spalte, 'FREITAG')
FROM Tabelle;
Hier wird das Datum des nächsten Freitag, von dem Datum, was in der Spalte steht,
wiedergegeben. Es müssen immer die Namen der Tage rein, die man haben möchte.
SYSDATE:
SQL> SELECT DISTINCT SYSDATE
FROM Tabelle
Gibt Datum und Uhrzeit aus der Systemeinstellung wieder. Um das Datum anzeigen zu
lassen, muss die Spalte in der Tabelle das Format TO_CHAR haben.
ABS:
SQL> SELECT ABS(Spalte)
FROM Tabelle
Es wird der Absolutwert der Spalte ausgegeben. ABS läst das Negativzeichen verschwinden.
CEIL und FLOOR:
SQL> SELECT CEIL (Spalte)
FROM Tabelle
CEIL gibt die kleinste ganze Zahl zurück, dir größer oder gleich dem übergebenen Argument
ist.
SQL > SELECT FLOOR (Spalte)
FROM Tabelle
FLOOR arbeitet genau umgekehrt wie CEIL. FLOOR gibt größte ganze Zahl zurück, die
gleich oder kleiner dem Argument ist.
Trigonometrische- und Hyperbelfunktionen
COS:
SQL> SELECT COS(Spalte)
FROM Tabelle
Gibt den Kosinus der Werte in der Tabelle wieder. Argumente müssen in Bogenmaß (3,14;...)
in der Spalte stehen und so nimmt er sie auch an.
SQL> SELECT (Spalte * 0.01745329251994)
FROM Tabelle
Jetzt werden die Zahlen in der Tabelle, die als Gradzahlen da stehen, in Bogenmaßen
umgerechnet. Die Zahlt 0.0174... ergibt sich aus  (Pi) /180°. Weil ja 360° gleich 2 Pi sind.
Somit erhält man für den Wert 90 in der Spalte rund 1. Die anderen Funktionen (SIN, TAN,
COSH, SINH, TANH) verhalten sich genau so. Sie rechnen nur mit Bogenmaß man muss also
wieder mit der 0,0174... rechnen, wie im COS Beispiel.
 Tino Reinsdorf
9 von 16
08.04.2017
EXP:
SQL> SELECT Spalte, EXP (Spalte)
FROM Tabelle;
Berechnet die Potenzwerte der natürlichen Exponentialfunktion von der Spalte wieder. EXP
nimmt als Basis e (e= 2,71828182845904).
LN und LOG:
SQL> SELECT Spalte, LN (ABS(Spalte))
FROM Tabelle;
Die Argumente, müssen positiv sein, deswegen, dass ABS. LN gibt den natürlichen
Logarithmus der Zahl in der Spalte aus.
SQL> SELECT Spalte, LOG (Spalte, 10)
FROM Tabelle;
Für die Funktion Log, braucht man 2 Argumente. Das erste, was immer in der Spalte steht,
davon wird der Logarithmus mit der Basis vom 2 Argument berechnet.
MOD:
SQL> SELECT SpalteA, SpalteB, MOD (SpalteA,SpalteB)
FROM Tabelle;
MOD liefert den Rest der Division von SpalteA durch SpalteB wieder.
POWER:
SQL> SELECT SpalteA, CEIL (SpalteB), POWER (SpalteA, CEIL (SpalteB))
FROM Tabelle;
Die Funktion POWER (m,n) eine Zahl m zur nten Potenz. Wenn die Basis negativ ist, muss n
eine ganze Zahl sein, deswegen, steht das CEIL da. Negative Zahlen lassen sich aber auch
potenzieren.
SIGN:
SQL> SELECT Spalte, SIGN (Spalte)
FROM Tabelle
SIGN ermittelt die Vorzeichen der Argumente in der Spalte. Bei negativen Zahlen eine –1 bei
gleich 0 eine 0 und bei positivem Zahlen eine 1. Kann auch mit der WHERE Funktion benutzt
werden.
SQL> SELECT Spalte
FROM Tabelle
WHERE SIGN(Spalte) = 1;
SQRT:
SQL> SELECT Spalte, SQRT (Spalte)
FROM Tabelle;
Es wird die Quadratwurzel für Argumente berechnet. Es gehen nur positiven Zahlen.
Um alle zu berechnen, muss ABS in die SQL Anweißung rein.
 Tino Reinsdorf
10 von 16
08.04.2017
SQL > SELECT ABS (Spalte), SQRT (ABS(Spalte))
FROM Tabelle;
Zeichenfunktion
CHR:
SQL> SELECT Spalte, CHR(Spalte)
FROM Tabelle;
Die Funktion CHR liefert das zum numerischen Argument äquivalente Zeichen zurück. Das
Ergebnis ist vom Zeichensatz abhängig, der in der Datenbank gültig ist z.B. den
ASCII-Code. Es wird also nur aus den Zahlen, Buchstaben , mit Hilfe des ASCII- Codes,
gemacht.
CONCAT:
SQL> SELECT CONCAT (Vorname, Nachname) as Vorname- Und Nachname
FROM Tabelle;
Die Funktion CONCAT, verbindet 2 Strings miteinander. Das heißt, wenn Namen und
Vornamen in getrennten Spalten steht und dann diese Funktion benutz wird, wird eine Spalte
aus den zwei Spalten gemacht. Dies ist für automatische Anschrieften wichtig. Ich gebe hier
ein Beispiel mit Name und Vorname an.
INITCAP:
SQL > SELECT INITCAP (Spalte)
FROM Tabelle;
Diese Funktion wandelt das erste Zeichen eines Wortes in eine Großbuchstaben um und die
anderen Zeichen werden klein.
LOWER und UPPER:
SQL> UPDATE Spalte
FROM Tabelle;
Die Funktion Lower wandelt alle Zeichen in kleine Buchstaben um und UPDATE wandelt
alle Zeichen in große Buchstaben um.
LPAD und RPAD:
SQL > SELECT Spalte, LPAD(Spalte,20,’*’)
FROM Tabelle;
LPAD und RPAD nehmen mind. 2 und max. 3 Argumente an. Erste, ist der zu behandelnden
String, dass Zweite, der spezifiziert die Anzahl der auszufüllende Zeichen. Im Dritten kann
man ein Füllzeichen angeben. Normal, wenn man nichts einträgt, sind es Leerzeichen, im
Beispiel sind es Sternchen (*).
LTRIM und RTRIM:
SQL> SELECT Spalte, LTRIM (Spalte, ’C’)
FROM Tabelle;
 Tino Reinsdorf
11 von 16
08.04.2017
Beide übernehmen min. 1und max. 2 Argumente. Das Erste ist wieder der zu behandelte
String. Im Zweiten gibt man ein Zeichen oder Zeichenstring an. Normal sind es Leerzeichen.
Das TRIM schneidet die Leerzeichen weg. In diese Beispiel, wird das Zeichen ‚C’ bei allen,
die dieses Zeichen haben entfernt.
REPLACE:
SQL> SELECT Spalte, REPLACE (Spalte, ‘st’, ‘**’) ERSETZUNG
FROM Tabelle;
REPLACE wird ebenfalls aus 3 Argumenten gebildet. Das Erste gibt Spalte an, das Zweite
das Suchkriterium und das Dritte, mit was es ersetzt werden soll. Schreibt man kein 3
Argument hin, wird das Suchkriterium nur gelöscht. Bei unserem Beispiel, werden 2
Sternchen für das ‚st’ eingesetzt.
SUNSTR:
SQL> SELECT Spalte, SUBSTR (Spalte,2,3)
FROM Tabelle;
Wird wieder aus 3 Argumenten gebildet. Das Erste gibt wieder die Spalte an, das Zweite, die
Zeichenstelle an, wo er anfangen soll und das Dritte Argument gibt an, wie viel Zeichen er
nehmen soll. In unserem Beispiel, fängt er beim 2 Zeichen an und nimmt dann 3 Zeichen.
Wenn das Zweite Argument negativ ist, wird rückwärts gezählt. Wenn kein 3 Argument
angegeben ist, dann wird dir Stelle genommen und alle anderen Zeichen, die ihm noch folgen,
werden wiedergegeben.
SUBSTR:
SQL> SELECT
SUBSTR(Spalte,1,3)||'-'||SUBSTR(Spalte,4,2) ||'-'||SUBSTR(Spalte,6,4) Spalte
FROM Tabelle;
Mit dieser Funktion, kann man Zeichenketten bearbeiten. Man kann z.B. aus einer Reihe von
Zahlen wie 123456789, mit der oben stehenden Formal das Format 123-45-6789 machen.
Lässt dich gut bei Kreditkartennummern oder Telefonnummern machen.
TRANSLATE:
SQL> SELECT Spalte, TRANSLATE (Spalte,
‘0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ’ ,
‘NNNNNNNAAAAAAAAAAAAAAAAAAAAAAAA’)
FROM Tabelle
Er werden die Zeichen der Spalte ausgelesen z.B. „HALLO“. Welche Zeichen ausgelesen
werden sollen, legt man im Zweiten Argument fest. Im Dritten Argument, steht, mit was die
ausgelesenen Zeichen ersetzt werden sollen. Bei „HALLO“, würde „AAAAA“ kommen. Bei
„hallo“, würde „hallo“ bleiben, weil Groß- und Kleinschreibung berücksichtigt wird und im
Zweiten Argumente nur Großbuchstaben stehen, die ausgelesen werden soll.
INSTR:
SQL> SELECT Spalte, INSTR (Spalte,’O’,2,1)
FROM Tabelle
 Tino Reinsdorf
12 von 16
08.04.2017
Mit dieser Funktion, kann man die Position eines bestimmten Zeichens suchen. Das Erste
Argument, gibt an, wo gesucht werden soll. Das Zweite Argument, gibt an, nach welchen
Zeichen gesucht werden soll. Im Dritten Argument, wir die Stelle angegeben, wo das Zeichen
vorkommen soll. Im Vierten Argument, wird festgelegt, welche Übereinstimmung zu melden
ist. In unserem Beispiel, wird in der Spalte nach dem Buchstaben „O“ gesucht, was an 2
Stehen muss. Standart bei 3 und 4 Argument ist die „1“.
LENGTH:
SQL> SELECT Spalte, LENGTH (RTRIM(Spalte))
FROM Tabelle
Diese Funktion gibt die Länge des Strings an. Es liest einfach nur die Anzahl der Zeichen für
das Wort aus und schreibt sie hin. Da die Spalte die Breite 15 hat, muss mit der Funktion
RTRIM nachgeholfen werde, dass die Leerstellen nicht berücksichtigt werden.
Umwandlungsfunktionen
TO_CHAR:
SQL> SELECT Spalte, TO_CHAR (Spalte)
FROM Tabelle
Diese Funktion dient vorrangig zum umwandeln einer Zahl in ein Zeichen.
TO_NUMBER:
SQL> SELECT Spalte, Spalte*TO_NUMBER(Spalte)
FROM Tabelle
Hier wird ein String in eine Zahl umgewandelt.
GREATEST und LEAST:
SQL> SELECT GREATEST (Spalte)
FROM Tabelle
Diese Funktion ermittelt den größten String. Man erhält also bei Buchstaben, als größten
Wert, wo der erste Buchstaben an hinterer Stelle im Alphabet steht. Das heißt, wenn jetzt
Wörter mit den Anfangsbuchstaben von „A;B;E;H;O;C;I;S“ wird als Größter Wert das Wort
mit dem Anfangsbuchstaben „S“ wieder gegeben. Die Funktion LEAST, sucht den kleinsten
Wert heraus.
USER:
SQL> SELECT USER
FROM Tabelle
Die Funktion USER gibt den Namen des momentanen Datenbankbenutzers zurück.
Klauseln
 Tino Reinsdorf
13 von 16
08.04.2017
WHERE:
Damit lassen sich ganz genaue Angaben machen, was man suchen möchte. Oben finden Sie
einige Beispiele dazu.
STARING WITH:
SQL> SELECT Spalte
FROM Tabelle
WHERE Spalte STARTING WITH (‘Ba’)
Hat die selbe Funktion wie die LIKE Funktion, die oben beschrieben wurde. Es werden alle
aus der Spalte gesucht, die am Anfang ‚Ba’ haben
ORDER BY:
SELECT Spalte
FROM Tabelle
ORDER BY Spalte
Die Ausgabe wird jetzt nach der Spalte die bei Order steht geordnet. Fängt bei „1“ oder „A“
an
SELECT Spalte
FROM Tabelle
ORDER BY Spalte DESC
Jetzt wird wieder alles nach der selben Spalte geordnet, wie im vorherigem Beispiel. Nur mit
dem unterschied, das jetzt mit der größten Zahl oder dem „Z“ bei Buchstaben angefangen
wird. Für das DESC kann aber auch ASC stehen. Dies ist nur das es nach der Größe nach
geordnet wird und diesmal, wird wieder mit dem Kleinsten angefangen. Man braucht das
ASC aber nicht schreiben, weil der Befehl ORDER BY schon so sortiert.
SELECT Spalte
FROM Tabelle
ORDER BY Spalte, Spalte1,..
Man kann auch mehrere Spalten Sortieren lassen.
SELECT Spalte
FROM Tabelle
ORDER BY Spalte ASC, Spalte1 DESC
Jetzt wird die eine Spalte Aufsteigend und die andere Spalte absteigend geordnet. Das ASC,
kann man auch weg lassen, wenn dies, das Programm erlaubt. Für die Spaltennamen, kann
man auch Exakte Werte eintragen. Dabei bezieht sich die Angabe auf die erste Spalte.
GROUP BY:
SELECT Spalte1 SUM (Spalte2)
FROM Tabelle
GROUP BY Spalte1
 Tino Reinsdorf
14 von 16
08.04.2017
Bei dieser Funktion, werden alle Werte, die in der Spalte1 stehen und den gleichen Namen
haben, zusammen gefasst. Bei Geld Beträgen, werden so diese zusammen gerechnet und es
steht nur noch einmal der Name, mit Wert da.
SELECT Spalte1 SUM (Spalte2), COUNT(Spalte1)
FROM Tabelle
GROUP BY Spalte1
Dies Funktioniert wie das Beispiel oben, nur mit dem Zusatz, das wir jetzt sehen, wie viel
Werte zu dem Endergebnis zusammen gezogen wurde.
SELECT Spalte1 SUM (Spalte2), COUNT(Spalte1)
FROM Tabelle
GROUP BY Spalte1, Spalte 3
Jetzt wird nach Zwei Spalten Gruppiert. Es werden nur die zu einer Gruppe zusammengefasst,
wo beide Gruppen, den gleichen Inhalt haben.
SELECT MIN(Spalte1), MAX(Spalte1)
FROM Tabelle
GROUP BY Spalte1
Man sollte also keine SELECT-Anweisung auf Spalten verwenden, die mehrere Werte für die
in der Klausel GROUP BY aufgeführte Spalte enthalten. Der umgekehrte Fall ist dagegen
zulässig. Man kann die Klausel GROUP BY auf Spalten anwenden, die nicht in der
SELECT-Anweisung angegeben sind.
HAVING:
SELECT Spalte, AVG(Spalte2)
FROM Tabelle
GROUP BY Spalte
HAVING AVG(Spalte2) <38000;
Mit der Funktion HAVING, kann man Einschränkungen machen. Dieser arbeitet wie eine
WHERE-Funktion. Die WHERE darf man aber nicht nehmen, weil die WHERE-Funktion
nicht mit Aggregatfunktionen arbeitet und es deshalb zu Fehler führt. Hier in diesem Beispiel
wir der Durchschnittswert von Spalte angegeben, das kleiner als 38.000 ist.
Man könnte jetzt noch eine Zweite Bedingung schreiben, wenn am hinter der 38000 ein
„AND, OR“ und so weiter schreibt und somit eine zweite Bedingung einleitet. Hinter dem
Argument „AND,...“ kann man dann eine Zweite Bedingung schreiben aber ohne das
HAVING AVG davor.
HAVING Bedingung AND Bedingung AND....
Man kann auch andere Funktion nehmen, nicht bei SELECT steht z.B. :
SELECT Spalte, AVG(Spalte2)
FROM Tabelle
GROUP BY Spalte
HAVING COUNT (Spalte) >1
 Tino Reinsdorf
15 von 16
08.04.2017
Man kennt jetzt viele Funktionen, die sich mit einander kombinieren lassen.
Tabellen Verknüpfen
Es macht sehr großen Sinn, wenn Daten getrennt in Tabellen liegen. Damit, ist der Zugriff
und Verwaltung schneller bzw. leichter. Außerdem, würde eine Datenbank mit Millionen von
einträgen zusammen brechen.
SELECT Spalte1, Spalte2, Tabelle1.Spalte3
FROM Tabelle1, Tabelle2
Damit wird jede Zeile mit jeder Zeile dargestellt. Wenn in Spalte 1 in Tabelle 1, 7 Werte hat
und die Spalte 2 in Tabelle 2, 8 Werte hat, gibt die Abfrage genau 56 Werte wieder. Jeder
Wert aus Spalte 1 wird mit der Zweiten dargestellt und umgekehrt. Wenn es Zwei gleiche
Spalten in den Tabelle gibt, muss die Tabelle, wo die Spalter herkommen soll angegeben
werden. Normal kann brauch man die Tabelle nicht angeben, wenn es den Namen der Spalte
nur einmal in den ausgewähl
 Tino Reinsdorf
16 von 16
08.04.2017
Herunterladen