Listahan ng mga numeric function
Tulad ng sinabi namin sa itaas, hindi sapat para sa isang DBMS na mag-imbak lamang ng data ng isang partikular na uri, kailangan din nitong suportahan ang isang malawak na hanay ng mga napakabilis na operasyon sa data ng mga ganitong uri.
At, tulad ng alam mo, sinusuportahan ng lahat ng DBMS ang iba't ibang uri ng numero at pagpapatakbo sa mga ito. Ngayon ay makikilala mo ang pinakasikat sa kanila.
Ang lahat ng mga numeric na function sa MySQL ay maaaring may kondisyon na nahahati sa 5 grupo:
- Mga operasyong aritmetika
- Mga pagpapatakbo ng bit
- Mga function ng rounding
- Algebraic function
- Trigonometric function
Sa pamamagitan ng paraan, pamilyar ka sa marami sa kanila salamat sa wikang Java, kaya sa palagay ko hindi sila sorpresa sa iyo. Ngunit magsimula tayo sa pagkakasunud-sunod.
Ang buong listahan ng mga tampok ay matatagpuan dito .
Mga operasyon sa aritmetika
Mayroong, sa prinsipyo, walang hindi inaasahang, lahat ng parehong karaniwang mga operasyon tulad ng sa ibang lugar:
# | Halimbawa | ||
---|---|---|---|
1 | +, -, *, / | 2+2*2 | Pagdaragdag, pagbabawas, pagpaparami, paghahati (hindi perpekto!) |
2 | % | 13% 5 | Ang natitira sa dibisyon |
3 | MOD | 13MOD5 | Ang natitira sa dibisyon |
4 | DIV | 13 DIV 5 | Dibisyon ayon sa integer |
Mula sa kawili-wili: kapag hinahati ang dalawang integer, makakakuha ka ng isang tunay na numero. Upang hatiin sa pamamagitan ng integer, kailangan mong gamitin ang DIV operator.
Kung gusto mong makuha ang natitirang bahagi ng isang dibisyon sa pamamagitan ng isang integer, kailangan mong gamitin ang alinman sa MOD o % operator, tulad ng sa wikang Java. Hindi ako magbibigay ng mga halimbawa, para sa akin ang lahat ay halata dito.
Mga pagpapatakbo ng bit
Maaari ka ring magsagawa ng mga bitwise na operasyon sa mga numero sa SQL, katulad ng sa Java. Bagaman may mga nuances. Ang listahan ng mga magagamit na bit operations ay ipinakita sa talahanayan sa ibaba:
# | Halimbawa | Tandaan | ||
---|---|---|---|---|
1 | at | 0b1111 at 0b1000 | Bitwise AT | |
2 | | | 0b1111 | 0b0001 | Bitwise O | |
3 | ^ | 0b1111^0b1111 | Bit XOR | |
4 | ~ | ~0b1111 | bitwise inversion | |
5 | >> | 128 >> 5 | Bit shift pakanan | |
6 | << | 2 << 5 | Bit shift pakaliwa | |
7 | BIT_COUNT() | BIT_COUNT(255) | Ibinabalik ang bilang ng mga bit na 1 |
Bago ang MySQL bersyon 8.0, ang mga naturang operasyon ay maaari lamang gawin sa BIGINT data type, na 64 bits ang haba at katulad ng mahabang uri ng Java. Gayunpaman, sa MySQL 8.0 (na aming isinasaalang-alang), ang konsepto ay nagbago. Ngayon ang mga operasyong ito ay maaaring isagawa sa mga espesyal na uri ng binary:
- BINARY
- VARBINARY
- At gayundin sa mga uri ng BLOB (na isang hanay ng mga byte)
Ang lahat ng iba pang mga uri ay na-convert lamang sa uri ng BIGINT at ang mga operasyon ay ginanap tulad ng dati (lamang sa unang 64 bits).
Mga function ng rounding
Para sa pag-ikot sa MySQL function na masakit na pamilyar sa iyo ay ginagamit. Ang isang listahan ng mga ito ay ibinigay sa talahanayan sa ibaba:
# | Halimbawa | Tandaan | |
---|---|---|---|
1 | CEIL(), CEILING() | CEIL (5.1) = 6 | Ni-round up ang isang tunay na numero |
2 | FLOOR() | FLOOR(5.9) = 5 | Niro-round pababa ang isang tunay na numero |
3 | ROUND() | ROUND(4.1) = 4 | Nira-round ang totoong numero sa pinakamalapit na integer |
4 | TRUNCATE() | TRUNCATE(4.123, 2) = 4.12 | Pinutol ang isang numero sa N decimal na lugar |
5 | RAND() | 0.61914388706828 | Nagbabalik ng random na totoong numero sa pagitan ng 0 at 1 |
6 | RAND(N) | 0.93845168309142 | Nagbabalik ng random na totoong numero sa pagitan ng 0 at 1. Ginagamit ang N bilang seed value |
Pamilyar ka sa lahat ng rounding function mula noong unang quest sa Java. Tanging ang TRUNCATE() at RANDOM(N) na mga function ang maaaring maging interesado dito.
Ang TRUNCATE (number, quantity) function ay tumatagal bilang ang unang parameter nito ay isang tunay na numero, at bilang pangalawang parameter nito ang bilang ng mga decimal na lugar na maiiwan. Ang numero ay pinuputol sa nais na bilang ng mga decimal na lugar.
Tulad ng para sa RAND(N) function, ang mga bagay ay medyo mas kumplikado. Tulad ng malamang na alam mo, ang isang computer ay hindi makakabuo ng mga random na numero. Sa halip, bumubuo ito ng tinatawag na pseudo-random number sequence. Iyon ay, sa pagtingin sa isang numero, hindi malinaw kung ito ay random o hindi, ngunit ang pagkakasunud-sunod ng mga numero ay maaaring katulad na sa random. Sinasamantala ito ng mga developer sa pamamagitan ng pagbuo ng pagkakasunod-sunod ng mga numero na halos kapareho sa random.
Sa kasong ito, ang bawat bagong numero ng sequence ay nabuo ayon sa isang nakakalito na panuntunan batay sa nakaraang numero ng sequence na ito . Samakatuwid, kung ipapasa mo ang isang tiyak na panimulang numero (tinatawag ding seed) sa random number generation algorithm, pagkatapos ay sa bawat pagkakataon ay makakatanggap ka ng parehong pagkakasunud-sunod ng mga random na numero .