38 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
• Sie m¨ussen nicht alle ausgew¨ahlten Spalten im GROUP BY-Teil nennen. Hierdurch ergibt
sich eine bessere Performance f¨ur einige sehr spezifische, aber recht gew¨ohnliche Anfra-
gen.
• Man kann ASC und DESC bei GROUP BY spezifizieren.
• Um es Benutzern leichter zu machen, die von anderen SQL-Umgebungen kommen,
unterst¨utzt MySQL Aliase f¨ur viele Funktionen. Zum Beispiel unterst¨utzen alle
Zeichenketten-Funktionen sowohl die ANSI-SQL-Syntax als auch die ODBC-Syntax.
• MySQL kennt die Operatoren || und &&, die logisches Oder und logisches Und be-
deuten, wie in der Programmiersprache C. In MySQL sind || und OR Synonyme, wie
auch && und AND. Aufgrund dieser freundlichen Syntax unterst¨utzt MySQL nicht den
ANSI-SQL-||-Operator f¨ur Zeichenketten-Verkettung (Konkatenation); benutzen Sie
statt dessen CONCAT(). Weil CONCAT() eine beliebige Anzahl von Argumenten entge-
gennimmt, ist es leicht, die Benutzung des ||-Operators zu MySQL zu konvertieren.
• CREATE DATABASE oder DROP DATABASE. Siehe Abschnitt 7.5.1 [CREATE DATABASE],
Seite 455.
• Der %-Op erator ist ein Synonym f¨ur MOD(). Das heißt N % M ist ¨aquivalent zu MOD(N,M).
% wird f¨ur C-Programmierer und f¨ur Kompatibilit¨at mit PostgreSQL unterst¨utzt.
• Die =-, <>-, <=-, <-, >=-, >-, <<-, >>-, <=>-, AND-, OR- oder LIKE-Operatoren k¨onnen in
Spaltenvergleichen links von FROM in SELECT Statements benutzt werden. Beispiel:
mysql> SELECT spalte1=1 AND spalte2=2 FROM tabelle_name;
• Die LAST_INSERT_ID()-Funktion. Siehe Abschnitt 9.4.3.30 [mysql_insert_id()],
Seite 572.
• Die REGEXP- und NOT REGEXP-Operatoren f¨ur erweiterte regul¨are Ausdr¨ucke.
• CONCAT() oder CHAR() mit einem Argument oder mehr als zwei Argumenten. (In
MySQL k¨onnen diese Funktionen jede beliebige Anzahl von Argumenten entgegen-
nehmen.)
• Die Funktionen BIT_COUNT(), CASE, ELT(), FROM_DAYS(), FORMAT(), IF(),
PASSWORD(), ENCRYPT(), md5(), ENCODE(), DECODE(), PERIOD_ADD(), PERIOD_
DIFF(), TO_DAYS() oder WEEKDAY().
• Die Benutzung von TRIM(), um Teile von Zeichenketten zu entfernen. ANSI SQL
unterst¨utzt nur die Entfernung einzelner Zeichen.
• Die GROUP BY-Funktionen STD(), BIT_OR() und BIT_AND().
• Die Benutzung von REPLACE anstelle von DELETE + INSERT. Siehe Abschnitt 7.4.8
[REPLACE], Seite 448.
• Das FLUSH flush_option-Statement.
• Die M¨oglichkeit, Variablen in einem Statement mit := zu setzen:
SELECT @a:=SUM(total),@b=COUNT(*),@a/@b AS avg FROM test_tabelle;
SELECT @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;
2.7.4 MySQL-Unterschiede im Vergleich zu ANSI SQL92
Wir versuchen m¨oglichst, dass MySQL dem ANSI-SQL-Standard und dem ODBC-SQL-
Standard folgt, aber in einigen F¨allen macht MySQL Dinge auf andere Weise:
Kommentare zu diesen Handbüchern