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 .
GO TO FULL VERSION