Liste numerischer Funktionen
Wie oben erwähnt, reicht es für ein DBMS nicht aus, einfach nur Daten eines bestimmten Typs zu speichern, es muss auch eine umfangreiche Reihe superschneller Operationen für Daten dieser Typen unterstützen.
Und wie Sie wissen, unterstützen alle DBMS eine Vielzahl numerischer Typen und Operationen. Heute lernen Sie die beliebtesten davon kennen.
Alle numerischen Funktionen in MySQL können bedingt in 5 Gruppen unterteilt werden:
- Arithmetische Operationen
- Bitoperationen
- Rundungsfunktionen
- Algebraische Funktionen
- Trigonometrische Funktionen
Viele davon sind Ihnen übrigens dank der Java-Sprache bekannt, ich denke also, dass sie Sie nicht überraschen werden. Aber fangen wir der Reihe nach an.
Die vollständige Liste der Funktionen finden Sie hier .
Rechenoperationen
Im Prinzip gibt es nichts Unerwartetes, alle die gleichen Standardoperationen wie anderswo:
# | Beispiel | ||
---|---|---|---|
1 | +, -, *, / | 2+2*2 | Addition, Subtraktion, Multiplikation, Division (nicht perfekt!) |
2 | % | 13 % 5 | Rest der Division |
3 | MOD | 13MOD5 | Rest der Division |
4 | DIV | 13 Abt. 5 | Division durch Ganzzahl |
Aus dem Interessanten: Wenn man zwei ganze Zahlen dividiert, erhält man eine reelle Zahl. Um durch eine ganze Zahl zu dividieren, müssen Sie den DIV-Operator verwenden.
Wenn Sie den Rest einer Division durch eine ganze Zahl erhalten möchten, müssen Sie wie in der Java-Sprache entweder den MOD- oder den %-Operator verwenden. Ich werde keine Beispiele nennen, da für mich hier alles klar ist.
Bitoperationen
Sie können in SQL auch bitweise Operationen an Zahlen durchführen, ähnlich wie in Java. Obwohl es Nuancen gibt. Die Liste der verfügbaren Bitoperationen ist in der folgenden Tabelle aufgeführt:
# | Beispiel | Notiz | ||
---|---|---|---|---|
1 | & | 0b1111 & 0b1000 | Bitweises UND | |
2 | | | 0b1111 | 0b0001 | Bitweises ODER | |
3 | ^ | 0b1111^0b1111 | Bit-XOR | |
4 | ~ | ~0b1111 | bitweise Inversion | |
5 | >> | 128 >> 5 | Bitverschiebung nach rechts | |
6 | << | 2 << 5 | Bitverschiebung nach links | |
7 | BIT_COUNT() | BIT_COUNT(255) | Gibt die Anzahl der Bits zurück, die 1 sind |
Vor MySQL Version 8.0 konnten solche Operationen nur für den Datentyp BIGINT ausgeführt werden, der 64 Bit lang war und dem langen Typ von Java ähnelte. In MySQL 8.0 (das wir in Betracht ziehen) hat sich das Konzept jedoch geändert. Jetzt können diese Operationen für spezielle Binärtypen ausgeführt werden:
- BINÄR
- VARBINÄR
- Und auch über BLOB-Typen (die ein Array von Bytes sind)
Alle anderen Typen werden einfach in den Typ BIGINT umgewandelt und die Operationen werden wie zuvor ausgeführt (nur auf den ersten 64 Bits).
Rundungsfunktionen
Zum Runden in MySQL werden Ihnen schmerzlich bekannte Funktionen verwendet. Eine Liste davon finden Sie in der folgenden Tabelle:
# | Beispiel | Notiz | |
---|---|---|---|
1 | DECKE(), DECKE() | Decke (5.1) = 6 | Rundet eine reelle Zahl auf |
2 | BODEN() | BODEN(5.9) = 5 | Rundet eine reelle Zahl ab |
3 | RUNDEN() | RUNDE(4.1) = 4 | Rundet eine reelle Zahl auf die nächste ganze Zahl |
4 | KÜRZEN() | TRUNCATE(4.123, 2) = 4.12 | Schneidet eine Zahl auf N Dezimalstellen ab |
5 | RAND() | 0,61914388706828 | Gibt eine zufällige reelle Zahl zwischen 0 und 1 zurück |
6 | RAND(N) | 0,93845168309142 | Gibt eine zufällige reelle Zahl zwischen 0 und 1 zurück. N wird als Startwert verwendet |
Sie kennen alle Rundungsfunktionen seit der ersten Quest in Java. Hier können nur die Funktionen TRUNCATE() und RANDOM(N) von Interesse sein.
Die Funktion TRUNCATE (Zahl, Menge) verwendet als ersten Parameter eine reelle Zahl und als zweiten Parameter die Anzahl der verbleibenden Dezimalstellen. Die Zahl wird auf die gewünschte Anzahl Dezimalstellen gekürzt.
Bei der RAND(N)-Funktion sind die Dinge etwas komplizierter. Wie Sie wahrscheinlich wissen, kann ein Computer keine Zufallszahlen generieren. Stattdessen wird eine sogenannte Pseudozufallszahlenfolge erzeugt. Das heißt, wenn man sich eine Zahl ansieht, ist nicht klar, ob sie zufällig ist oder nicht, aber die Zahlenfolge kann bereits einer zufälligen Folge ähneln. Entwickler machen sich dies zunutze, indem sie eine Zahlenfolge erzeugen, die dem Zufall sehr ähnlich ist.
In diesem Fall wird jede neue Nummer der Sequenz nach einer kniffligen Regel basierend auf der vorherigen Nummer dieser Sequenz generiert . Wenn Sie also eine bestimmte Startzahl (auch Seed genannt) an den Zufallszahlengenerierungsalgorithmus übergeben, erhalten Sie jedes Mal die gleiche Folge von Zufallszahlen .