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 .