Liste over numeriske funktioner

Som vi sagde ovenfor, er det ikke nok for et DBMS blot at gemme data af en bestemt type, det skal også understøtte et omfattende sæt superhurtige operationer på data af disse typer.

Og som du ved, understøtter alle DBMS'er en række numeriske typer og operationer på dem. I dag vil du stifte bekendtskab med de mest populære af dem.

Alle numeriske funktioner i MySQL kan betinget opdeles i 5 grupper:

  • Aritmetiske operationer
  • Bit operationer
  • Afrundingsfunktioner
  • Algebraiske funktioner
  • Trigonometriske funktioner

I øvrigt kender du mange af dem takket være Java-sproget, så jeg tror ikke, de kommer som en overraskelse for dig. Men lad os starte i rækkefølge.

Den fulde liste over funktioner kan findes her .

Aritmetiske operationer

Der er i princippet intet uventet, alle de samme standardoperationer som andre steder:

# Eksempel
1 +, -, *, / 2+2*2 Addition, subtraktion, multiplikation, division (ikke perfekt!)
2 % 13 % 5 Resten af ​​delingen
3 MOD 13MOD5 Resten af ​​delingen
4 DIV 13 DIV 5 Division efter heltal

Fra det interessante: når man dividerer to heltal, får man et reelt tal. For at dividere med heltal skal du bruge DIV-operatoren.

Hvis du ønsker at få resten af ​​en division med et heltal, så skal du bruge enten MOD- eller %-operatoren, som i Java-sproget. Jeg vil ikke give eksempler, da for mig er alt indlysende her.

Bit operationer

Du kan også udføre bitvise operationer på tal i SQL, ligesom i Java. Selvom der er nuancer. Listen over tilgængelige bitoperationer er præsenteret i tabellen nedenfor:

# Eksempel Bemærk
1 & 0b1111 og 0b1000 Bitvis OG
2 | 0b1111 | 0b0001 Bitvis ELLER
3 ^ 0b1111^0b1111 Bit XOR
4 ~ ~0b1111 bitvis inversion
5 >> 128 >> ​​5 Bit skift til højre
6 << 2 << 5 Bitskift til venstre
7 BIT_COUNT() BIT_COUNT(255) Returnerer antallet af bit, der er 1

Før MySQL version 8.0 kunne sådanne operationer kun udføres på datatypen BIGINT, som var 64 bit lang og lignede Javas lange type. Men i MySQL 8.0 (som vi overvejer) har konceptet ændret sig. Nu kan disse operationer udføres på specielle binære typer:

  • BINÆR
  • VARBINARY
  • Og også over BLOB-typer (som er en række bytes)

Alle andre typer konverteres blot til BIGINT-typen, og operationerne udføres som før (kun på de første 64 bit).

Afrundingsfunktioner

Til afrunding i MySQL bruges funktioner, som du smerteligt kender. En liste over dem er givet i tabellen nedenfor:

# Eksempel Bemærk
1 LOFT(), LOFT() CEIL (5.1) = 6 Runder et reelt tal opad
2 ETAGE() GULV(5,9) = 5 Runder et reelt tal ned
3 RUND() RUND(4,1) = 4 Afrunder et reelt tal til nærmeste heltal
4 TRUNCATE() TRUNCATE(4,123; 2) = 4,12 Afkorter et tal til N decimaler
5 RAND() 0,61914388706828 Returnerer et tilfældigt reelt tal mellem 0 og 1
6 RAND(N) 0,93845168309142 Returnerer et tilfældigt reelt tal mellem 0 og 1. N bruges som startværdi

Du har været bekendt med alle afrundingsfunktionerne siden den første opgave i Java. Kun funktionerne TRUNCATE() og RANDOM(N) kan være af interesse her.

Funktionen TRUNCATE (tal, kvantitet) tager som sin første parameter et reelt tal, og som sin anden parameter antallet af decimaler, der skal tilbage. Tallet trimmes til det ønskede antal decimaler.

Hvad angår RAND(N)-funktionen, er tingene lidt mere komplicerede. Som du sikkert ved, kan en computer ikke generere tilfældige tal. I stedet genererer den en såkaldt pseudo-tilfældig talsekvens. Det vil sige, at hvis man ser på ét tal, er det ikke klart, om det er tilfældigt eller ej, men rækkefølgen af ​​tal kan allerede ligne tilfældigt. Udviklere drager fordel af dette ved at generere en sekvens af tal, der ligner meget tilfældigt.

I dette tilfælde genereres hvert nyt nummer i sekvensen i henhold til en vanskelig regel baseret på det tidligere nummer i denne sekvens . Derfor, hvis du sender et bestemt startnummer (også kaldet et frø) til genereringsalgoritmen til tilfældige tal, vil du hver gang modtage den samme rækkefølge af tilfældige tal .