Lista över numeriska funktioner

Som vi sa ovan räcker det inte för ett DBMS att bara lagra data av en viss typ, det behöver också stödja en omfattande uppsättning supersnabba operationer på data av dessa typer.

Och som du vet stöder alla DBMS en mängd olika numeriska typer och operationer på dem. Idag kommer du att bekanta dig med de mest populära av dem.

Alla numeriska funktioner i MySQL kan villkorligt delas in i 5 grupper:

  • Aritmetiska operationer
  • Bitoperationer
  • Avrundningsfunktioner
  • Algebraiska funktioner
  • Trigonometriska funktioner

Förresten, du är bekant med många av dem tack vare Java-språket, så jag tror att de inte kommer som en överraskning för dig. Men låt oss börja i ordning.

Den fullständiga listan över funktioner finns här .

Aritmetiska operationer

Det finns i princip inget oväntat, alla samma standardoperationer som på andra ställen:

# Exempel
1 +, -, *, / 2+2*2 Addition, subtraktion, multiplikation, division (inte perfekt!)
2 % 13 % 5 Resten av divisionen
3 MOD 13MOD5 Resten av divisionen
4 DIV 13 DIV 5 Division med heltal

Från det intressanta: när man dividerar två heltal får man ett reellt tal. För att dividera med heltal måste du använda DIV-operatorn.

Om du vill få resten av en division med ett heltal, måste du använda antingen MOD- eller %-operatorn, som i Java-språket. Jag kommer inte att ge exempel, eftersom för mig är allt självklart här.

Bitoperationer

Du kan också utföra bitvisa operationer på tal i SQL, ungefär som i Java. Även om det finns nyanser. Listan över tillgängliga bitoperationer presenteras i tabellen nedan:

# Exempel Notera
1 & 0b1111 och 0b1000 Bitvis OCH
2 | 0b1111 | 0b0001 Bitvis ELLER
3 ^ 0b1111^0b1111 Bit XOR
4 ~ ~0b1111 bitvis inversion
5 >> 128 >> ​​5 Bit shift höger
6 << 2 << 5 Bitskifte vänster
7 BIT_COUNT() BIT_COUNT(255) Returnerar antalet bitar som är 1

Före MySQL version 8.0 kunde sådana operationer endast utföras på datatypen BIGINT, som var 64 bitar lång och liknade Javas långa typ. Men i MySQL 8.0 (som vi överväger) har konceptet förändrats. Nu kan dessa operationer utföras på speciella binära typer:

  • BINÄR
  • VARBINÄR
  • Och även över BLOB-typer (som är en uppsättning byte)

Alla andra typer konverteras helt enkelt till BIGINT-typen och operationerna utförs som tidigare (endast på de första 64 bitarna).

Avrundningsfunktioner

För avrundning i MySQL används funktioner som är smärtsamt bekanta för dig. En lista över dem finns i tabellen nedan:

# Exempel Notera
1 CEIL(), CEILING() CEIL (5.1) = 6 Avrundar ett reellt tal uppåt
2 GOLV() GOLV(5,9) = 5 Avrundar ett reellt tal nedåt
3 RUNDA() RUND(4.1) = 4 Avrundar ett reellt tal till närmaste heltal
4 STYMPA() TRUNCATE(4,123; 2) = 4,12 Trunkerar ett tal till N decimaler
5 RAND() 0,61914388706828 Returnerar ett slumpmässigt reellt tal mellan 0 och 1
6 RAND(N) 0,93845168309142 Returnerar ett slumpmässigt reellt tal mellan 0 och 1. N används som startvärde

Du har varit bekant med alla avrundningsfunktioner sedan det första uppdraget i Java. Endast funktionerna TRUNCATE() och RANDOM(N) kan vara av intresse här.

Funktionen TRUNCATE (tal, kvantitet) tar som sin första parameter ett reellt tal, och som sin andra parameter antalet decimaler som ska lämnas. Numret trimmas till önskat antal decimaler.

När det gäller RAND(N)-funktionen är saker och ting lite mer komplicerade. Som du säkert vet kan en dator inte generera slumptal. Istället genererar den en så kallad pseudoslumptalssekvens. Det vill säga, om man tittar på ett nummer är det inte klart om det är slumpmässigt eller inte, men nummerföljden kan redan likna den slumpmässiga. Utvecklare drar fördel av detta genom att generera en talsekvens som är väldigt lik slumpmässig.

I det här fallet genereras varje nytt nummer i sekvensen enligt en knepig regel baserad på det tidigare numret i denna sekvens . Därför, om du skickar ett visst startnummer (även kallat ett frö) till genereringsalgoritmen för slumptal, kommer du varje gång att få samma sekvens av slumptal .