Gibt den Standardwert einer Tabellenspalte zurück. Wenn die Spalte keinen Standardwert hat, wird ein Fehler erzeugt.
mysql> UPDATE t SET i = DEFAULT(i)+1 WHERE id < 100;
            FORMAT(
          X,D)
            Formatiert die Zahl X in ein
            Format wie '#,###,###.##', gerundet auf
            D Dezimalstellen, und gibt das
            Ergebnis als String zurück. Detaillierte Informationen
            finden Sie in Abschnitt 12.3, „String-Funktionen“.
          
            Versucht eine Sperre mit dem String
            str als Namen zu erwirken.
            Hierbei wird ein Zeitüberschreitungswert von
            timeout Sekunden angewendet. Gibt
            1 zurück, wenn die Sperrung erfolgreich
            war, 0, wenn es zu einer
            Zeitüberschreitung kam (etwa weil zuvor ein anderer Client
            den Namen gesperrt hatte), oder NULL,
            wenn ein Fehler aufgetreten ist (z. B. aufgrund von
            Speichermangel oder einer Terminierung des Threads mit
            mysqladmin kill). Wurde eine Sperre mit
            GET_LOCK() erwirkt, so wird diese wieder
            aufgehoben, wenn Sie RELEASE_LOCK() oder
            noch einmal GET_LOCK() ausführen oder
            Ihre Verbindung – gewünscht oder unvorhergesehen –
            endet.
          
            Diese Funktion kann zur Implementierung von
            Anwendungssperren oder zur Simulation von Datensatzsperren
            verwendet werden. Die Namen werden serverweit gesperrt. Wenn
            ein Name von einem Client gesperrt wird, blockiert
            GET_LOCK() alle weiteren Anforderungen
            von gleichnamigen Sperren durch andere Clients. So wiederum
            können Clients, die einem gegebenen Sperrennamen zustimmen,
            diesen Namen zur Durchführung kooperativer beratender
            Sperrungen verwenden. Sie müssen allerdings beachten, dass
            auf diese Weise auch Clients, die nicht zu den
            kooperierenden Clients gehören, unbeabsichtigt oder gezielt
            einen Namen sperren und so verhindern können, dass ein
            kooperierender Client den Namen sperren kann. Sie können
            die Wahrscheinlichkeit hierfür verringern, indem Sie
            Sperrnamen verwenden, die datenbank- oder
            anwendungsspezifisch sind. Verwenden Sie beispielsweise
            Sperrnamen der Form db_name.str
            oder app_name.str.
          
mysql>SELECT GET_LOCK('lock1',10);-> 1 mysql>SELECT IS_FREE_LOCK('lock2');-> 1 mysql>SELECT GET_LOCK('lock2',10);-> 1 mysql>SELECT RELEASE_LOCK('lock2');-> 1 mysql>SELECT RELEASE_LOCK('lock1');-> NULL
            Der zweite RELEASE_LOCK()-Aufruf gibt
            NULL zurück, weil die Sperre
            'lock1' automatisch durch den zweiten
            GET_LOCK()-Aufruf aufgehoben wurde.
          
            Hinweis: Wenn ein Client versucht, eine Sperre zu erwirken,
            die bereits von einem anderen Client gehalten wird, dann
            erfolgt die Sperrung gemäß dem Argument
            timeout. Wird der blockierte
            Client beendet, dann wird der Thread erst terminiert, wenn
            eine Zeitüberschreitung der Sperranforderung erfolgt.
            Dieser Bug ist bekannt.
          
Wird eine Netzwerkadresse als String in der üblichen Schreibweise (vier punktgetrennte Oktette) übergeben, dann gibt die Funktion einen Integer zurück, der den numerischen Wert der Adresse angibt. Adressen können 4 oder 8 Byte umfassen.
mysql> SELECT INET_ATON('209.207.224.40');
        -> 3520061480
Die Zahl wird immer in der Reihenfolge der Netzwerkbytes erzeugt. Beim obigen Beispiel wird sie als 209×2563 + 207×2562 + 224×256 + 40 berechnet.
            INET_ATON() versteht auch IP-Adressen in
            der Kurzform:
          
mysql> SELECT INET_ATON('127.0.0.1'), INET_ATON('127.1');
        -> 2130706433, 2130706433
            Hinweis: Wenn Sie Werte
            speichern, die von INET_ATON() erzeugt
            wurden, empfehlen wir die Verwendung einer INT
            UNSIGNED-Spalte. Wenn Sie eine
            (vorzeichenbehaftete) INT-Spalte
            verwenden, können Werte, die IP-Adressen entsprechen, deren
            erstes Oktett größer als 127 ist, nicht korrekt
            gespeichert werden. Siehe auch
            Abschnitt 11.2, „Numerische Datentypen“.
          
Wenn eine numerische Netzwerkadresse mit einer Länge von 4 oder 8 Byte übergeben wird, gibt die Funktion die punktgetrennte Darstellung der Adresse als String zurück.
mysql> SELECT INET_NTOA(3520061480);
        -> '209.207.224.40'
            Überprüft, ob die Sperre mit dem Namen
            str frei (d. h. nicht gesperrt)
            ist und verwendet werden kann. Gibt 1
            zurück, wenn die Sperre verfügbar ist (also von niemandem
            benutzt wird), 0, wenn die Sperre aktiv
            ist, und NULL, wenn ein Fehler
            aufgetreten ist (z. B. bei einem falschen Argument).
          
            Überprüft, ob die Sperre mit dem Namen
            str verwendet wird (d. h. nicht
            gesperrt ist). Ist dies der Fall, dann wird die
            Verbindungskennung des Clients zurückgegeben, der die
            Sperre hält. Andernfalls wird NULL
            zurückgegeben.
          
            
            MASTER_POS_WAIT(
          log_name,log_pos[,timeout])
            Diese Funktion ist praktisch zur Steuerung der
            Master/Slave-Synchronisation. Sie blockiert, bis der Slave
            alle Änderungen bis zur im Master-Log angegebenen Position
            gelesen und übernommen hat. Der Rückgabewert ist die
            Anzahl der Logereignisse, auf die der Slave warten musste,
            um bis zur angegebenen Position fortschreiten zu können.
            Die Funktion gibt NULL zurück, wenn der
            SQL-Slave-Thread nicht gestartet wurde, die Master-Daten des
            Slaves nicht initialisiert wurden, die Argumente inkorrekt
            sind oder ein Fehler auftritt. -1 wird
            bei einer Zeitüberschreitung zurückgegeben. Wenn der
            SQL-Slave-Thread endet, während
            MASTER_POS_WAIT() wartet, gibt die
            Funktion NULL zurück. Befindet sich der
            Slave bereits jenseits der angegebenen Position, dann
            erfolgt die Rückgabe durch die Funktion unmittelbar.
          
            Wenn ein timeout-Wert angegeben
            wird, beendet MASTER_POS_WAIT() den
            Wartevorgang, sobald timeout
            Sekunden verstrichen sind.
            timeout muss größer als 0 sein;
            ein Nullwert oder ein negativer
            timeout-Wert haben die Bedeutung
            „kein timeout-Wert“.
          
            Gibt den angegebenen Wert zurück. Wenn
            NAME_CONST() zur Erzeugung einer
            Ergebnismengenspalte verwendet wird, erhält die Spalte den
            angegebenen Namen.
          
mysql> SELECT NAME_CONST('myname', 14);
+--------+
| myname |
+--------+
|     14 |
+--------+
Die Funktion wurde in MySQL 5.0.12 hinzugefügt und ist nur zur internen Verwendung vorgesehen. Der Server verwendet sie, wenn er Anweisungen aus gespeicherten Routinen schreibt, die Referenzen auf lokale Routinenvariablen haben (siehe Beschreibung in Abschnitt 19.4, „Binärloggen gespeicherter Routinen und Trigger“). Sie sehen die Funktion unter Umständen in der Ausgabe von mysqlbinlog.
            Hebt die Sperre namens str auf,
            die mit GET_LOCK() erwirkt wurde. Gibt
            1 zurück, wenn die Sperre aufgehoben
            wurde, 0, wenn die Sperre nicht durch
            diesen Thread erwirkt worden war (wobei die Sperre auch
            nicht aufgehoben wird), und NULL, wenn
            der Name nicht existiert. Die Sperre existiert nicht, wenn
            sie niemals von einem GET_LOCK()-Aufruf
            erwirkt worden war oder zuvor bereits aufgehoben wurde.
          
            Die DO-Anweisung ist in Kombination mit
            RELEASE_LOCK() sehr praktisch. Siehe auch
            Abschnitt 13.2.2, „DO“.
          
            Setzt eine Unterbrechung mit einer Länge von der durch
            duration angegebenen Anzahl von
            Sekunden und gibt dann 0 zurück. Wenn
            SLEEP() unterbrochen wird, wird 1
            zurückgegeben. Die Dauer kann einen in Mikrosekunden
            angegebenen Bruchteil enthalten.
          
Gibt eine UUID (Universal Unique Identifier) gemäß „DCE 1.1: Remote Procedure Call“ (Anhang A) der CAE-Spezifikation (Common Applications Environment Specifications), veröffentlicht von The Open Group im Oktober 1997 (Dokument Nr. C706, http://www.opengroup.org/public/pubs/catalog/c706.htm), zurück.
            Eine UUID ist eine Zahl, die in Raum und Zeit eindeutig ist.
            Bei zwei Aufrufen von UUID() wird die
            Erzeugung zweier vollkommen unterschiedlicher Werte erwartet
            – und zwar auch dann, wenn diese beiden Aufrufe auf zwei
            separaten Computern erfolgen, die nicht miteinander
            verbunden sind.
          
            Die UUID ist eine 128-Bit-Zahl, die durch einen String aus
            fünf Hexadezimalzahlen im Format
            aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
            dargestellt wird:
          
Die ersten drei Zahlen werden aus einem Zeitstempel erzeugt.
Die vierte Zahl bewahrt die zeitbezogene Eindeutigkeit für den Fall, dass der Zeitstempel seine Monotonie verliert (z. B. aufgrund der Sommerzeit).
Die fünfte Zahl schließlich ist eine IEEE 802-Knotennummer, die die räumliche Eindeutigkeit gewährleistet. Ersatzweise wird eine Zufallszahl eingesetzt, wenn die Knotennummer nicht vorhanden ist (weil der Computer beispielsweise keine Ethernetkarte hat oder wir nicht wissen, wie man die Hardwareadresse einer Schnittstelle unter Ihrem Betriebssystem ermitteln kann). In diesem Fall ist die räumliche Eindeutigkeit nicht garantiert. Nichtsdestoweniger ist eine Kollision sehr unwahrscheinlich.
Derzeit wird die MAC-Adresse einer Schnittstelle nur unter FreeBSD und Linux berücksichtigt. Unter anderen Betriebssystemen verwendet MySQL eine zufällig erzeugte 48-Bit-Zahl.
mysql> SELECT UUID();
        -> '6ccd780c-baba-1026-9564-0040f4311e29'
            Beachten Sie, dass UUID() noch nicht in
            Verbindung mit der Replikation funktioniert.
          
            In einer INSERT ... ON DUPLICATE KEY
            UPDATE-Anweisung können Sie die Funktion
            VALUES(
            in der col_name)UPDATE-Klausel verwenden, um
            Spaltenwerte aus dem INSERT-Teil der
            Anweisung zu referenzieren. Anders gesagt, verweist
            VALUES(
            in der col_name)UPDATE-Klausel auf den Wert von
            col_name, der eingefügt worden
            wäre, wäre nicht ein Konflikt aufgrund einer
            Schlüsseldublette aufgetreten. Diese Funktion ist
            insbesondere bei Einfügevorgängen für mehrere Datensätze
            praktisch. Die Funktion VALUES() ist nur
            sinnvoll in INSERT ... ON DUPLICATE KEY
            UPDATE-Anweisungen zu verwenden; andernfalls gibt
            sie NULL zurück.
            Abschnitt 13.2.4.3, „INSERT ... ON DUPLICATE KEY UPDATE“.
          
mysql>INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)->ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.

