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