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

MySQL में JSON का उपयोग करके एक सेल में कई तत्व संग्रहीत करें

MySQL 5.7+ का JSON डेटा प्रकार एक ही सेल में जटिल संरचित डेटा (सरणी, ऑब्जेक्ट) संग्रहीत करने की अनुमति देता है, जिससे संबंधपरक मॉडल में लचीलापन आता है।

टेबल बनाएं

mysql> CREATE TABLE DemoTable1828 (
    EmployeeId INT,
    EmployeeRecords JSON
);

JSON सरणी डालें

mysql> INSERT INTO DemoTable1828 VALUES(1,
    '[{"EmployeeName":"Chris","EmployeeAge":29},{"EmployeeName":"David","EmployeeAge":27}]');

mysql> INSERT INTO DemoTable1828 VALUES(2,
    '[{"EmployeeName":"John","EmployeeAge":36},{"EmployeeName":"Mike","EmployeeAge":32}]');

डेटा देखें

mysql> SELECT * FROM DemoTable1828;
+------------+--------------------------------------------------------------+
| EmployeeId | EmployeeRecords                                              |
+------------+--------------------------------------------------------------+
|          1 | [{"EmployeeAge": 29, "EmployeeName": "Chris"}, ...]          |
|          2 | [{"EmployeeAge": 36, "EmployeeName": "John"}, ...]           |
+------------+--------------------------------------------------------------+

JSON क्वेरी उदाहरण

पहले कर्मचारी का नाम प्राप्त करें

mysql> SELECT JSON_UNQUOTE(JSON_EXTRACT(EmployeeRecords, '$[0].EmployeeName')) AS FirstEmp
    FROM DemoTable1828;

सभी कर्मचारी नाम निकालें (MySQL 8.0+)

mysql> SELECT EmployeeId, 
    JSON_UNQUOTE(JSON_EXTRACT(EmployeeRecords, '$[*].EmployeeName')) AS AllNames
    FROM DemoTable1828;

लाभ

  • स्कीमा-लेस लचीलापन: प्रत्येक पंक्ति में अलग संरचना हो सकती है।
  • मान्य JSON ही संग्रहीत होता है (अमान्य डालने पर त्रुटि)।
  • Generated Columns + इंडेक्स के साथ तेज़ खोज संभव।

सावधानी

  • अत्यधिक JSON उपयोग संबंधपरक लाभ (जॉइन, बाधाएं, प्रकार सुरक्षा) खो देता है।
  • बड़े JSON दस्तावेज़ों पर क्वेरी धीमी हो सकती है।
  • सामान्यीकृत टेबल डिज़ाइन अक्सर बेहतर होता है।
  1. - MySQL में ZEROFILL के साथ कस्टम ऑटो-इन्क्रीमेंट सेट करें

    ZEROFILL विशेषता संख्यात्मक कॉलम को बाएं से शून्य से भरकर निर्दिष्ट चौड़ाई तक पैड करती है। यह UNSIGNED भी बनाता है। टेबल बनाएं mysql> CREATE TABLE DemoTable1831 ( UserId INT(7) ZEROFILL AUTO_INCREMENT, PRIMARY KEY(UserId) ); यहां INT(7) का अर्थ है प्रदर्शन चौड़ाई 7 अंक। डेटा डालें mysq

  1. - MySQL में ADDTIME() से DATETIME कॉलम में समय जोड़ें

    MySQL का ADDTIME(datetime, time) फ़ंक्शन एक DATETIME/TIME मान में समय अंतराल जोड़ता है। टेबल बनाएं mysql> CREATE TABLE DemoTable1848 (ShippingDate DATETIME); डेटा डालें mysql> INSERT INTO DemoTable1848 VALUES(2019-10-11 12:30:45); mysql> INSERT INTO DemoTable1848 VALUES(2019-01-12 10:00:0

  1. - MySQL में ENUM के साथ सेट किए गए ACTIVE स्टेटस वाले रिकॉर्ड चुनें

    उदाहरण ENUM कॉलम के साथ टेबल बनाएं: ); डेटा डालें: INSERT INTO DemoTable2037 VALUES (99, Active), (99, Inactive), (100, Inactive), (99, Active), (100, Inactive), (101, Active), (101, Active); क्वेरी केवल ACTIVE स्टेटस वाले अद्वितीय StudentId प्राप्त करें: WHERE status = Active GROUP BY StudentI