- 1 MySQL में “Schema” क्या है? (शब्दावली और मूलभूत अवधारणाएँ)
- 2 [Basics] MySQL Schemas की जाँच कैसे करें (सूची, स्विच, टेबल्स)
- 3 [Advanced] INFORMATION_SCHEMA का उपयोग करके विस्तृत जानकारी प्राप्त करना
- 4 [Expert] InnoDB मेटाडेटा और sys स्कीमा का उपयोग (MySQL 8.0+)
- 5 [Quick Reference by Use Case] अनुशंसित कमांड
- 6 [Troubleshooting and Error Handling]
- 7 FAQ (अक्सर पूछे जाने वाले प्रश्न)
- 7.1 Q1. MySQL स्कीमा Oracle या PostgreSQL के स्कीमा से कैसे अलग है?
- 7.2 Q2. विस्तृत कॉलम जानकारी प्राप्त करने का सबसे प्रभावी तरीका क्या है?
- 7.3 Q3. मैं कैरेक्टर सेट या कोलेशन कैसे जाँच सकता हूँ?
- 7.4 Q4. मेरे पास जानकारी देखने की अनुमति नहीं है। मैं क्या करूँ?
- 7.5 Q5. मैं GUI टूल्स में स्कीमा जानकारी कैसे जाँचूँ?
- 8 निष्कर्ष और संबंधित लिंक
MySQL में “Schema” क्या है? (शब्दावली और मूलभूत अवधारणाएँ)
बहुत से शुरुआती जो अभी‑ही MySQL का उपयोग शुरू कर रहे हैं, या जो अन्य डेटाबेस सिस्टम से माइग्रेट कर रहे हैं, अक्सर “schema” शब्द पर अटक जाते हैं। यद्यपि “schema” शब्द विभिन्न डेटाबेस में उपयोग किया जाता है, इसका अर्थ सिस्टम के अनुसार बदल सकता है। शुरुआत से ही इसे स्पष्ट रूप से समझना आवश्यक है।
मूल रूप से, “schema” का अर्थ “संरचना” या “ब्लूप्रिंट” होता है। रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (RDBMS) के संदर्भ में, यह आमतौर पर डेटाबेस के भीतर पूरी संरचनात्मक परिभाषा को दर्शाता है, जिसमें टेबल कॉन्फ़िगरेशन, कॉलम जानकारी, इंडेक्स, व्यूज़, स्टोरड प्रोसीजर आदि शामिल होते हैं।
हालाँकि, MySQL में “schema” और “database” को लगभग समान माना जाता है। आधिकारिक MySQL दस्तावेज़ स्पष्ट रूप से कहता है कि “schema = database,” और दोनों को आपस में बदला जा सकता है। उदाहरण के लिए, जब आप एक schema बनाते हैं, तो आप CREATE DATABASE कमांड का उपयोग करते हैं।
अन्य RDBMS सिस्टम जैसे Oracle और PostgreSQL में “schema” और “database” स्पष्ट रूप से अलग होते हैं:
- Oracle : एक schema उपयोगकर्ता द्वारा प्रबंधित ऑब्जेक्ट्स का संग्रह होता है। डेटाबेस भौतिक कंटेनर है, और उसके भीतर कई schemas मौजूद होते हैं।
- PostgreSQL : एक ही डेटाबेस में कई schemas (namespaces) हो सकते हैं, जिससे टेबल्स और व्यूज़ का वर्गीकरण और प्रबंधन संभव होता है।
इसके विपरीत, MySQL में “database” = “schema”। चाहे व्याख्याओं में कौन सा शब्द उपयोग किया जाए, वास्तविक ऑपरेशन और प्रबंधन विधियाँ समान रहती हैं। इसलिए MySQL में “schemas की जाँच” करना मूलतः “databases की जाँच” करना ही है।
अंग्रेज़ी दस्तावेज़ों में दोनों “schema” और “database” शब्द दिखाई देते हैं, और MySQL मैनुअल कभी‑कभी इन्हें आपस में बदलकर उपयोग करता है। व्यावहारिक रूप से, जब आप MySQL दस्तावेज़ में “schema” देखते हैं, तो इसे “database” के समान समझ सकते हैं।
MySQL‑विशिष्ट शब्दावली के उपयोग को सही ढंग से समझकर, आप सिस्टम प्रबंधन या तकनीकी दस्तावेज़ों का संदर्भ लेते समय भ्रम से बच सकते हैं। अगले भाग से हम चरण‑दर‑चरण यह बताएँगे कि MySQL में schemas (databases) की जाँच कैसे की जाती है।
[Basics] MySQL Schemas की जाँच कैसे करें (सूची, स्विच, टेबल्स)
“MySQL में एक “schema (database)” की सामग्री को समझने के लिए, बुनियादी कमांड्स और प्रक्रियाओं को जानना आवश्यक है। इस भाग में हम सामान्य ऑपरेशन्स—schemas की सूची से लेकर टेबल्स और कॉलम जानकारी की जाँच तक—को विस्तार से समझाएँगे। शुरुआती भी आसानी से अनुसरण कर सकते हैं।
Schemas (Databases) की सूची बनाना
MySQL में आप एक सर्वर पर कई डेटाबेस (schemas) बना सकते हैं।
उनकी सूची देखने के लिए निम्न कमांड का उपयोग करें:
SHOW DATABASES;
जब यह कमांड चलाया जाता है, तो सर्वर पर मौजूद सभी schemas (databases) के नाम प्रदर्शित होते हैं। कुछ वातावरण में आप SHOW SCHEMATA; भी उपयोग कर सकते हैं, जो SHOW DATABASES; के समान परिणाम देता है। संस्करण अंतर के बारे में यदि संदेह हो, तो आधिकारिक मैनुअल देखें।
सक्रिय Schema को स्विच करना
किसी विशिष्ट schema (database) पर काम करने के लिए पहले उसे चयनित करना आवश्यक है।
Schemas को स्विच करने के लिए उपयोग करें:
USE database_name;
उदाहरण के लिए, sample_db नामक schema को उपयोग में लाने के लिए लिखें:
USE sample_db;
इसके बाद की सभी ऑपरेशन्स इस चयनित schema (database) पर लागू होंगी।
टेबल और कॉलम संरचना की जाँच करना
प्रत्येक schema में कई टेबल्स होते हैं।
उनकी सूची देखने के लिए उपयोग करें:
SHOW TABLES;
यह कमांड वर्तमान में चयनित schema में सभी टेबल नाम प्रदर्शित करता है।
किसी विशिष्ट टेबल की संरचना (कॉलम नाम, डेटा टाइप, NULL सेटिंग आदि) को देखने के लिए निम्न में से कोई एक कमांड उपयोग करें:
DESCRIBE table_name;
या
SHOW COLUMNS FROM table_name;
दोनों कमांड लगभग समान परिणाम देते हैं। उदाहरण के लिए, users टेबल की कॉलम संरचना देखने के लिए लिखें:
DESCRIBE users;
Schema की विस्तृत सेटिंग्स की जाँच करना
यदि आप schema‑विशिष्ट सेटिंग्स जैसे कैरेक्टर सेट और कोलेशन की समीक्षा करना चाहते हैं, तो उपयोग करें:
SHOW CREATE DATABASE database_name;
This command outputs the SQL statement used to create the schema (database). It is particularly useful for verifying character encoding and collation settings to prevent configuration-related issues.
Key Points
- All basic inspection tasks can be performed using standard MySQL commands.
→ * सभी बुनियादी निरीक्षण कार्य मानक MySQL कमांड्स का उपयोग करके किए जा सकते हैं। - The results are displayed directly in the terminal (command line), allowing you to proceed efficiently.
→ * परिणाम सीधे टर्मिनल (कमांड लाइन) में प्रदर्शित होते हैं, जिससे आप कुशलतापूर्वक आगे बढ़ सकते हैं। - Most tasks can also be performed using GUI tools such as MySQL Workbench or phpMyAdmin, but CLI commands are often more reliable when troubleshooting.
→ * अधिकांश कार्य MySQL Workbench या phpMyAdmin जैसे GUI टूल्स का उपयोग करके भी किए जा सकते हैं, लेकिन समस्या निवारण के दौरान CLI कमांड्स अक्सर अधिक विश्वसनीय होते हैं।
The commands introduced in this section are fundamental knowledge for anyone who works with MySQL regularly.
→ इस अनुभाग में प्रस्तुत कमांड्स MySQL के साथ नियमित रूप से काम करने वाले किसी भी व्यक्ति के लिए मूलभूत ज्ञान हैं।
[Advanced] INFORMATION_SCHEMA का उपयोग करके विस्तृत जानकारी प्राप्त करना
While basic MySQL commands allow you to check schema and table structures, more detailed information or bulk extraction is best handled using INFORMATION_SCHEMA. INFORMATION_SCHEMA is a system database that allows you to reference metadata managed internally by the MySQL server as standard SQL tables.
→ जबकि बुनियादी MySQL कमांड्स आपको स्कीमा और टेबल संरचनाओं की जाँच करने की अनुमति देते हैं, अधिक विस्तृत जानकारी या बड़े पैमाने पर निष्कर्षण सबसे अच्छा INFORMATION_SCHEMA का उपयोग करके किया जाता है। INFORMATION_SCHEMA एक सिस्टम डेटाबेस है जो आपको MySQL सर्वर द्वारा आंतरिक रूप से प्रबंधित मेटाडेटा को मानक SQL टेबल्स के रूप में संदर्भित करने की सुविधा देता है।
Because it enables flexible SQL-based retrieval of necessary information, it is highly useful for automation and reporting.
→ क्योंकि यह आवश्यक जानकारी को लचीले SQL-आधारित तरीके से प्राप्त करने में सक्षम बनाता है, यह स्वचालन और रिपोर्टिंग के लिए अत्यधिक उपयोगी है।
INFORMATION_SCHEMA क्या है?
INFORMATION_SCHEMA is one of the system databases included by default in MySQL.
It contains tables such as “SCHEMATA,” “TABLES,” and “COLUMNS,” which store metadata about databases (schemas), tables, and columns.
→ INFORMATION_SCHEMA MySQL में डिफ़ॉल्ट रूप से शामिल सिस्टम डेटाबेस में से एक है।
यह “SCHEMATA,” “TABLES,” और “COLUMNS” जैसी टेबल्स रखता है, जो डेटाबेस (स्कीमा), टेबल्स और कॉलम्स के बारे में मेटाडेटा संग्रहीत करती हैं।
You can query these tables using standard SELECT statements to extract internal configuration and structural details.
→ आप इन टेबल्स को मानक SELECT कथनों का उपयोग करके क्वेरी कर सकते हैं ताकि आंतरिक कॉन्फ़िगरेशन और संरचनात्मक विवरण निकाल सकें।
Main Use Cases:
→ मुख्य उपयोग केस:
- Retrieve detailed schema and table information
→ * विस्तृत स्कीमा और टेबल जानकारी प्राप्त करना - Check data types, constraints, and default values
→ * डेटा टाइप्स, प्रतिबंध और डिफ़ॉल्ट मानों की जाँच करना - Perform flexible extraction with filters and aggregation
→ * फ़िल्टर और एग्रीगेशन के साथ लचीला निष्कर्षण करना
स्कीमा जानकारी प्राप्त करना
To retrieve a list and attributes of all schemas (databases):
→ सभी स्कीमा (डेटाबेस) की सूची और उनके गुण प्राप्त करने के लिए:
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA;
This query returns schema names (SCHEMA_NAME), default character sets (DEFAULT_CHARACTER_SET_NAME), collations (DEFAULT_COLLATION_NAME), and other configuration details.
→ यह क्वेरी स्कीमा नाम (SCHEMA_NAME), डिफ़ॉल्ट कैरेक्टर सेट (DEFAULT_CHARACTER_SET_NAME), कोलेशन (DEFAULT_COLLATION_NAME), और अन्य कॉन्फ़िगरेशन विवरण लौटाती है।
टेबल और कॉलम जानकारी प्राप्त करना
To retrieve detailed table or column information in bulk, use the “TABLES” and “COLUMNS” tables.
→ बड़े पैमाने पर विस्तृत टेबल या कॉलम जानकारी प्राप्त करने के लिए, “TABLES” और “COLUMNS” टेबल्स का उपयोग करें।
Example: Retrieve all table information within a schema
→ उदाहरण: किसी स्कीमा के भीतर सभी टेबल जानकारी प्राप्त करना
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'target_schema_name';
Example: Retrieve detailed column information
→ उदाहरण: विस्तृत कॉलम जानकारी प्राप्त करना
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'target_schema_name'
AND TABLE_NAME = 'target_table_name';
This provides column names (COLUMN_NAME), data types (DATA_TYPE), NULL settings (IS_NULLABLE), default values (COLUMN_DEFAULT), and maximum lengths (CHARACTER_MAXIMUM_LENGTH).
→ यह कॉलम नाम (COLUMN_NAME), डेटा टाइप (DATA_TYPE), NULL सेटिंग्स (IS_NULLABLE), डिफ़ॉल्ट मान (COLUMN_DEFAULT), और अधिकतम लंबाई (CHARACTER_MAXIMUM_LENGTH) प्रदान करता है।
व्यावहारिक फ़िल्टरिंग उदाहरण
INFORMATION_SCHEMA allows flexible filtering using WHERE clauses.
→ INFORMATION_SCHEMA WHERE क्लॉज़ का उपयोग करके लचीला फ़िल्टरिंग सक्षम करता है।
Example 1: Extract all INT-type columns within a schema
→ उदाहरण 1: किसी स्कीमा के भीतर सभी INT-टाइप कॉलम निकालना
SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'target_schema_name'
AND DATA_TYPE = 'int';
Example 2: Find tables using a specific collation
→ उदाहरण 2: विशिष्ट कोलेशन का उपयोग करने वाली टेबल्स ढूँढना
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'target_schema_name'
AND TABLE_COLLATION LIKE 'utf8mb4%';
Using INFORMATION_SCHEMA enables flexible SQL-based extraction and analysis of MySQL’s internal structure.
→ INFORMATION_SCHEMA का उपयोग करके MySQL की आंतरिक संरचना का लचीला SQL-आधारित निष्कर्षण और विश्लेषण संभव होता है।
[Expert] InnoDB मेटाडेटा और sys स्कीमा का उपयोग (MySQL 8.0+)
Once you are comfortable retrieving schema and table information, you can move on to advanced management and performance analysis. Particularly when using the InnoDB storage engine or operating large-scale systems, INFORMATION_SCHEMA’s InnoDB tables and the sys schema are extremely useful.
→ एक बार जब आप स्कीमा और टेबल जानकारी प्राप्त करने में सहज हो जाएँ, तो आप उन्नत प्रबंधन और प्रदर्शन विश्लेषण की ओर बढ़ सकते हैं। विशेष रूप से InnoDB स्टोरेज इंजन का उपयोग करते समय या बड़े पैमाने के सिस्टम चलाते समय, INFORMATION_SCHEMA की InnoDB टेबल्स और sys स्कीमा अत्यंत उपयोगी होते हैं।
InnoDB इंजन मेटाडेटा
InnoDB is MySQL’s default storage engine and supports transactions, row-level locking, and foreign key constraints.
→ InnoDB MySQL का डिफ़ॉल्ट स्टोरेज इंजन है और यह ट्रांज़ैक्शन, रो-लेवल लॉकिंग, और फॉरेन की प्रतिबंधों का समर्थन करता है।
Useful InnoDB-related tables include:
→ उपयोगी InnoDB-संबंधित टेबल्स में शामिल हैं:
INNODB_TABLES: InnoDB‑प्रबंधित तालिकाओं की बुनियादी जानकारीINNODB_COLUMNS: कॉलम जानकारीINNODB_INDEXES: इंडेक्स विवरणINNODB_LOCKS: वर्तमान लॉक जानकारीINNODB_TRX: सक्रिय लेनदेन
उदाहरण: वर्तमान लॉक स्थिति जाँचें
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
sys स्कीमा का उपयोग
MySQL 5.7 और बाद के संस्करणों (विशेषकर 8.0+) में डिफ़ॉल्ट रूप से उपलब्ध, sys स्कीमा INFORMATION_SCHEMA और performance schema डेटा के मानव‑अनुकूल सारांशित दृश्य प्रदान करता है।
आम तौर पर उपयोग किए जाने वाले दृश्य:
sys.schema_table_statistics: टेबल एक्सेस आँकड़ेsys.schema_index_statistics: इंडेक्स उपयोग आँकड़ेsys.innodb_lock_waits: लॉक प्रतीक्षा जानकारीsys.user_summary: उपयोगकर्ता गतिविधि सारांश
उदाहरण: वर्तमान लॉक प्रतीक्षा जाँचें
SELECT * FROM sys.innodb_lock_waits;
उदाहरण: सभी तालिकाओं के लिए पढ़ने/लिखने के आँकड़े जाँचें
SELECT * FROM sys.schema_table_statistics;

सारांश
INFORMATION_SCHEMA और sys स्कीमा शक्तिशाली उपकरण हैं जो SQL के माध्यम से MySQL की आंतरिक स्थिति को दृश्य रूप में प्रस्तुत करते हैं।
वे विशेष रूप से InnoDB का उपयोग करने वाले प्रोडक्शन वातावरण में या उन्नत संचालन और प्रदर्शन अनुकूलन के लक्ष्य रखने वाले परिदृश्यों में मूल्यवान होते हैं।
[Quick Reference by Use Case] अनुशंसित कमांड
MySQL में स्कीमा या तालिका संरचनाओं की जाँच करते समय, अपने लक्ष्य के लिए सही कमांड चुनना दक्षता की कुंजी है। नीचे दी गई तालिका उद्देश्य के अनुसार आमतौर पर उपयोग किए जाने वाले कमांडों का सारांश प्रस्तुत करती है।
| Purpose | Command / SQL Example | Notes |
|---|---|---|
| List all schemas on the server | SHOW DATABASES; | Most basic command |
| List tables in the selected schema | SHOW TABLES; | Displays tables in current schema |
| Retrieve all table info in a schema | SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'schema_name'; | Includes table attributes |
| Quickly check column definitions | DESCRIBE table_name;SHOW COLUMNS FROM table_name; | Shows column names and types |
| Retrieve detailed column info | SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'schema_name' AND TABLE_NAME = 'table_name'; | Includes NULL and default values |
| Check schema creation settings | SHOW CREATE DATABASE schema_name; | Includes COLLATE and CHARSET |
| Check table creation details | SHOW CREATE TABLE table_name; | Includes indexes and foreign keys |
| Check InnoDB locks and transactions | SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;SELECT * FROM sys.innodb_lock_waits; | Useful for InnoDB |
| Check table/index access statistics | SELECT * FROM sys.schema_table_statistics;SELECT * FROM sys.schema_index_statistics; | Uses sys schema |
| Check user privileges | SHOW GRANTS FOR 'username'@'hostname'; | Verify user permissions |
[Troubleshooting and Error Handling]
MySQL में स्कीमा या तालिकाओं की जाँच करने का प्रयास करते समय, आपको कमांड न चलने या जानकारी न दिखने जैसी समस्याओं का सामना करना पड़ सकता है।
अनुमति त्रुटियाँ (एक्सेस अस्वीकृत)
उदाहरण त्रुटियाँ:
ERROR 1044 (42000): Access denied for user 'user'@'host' to database 'mysql'
ERROR 1142 (42000): SHOW command denied to user 'user'@'host' for table 'database'
समाधान:
- प्रशासनिक खाते से लॉग इन करें।
- आवश्यक SHOW या SELECT विशेषाधिकारों का अनुरोध करें।
GRANT SHOW DATABASES ON *.* TO 'user'@'host'; FLUSH PRIVILEGES;
वर्तमान विशेषाधिकार जाँचें:
SHOW GRANTS FOR 'user'@'host';
डेटाबेस या तालिका नहीं मिली
उदाहरण:
ERROR 1049 (42000): Unknown database 'db_name'
ERROR 1146 (42S02): Table 'db_name.table_name' doesn't exist
टाइपो, केस सेंसिटिविटी की जाँच करें, और निम्न के साथ अस्तित्व सत्यापित करें:
SHOW DATABASES;
SHOW TABLES;
संस्करण अंतर
कुछ सुविधाएँ MySQL संस्करण पर निर्भर करती हैं।
संस्करण जाँचें:
SELECT VERSION();
अन्य समस्याएँ
- नेटवर्क/सर्वर समस्याओं के कारण कनेक्शन विफलताएँ
- क्वेरी टाइमआउट — क्वेरी को अनुकूलित करें या टाइमआउट सेटिंग्स समायोजित करें
FAQ (अक्सर पूछे जाने वाले प्रश्न)
Q1. MySQL स्कीमा Oracle या PostgreSQL के स्कीमा से कैसे अलग है?
A. MySQL में, स्कीमा = डेटाबेस। Oracle और PostgreSQL में, स्कीमा और डेटाबेस अलग अवधारणाएँ हैं।
Q2. विस्तृत कॉलम जानकारी प्राप्त करने का सबसे प्रभावी तरीका क्या है?
A.
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'database_name';
Q3. मैं कैरेक्टर सेट या कोलेशन कैसे जाँच सकता हूँ?
A. उपयोग करें:
SHOW CREATE DATABASE database_name;
SHOW CREATE TABLE table_name;
Q4. मेरे पास जानकारी देखने की अनुमति नहीं है। मैं क्या करूँ?
A. उपयुक्त विशेषाधिकारों का अनुरोध करें। अपने वर्तमान अनुमतियों की जाँच करें:
SHOW GRANTS FOR 'username'@'hostname';
Q5. मैं GUI टूल्स में स्कीमा जानकारी कैसे जाँचूँ?
A. MySQL Workbench या phpMyAdmin में, स्कीमा बाएँ नेविगेशन पैनल में दिखते हैं। आप SQL टैब में भी SQL कमांड चला सकते हैं।
निष्कर्ष और संबंधित लिंक
सारांश
- MySQL में, schema = database है।
- बुनियादी जांच
SHOW DATABASES;,SHOW TABLES;, औरDESCRIBE table_name;का उपयोग करके की जा सकती है। - INFORMATION_SCHEMA और sys schema गहरी अंतर्दृष्टि और प्रदर्शन दृश्यता प्रदान करते हैं।
- अधिकांश समस्याएँ अनुमतियों, नामकरण त्रुटियों, या संस्करण अंतर से उत्पन्न होती हैं।
- कुशल संचालन के लिए त्वरित संदर्भ कमांड उपलब्ध रखें।
Related Links
Afterword
हम आशा करते हैं कि यह गाइड आपको दैनिक संचालन में MySQL स्कीमा और टेबल्स को बेहतर ढंग से प्रबंधित करने में मदद करेगा। जैसे ही नए MySQL संस्करण और संचालन आवश्यकताएँ विकसित होती हैं, अपना ज्ञान अद्यतन करते रहें।


