Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

क्या डेटाबेस में PRICE फील्ड को INT या FLOAT के रूप में संग्रहीत करना चाहिए?


उत्तर: DECIMAL डेटा प्रकार का उपयोग करें

कीमत/मुद्रा मानों के लिए कभी भी INT, FLOAT, या DOUBLE का उपयोग न करें। हमेशा DECIMAL(M, D) का उपयोग करें जो सटीक निश्चित-बिंदु अंकगणित प्रदान करता है।

क्यों FLOAT/DOUBLE खराब हैं

  • फ्लोटिंग-पॉइंट बाइनरी प्रतिनिधित्व (IEEE 754) दशमलव भिन्नों को सटीक रूप से संग्रहीत नहीं कर सकता।
  • उदाहरण: 0.1 + 0.2 = 0.30000000000000004 (प्रोग्रामिंग भाषाओं में)।
  • वित्तीय गणनाओं में गोलाई त्रुटियाँ अस्वीकार्य हैं।

क्यों INT खराब है (अकेले)

  • पैसे को सेंट/पैसे में संग्रहीत करना (उदाहरण: $19.99 → 1999) काम करता है लेकिन:
  • अलग-अलग मुद्राओं के अलग-अलग दशमलव स्थान होते हैं (JPY 0, BHD 3, कुछ क्रिप्टो 18)।
  • एप्लिकेशन को हर जगह रूपांतरण संभालना पड़ता है।
  • DECIMAL स्वाभाविक रूप से स्केल संभालता है।

DECIMAL(M, D) सिंटैक्स

DECIMAL(M, D);
-- M = कुल अंक (Precision, अधिकतम 65)
-- D = दशमलव अंक (Scale, अधिकतम 30, D ≤ M)

व्यावहारिक उदाहरण

टेबल बनाना

mysql> CREATE TABLE Decimal_Demo (
    Id INT NOT NULL AUTO_INCREMENT,
    PRICE DECIMAL(18, 2),
    PRIMARY KEY(Id)
);

बड़े मान डालना

mysql> INSERT INTO Decimal_Demo(PRICE) VALUES(99999999999999.99);
mysql> INSERT INTO Decimal_Demo(PRICE) VALUES(10000000000000.99);

आउटपुट

+----+-------------------+
| Id | PRICE             |
+----+-------------------+
|  1 | 99999999999999.99 |
|  2 | 10000000000000.99 |
+----+-------------------+

सामान्य सिफारिशें

उपयोग मामलाDECIMAL(M, D)टिप्पणी
मानक मुद्रा (USD, EUR, INR)DECIMAL(10,2) या DECIMAL(12,2)2 दशमलव स्थान
उच्च-मूल्य/बहु-मुद्राDECIMAL(19,4) या DECIMAL(18,2)ERP/लेखा मानक
क्रिप्टोकरेंसीDECIMAL(30,18)18 दशमलव तक
प्रतिशत/दरेंDECIMAL(5,4)0.0001 सटीकता

मुख्य बिंदु

  • DECIMAL सटीक है; FLOAT/DOUBLE अनुमानित हैं।
  • स्टोरेज: DECIMAL प्रति 9 अंकों पर ~4 बाइट्स उपयोग करता है।
  • गणना SQL में सटीक होती है: SUM(price), price * qty आदि।
  • एप्लिकेशन कोड में भी मुद्रा के लिए डेसीमल/बिगइंट लाइब्रेरी उपयोग करें।
  1. MySQL डेटाबेस फाइलें कहां संग्रहीत करता है MySQL डेटाबेस फाइलें कहां संग्रहीत करता है

    यह जानने के लिए कि MySQL डेटाबेस फाइलें कहां संग्रहीत करता है, आप वेरिएबल @@datadir का उपयोग कर सकते हैं। क्वेरी इस प्रकार है - select @@datadir; निम्नलिखित आउटपुट पथ प्रदर्शित करता है - +---------------------------------------------+ | @@datadir | +---------------------------------------------+

  1. FBI का NGI बायोमेट्रिक्स डेटाबेस आपको क्यों चिंतित करना चाहिए FBI का NGI बायोमेट्रिक्स डेटाबेस आपको क्यों चिंतित करना चाहिए

    FBI का विवादास्पद नेक्स्ट जेनरेशन आइडेंटिफिकेशन (NGI) सिस्टम हाल ही में सुर्खियों में रहा है जब इसे प्राइवेसी एक्ट से छूट देने का अनुरोध किया गया। लेकिन डेटाबेस में वास्तव में क्या है? यदि इसे छूट दी गई तो हमें क्यों चिंतित होना चाहिए? और क्या आपको इससे अपनी गोपनीयता के उल्लंघन के बारे में चिंतित हो

  1. क्या App Store डाउन है? क्या App Store डाउन है?

    App Store iOS और macOS इकोसिस्टम के केंद्र में है। यह आपके iPhone, iPad, या Mac पर इंस्टॉल करने के लिए शानदार नए गेम, उत्पादकता टूल्स, कैमरा ऐप्स, और बहुत कुछ के लिए पोर्टल है। तो इससे कनेक्ट न कर पाना एक बड़ी बात है। यदि आप धीमे प्रदर्शन, लोड समय, या लॉग ऑन करने में कठिनाइयों का अनुभव कर रहे हैं त