- 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 टाइप अत्यंत लचीला है और निम्नलिखित लाभ प्रदान करता है:
- नेस्टेड डेटा संरचनाओं का समर्थन करता है।
- क्वेरी के भीतर सीधे डेटा में परिवर्तन करने की अनुमति देता है।
- एक फ़ील्ड के भीतर कई डेटा फ़ॉर्मेट का प्रबंधन करता है।
इस लेख में हम बताएंगे कि कैसे MySQL में JSON टाइप का उपयोग करके एरे-स्टाइल डेटा को प्रभावी ढंग से संभाला जा सकता है।
2. MySQL के JSON टाइप के साथ एरे को संभालने की मूल बातें
JSON टाइप क्या है?
JSON (जावास्क्रिप्ट ऑब्जेक्ट नोटेशन) एक हल्का और सरल डेटा इंटरचेंज फॉर्मेट है। MySQL संस्करण 5.7 से ही एक नेटिव JSON टाइप का समर्थन करता है, जिससे आप सीधे डेटाबेस में 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"]}');
क्वेरी उदाहरण
To search for products priced at 100,000 or more, you use JSON_EXTRACT.
SELECT name
FROM products_with_prices
WHERE JSON_EXTRACT(details, '$.price') >= 100000;
परिणाम:
Laptop
JSON_TABLE का उपयोग करके विस्तार और क्वेरी उदाहरण
जब आप रिलेशनल फॉर्म में 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 में ऐरे-शैली डेटा उपयोग के बारे में अक्सर पूछे जाने वाले प्रश्न
Q1: क्या MySQL एक ऐरे प्रकार प्रदान करता है?
A1: MySQL में सीधे “array type” नहीं है। हालांकि आप …
उदाहरण:
SELECT JSON_ARRAY('value1', 'value2', 'value3') AS example_array;
परिणाम:
["value1", "value2", "value3"]
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 प्रकार अधिकतम 4 GB डेटा स्टोर कर सकता है। हालांकि, बहुत बड़े JSON डेटा का उपयोग प्रदर्शन को घटा सकता है, इसलिए उचित डेटा डिज़ाइन अनिवार्य है।
सिफ़ारिशें:
- केवल न्यूनतम आवश्यक डेटा ही स्टोर करें।
- अत्यधिक नेस्टेड JSON संरचनाओं से बचें।
Q4: JSON array में एक विशिष्ट तत्व को कैसे अपडेट करें?
A4: आप JSON_SET फ़ंक्शन के साथ JSON 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 | पारंपरिक टेबल डिज़ाइन |
|---|---|---|
| लचीलापन | उच्च (कोई स्कीमा परिवर्तन आवश्यक नहीं) | सुधारा गया (स्कीमा परिवर्तन आवश्यक) |
| प्रदर्शन | कुछ ऑपरेशनों में कमतर | अनुकूलित |
| क्वेरी जटिलता | JSON फ़ंक्शन की आवश्यकता | Simple |
| सूचीकरण | आंशिक रूप से वर्चुअल कॉलम के माध्यम से समर्थित | पूर्णतः समर्थित |
8. सारांश
MySQL में JSON प्रकार के साथ array‑स्टाइल डेटा को संभालने के लाभ
इस लेख में हमने MySQL में array‑स्टाइल डेटा को संभालने के लिए JSON प्रकार की व्याख्या की। यहाँ कवर किए गए मुख्य बिंदु हैं:
JSON प्रकार का उपयोग क्यों करें
MySQL में सीधे array प्रकार नहीं है, लेकिन JSON प्रकार का उपयोग करके आप एक कॉलम में कई मान स्टोर कर सकते हैं और लचीले डेटा ऑपरेशन्स कर सकते हैं।मूलभूत JSON ऑपरेशन्स
* JSON arrays बनाना, डेटा निकालना, अपडेट और डिलीट करना सीखा।
*JSON_ARRAY,JSON_EXTRACT, औरJSON_SETजैसे फ़ंक्शन का उपयोग करके array‑स्टाइल डेटा को कुशलतापूर्वक संचालित किया।खोज और फ़िल्टरिंग
*JSON_CONTAINSका उपयोग करके JSON arrays के भीतर विशिष्ट मान खोजे।
*JSON_LENGTHका उपयोग करके array की लंबाई प्राप्त की और शर्त आधारित फ़िल्टरिंग की।व्यावहारिक उपयोग‑केस
हम उत्पाद श्रेणियों का प्रबंधन और मूल्य के आधार पर फ़िल्टरिंग जैसे ठोस एप्लिकेशन परिदृश्यों को सीख चुके हैं।सावधानियाँ और अनुकूलन
* वर्चुअल कॉलम के माध्यम से JSON डेटा का इंडेक्सिंग कैसे करें और JSON डेटा को वैध करने का महत्व।
JSON प्रकार का लाभ उठाने के अगले कदम
MySQL में JSON प्रकार का उपयोग करके आप पारम्परिक रिलेशनल डेटाबेस डिज़ाइन से अधिक लचीली डेटा प्रबंधन सक्षम कर सकते हैं। हालांकि, उचित डिज़ाइन और प्रदर्शन पर विचार आवश्यक है।
अगले सीखने के विषय:
- कम्पोज़िट इंडेक्स का उपयोग – JSON प्रकार के कॉलम को नियमित कॉलम के साथ संयोजित करके इंडेक्स डिज़ाइन करना।
- उन्नत JSON फ़ंक्शन –
JSON_MERGE,JSON_OBJECTऔर अन्य फ़ंक्शन का उपयोग करके अधिक जटिल ऑपरेशन्स। - एप्लिकेशन‑स्तरीय डेटा मैनिपुलेशन – PHP या Python जैसी भाषाओं का उपयोग करके MySQL JSON डेटा को कुशलतापूर्वक संचालित करना।
अंतिम सारांश
इस लेख के माध्यम से आपने MySQL में JSON प्रकार का उपयोग करके array‑स्टाइल डेटा को कुशलतापूर्वक संभालना सीखा है। इस ज्ञान को लागू करके आप अधिक लचीली और स्केलेबल डेटाबेस प्रणालियाँ डिज़ाइन कर सकते हैं।


