Lijst met numerieke functies

Zoals we hierboven zeiden, is het voor een DBMS niet voldoende om alleen gegevens van een bepaald type op te slaan, het moet ook een uitgebreide reeks supersnelle bewerkingen op gegevens van dit type ondersteunen.

En, zoals u weet, ondersteunen alle DBMS'en een verscheidenheid aan numerieke typen en bewerkingen daarop. Vandaag maakt u kennis met de meest populaire van hen.

Alle numerieke functies in MySQL kunnen voorwaardelijk worden onderverdeeld in 5 groepen:

  • Rekenkundige bewerkingen
  • Bit operaties
  • Afrondingsfuncties
  • Algebraïsche functies
  • Trigonometrische functies

Overigens ken je er veel dankzij de Java-taal, dus ik denk dat ze je niet zullen verbazen. Maar laten we op volgorde beginnen.

De volledige lijst met functies vindt u hier .

Rekenkundige bewerkingen

Er is in principe niets onverwachts, allemaal dezelfde standaardbewerkingen als elders:

# Voorbeeld
1 +, -, *, / 2+2*2 Optellen, aftrekken, vermenigvuldigen, delen (niet perfect!)
2 % 13% 5 Rest van de afdeling
3 MOD 13MOD5 Rest van de afdeling
4 DIV 13 DIV 5 Delen door geheel getal

Van het interessante: bij het delen van twee gehele getallen krijg je een reëel getal. Om te delen door een geheel getal, moet u de DIV-operator gebruiken.

Als u de rest van een deling door een geheel getal wilt krijgen, moet u de MOD- of %-operator gebruiken, zoals in de Java-taal. Ik zal geen voorbeelden geven, want voor mij is alles hier duidelijk.

Bit operaties

U kunt ook bitsgewijze bewerkingen uitvoeren op getallen in SQL, net zoals in Java. Hoewel er nuances zijn. De lijst met beschikbare bitbewerkingen wordt weergegeven in de onderstaande tabel:

# Voorbeeld Opmerking
1 & 0b1111 & 0b1000 Bitsgewijze EN
2 | 0b1111 | 0b0001 Bitsgewijze OF
3 ^ 0b1111^0b1111 Beetje XOR
4 ~ ~0b1111 bitsgewijze inversie
5 >> 128 >> ​​​​5 Bit shift naar rechts
6 << 2 << 5 Bitverschuiving naar links
7 BIT_COUNT() BIT_COUNT(255) Retourneert het aantal bits dat 1 is

Voorafgaand aan MySQL versie 8.0 konden dergelijke bewerkingen alleen worden uitgevoerd op het gegevenstype BIGINT, dat 64 bits lang was en vergelijkbaar was met het lange type van Java. In MySQL 8.0 (dat we overwegen) is het concept echter veranderd. Nu kunnen deze bewerkingen worden uitgevoerd op speciale binaire typen:

  • BINAIR
  • VARBINARY
  • En ook over BLOB-typen (die een reeks bytes zijn)

Alle andere typen worden eenvoudig geconverteerd naar het BIGINT-type en de bewerkingen worden uitgevoerd zoals voorheen (alleen op de eerste 64 bits).

Afrondingsfuncties

Voor afronding worden in MySQL voor u pijnlijk bekende functies gebruikt. Een lijst ervan wordt gegeven in de onderstaande tabel:

# Voorbeeld Opmerking
1 PLAFOND(), PLAFOND() CEIL (5.1) = 6 Rondt een reëel getal naar boven af
2 VLOER() VLOER(5.9) = 5 Rondt een reëel getal naar beneden af
3 RONDE() AFRONDEN(4.1) = 4 Rondt een reëel getal af op het dichtstbijzijnde gehele getal
4 TRUNCATE() TRUNCATE(4.123, 2) = 4.12 Kapt een getal af tot op N decimalen
5 RAND() 0.61914388706828 Retourneert een willekeurig reëel getal tussen 0 en 1
6 ASELECT(N) 0.93845168309142 Retourneert een willekeurig reëel getal tussen 0 en 1. N wordt gebruikt als startwaarde

U bent bekend met alle afrondingsfuncties sinds de eerste zoektocht in Java. Alleen de functies TRUNCATE() en RANDOM(N) kunnen hier van belang zijn.

De functie TRUNCATE (getal, hoeveelheid) neemt als eerste parameter een reëel getal en als tweede parameter het aantal decimalen dat overblijft. Het getal wordt ingekort tot het gewenste aantal decimalen.

Wat betreft de RAND(N)-functie, de zaken zijn iets gecompliceerder. Zoals u waarschijnlijk weet, kan een computer geen willekeurige getallen genereren. In plaats daarvan genereert het een zogenaamde pseudo-willekeurige getallenreeks. Dat wil zeggen, kijkend naar één cijfer, is het niet duidelijk of het willekeurig is of niet, maar de reeks getallen kan al vergelijkbaar zijn met willekeurig. Ontwikkelaars profiteren hiervan door een reeks getallen te genereren die sterk lijkt op willekeurig.

In dit geval wordt elk nieuw nummer van de reeks gegenereerd volgens een lastige regel op basis van het vorige nummer van deze reeks . Als u daarom een ​​bepaald startnummer (ook wel een seed genoemd) doorgeeft aan het algoritme voor het genereren van willekeurige getallen, ontvangt u elke keer dezelfde reeks willekeurige getallen .