- 1 1. परिचय
- 2 2. MySQL JSON के साथ एरे को संभालने का मूल ज्ञान
- 3 3. बेसिक JSON एरे ऑपरेशन्स
- 4 4. JSON एरे की खोज और फ़िल्टरिंग
- 5 5. व्यावहारिक उदाहरण: वास्तविक उपयोग मामलों में JSON एरे का उपयोग
- 6 6. JSON डेटा प्रकार का उपयोग करते समय महत्वपूर्ण विचार
- 7 7. MySQL में एरेज़ के उपयोग के बारे में अक्सर पूछे जाने वाले प्रश्न
- 8 8. सारांश
1. परिचय
MySQL में एरे डेटा को संभालने की आवश्यकता
डेटाबेस आमतौर पर रिलेशनल डिज़ाइन सिद्धांतों के आधार पर डेटा संग्रहीत करते हैं। हालांकि, एप्लिकेशन की आवश्यकताओं के अनुसार, ऐसे मामले होते हैं जहाँ आप एक ही कॉलम में कई मान संग्रहीत करना चाहते हैं। ऐसी स्थितियों में, “एरे” के समान डेटा संरचना उपयोगी बन जाती है।
उदाहरण के लिए, निम्नलिखित परिदृश्यों पर विचार करें:
- उपयोगकर्ता द्वारा चयनित कई टैग संग्रहीत करना।
- किसी उत्पाद के लिए कई इमेज URL सहेजना।
- इतिहास या लॉग को एक ही फ़ील्ड में संयोजित करना।
JSON डेटा टाइप के उपयोग के लाभ
MySQL सीधे “एरे टाइप” प्रदान नहीं करता, लेकिन JSON डेटा टाइप का उपयोग करके आप एरे‑जैसी डेटा संरचनाओं को संभाल सकते हैं। JSON टाइप अत्यधिक लचीला है और निम्नलिखित लाभ देता है:
- नेस्टेड डेटा संरचनाओं का समर्थन करता है।
- क्वेरीज़ के भीतर डेटा को आसानी से हेरफेर करने की सुविधा देता है।
- एक ही फ़ील्ड में कई डेटा फ़ॉर्मेट्स का प्रबंधन सक्षम बनाता है।
इस लेख में, हम JSON डेटा टाइप का उपयोग करके MySQL में एरे डेटा को प्रभावी ढंग से कैसे संभालें, यह परिचित कराएँगे।
2. MySQL JSON के साथ एरे को संभालने का मूल ज्ञान
JSON डेटा टाइप क्या है?
JSON (JavaScript Object Notation) एक हल्का और सरल डेटा इंटरचेंज फ़ॉर्मेट है। MySQL में, मूल JSON समर्थन संस्करण 5.7 और उसके बाद के संस्करणों में पेश किया गया, जिससे आप डेटाबेस के भीतर सीधे JSON‑फ़ॉर्मेटेड डेटा को संग्रहीत और हेरफेर कर सकते हैं।
उदाहरण: नीचे एक JSON कॉलम में संग्रहीत किए जा सकने वाले डेटा का उदाहरण दिया गया है।
{
"tags": ["PHP", "MySQL", "JSON"],
"status": "published"
}
JSON डेटा टाइप के लाभ और उपयोग केस
JSON टाइप के मुख्य लाभ इस प्रकार हैं:
- लचीली डेटा संरचना : आप रिलेशनल स्कीमा को बदले बिना वेरिएबल‑लेंथ डेटा को संभाल सकते हैं।
- कुशल डेटा हेरफेर : आप MySQL के समर्पित फ़ंक्शन्स (जैसे
JSON_EXTRACT,JSON_ARRAY) का उपयोग करके डेटा को आसानी से हेरफेर कर सकते हैं। - स्कीमा‑लेस डिज़ाइन : एप्लिकेशन की आवश्यकताओं बदलने पर स्कीमा को बार‑बार संशोधित करने की आवश्यकता नहीं रहती।
उदाहरण उपयोग केस:
- उत्पाद जानकारी में कई श्रेणियों को असाइन करना।
- कस्टम उपयोगकर्ता सेटिंग्स को सहेजना।
- वेब एप्लिकेशन में नेस्टेड JSON डेटा का उपयोग करना।
3. बेसिक JSON एरे ऑपरेशन्स
JSON एरे बनाना
MySQL में, आप JSON_ARRAY फ़ंक्शन का उपयोग करके आसानी से एक JSON एरे बना सकते हैं। एरे तब उपयोगी होते हैं जब आप एक ही कॉलम में कई मान संग्रहीत करना चाहते हैं।
उदाहरण
निम्नलिखित क्वेरी tags नामक एक JSON एरे बनाती है।
SELECT JSON_ARRAY('PHP', 'MySQL', 'JavaScript') AS tags;
परिणाम:
["PHP", "MySQL", "JavaScript"]
व्यावहारिक उदाहरण
निम्नलिखित उदाहरण दिखाता है कि कैसे INSERT स्टेटमेंट का उपयोग करके डेटाबेस में एक JSON एरे संग्रहीत किया जा सकता है।
CREATE TABLE articles (
id INT AUTO_INCREMENT PRIMARY KEY,
tags JSON
);
INSERT INTO articles (tags)
VALUES (JSON_ARRAY('PHP', 'MySQL', 'JavaScript'));
JSON एरे से डेटा निकालना
JSON एरे में संग्रहीत डेटा को पुनः प्राप्त करने के लिए JSON_EXTRACT फ़ंक्शन का उपयोग करें। यह फ़ंक्शन एरे से विशिष्ट तत्वों को आसानी से निकालने की अनुमति देता है।
उदाहरण
निम्नलिखित उदाहरण एरे के दूसरे तत्व को पुनः प्राप्त करता है (इंडेक्स 0 से शुरू होता है)।
SELECT JSON_EXTRACT('["PHP", "MySQL", "JavaScript"]', '$[1]') AS second_tag;
परिणाम:
"MySQL"
कई तत्वों को पुनः प्राप्त करना
आप एक साथ कई तत्वों को भी पुनः प्राप्त कर सकते हैं।
SELECT JSON_EXTRACT('["PHP", "MySQL", "JavaScript"]', '$[0]', '$[2]') AS extracted_values;
डेटा जोड़ना, अपडेट करना और हटाना
एरे में डेटा जोड़ना
आप JSON_ARRAY_APPEND फ़ंक्शन का उपयोग करके मौजूदा एरे में नया डेटा जोड़ सकते हैं।
SET @tags = '["PHP", "MySQL"]';
SELECT JSON_ARRAY_APPEND(@tags, '$', 'JavaScript') AS updated_tags;
परिणाम:
["PHP", "MySQL", "JavaScript"]
एरे में डेटा अपडेट करना
आप JSON_SET फ़ंक्शन का उपयोग करके एरे में किसी विशिष्ट तत्व को अपडेट कर सकते हैं।
SET @tags = '["PHP", "MySQL", "JavaScript"]';
SELECT JSON_SET(@tags, '$[1]', 'Python') AS updated_tags;
परिणाम:
["PHP", "Python", "JavaScript"]
एरे से डेटा हटाना
आप JSON_REMOVE फ़ंक्शन का उपयोग करके एरे से एक विशिष्ट तत्व हटा सकते हैं।
SET @tags = '["PHP", "MySQL", "JavaScript"]';
SELECT JSON_REMOVE(@tags, '$[1]') AS updated_tags;
परिणाम:
["PHP", "JavaScript"]
4. JSON एरे की खोज और फ़िल्टरिंग
विशिष्ट डेटा वाले एरे की खोज
JSON एरे में विशिष्ट डेटा है या नहीं, यह जांचने के लिए JSON_CONTAINS फ़ंक्शन का उपयोग करें। यह फ़ंक्शन निर्धारित करता है कि निर्दिष्ट मान JSON एरे में मौजूद है या नहीं।
उदाहरण
निम्नलिखित उदाहरण जांचता है कि JSON एरे में “MySQL” मौजूद है या नहीं।
SELECT JSON_CONTAINS('["PHP", "MySQL", "JavaScript"]', '"MySQL"') AS is_present;
परिणाम:
1 (if present)
0 (if not present)
व्यावहारिक उदाहरण: शर्तीय खोज
डेटाबेस तालिका में JSON एरे में किसी विशिष्ट मान वाले पंक्तियों को खोजने के लिए, WHERE क्लॉज़ में JSON_CONTAINS का उपयोग करें।
SELECT *
FROM articles
WHERE JSON_CONTAINS(tags, '"MySQL"');
यह क्वेरी उन पंक्तियों को प्राप्त करती है जहाँ tags कॉलम में “MySQL” मौजूद है।
एरे की लंबाई प्राप्त करना
JSON एरे में तत्वों की संख्या प्राप्त करने के लिए, JSON_LENGTH फ़ंक्शन का उपयोग करें। यह फ़ंक्शन एरे में तत्वों की संख्या लौटाता है और डेटा विश्लेषण तथा शर्तीय लॉजिक के लिए उपयोगी है।
उदाहरण
निम्नलिखित उदाहरण एरे में तत्वों की संख्या प्राप्त करता है।
SELECT JSON_LENGTH('["PHP", "MySQL", "JavaScript"]') AS array_length;
परिणाम:
3
व्यावहारिक उदाहरण: विशिष्ट शर्त को पूरा करने वाली पंक्तियों को निकालना
उन पंक्तियों को निकालने के लिए जहाँ तत्वों की संख्या किसी विशिष्ट मान से अधिक या बराबर हो, WHERE क्लॉज़ में JSON_LENGTH का उपयोग करें।
SELECT *
FROM articles
WHERE JSON_LENGTH(tags) >= 2;
यह क्वेरी उन पंक्तियों को प्राप्त करती है जहाँ tags कॉलम में दो या अधिक तत्व हैं।
उन्नत शर्तीय क्वेरी उदाहरण
आप अधिक उन्नत खोजों के लिए कई शर्तों को संयोजित कर सकते हैं। निम्नलिखित क्वेरी उन पंक्तियों की खोज करती है जहाँ tags एरे में “JavaScript” है और उसमें तीन या अधिक तत्व हैं।
SELECT *
FROM articles
WHERE JSON_CONTAINS(tags, '"JavaScript"')
AND JSON_LENGTH(tags) >= 3;
5. व्यावहारिक उदाहरण: वास्तविक उपयोग मामलों में JSON एरे का उपयोग
उत्पाद श्रेणियों को JSON एरे के रूप में कैसे संग्रहीत करें
ई-कॉमर्स साइटों और समान प्रणालियों में, एक उत्पाद कई श्रेणियों से संबंधित हो सकता है। ऐसे मामलों में, आप JSON एरे का उपयोग करके श्रेणी जानकारी को प्रभावी ढंग से संग्रहीत कर सकते हैं।
उदाहरण: उत्पाद श्रेणी डेटा संग्रहीत करना
नीचे एक उदाहरण है जिसमें उत्पाद तालिका में categories नामक JSON कॉलम बनाया गया है और कई श्रेणियों को संग्रहीत किया गया है।
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
categories JSON
);
INSERT INTO products (name, categories)
VALUES ('Laptop', JSON_ARRAY('Electronics', 'Computers')),
('Smartphone', JSON_ARRAY('Electronics', 'Mobile Devices'));
यह संरचना डेटा को संक्षिप्त रखती है, भले ही एक उत्पाद कई श्रेणियों से संबंधित हो।
विशिष्ट श्रेणी में उत्पादों को निकालने के लिए क्वेरी
JSON डेटा प्रकार का उपयोग करके, आप आसानी से उन उत्पादों की खोज कर सकते हैं जो किसी विशिष्ट श्रेणी से संबंधित हैं।
क्वेरी उदाहरण
निम्नलिखित क्वेरी “Electronics” श्रेणी के सभी उत्पादों को प्राप्त करती है।
SELECT name
FROM products
WHERE JSON_CONTAINS(categories, '"Electronics"');
परिणाम:
Laptop
Smartphone
यह क्वेरी श्रेणी के अनुसार उत्पाद सूचियों को लचीले तरीके से प्राप्त करना आसान बनाती है।
उदाहरण: मूल्य सीमा द्वारा फ़िल्टरिंग
आइए देखें कि मूल्य जानकारी शामिल करने वाला JSON डेटा कैसे संग्रहीत किया जाए और फिर मूल्य सीमा के आधार पर उत्पादों की खोज कैसे की जाए।
उदाहरण डेटा
निम्नलिखित उदाहरण JSON प्रकार का उपयोग करके प्रत्येक उत्पाद के लिए मूल्य जानकारी संग्रहीत करता है।
CREATE TABLE products_with_prices (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
details JSON
);
INSERT INTO products_with_prices (name, details)
VALUES ('Laptop', '{"price": 150000, "categories": ["Electronics", "Computers"]}'),
('Smartphone', '{"price": 80000, "categories": ["Electronics", "Mobile Devices"]}');
क्वेरी उदाहरण
100,000 या उससे अधिक मूल्य वाले उत्पादों को खोजने के लिए, JSON_EXTRACT फ़ंक्शन का उपयोग करें।
SELECT name
FROM products_with_prices
WHERE JSON_EXTRACT(details, '$.price') >= 100000;
परिणाम:
Laptop
JSON_TABLE के साथ JSON का विस्तार और क्वेरी उदाहरण
यदि आप JSON डेटा को रिलेशनल स्वरूप में क्वेरी करना चाहते हैं, तो JSON_TABLE फ़ंक्शन बहुत उपयोगी है। यह फ़ंक्शन आपको JSON एरे को एक वर्चुअल टेबल में विस्तारित करने की अनुमति देता है।
उदाहरण
निम्नलिखित उदाहरण एक JSON एरे का विस्तार करता है और प्रत्येक श्रेणी को अलग पंक्ति के रूप में प्रदर्शित करता है।
SELECT *
FROM JSON_TABLE(
'["Electronics", "Computers", "Mobile Devices"]',
'$[*]' COLUMNS(
category_name VARCHAR(100) PATH '$'
)
) AS categories_table;
परिणाम:
category_name
--------------
Electronics
Computers
Mobile Devices

6. JSON डेटा प्रकार का उपयोग करते समय महत्वपूर्ण विचार
प्रदर्शन अनुकूलन टिप्स
जबकि JSON प्रकार लचीला है, खराब डिजाइन डेटाबेस प्रदर्शन पर नकारात्मक प्रभाव डाल सकता है। नीचे प्रमुख अनुकूलन बिंदु दिए गए हैं।
1. इंडेक्स का उपयोग
MySQL में, आप सीधे JSON कॉलम पर इंडेक्स नहीं बना सकते, लेकिन आप एक जेनरेटेड कॉलम बना सकते हैं और किसी विशिष्ट कुंजी पर इंडेक्स लगा सकते हैं।
उदाहरण: जेनरेटेड कॉलम का उपयोग करके इंडेक्स बनाना
निम्नलिखित उदाहरण में, JSON डेटा के भीतर price कुंजी को इंडेक्स लक्ष्य के रूप में उपयोग किया गया है।
ALTER TABLE products_with_prices
ADD COLUMN price INT AS (JSON_EXTRACT(details, '$.price')) STORED,
ADD INDEX idx_price (price);
जेनरेटेड कॉलम का उपयोग करके, आप JSON डेटा पर खोज प्रदर्शन को काफी हद तक सुधार सकते हैं।
2. अत्यधिक जटिल JSON संरचनाओं से बचें
गहराई से नेस्टेड JSON संरचनाएँ क्वेरी की पठनीयता और प्रदर्शन को कम कर सकती हैं। डेटा डिजाइन करते समय, संभवतः सबसे सरल JSON संरचना चुनें।
अच्छा उदाहरण:
{
"categories": ["Electronics", "Computers"],
"price": 150000
}
से बचने का उदाहरण:
{
"product": {
"details": {
"price": 150000,
"categories": ["Electronics", "Computers"]
}
}
}
इंडेक्स का उपयोग कैसे करें
जेनरेटेड कॉलम का उपयोग करके इंडेक्स बनाते समय, निम्न बिंदुओं को ध्यान में रखें:
- जेनरेटेड कॉलम
STOREDहोना चाहिए। - किसी विशिष्ट कुंजी को जेनरेटेड कॉलम के रूप में निकालने के लिए
JSON_EXTRACTफ़ंक्शन का उपयोग करें।
उदाहरण के लिए, categories कुंजी के पहले तत्व को निकालने और एक इंडेक्स बनाने के लिए, निम्न करें।
ALTER TABLE products
ADD COLUMN main_category VARCHAR(255) AS (JSON_EXTRACT(categories, '$[0]')) STORED,
ADD INDEX idx_main_category (main_category);
डेटा वैधता का महत्व
क्योंकि JSON डेटा लचीला है, इसलिए गलत प्रारूप में डेटा संग्रहीत करना भी आसान हो जाता है। डेटा की अखंडता बनाए रखने के लिए, निम्न दृष्टिकोणों का उपयोग करें।
1. CHECK प्रतिबंधों का उपयोग करें
MySQL 8.0 और बाद में, आप CHECK प्रतिबंधों का उपयोग करके JSON संरचना और सामग्री को मान्य कर सकते हैं।
ALTER TABLE products_with_prices
ADD CONSTRAINT check_price CHECK (JSON_EXTRACT(details, '$.price') >= 0);
2. एप्लिकेशन-स्तर की वैधता
डेटा डालते समय, एप्लिकेशन पक्ष पर JSON प्रारूप को मान्य करने की सिफारिश की जाती है। PHP और Python जैसी प्रोग्रामिंग भाषाएँ अपने मानक लाइब्रेरी का उपयोग करके JSON को मान्य कर सकती हैं।
7. MySQL में एरेज़ के उपयोग के बारे में अक्सर पूछे जाने वाले प्रश्न
प्रश्न 1: क्या MySQL में एरे डेटा प्रकार है?
A1:MySQL में सीधे “array data type” नहीं है। हालांकि, JSON प्रकार का उपयोग करके, आप array-जैसे डेटा संरचनाओं को संभाल सकते हैं। JSON प्रकार के साथ, आप एक कॉलम में कई मान स्टोर कर सकते हैं और उन्हें क्वेरीज़ के माध्यम से मैनिपुलेट कर सकते हैं।
उदाहरण:
SELECT JSON_ARRAY('Value 1', 'Value 2', 'Value 3') AS array_example;
परिणाम:
["Value 1", "Value 2", "Value 3"]
Q2: क्या आप JSON डेटा पर इंडेक्स बना सकते हैं?
A2:आप JSON प्रकार पर स्वयं सीधे इंडेक्स नहीं बना सकते। हालांकि, आप एक विशिष्ट कुंजी या मान को एक उत्पन्न कॉलम में निकाल सकते हैं और उस उत्पन्न कॉलम पर इंडेक्स बना सकते हैं।
उदाहरण:
ALTER TABLE products_with_prices
ADD COLUMN price INT AS (JSON_EXTRACT(details, '$.price')) STORED,
ADD INDEX idx_price (price);
यह आपको JSON डेटा के अंदर मानों को कुशलतापूर्वक खोजने की अनुमति देता है।
Q3: JSON डेटा के लिए कोई आकार सीमा है?
A3:MySQL का JSON प्रकार 4GB तक का डेटा स्टोर कर सकता है। हालांकि, अत्यधिक बड़े JSON दस्तावेज़ों का उपयोग प्रदर्शन को कम कर सकता है, इसलिए आपको अपने डेटा को सावधानीपूर्वक डिज़ाइन करना चाहिए।
सिफारिशें:
- केवल न्यूनतम आवश्यक डेटा स्टोर करें।
- गहराई से नेस्टेड JSON संरचनाओं से बचें।
Q4: JSON array के अंदर एक विशिष्ट तत्व को कैसे अपडेट कर सकता हूँ?
A4:आप JSON_SET फंक्शन का उपयोग करके array में एक विशिष्ट तत्व को अपडेट कर सकते हैं।
उदाहरण:
SET @tags = '["PHP", "MySQL", "JavaScript"]';
SELECT JSON_SET(@tags, '$[1]', 'Python') AS updated_tags;
परिणाम:
["PHP", "Python", "JavaScript"]
Q5: JSON प्रकार बनाम सामान्य टेबल डिज़ाइन की तुलना
A5:हालांकि JSON प्रकार अत्यधिक लचीला है, लेकिन यह पारंपरिक रिलेशनल डेटाबेस डिज़ाइन की तुलना में अलग विशेषताओं वाला है।
| Item | JSON Type | Traditional Table Design |
|---|---|---|
| Flexibility | High (no schema changes needed) | Fixed (schema changes required) |
| Performance | Inferior for some operations | Optimized |
| Query Complexity | Requires JSON functions | Simple |
| Indexing | Partially supported via generated columns | Fully supported |
8. सारांश
MySQL में Array Operations के लिए JSON Data Type का उपयोग करने के लाभ
इस लेख में, हमने MySQL में array-जैसे डेटा के साथ काम करते समय सहायक JSON डेटा प्रकार की व्याख्या की। नीचे कवर किए गए मुख्य बिंदुओं का सारांश है:
- JSON प्रकार का उपयोग क्यों करें MySQL में सीधा array प्रकार नहीं है, लेकिन JSON प्रकार का उपयोग करके, आप एक कॉलम में कई मान स्टोर कर सकते हैं और लचीली डेटा मैनिपुलेशन प्राप्त कर सकते हैं।
- मूल JSON ऑपरेशन्स
- हमने JSON arrays कैसे बनाएं, डेटा निकालें, डेटा अपडेट करें, और डेटा हटाएं, कवर किया।
JSON_ARRAY,JSON_EXTRACT, औरJSON_SETजैसे सुविधाजनक फंक्शनों का उपयोग करके, आप array डेटा को कुशलतापूर्वक मैनिपुलेट कर सकते हैं।
- खोज और फिल्टरिंग
JSON_CONTAINSका उपयोग करके विशिष्ट मानों वाले डेटा की खोज कैसे करें।JSON_LENGTHके साथ तत्वों की संख्या प्राप्त कैसे करें और कंडीशनल फिल्टरिंग करें।
- व्यावहारिक उदाहरण उत्पाद श्रेणियों का प्रबंधन और मूल्य द्वारा फिल्टरिंग जैसे वास्तविक दुनिया के उपयोग मामलों के माध्यम से, हमने एप्लिकेशन्स में JSON arrays लागू करने के ठोस तरीके सीखे।
- विचारणीय बातें और अनुकूलन
- हमने उत्पन्न कॉलम का उपयोग करके इंडेक्सिंग कैसे सेट करें, व्याख्या की और JSON डेटा को वैलिडेट करने के महत्व पर जोर दिया।
JSON Data Type का उपयोग करते समय अगले कदम
MySQL में JSON प्रकार का उपयोग करके, आप पारंपरिक रिलेशनल डेटाबेस डिज़ाइनों की तुलना में डेटा को अधिक लचीले ढंग से प्रबंधित कर सकते हैं। हालांकि, अच्छा डिज़ाइन और प्रदर्शन विचारणीय बातें आवश्यक हैं।
अगले सीखने के लिए विषय:
- कंपोजिट इंडेक्स का उपयोग JSON डेटा को सामान्य कॉलम के साथ जोड़ने वाला इंडेक्स डिज़ाइन।
- उन्नत JSON फंक्शनों का उपयोग
JSON_MERGEऔरJSON_OBJECTजैसे फंक्शनों के साथ अधिक जटिल ऑपरेशन्स करें। - एप्लिकेशन-स्तरीय डेटा हैंडलिंग PHP या Python का उपयोग करके MySQL JSON डेटा को कुशलतापूर्वक मैनिपुलेट कैसे करें।
सारांश
इस लेख के माध्यम से, आपको अब MySQL के JSON डेटा प्रकार का उपयोग करके array-जैसे डेटा को कुशलतापूर्वक हैंडल कैसे करें, समझना चाहिए। इस ज्ञान को लागू करके, आप अधिक लचीले और स्केलेबल डेटाबेस डिज़ाइन कर सकते हैं।


