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 .