Message: | Trying to access array offset on value of type null |
File: | /home/romarekl/public_html/sosyallift.com/ow_plugins/forum/controllers/topic.php |
Line: | 136 |
Özet : bu derste, sizi MySQL DECIMAL veri tipine ve veritabanı tablonuzda nasıl etkin bir şekilde kullanacağınızı anlatacağız.
MySQL DECIMAL veri tipine giriş
MySQL DECIMAL veri türü, veritabanındaki tam sayısal değerleri depolamak için kullanılır. Sıklıkla kesinlik, örneğin muhasebe sistemlerinde para verilerini koruyan sütunlar için DECIMAL veri tipini kullanırız.
Veri türü DECIMAL olan bir sütunu tanımlamak için aşağıdaki sözdizimini kullanın:
1
column_name DECIMAL(P,D);
Yukarıdaki sözdiziminde:
DECIMAL(P,D)Sütun D ondalık P haneye kadar saklayabilir anlamına gelir. Ondalık sütunun gerçek aralığı, hassasiyete ve ölçeğe göre değişir.
Ayrıca DECIMAL anahtar kelime, aynı zamanda kullanabilir DEC, FIXEDya NUMERICda için eş çünkü DECIMAL.
Gibi INT veri türü , DECIMAL türü de vardır UNSIGNEDve ZEROFILLbağlıyor. Eğer UNSIGNEDözniteliği kullanırsak, sütun DECIMAL UNSIGNEDnegatif değerleri kabul etmeyecektir.
Kullanmamız durumunda ZEROFILL, MySQL, sütun tanımında belirtilen görüntü genişliğini göstermek için ekran değerini 0 yukarı kaldıracaktır. Ayrıca ZERO FILL, DECIMALsütun için kullanırsak , MySQL UNSIGNEDözniteliği otomatik olarak sütuna ekler .
Aşağıdaki örnek, DECIMALveri türüne sahip miktar sütununu tanımlar .
1
amount DECIMAL(6,2);
Bu örnekte, miktar sütunu 6 basamaklı 2 ondalık basamaklı depolayabilir; bu nedenle, miktar sütununun aralığı 9999.99'dan -9999.99'a kadardır.
MySQL, aşağıdaki sözdizimini kullanmamızı sağlar:
1
column_name DECIMAL(P);
Bu, buna eşdeğerdir:
1
column_name DECIMAL(P,0);
Bu durumda, sütun kesirli bölüm veya ondalık nokta içermez.
Ayrıca, aşağıdaki sözdizimini bile kullanabiliriz.
1
column_name DECIMAL;
Bu durumda P'nin varsayılan değeri 10'dur.
MySQL DECIMAL depolama alanı
MySQL, tamsayı ve kesirli parçalar için depolamayı ayrı olarak atar. MySQL DECIMAL değerleri saklamak için ikili formatı kullanır . 9 haneyi 4 bayt olarak paketler.
Her parça için, 9 basamağın her bir katını saklamak 4 bayt alır. Artık rakamlar için gerekli depolama aşağıdaki tabloda gösterilmiştir:
Artık Basamaklar Bayt 0 0 1-2 1 3-4 2 5-6 3 7-9 4Örneğin DECIMAL(19,9), kesirli bölüm için 9 hane ve tam sayı için 19-9 = 10 hane vardır. Kesirli kısım 4 bayt gerektirir. Tam sayı parçası 1 9 basamak için 4 bayt gerektirir, 1 artık rakam için 1 bayt gerektirir. Toplamda, DECIMAL(19,9)sütun 9 bayt gerektirir.
MySQL DECIMAL veri tipi ve parasal veriler
DECIMAL Veri tipini genellikle fiyatlar, maaş, hesap bakiyeleri, vb. Gibi parasal veriler için kullanırız. Parasal verileri işleyen bir veritabanı tasarlarsanız, aşağıdaki sözdizimi OK olmalıdır.
amount DECIMAL(19,2);
Ancak, Genel Kabul Görmüş Muhasebe İlkeleri (GAAP) kurallarına uymak istiyorsanız, parasal sütunun, yuvarlama değerinin 0,01'i aşmadığından emin olmak için en az 4 ondalık basamak olması gerekir. Bu durumda, aşağıdaki gibi 4 ondalık basamaklı sütunu tanımlamalısınız:
amount DECIMAL(19,4);
MySQL DECIMAL veri türü örneği
Öncelikle, üç sütunla adlandırılmış yeni bir tablo oluşturunn materials : kimlik, açıklama ve maliyet.
CREATE TABLE materials (
id INT AUTO_INCREMENT PRIMARY KEY,
description VARCHAR(255),
cost DECIMAL(19 , 4 ) NOT NULL
);
İkinci olarak, veri girmek için içine materialstablo.
INSERT INTO materials(description,cost)
VALUES('Bicycle', 500.34),('Seat',10.23),('Break',5.21);
Üçüncü olarak, tablodaki sorgu verileri materials .
SELECT
*
FROM
materials;
Dördüncü olarak, ZEROFILLözelliği dahil etmek için maliyet sütununu değiştirin .
ALTER TABLE materials
MODIFY cost DECIMAL(19,4) zerofill;
Beşinci olarak, malzeme tablosunu tekrar sorgulayın.
SELECT
*
FROM
materials;
Gördüğünüz gibi, çıkış değerlerinde birçok sıfır var.
Bu eğitimde, size MySQL DECIMAL veri türü hakkında ayrıntılı bilgi verdik ve finansal veriler gibi tam sayısal verileri depolayan sütunlara nasıl uygulayacağınızı gösterdik.