MySQL Metadata

Introduction to MySQL Metadata

Metadata का मतलब data के बारे में data होता है। वह data जो databases में stored नहीं है लेकिन databases को describe करता है, metadata कहलाता है। Metadata MySQL में विभिन्न structures (database, tables & columns) के बारे में information provide करता है।

उदाहरण के लिए आप database में SHOW TABLES statement द्वारा tables के नाम प्राप्त कर लेते है। ये tables के नाम metadata होते है क्योंकि ये database में stored भी नहीं होते है और आपको database में create की गयी सभी tables का नाम पता चल जाता है। सभी SHOW statements का result metadata होता है। इसके बारे में आप आगे इसी article में और जानेंगें।

MySQL में आप metadata 3 प्रकार से access कर सकते है।

  1. INFORMATION_SCHEMA database को यूज़ करके।
  2. SHOW और DESCRIBE statements को यूज़ करके।
  3. mysqlshow command line program यूज़ करके।

इन सभी methods के बारे में निचे detail से दिया जा रहा है, आइये इनके बारे में जानने का प्रयास करते है।

MySQL INFORMATION_SCHEMA Database

INFORMATION_SCHEMA एक ऐसा database है जो tables को objects के रूप में store करके रखता है। INFORMATION_SCHEMA की सभी tables MySQL server में create की गयी tables के बारे में metadata store करती है।

INFORMATION_SCHEMA database सभी users के लिए automatically available होता है। जिन जिन tables को current user MySQL server से access कर सकता है उसे केवल उन्हीं tables के बारे में INFORMATION_SCHEMA में tables show होती है।

INFORMATION_SCHEMA metadata का main storage होता है। ये एक virtual database होता है जिसमें कई tables stored रहती है जो दूसरी tables के बारे में information provide करती है। इन tables को आप किसी normal table की तरह ही SELECT statement द्वारा access कर सकते है।

INFORMATION_SCHEMA की tables देखने के लिए आप SHOW TABLES command यूज़ कर सकते है। INFORMATION_SCHEMA में available tables के बारे में निचे बताया जा रहा है।

TablesExplanation
CHARACTER_SETS ये table available character sets के बारे में information provide करती है।    
COLLATIONS हर character set के collation के बारे में information इस table द्वारा provide की जाती है।   
COLLATION_CHARACTER_SET_APPLICABILITY ये table कौनसा character set किस collation के लिए applicable है इसके बारे में information provide करती है।   
COLUMNS ये table tables और views के अंदर create किये गए columns के बारे में information provide करती है।   
COLUMN_PRIVILEGES ये table users को assign किये गए column privileges के बारे में information store करती है।  
ENGINES ये table storage engines के बारे में information store करती है।  
EVENTS इस table में scheduled events के बारे में information store की जाती है।  
FILES ये table उन files के बारे में information store करती है जिनमें MySQL NDB disk data stored रहता है।  
KEY_COLUMN_USAGE इस table में key column constraints के बारे में information store की जाती है।  
PARTITIONS इस table में table partitions के बारे में information store की जाती है।  
PLUGINS ये table server plugins के बारे में information store करता है।  
PROCESSLIST इस table में जो threads running state में है उनके बारे में information store की जाती है।  
REFERENTIAL_CONSTRAINTS  इस table में foreign keys के बारे में information store की जाती है।  
ROUTINES यह table stored procedures और functions के बारे में information store करती है।  
SCHEMATA इस table में databases के बारे में information store की जाती है।  
SCHEMA_PRIVILEGES ये table users को assign किये गए database privileges के बारे में information store करती है।  
STATISTICS इस table के द्वारा table indexes के बारे में information store की जाती है।  
TABLES ये table databases की tables के बारे में information store करती है।  
TABLE_CONSTRAINTS इस table के द्वारा table constraints के बारे में information store की जाती है।  
TABLE_PRIVILEGES ये table users को assign किये गए table privileges के बारे में information store करती है।  
TRIGGERS ये table triggers के बारे में information store करती है। 
USER_PRIVILEGES ये tables users को assign किये गए global privileges के बारे में information store करती है।  
VIEWS ये table views के बारे में information store करती है।

इन tables को access करके आप MySQL server के different elements के बारे में information प्राप्त कर सकते है। इन tables को आप normal tables की तरह ही SELECT statement द्वारा access कर सकते है।

MySQL SHOW Statement

वैसे तो आप databases और tables के बारे में किसी भी प्रकार की जानकारी INFORMATION_SCHEMA database से access कर सकते है लेकिन फिर भी regular basic जानकारी प्राप्त करने के लिए MySQL आपको SHOW statements provide करती है।

हर SHOW statement result के रूप में metadata return करता है। MySQL द्वारा provide किये गए कुछ SHOW statements निचे दिए जा रहे है।

  1. SHOW DATABASES – ये statement MySQL server में stored सभी databases की list show करता है।
  2. SHOW TABLES – ये statement MySQL server में stored किसी selected database में create की गयी सभी tables की list show करता है।
  3. SHOW COLUMNS – ये statement एक table के सभी columns की list show करता है। इस statement को FROM clause के साथ execute किया जाता है। FROM clause के बाद table का नाम दिया जाता है।
  4. SHOW INDEX / SHOW KEYS – ये statement किसी table की सभी indexes की list show करता है। इस statement को FROM clause के साथ यूज़ किया जाता है।
  5. SHOW CHARACTER SET – ये statement character sets की list show करता है।
  6. SHOW COLLATION – ये statement हर character set के लिए collations की list show करता है।

MySQL DESCRIBE Statement

MySQL DESCRIBE statement execute होने पर table का structure show करता है। इसमें columns का नाम, columns का data type, keys आदि के बारे में information provide की जाती है। DESCRIBE statement को आप इस प्रकार यूज़ कर सकते है।

mysql > describe table_Name;

आप चाहे तो इसकी short form भी यूज़ कर सकते है। इसका syntax निचे दिया जा रहा है।

mysql > desc table_Name;