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