Sayısal işlevlerin listesi
Yukarıda söylediğimiz gibi, bir DBMS'nin yalnızca belirli bir türdeki verileri depolaması yeterli değildir, ayrıca bu türdeki veriler üzerinde kapsamlı bir süper hızlı işlemleri desteklemesi gerekir.
Ve bildiğiniz gibi, tüm DBMS'ler çeşitli sayısal türleri ve üzerlerinde işlemleri destekler. Bugün bunların en popülerleriyle tanışacaksınız.
MySQL'deki tüm sayısal işlevler koşullu olarak 5 gruba ayrılabilir:
- aritmetik işlemler
- Bit işlemleri
- Yuvarlama işlevleri
- cebirsel fonksiyonlar
- Trigonometrik fonksiyonlar
Bu arada Java dili sayesinde birçoğuna aşinasınız, bu yüzden sizi şaşırtmayacaklarını düşünüyorum. Ama sırayla başlayalım.
Özelliklerin tam listesi burada bulunabilir .
Aritmetik işlemler
Prensipte beklenmeyen bir şey yoktur, hepsi başka yerlerdeki standart işlemlerle aynıdır:
# | Örnek | ||
---|---|---|---|
1 | +, -, *, / | 2+2*2 | Toplama, çıkarma, çarpma, bölme (mükemmel değil!) |
2 | % | %13 5 | Bölümün geri kalanı |
3 | mod | 13MOD5 | Bölümün geri kalanı |
4 | DIV | 13 BÖL 5 | tamsayıya göre bölme |
İlginç olandan: iki tam sayıyı bölerken gerçek bir sayı elde edersiniz. Tam sayıya bölmek için DIV operatörünü kullanmanız gerekir.
Bir tamsayıya bölme işleminin kalanını almak istiyorsanız, Java dilinde olduğu gibi MOD veya % operatörünü kullanmanız gerekir. Örnek vermeyeceğim, çünkü benim için burada her şey açık.
Bit işlemleri
Java'da olduğu gibi, SQL'de de sayılar üzerinde bitsel işlemler gerçekleştirebilirsiniz. Nüanslar olmasına rağmen. Mevcut bit işlemlerinin listesi aşağıdaki tabloda sunulmaktadır:
# | Örnek | Not | ||
---|---|---|---|---|
1 | & | 0b1111 & 0b1000 | bit düzeyinde VE | |
2 | | | 0b1111 | 0b0001 | bitsel VEYA | |
3 | ^ | 0b1111^0b1111 | Bit XOR | |
4 | ~ | ~0b1111 | bitsel ters çevirme | |
5 | >> | 128 >> 5 | Bit sağa kaydırma | |
6 | << | 2 << 5 | Bit kaydırma sola | |
7 | BIT_COUNT() | BIT_COUNT(255) | 1 olan bit sayısını döndürür |
MySQL 8.0 sürümünden önce, bu tür işlemler yalnızca 64 bit uzunluğunda olan ve Java'nın uzun türüne benzeyen BIGINT veri türü üzerinde gerçekleştirilebiliyordu. Ancak, (düşündüğümüz) MySQL 8.0'da konsept değişti. Artık bu işlemler özel ikili türler üzerinde gerçekleştirilebilir:
- İKİLİ
- VARBINARY
- Ayrıca BLOB türleri üzerinde (bir bayt dizisi olan)
Diğer tüm tipler basitçe BIGINT tipine dönüştürülür ve işlemler eskisi gibi gerçekleştirilir (yalnızca ilk 64 bitte).
Yuvarlama işlevleri
MySQL'de yuvarlama için size acı verici bir şekilde tanıdık gelen işlevler kullanılır. Bunların bir listesi aşağıdaki tabloda verilmiştir:
# | Örnek | Not | |
---|---|---|---|
1 | TAVAN(), TAVAN() | TAVAN (5.1) = 6 | Gerçek bir sayıyı yukarı yuvarlar |
2 | ZEMİN() | KAT(5.9) = 5 | Gerçek bir sayıyı aşağı yuvarlar |
3 | YUVARLAK() | YUVARLAK(4.1) = 4 | Gerçek bir sayıyı en yakın tam sayıya yuvarlar |
4 | KESME() | KES(4.123; 2) = 4.12 | Bir sayıyı N ondalık basamağa keser |
5 | RAND() | 0,61914388706828 | 0 ile 1 arasında rastgele bir gerçek sayı verir |
6 | RAND(N) | 0,93845168309142 | 0 ile 1 arasında rastgele bir gerçek sayı döndürür. Temel değer olarak N kullanılır |
Java'daki ilk görevden bu yana tüm yuvarlama işlevlerine aşina oldunuz. Burada yalnızca TRUNCATE() ve RANDOM(N) işlevleri ilgi çekici olabilir.
TRUNCATE (sayı, miktar) işlevi , ilk parametresi olarak gerçek bir sayı, ikinci parametresi olarak da kalan ondalık basamak sayısını alır. Sayı, istenen ondalık basamak sayısına göre kırpılır.
RAND(N) işlevine gelince, işler biraz daha karmaşıktır. Muhtemelen bildiğiniz gibi, bir bilgisayar rastgele sayılar üretemez. Bunun yerine sözde rasgele bir sayı dizisi üretir. Yani, bir sayıya bakıldığında, rastgele olup olmadığı net değildir, ancak sayıların sırası zaten rastgele benzer olabilir. Geliştiriciler, rastgeleye çok benzeyen bir sayı dizisi oluşturarak bundan yararlanır.
Bu durumda, dizinin her yeni numarası, bu dizinin bir önceki numarasına dayanan zorlu bir kurala göre üretilir . Bu nedenle, rastgele sayı üretme algoritmasına belirli bir başlangıç numarasını (tohum da denir) iletirseniz, her seferinde aynı rastgele sayı dizisini alırsınız .
GO TO FULL VERSION