SELECT Bestandteile
Begriff | Beschreibung |
---|---|
Optionen zur Beeinflussung der Verarbeitung | |
ALL | wird benutzt um alle unterschiedliche Werte zu erhalten (das ist der Standard) |
DISTINCT | wird benutzt um lediglich unterschiedliche Werte zu erhalten |
DISTINCTROW | wird benutzt um lediglich unterschiedliche Werte zu erhalten auch wenn durch die Verbindung in der Abfrage doppelte Einträge entstehen |
HIGH_PRIORITY | gibt dem SELECT höhere Priorität als eine Anweisung, die eine Tabelle aktualisiert |
STRAIGHT_JOIN | zwingt den Optimierer die Tabellen in der Reihenfolge in der sie in der FROM-Klausel aufgeführt sind einzubinden |
MAX_STATEMENT_TIME = N | setzt ein Anweisungsausführungs-Timeout abweichend von der System Variable max_statement_time |
Erweiterungen von MySQL die nicht in Standard-SQL enthalten sind | |
SQL_SMALL_RESULT / SQL_BIG_RESULT | Optimierung im Zusammenhang mit GROUP BY / DISTINCT unter Verwendung von temporären Tabellen |
SQL_BUFFER_RESULT | Erzwingt ein zwischenspeichern des Ergebnisses in eine temporäre Tabelle |
SQL_CACHE / SQL_NO_CACHE | Zwischenspeichern des Ergebnisses im Abfragecache |
SQL_CALC_FOUND_ROWS | ermittelt die Ergebnismenge (Anzahl der Datensätze) |
Eingrenzung der Ergebnismenge | |
WHERE | Eingrenzung durch Vergleiche von Feldwerten |
GROUP | Zusammenfassung bei Übereinstimmung von Feldwerten |
HAVING | Eingrenzung durch Vergleich der Ergebniswerte, am Ende vor der Übermittlung der Werte (Achtung: ohne Optimierung)) |
LIMIT | Beschränkung der Ergebnismenge (Übergabe Start, Anzahl) |
PARTITION | Eingrenzungen auf Bereiche die zuvor in der Tabelle definiert werden müssen |
Sortierung der Ergebnismenge | |
ORDER BY | Sortierung nach den angegebenen Feldern unter Angabe der Sortierrichtung (ASC = aufsteigend, DESC = absteigend) |
JOINS
Equi-Join, Inner-Join (oder auch nur Join) & Cross-Join
Liefert alle Ergebnisse (Werte der selektierten Felder) aus beiden Tabellen wo die Schlüsselfelder der Zuordnung zusammenpassen. z.B. alle Artikel die einem Autor zugeordnet sind und den zugeordneten Autor.
Der Cross-Join liefert ein Ergebnis aus beiden Tabellen es gibt ein kartesische Produkt der verknüpften Tabellen zurück falls keine Where-Bedingung angegeben wird. Ist in der Where-Bedingung die Verknüpfungseigenschaft angegeben entspricht das Ergebnis dem des Inner-Join ohne Where-Bedingung.
Left-Join
Liefert alle Ergebnisse aus der ersten (links stehenden) Tabelle und die dazu passenden Werte aus der zweiten (rechts stehenden) Tabelle. z.B. alle Artikel und die falls vorhanden ihre Autoren
Right-Join
Liefert alle Ergebnisse aus der zweiten (rechts stehenden) Tabelle und die dazu passenden Werte aus der ersten (links stehenden) Tabelle. z.B. alle Autoren (auch mehrfach) mit den Artikeln die dem Autor zugeordnet sind
Outher-Join
Lifert alle Ergebnisse aus beiden Tabellen. z.B. alle Autoren (auch mehrfach) mit allen Artikeln, auch Artikel ohne Autor und Autoren ohne Artikel.
Self-Join
Eine Tabelle wird mit sich selbst verknüpft, die folgende Abfrage würde z.B. alle Seiten der zweiten Ebene der Tabelle pages als Ergebnis liefern.
UNION SELECT
Wird genutzt um mehrere SELECTS zu verbinden zu einem Ergebnis, es ermöglicht also auch Ergebnisse aus unterschiedlichen Tabellen zu kombinieren, z.B. alle Autoren und Redakteure über 65 im Verlag.
Operatoren
Name | Beschreibung |
---|---|
AND , && |
logisches UND (AND) |
= |
Weist einen Wert zu, im Zusmenhang mit dem SET / UPDATE statement |
:= |
Wert zuweisen |
BETWEEN ... AND ... |
Überprüfen ob ein Wert in einem Bereich von Werten liegt |
BINARY |
Wandelt eine Zeichenkette in einen Binärzeichenkette |
& |
bitweise UND-Verknüpfung |
~ |
bitweise Invert (Umkehrung) |
| |
bitweise ODER-Verknüpfung |
^ |
bitweise Exclusive-ODER-Verknüpfung |
CASE |
Fall-Unterscheidungs Operator |
DIV |
Ganzahlen Teilung (Division) |
/ |
Division Operator |
<=> |
IS NOT DISTINCT Gleichheits Überprüfung NULL-safe |
= |
Gleichheits Operator |
>= |
größer/gleich Operator |
> |
größer als Operator |
IS NOT NULL |
ist nicht NULL, Wertüberprüfung |
IS NOT |
ist nicht, boolscher Wertevergleich |
IS NULL |
ist NULL, Wertüberprüfung |
IS |
ist, boolscher Wertevergleich |
<< |
bitweise Schiebeoperation nach links (shl) |
<= |
kleiner/gleich Operator |
< |
kleiner als Operator |
LIKE |
Bestandteil (Teilzeichenkette), einfache Mustererkennung |
- |
Minus Operator |
MOD , % |
Divisionsrest (Modulo) Operator |
NOT BETWEEN ... AND ... |
Überprüfen ob ein Wert nicht in einem Bereich von Werten liegt |
!= , <> |
Ungleich Operator |
NOT LIKE |
kein Bestandteil (Teilzeichenkette), einfache Mustererkennung |
NOT REGEXP |
entspricht nicht der Regular Expression |
NOT , ! |
Negation des Wertes |
|| , OR |
logisches ODER (OR) |
+ |
Addition Operator |
REGEXP , RLIKE |
entspricht der Regular Expression |
>> |
bitweise Schiebeoperation nach rechts (SHR) |
SOUNDS LIKE |
Klingt ähnlich, Vergleich des Soundex Strings |
* |
Multiplikation Operator |
- |
Change the sign of the argument |
XOR |
logisches Exklusive-ODER (XOR) |
Funktionen
Name | Beschreibung |
---|---|
Ablaufsteuerung | |
IF() |
IF/ELSE Konstrukt auf der Basis einer Überprüfung auf True |
IFNULL() |
IF/ELSE Konstrukt auf der Basis einer Überprüfung auf NULL |
NULLIF() |
Ergebnis ist NULL wenn der Ausdruck True ist |
Zeichenketten Funktionen | |
ASCII() |
numerischer Wert des ersten Zeichens einer Zeichenkette. Gibt bei einem Leer-String 0 zurück und NULL wenn der String den Wert NULL hat. |
BIN() |
Liefert eine Zeichenkettendarstellung eines Binärwertes (Zahl) zurück |
CHAR() |
Umwandlung Zahl in Zeichen |
CHAR_LENGTH() , CHARACTER_LENGTH() |
Anzahl der Zeichen einer Zeichenkette |
CONCAT_WS() |
Verketten von Zeichenketten mit Separator |
CONCAT() |
Verketten von Zeichenketten |
ELT() |
Liefert eine Zeichenkette aus einer Liste von Zeichenketten |
ENCODE() |
Kodieren einer Zeichenkette |
ENCRYPT() |
Verschlüsseln einer Zeichenkette |
FIELD() |
Liefert die Position einer Zeichenkette in einer Liste von Zeichenketten |
FROM_BASE64() |
dekodiert eine BASE64 kodierte Zeichenkette |
HEX() |
hexadezimale Darstellung einer Dezimalzahl oder einer Zeichenkette |
INSERT() |
Einfügen einer Zeichenkette in einer Zeichenkette an einer definierten Stelle |
INSTR() |
Position des ersten Auftretens einer Zeichenkette in einer Zeichenkette |
LEFT() |
Anzahl von Zeichen einer Zeichenkette beginnend von links |
LENGTH() , OCTET_LENGTH() |
Länge der Zeichenkette in Bytes |
LOCATE() , POSITION() |
Position des ersten Auftreten eines einer Teil-Zeichenkette in einer Zeichenkette |
LOWER() , LCASE() |
Zeichekette in Kleinbuchstaben |
LPAD() |
Zeichenkette links mit Füllzeichen(kette) auffüllen |
LTRIM() |
Führende Leerzeichen entfernen |
MAKE_SET() |
Umformen eines Bitwertes in eine Kommaseparierte Zeichenkette |
MID() |
Teilzeichenkette aus einer Zeichenkette ab einer Position mit einer definierten Länge |
ORD() |
Zeichencode des Ersten Zeichens einer Zeichenkette |
QUOTE() |
Zeichenkette codieren um sie in SQL-Syntax benutzen zu können |
REPEAT() |
Zeichenkette mehrfach wiederholen |
REPLACE() |
Teilzeichenkette in einer Zeichenkette ersetzen |
REVERSE() |
Reihenfolge der Zeichen einer Zeichenkette umkehren |
RIGHT() |
Anzahl von Zeichen einer Zeichenkette beginnend von rechts |
RPAD() |
Zeichenkette rechts mit Füllzeichen(kette) auffüllen |
RTRIM() |
Leerzeichen am Ende einer Zeichenkette entfernen |
SOUNDEX() |
soundex Zeichenkette |
SPACE() |
Zeichenkette mit einer Anzahl von Leerzeichen |
STRCMP() |
zwei Zeichenketten vergleichen |
SUBSTR() , SUBSTRING() |
Teilzeichenkette aus Zeichenkette extrahieren |
SUBSTRING_INDEX() |
Teilzeichenkette aus Zeichenkette extrahieren an Hand des Auftretens eines Trennzeichens |
TO_BASE64() |
kodiert eine Zeichenkette BASE64 |
TRIM() |
Leerzeichen am Anfang und Ende einer Zeichenkette entfernen |
UCASE() , UPPER() |
Zeichenkette in Großbuchstaben |
UNHEX() |
hexadezimale Darstellung zurück wandeln, Umkehrung der Funktion HEX() |
WEIGHT_STRING() |
Gewichtung einer Zeichenkette, ist z.B. unabhängig von Groß-/Kleinschreibung |
mathematische Funktionen | |
ABS() |
absoluten Wert, also ohne Vorzeichen |
ACOS() |
Arkuskosinus |
ASIN() |
Arcussinus |
ATAN() , ATAN2() |
Arcustangens |
AVG() |
Durchschnittswert vom Argument |
CEIL() , CEILING() |
Liefert die kleinste ganze Zahl nicht kleiner als das Argument |
CONV() |
Wandelt Zahlen zwischen verschiedenen Zahlensystemen |
COS() |
Kosinus |
COT() |
Kotangens |
DEGREES() |
Konvertierung Bogenmaß in Grad |
EXP() |
Exponent zur Basis e (die Basis des natürlichen Logarithmus) |
FLOOR() |
Liefert die größte ganze Zahl nicht größer als das Argument |
LN() |
natürlicher Logarithmus |
LOG() |
natürlicher Logarithmus des ersten Argumentes |
LOG10() |
Logarithmus zur Basis 10 |
LOG2() |
Logarithmus zur Basis 2 |
MIN() |
kleinster Wert einer Werteliste |
MOD() |
Divisionsrest |
PI() |
Zahl pi (π) |
POW() , POWER() |
Potenzrechnung |
RADIANS() |
Konvertierung Grad in Bogenmaß |
RAND() |
Zufallszahl (Gleitkommazahl) |
ROUND() |
mathematisches Runden |
SIGN() |
Vorzeichen, - = -1, 0 = 0, + = 1 |
SIN() |
Sinus |
SQRT() |
Quadratwurzel, Wurzel |
SUM() |
Summe |
TAN() |
Tangens |
TRUNCATE() |
Anteil von Nachkommastellen abschneiden |
Datum/Zeit Funktionen | |
ADDDATE() |
Zeit-/Datum Intervall auf ein Datum aufaddieren |
ADDTIME() |
Zeit-Intervall auf eine Zeit aufaddieren |
CONVERT_TZ() |
Wandelt Datumszeit-Werte unter Berücksichtigung von Zeit-Zonen |
CURDATE() , CURRENT_DATE() , CURRENT_DATE |
aktuelles Datum |
CURTIME() , CURRENT_TIME() , CURRENT_TIME |
aktuelle Zeit |
CURRENT_TIMESTAMP() , CURRENT_TIMESTAMP , NOW() , LOCALTIME() , LOCALTIME , LOCALTIMESTAMP , LOCALTIMESTAMP() |
aktueller Datum-/Zeit-Stempel in unterschiedlichen Formaten (z.B. 'YYYY-MM-DD HH:MM:SS') |
DATE_ADD() |
Zeit-/Datum Intervall auf ein Datum aufaddieren |
DATE_FORMAT() |
formatiert den Datenwert entsprechend dem Format-String |
DATE_SUB() , SUBDATE() |
Zeit-/Datum Intervall von einem Datum abziehen |
DATE() |
Extrahieren des Datum-Teils eines Datum oder Datetime-Ausdruckes |
DATEDIFF() |
Zeitdifferent |
DAY() , DAYOFMONTH() |
Tag des Monats (0-31) |
DAYNAME() |
Name des Wochentages, abhängig von lc_time_names |
DAYOFWEEK() |
Wochentag als Index, (1 = Sunday, 2 = Monday, …, 7 = Saturday) |
DAYOFYEAR() |
Tag des Jahres (1-366) |
EXTRACT() |
Extrahiert einen Teil eines Datums |
FROM_DAYS() |
Tageszahl in Datum konvertieren |
FROM_UNIXTIME() |
formatiert UNIX timestamp als Datum |
GET_FORMAT() |
ermittelt Format, z.B. in Kombination mit DATE_FORMAT() und STR_TO_DATE() zu gebrauchen |
HOUR() |
Extrahiert den Stunden-Wert |
LAST_DAY |
Datum des letzten Tages des Monats |
MAKEDATE() |
Datum aus Jahr, Monat und Tag |
MAKETIME() |
Zeit aus Stunde, Minute und Sekunde |
MICROSECOND() |
Mikrosekundenanteil einer Zeitwertes |
MINUTE() |
Minutenanteil einer Zeitwertes |
MONTH() |
Monatsanteil eines Datumswertes |
MONTHNAME() |
Monatsname eines Datumswertes |
PERIOD_ADD() |
Monat(e) hinzufügen zu einer Periode (Jahr und Monats Wert) |
PERIOD_DIFF() |
Monatsdifferenz einer Periode (Jahr und Monats Wert) |
QUARTER() |
Quartal des Jahres |
SEC_TO_TIME() |
Sekunden in Uhrzeit wandeln |
SECOND() |
Sekundenanteil eines Zeitwertes |
STR_TO_DATE() |
konvertiert Zeichenkette in Datum |
SUBTIME() |
Zeit-Intervall von einer Zeit abziehen |
TIME_FORMAT() |
Formatierung der Datums-/Zeit-Ausgabe |
TIME_TO_SEC() |
Zeit in Sekunden wandeln |
TIME() |
Zeit aus Datums-/Zeit-Wert |
TIMEDIFF() |
Zeitdifferenz |
TIMESTAMP() |
Datum in Zeitstempel wandeln |
TIMESTAMPADD() |
Zeit-Intervall auf Zeitstempel aufaddieren |
TIMESTAMPDIFF() |
Differenz zweier Zeitstempel |
TO_DAYS() |
Tage seit 01.01.0000 |
TO_SECONDS() |
Sekunden seit 01.01.0000 00:00:00 |
UNIX_TIMESTAMP() |
UNIX Zeitstempel, Sekunden seit 1970-01-01 00:00:00 UTC |
UTC_DATE() |
aktuelles UTC Datum |
UTC_TIME() |
aktuelle UTC Zeit |
UTC_TIMESTAMP() |
aktuelles UTC Datum und Zeit |
WEEK() |
Woche des Jahres |
WEEKDAY() |
Wochentag als Zahl |
WEEKOFYEAR() |
Kalenderwoche (1-53) |
YEAR() |
Jahresanteil eines Datums |
YEARWEEK() |
Jahr und Monat eines Datums |