A numerikus függvények listája

Ahogy fentebb említettük, egy DBMS-nek nem elég, ha egyszerűen csak tárol egy bizonyos típusú adatokat, hanem az ilyen típusú adatokkal végzett szupergyors műveletek széles készletét is támogatnia kell.

És mint tudják, az összes DBMS számos numerikus típust és műveletet támogat rajtuk. Ma megismerkedhet a legnépszerűbbekkel.

A MySQL összes numerikus függvénye feltételesen 5 csoportra osztható:

  • Aritmetikai műveletek
  • Bitműveletek
  • Kerekítési funkciók
  • Algebrai függvények
  • Trigonometrikus függvények

A Java nyelvnek köszönhetően egyébként sokukat ismered, úgyhogy szerintem nem érnek meglepetést számodra. De kezdjük sorban.

A funkciók teljes listája itt található .

Aritmetikai műveletek

Elvileg nincs semmi váratlan, ugyanazok a szabványos műveletek, mint máshol:

# Példa
1 +, -, *, / 2+2*2 Összeadás, kivonás, szorzás, osztás (nem tökéletes!)
2 % 13% 5 A hadosztály maradéka
3 MOD 13MOD5 A hadosztály maradéka
4 DIV 13 DIV 5 Osztás egész számmal

Az érdekességből: két egész szám elosztásánál valós számot kapunk. Egész számmal való osztáshoz a DIV operátort kell használni.

Ha egy osztás maradékát egész számmal szeretné megkapni, akkor vagy a MOD vagy a % operátort kell használnia, mint a Java nyelvben. Nem mondok példákat, mivel számomra itt minden nyilvánvaló.

Bitműveletek

Az SQL-ben bitenkénti műveleteket is végezhet számokkal, hasonlóan a Java-hoz. Bár vannak árnyalatok. Az elérhető bitműveletek listája az alábbi táblázatban látható:

# Példa jegyzet
1 & 0b1111 és 0b1000 Bitenként ÉS
2 | 0b1111 | 0b0001 Bitenkénti VAGY
3 ^ 0b1111^0b1111 Bit XOR
4 ~ ~0b1111 bitenkénti inverzió
5 >> 128 >> ​​5 Bit eltolás jobbra
6 << 2 << 5 Kis eltolás balra
7 BIT_COUNT() BIT_COUNT(255) Az 1 bitek számát adja vissza

A MySQL 8.0-s verziója előtt ilyen műveleteket csak a BIGINT adattípuson lehetett végrehajtani, amely 64 bites volt, és hasonló volt a Java long típusához. A MySQL 8.0-ban azonban (amelyet fontolóra veszünk) a koncepció megváltozott. Most ezeket a műveleteket speciális bináris típusokon lehet végrehajtani:

  • BINÁRIS
  • VARBINÁRIS
  • És a BLOB típusok felett is (amelyek bájtok tömbje)

Az összes többi típust egyszerűen BIGINT típusba konvertálják, és a műveleteket a korábbiak szerint hajtják végre (csak az első 64 biten).

Kerekítési funkciók

A MySQL-ben a kerekítéshez fájdalmasan ismerős funkciókat használnak. Ezek listája az alábbi táblázatban található:

# Példa jegyzet
1 MENNYEZET(), MENNYEZET() CEIL (5.1) = 6 Felfelé kerekít egy valós számot
2 PADLÓ() EMELET(5,9) = 5 Lefelé kerekít egy valós számot
3 KEREK() KEREK(4.1) = 4 Valós számot kerekít a legközelebbi egész számra
4 TRUNCATE() CSONKÍT(4,123;2) = 4,12 N tizedesjegyre csonkol egy számot
5 RAND() 0,61914388706828 0 és 1 közötti véletlenszerű valós számot ad vissza
6 RAND(N) 0,93845168309142 0 és 1 közötti véletlenszerű valós számot ad vissza. N értéket használunk kezdőértékként

Az első Java küldetés óta ismeri az összes kerekítési funkciót. Itt csak a TRUNCATE() és a RANDOM(N) függvények lehetnek érdekesek.

A TRUNCATE (szám, mennyiség) függvény első paramétereként egy valós számot vesz fel, második paraméterének pedig a hátralévő tizedesjegyek számát. A szám a kívánt számú tizedesjegyre lesz levágva.

Ami a RAND(N) függvényt illeti, a dolgok egy kicsit bonyolultabbak. Mint bizonyára tudja, a számítógép nem tud véletlen számokat generálni. Ehelyett egy úgynevezett pszeudo-véletlen számsorozatot generál. Vagyis egy számra nézve nem derül ki, hogy véletlenszerű-e vagy sem, de a számsor már hasonló lehet a véletlenhez. A fejlesztők ezt kihasználják egy olyan számsorozat létrehozásával, amely nagyon hasonlít a véletlenszerűhez.

Ebben az esetben a sorozat minden új száma egy trükkös szabály szerint jön létre a sorozat előző száma alapján . Ezért ha egy bizonyos kezdőszámot (más néven magnak) adunk át a véletlenszám-generáló algoritmusnak, akkor minden alkalommal ugyanazt a véletlenszám-sorozatot kapjuk .