MySQL in Hindi : RDBMS

Relational Database Management System (RDBMS)

  • Introduction to RDBMS in Hindi 
  • What is relational model in Hindi
  • Advantages & Disadvantages of RDBMS in Hindi

Introduction to RDBMS 

एक relational database management system ऐसा database management system होता है जो relational model पर आधारित होता है। Relational model IBM में कार्यरत एक British computer scientist Edgar F. Codd द्वारा invent किया गया था। Edgar F. Codd को सभी modern relational databases का जनक (father) माना जाता है।

Edgar F. Codd ने relational model को 1970 में design किया था। Edgar F. Codd के द्वारा relational model का idea IBM में paper के रूप में publish किया गया था। शुरुआत में इसे बहुत कम attention मिला लेकिन बाद में इसके महत्व को समझा गया और यह relational data storage के basic rule के रूप में use किया गया।

Financial records से लेकर personal records साथ ही और भी सभी प्रकार की information के storage के लिए RDBMS एक popular choice बन चुकी है। Relational database management system ने flat file system, hierarchical databases और networks databases को पूरी तरह replace कर दिया है।

सभी modern database management systems जैसे की Microsoft SQL Server, IBM DB2, Oracle, MySQL और Microsoft Access आदि relational model पर ही आधारित है। इनमें कुछ commercial तो कुछ open source है।

What is Relational Model?

Relational model data को store करने का एक defined way है। Relational model में data को rows और columns के structure में store किया जाता है। Rows और columns के combination से table का निर्माण होता है। Relational database में simple table को निचे बताया गया है।

RDBMS-table

एक table related data entries का collection होती है। एक relational database की table के निचे दिए गए मुख्य elements होते है।

Fields 

Relational database की table में fields यह बताते है की क्या data है जैसे की नॉम है, पता है या फिर फ़ोन number है। इन fields के लिए ही actual information store की जाती है।

RDBMS-table-field

Row/Record

एक row horizontally columns का collection होती है। Row में उतने ही columns होते है जितने की table में field होते है। एक row के सभी columns में table के सभी fields के लिए actual information store की जाती है।

एक row एक individual entry होती है और इसके सभी columns की information related होती है। ये जरुरी नहीं की row के सभी columns में value हो।

RDBMS-table-record

Column

एक column एक vertical entry होती है। एक column किसी specific filed से related table की सभी entries को दर्शाता है। उदाहरण के लिए निचे Age filed के column में सभी की employees की ages आप देख सकते है।

RDBMS-table-column

NULL

जब किसी field के लिए column में कोई entry नहीं होती है तो उस column की value NULL मानी जाती है। NULL value zero या space से अलग होती है।

RDBMS-table-NULL-value

Advantages of RDBMS 

RDBMS दूसरे DBMS से किस प्रकार बेहतर है ये समझाने के लिए निचे RDBMS की कुछ advantages दी जा रही है। 
  • RDBMS large databases को handle करने में सक्षम होते है। 
  • RDBMS में data को store, modify और access करना बहुत आसान होता है। 
  • Data को अलग अलग change करने की आवश्यकता नहीं होती है। Data सभी जगह automatically change हो जाता है। यदि दो tables आपस में related है तो एक ही जगह पर change करने से दूसरी table में भी वह change हो जाता है। 
  • RDBMS को SQL द्वारा handle किया जाता है। SQL के द्वारा आप complex queries perform कर सकते है। उदाहरण के लिए flat file system में condition के आधार पर data को sort नहीं किया जा सकता है। लेकिन RDBMS में data को कई प्रकार से access किया जा सकता है। 
  • RDBMS में data secured रहता है। RDBMS में आवश्यकतानुसार tables को hide किया जा सकता है। User के द्वारा login information provide किये जाने पर tables उसकी privilege level के अनुसार show होती है।  
  • RDBMS में एक साथ कई tables के साथ काम किया जा सकता है। RDBMS इसके लिए joins की facility provide करते है। 
  • RDBMS में data duplicate नहीं होता है। इससे data accurate होता है। 

Disadvantages of RDBMS

निचे RDBMS की कुछ disadvantages दी जा रही है। 
  • यदि commercial software की बात की जाए तो relational database की setup cost बहुत अधिक होती है। इसके अलावा relational database को handle करने के लिए specialists की आवश्यकता होती है। 
  • Simple text को आसानी से insert और access किया जा सकता है। लेकिन audio, video और images के लिए relational database में अभी कोई support available नहीं है। 
  • Table में कुछ fields की character limit होती है जिसे आप exceed नहीं कर सकते है। 
  • यदि tables बहुत अधिक है तो fast processing लिए better hardware की requirement होती है नहीं तो processing slow हो जाती है। 

MySQL सबसे popular open source RDBMS है। इसके लिए आपको किसी प्रकार का मूल्य चुकाने की आवश्यकता नहीं होती है। ये कई platforms पर available है।

साथ ही MySQL कई popular programming languages के लिए support provide करती है। MySQL सिखने में बहुत आसान है और इसकी performance बहुत effective है। 

Previous: Database Management System (DBMS)
Next: MySQL Installation 

Learn MySQL in Hindi

Learn MySQL in Hindi 

MySQL दुनियाँ का सबसे ज्यादा use किया जाने वाला open source Database Management System है। कई programming languages जैसे की PHP MySQL के लिए built in support provide करती है। Computer Science के क्षेत्र में mostly 90% students back-end programming की शुरआत MySQL से करते है। साथ ही जब भी databases से students को introduce करवाने की बात आती है तो इसके लिए ज्यादातर institutions अपने syllabus में MySQL को add करते है। 
MySQL एक बहुत ही popular Database Management System है। इसे सीखना बहुत ही आसान है। Best Hindi Tutorials ने MySQL की Hindi tutorials provide करके students को MySQL आसानी से समझाने का प्रयास किया है। हमें आशा है की आप “MySQL in Hindi” series से लाभ प्राप्त कर पाएंगे। 

Table Of Contents

  1. MySQL in Hindi : Database Management System – इस tutorial में आप database management system के बारे में जानेंगे। आप जानेंगे की एक DBMS की क्या विशेषतायें होती है और DBMS के द्वारा क्या क्या tasks perform किये जाते है। साथ ही आप यह भी जानेंगे की DBMS को किस किस प्रकार के users यूज़ करते है।     
  2. MySQL in Hindi : Introduction – इस tutorial में आप MySQL के बारे में basic information प्राप्त करेंगे। इस tutorial में MySQL के features बताये गए है। साथ ही आप MySQL के overall architecture के बारे में भी जानेंगे।      
  3. MySQL in Hindi : Installation –  इस tutorial में बताया गया है की आप किस प्रकार अपने platform पर MySQL को install कर सकते है। साथ ही इस tutorial में ये भी बताया गया है की MySQL कौन कौन से platforms को support करती है।   
  4. MySQL in Hindi : SQL – इस tutorial में आपको SQL (Structured Query Language) से परिचित करवाया जायेगा। इस tutorial में आप SQL के features के बारे में जानेंगे। साथ ही आप SQL में यूज़ होने वाले basic keywords और अलग अलग तरह के statements के बारे में भी इस tutorial में जानेंगे।     
  5. MySQL in Hindi : Data Types – इस tutorial में आप MySQL data types के बारे में जानेंगे। Data types को यूज़ करने के नियम और अलग अलग तरह के data types के बारे में इस tutorial में बताया गया है।    
  6. MySQL in Hindi : Databases – इस tutorial में आप database create करना और उन्हें select करना सीखेंगे। साथ ही आप database को alter और drop करना भी सीखेंगे।   
  7. MySQL in Hindi : Tables – MySQL data को tables में store करता है। इस tutorial में आप MySQL tables के बारे में जानेंगे। MySQL tables को create करना, alter करना, truncate करना, remove करना, Indexes और keys assign करना आप इस tutorial में सीखेंगे। 
  8.  MySQL in Hindi : Insert, Update & Delete – इस tutorial में आप tables में data insert करना, data को update करना और table से data  delete करना सीखेंगे।   
  9. MySQL in Hindi : Select, From, Where & Order By – इस tutorial में आप MySQL के Select, from, where और order by statements के बारे में जानेंगे।    
  10. MySQL in Hindi : SQL Expressions & Functions – MySQL आपको logic perform करने के लिए expressions और कुछ functions provide करती है। इस tutorial में आप SQL expressions और उनमें यूज़ होने वाले functions के बारे में जानने का प्रयास करेंगे।  
  11. MySQL in Hindi : Joins – बहुत सी tables से data एक साथ show करने के लिए MySQL joins की functionality provide करती है। इस tutorial में आप अलग अलग तरह के MySQL joins के बारे में सीखेंगे।   
  12. MySQL in Hindi : SubQueries – MySQL आपको एक query में दूसरी query define करने की capability provide करती है। ऐसी queries को subqueries कहा जाता है। इस tutorial में आप subqueries create करना सीखेंगे और साथ ही आप subqueries की advantages के बारे में भी जानेंगे।    
  13. MySQL in Hindi : Views – MySQL में temporary results hold करने के लिए views का concept दिया गया है। इस tutorial में आप views create करना, alter करना और drop करना सीखेंगे।    
  14. MySQL in Hindi : Prepared Statements – MySQL आपको queries को prepare करके उन्हें बाद में अलग अलग values के साथ execute करने की capability provide करती है। ऐसे statements को prepared statements कहा जाता है। इस tutorial में आप prepared statements create करना, execute करना और deallocate करना सीखेंगे।     
  15. MySQL in Hindi : Transactions – MySQL आपको कई DML statements को एक group के रूप में execute करने की capability provide करती है। ये MySQL का एक बहुत ही important feature है। इस tutorial में आप transactions define करना और उन्हें execute करना सीखेंगे।    
  16. MySQL in Hindi : Stored Routines – MySQL आपको functions create करने की capability provide करती है जिन्हें जरुरत पड़ने पर कितनी भी बार call किया जा सकता है। इस tutorial में stored procedures और functions create करना सीखेंगे।   
  17. MySQL in Hindi : Triggers – कोई certain event आने पर action लेने की capability MySQL द्वारा provide की जाती है। इसे triggers द्वारा achieve किया जाता है। इस tutorial में आप triggers create करना और उन्हें delete करना सीखेंगे।    
  18. MySQL in Hindi : Meta Data – MySQL databases के और खुद के बारे में जो data store करता है उसे Meta data कहते है। इस tutorial में आप Meta data और उसे access करने के बारे में जानेंगे।  

© Copyrights

ये “MySQL in Hindi” series Best Hindi Tutorials द्वारा publish की गयी है। इस series की सभी tutorials Best Hindi Tutorials का copyright material है। इसे किसी भी प्रकार copy किया जाना वर्जित है। अगर कोई व्यक्ति या संस्था ऐसा करते हुए पाए जाते है तो उन पर कानूनी कार्यवाही करने का अधिकार Best Hindi Tutorials को प्राप्त है। 

MySQL in Hindi : Introduction

MySQL in Hindi

  • Introduction to MySQL in Hindi 
  • Features of MySQL in Hindi 
  • Client/Server Architecture of MySQL in Hindi

Introduction to MySQL

MySQL एक Database Management System होता है। एक Database Management System एक software होता है जिससे आप data को store और manage करते है। यह data कुछ भी हो सकता है। ये कुछ व्यक्तियों के नाम और address हो सकते है। या फिर किसी company की sales और production के बारे में information हो सकती है।

चाहे data कुछ भी और किसी भी प्रकार का हो इसे store करने और access करने के लिए आपको एक database management system की आवश्यकता होती है।

MySQL databases relational होते है। एक relational database पुरे data को एक ही table में store करने के बजाय अलग अलग tables में store करता है। और फिर इन tables के बीच में relation identify करके उसके base पर queries को process करता है। Speed पाने के लिए database structures को physical file के रूप में organize किया जाता है।

MySQL से interact करने के लिए SQL को यूज़ किया जाता है। SQL (Standard Query Language) databases के साथ काम करने के लिए सबसे common और standard language है। आप चाहे तो SQL को directly भी यूज़ कर सकते है। और आप चाहे तो इसे किसी programming language या scripting language के साथ भी यूज़ कर सकते है।

MySQL एक Open Source software है। यानि की ये software आपको free में available है और आप इसको अपनी need के according modify भी कर सकते है। आपका इसका code download कर सकते है और उसे edit कर सकते है।

MySQL database server बहुत ही fast, reliable और आसानी से यूज़ किया जाने वाला होता है। यदि आपको ऐसे ही DBMS की तलाश है तो आपको इसे ही यूज़ करना चाहिए।

MySQL Client/Server या embedded environment में काम कर सकता है। MySQL multi threaded SQL server को support करता है जो की बहुत से अलग अलग environments में काम कर सकता है।

कई बार ऐसा होता है की बहुत से students MySQL और SQL में confuse हो जाते है, और MySQL को भी एक language समझ लेते है। लेकिन मैं आपको बताना चाहूँगा की ऐसा बिलकुल नहीं है। SQL एक language है। इसे Structured Query Language कहते है।

ये language database के साथ interact करने के लिए यूज़ की जाती है। MySQL SQL से बिलकुल अलग है। MySQL एक software है। MySQL एक complete Database Management System है।

Features of MySQL

  • MySQL को C और C++ में बनाया गया है।
  • MySQL बहुत सारी programming languages और scripting language के साथ work करती है। जैसे की Java और PHP आदि।
  • MySQL की performance बहुत high होती है क्योंकि इसका storage engine बहुत unique है।
  • MySQL से बहुत सारे अलग अलग platforms पर काम किया जा सकता है।
  • MySQL में multi layered server design use की गयी है।
  • इसे पूरी तरह multi threaded design किया गया है। इसलिए यदि एक से अधिक computers available है तो MySQL उनको आसानी से यूज़ कर सकता है।
  • MySQL अलग अलग तरह के transnational और non transnational engines provide करता है।
  • इसे बहुत सारे compilers के साथ test किया गया है।
  • MySQL portable है। Portability के लिए इसमें CMake का यूज़ किया जाता है। लेकिन इसका use सिर्फ MySQL 5.5 और उसके बाद आने वाले versions में ही किया गया है।
  • MySQL में अब तक कोई भी memory leak नहीं पाया गया है। इसे purify के साथ test किया जाता है। जो की एक famous leak tester है।
  • MySQL binary tree disk tables यूज़ करता है जो की बहुत fast होती है।
  • आप आसानी से दूसरे storage engines add कर सकते है।
  • इसमें memory allocation system thread based होता है और बहुत ही fast होता है।
  • MySQL joins को बहुत ही fast execute करता है। इसके लिए MySQL optimized nested loop join यूज़ करता है।
  • ये in-memory hash tables को implement करता है जो की temporary tables की तरह यूज़ की जाती  है।
  • MySQL SQL functions को implement करता है। ऐसा ये class library के माध्यम से करता है।
  • Client/Server environment में यह server को एक separate program की तरह प्रस्तुत करता है।

Architecture of MySQL

MySQL database server एक Client/Server architecture यूज़ करता है। इस तरह के architecture में एक server होता है। ये server कुछ services provide करता है जैसे की MySQL के case में data का access provide करना, data को fetch करके present करना और data पर कई तरह की processing करना आदि।

Server के अलावा इस तरह के architecture में clients भी होते है जो की इन services को यूज़ करते है। Server और clients के बीच connection communication protocols के द्वारा establish किया जाता है। इन सब के बारे में नीचे explain किया जा रहा है।

  • Server – mysqld MySQL का database server program है। Server data के access को control करता है। MySQL database server data के logical representation (tables) और physical representation (data on disk) के बीच में mapping को handle करता है। MySQL server multi threaded है। ये कई clients के साथ में connection establish करता है और उन्हें service provide करता है।
  • Clients – Clients वो program होते है जो server से communicate करते है। पहले client server के साथ connection establish करता है उसके बाद ही वह database के साथ कुछ tasks perform कर सकता है। किसी भी computer को client बनाने के लिए आप उस पर MySQL command prompt client program install कर सकते है। एक ही computer server भी हो सकता है और client भी हो सकता है।
  • Communication protocols –  MySQL clients और server एक दूसरे के साथ interact करने के लिए कुछ communication protocols का इस्तेमाल करते है। ये protocols clients और server के बीच में bridge का काम करते है। इनके बारे में नीचे दिया जा रहा है।
    • TCP/IP – Transmission Control Protocol data और server के बीच में connection establish करता है और data को pass करता है।
    • Unix Socket – ये protocol एक system की ही कई processes के बीच में bi-directional communication establish करता है।

MySQL architecture को नीचे एक diagram के द्वारा समझाया गया है।

MySQL-architecture-in-Hindi

MySQL in Hindi : Metadata

MySQL Metadata

  • Introduction to MySQL metadata in Hindi 
  • MySQL INFORMATION_SCHEMA in Hindi 
  • MySQL Describe statement in Hindi

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 के बारे में निचे बताया जा रहा है।

 Tables
Explanation

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; 
Previous: MySQL Triggers

MySQL in Hindi : Prepared statements

MySQL Prepared Statements

  • Introduction to MySQL prepared statements in Hindi
  • Creating a MySQL prepared statement in Hindi
  • Executing a MySQL prepared statement in Hindi

Introduction to MySQL Prepared Statements  

एक prepared statement ऐसे SQL statement को define करने के लिए यूज़ किया जाता है जिसे बाद में execute किया जा सकता है। Prepared statements ऐसी situations में useful होते है जब आप बहुत सी ऐसी queries execute करना चाहते है जिनमें सिर्फ थोड़ा सा ही difference हो।

उदाहरण के लिए आप एक statement prepare कर सकते है जिसे बाद में कई बार अलग अलग values के साथ execute कर सकते है।

एक prepared statement सिर्फ एक ही बार parse किया जाता है। एक बार parse होने के बाद इसे कितनी भी बार execute किया जा सकता है। इसी वजह से prepared statements की performance normal queries से improved होती है क्योंकि इन्हें बार बार parse करने में time waste नहीं होता है।

जब भी prepared statement execute होता है तो बहुत कम changes के साथ client और server के बीच interaction होता है इससे MySQL server पर load भी कम हो जाता है।

Prepared statements आपके database को SQL injection attacks से security भी provide करते है।

MySQL में आप हर तरह के statement को prepare नहीं कर सकते है। जिन SQL statements को आप prepare कर सकते है उनकी list निचे दी जा रही है।

  1. SELECT
  2. INSERT
  3. UPDATE
  4. DELETE
  5. CREATE TABLE
  6. SET, DO & SHOW

आइये अब देखते है की आप किस प्रकार prepared statements create कर सकते है।

Creating a Prepared Statement 

Prepared statement create करने के लिए आप PREPARE command यूज़ करते है। इसका general syntax निचे दिया जा रहा है।    

mysql > PREPARE <name-of-prepared-statement> FROM <SQL statement with ?> 

जैसा की आप ऊपर दिए गए syntax में देख सकते है, एक prepared statement में आपको 2 parameters define करने होते है। एक तो prepared statement का नाम और दूसरा वह SQL statement जिसे आप prepare करना चाहते है।

SQL statement को या तो आप एक string के रूप में define कर सकते है या फिर इसे एक variable में store करवाके उस variable को prepared statement में define कर सकते है। जब आप SQL statement को string के रूप में define करते है तो single quotes में define करते है।

SQL statement में वो values जो पहले से पता नहीं है उन्हें question mark (?) से दर्शाया जाता है। ये एक parameter की तरह काम करता है। जब statement को execute किया जाता है उस समय आप इन parameters के लिए values provide करवाते है।

MySQL server question mark (?) को values के द्वारा replace कर देता है। इस प्रकार जब भी आप prepared statement को execute करें तो अलग अलग values use कर सकते है। आइये अब इसे एक उदाहरण से समझने का प्रयास करते है।

मान लीजिये आपने database में निचे दी हुई Employee table create की हुई है।

Employee-table

इस table के लिए एक simple prepared statement इस प्रकार create किया जा सकता है।

mysql >  prepare mypstmnt from ‘select Name from Employee where Id=?’;

ऊपर दिया गया prepared statement Id के base पर Employee table से employee का नाम show करता है। WHERE clause के बाद Id column define किया गया है और उसकी value ना देकर question mark (?) दिया गया है।

आइये देखते है की create किये हुए prepared statement को execute कैसे करते है।

Executing MySQL Prepared Statements 

एक बार prepared statement create होने के बाद आप उसे कितनी भी बार execute कर सकते है। यदि prepared statement में आपने question mark (?) parameter का उपयोग किया है तो उसके लिए value pass करना आवश्यक है। ऐसे statements को आप जितनी भी बार execute करेंगे आप हर बार value pass करेंगें। 
Value pass करने के लिए आप एक variable को यूज़ कर सकते है। इसके लिए आप variable इस प्रकार create कर सकते है। 
mysql > set @varName = ‘Value’; 
         

उदाहरण के लिए यदि आप ऊपर create किये गए prepared statement के लिए Id value को pass करने के लिए variable create करना चाहते है तो इस प्रकार कर सकते है।

mysql > set @empId = ‘102’; 

एक prepared statement use करने के लिए आप EXECUTE command यूज़ करते है। यदि आप argument pass कर रहे है तो इसके लिए आप USING clause यूज़ करेंगें। उदाहरण के तौर पर ऊपर create किये गए prepared statement को आप इस प्रकार execute करेंगें।

mysql > execute mypstmnt using @empId; 

ऊपर दिया गया statement execute होने पर empId variable की value के साथ prepared statement में define किये गए SQL statement को execute करेगा। जब ये statement execute होगा तो result के रूप में employee का नाम Max show होगा।

De-allocating MySQL Prepared Statements

जब भी server से connection terminate होता है तो prepared statements automatically drop हो जाते है। लेकिन यदि फिर भी आप इन्हें manually drop करना चाहते है तो इसके लिए आप DEALLOCATE PREPARE statement यूज़ कर सकते है।

उदाहरण के लिए यदि आप ऊपर create किये गए prepared statement को drop करना चाहते है तो ऐसा आप इस प्रकार कर सकते है। 

mysql > deallocate prepare mypstmnt;  
    
ऊपर दिए गए statement के execute होने पर mypstmnt prepared statement drop हो जायेगा।

Previous: MySQL Views
Next: MySQL Transactions

MySQL in Hindi : SubQueries

MySQL Subqueries

  • Introduction to MySQL subqueries in Hindi
  • Advantages of MySQL subqueries in Hindi 
  • Defining MySQL subqueries in Hindi

Introduction to MySQL Subqueries 

एक subquery वह query होती है जो किसी दूसरी query के अंदर होती है। इन्हें inner queries भी कहा जाता है। जिन queries के अंदर subquery होती है वे queries outer queries कहलाती है।

एक subquery किसी SELECT, INSERT, UPDATE और DELETE statements में हो सकती है। ज्यादातर Subqueries को WHERE और FROM clause के बाद लिखा जाता है।

Subqueries SQL में dynamic execution का concept लाती है। जो result subquery द्वारा execution time पर return किया जाता है उसे outer query खुद के execution के लिए यूज़ करती है। Subquery का result dynamically outer query को pass किया जाता है।

यदि आप subquery का इस्तेमाल ना करें तो आपको inner query को पहले execute करना होगा। इसके बाद उसके result को outer query में use करते हुए उसे execute करना होगा। ये काफी lengthy task होगा और इसके लिए आपको एक से ज्यादा बार query fire करनी होगी। ऐसी situations में subqueries आपके काम को आसान बना देती है।

एक subquery में आप दूसरी subquery भी define कर सकते है। Subqueries को हमेशा brackets () में लिखा जाता है। आइये अब subqueries को यूज़ करने की advantages के बारे में जानने का प्रयास करते है।

Advantages of Subqueries 

निचे subqueries की कुछ advantages दी जा रही है। 
  1. दूसरी queries जैसे की joins और unions बहुत complex होती है जो ज्यादातर लोगों को समझ नहीं आती है। जबकि subqueries एक structured format में होती है।  
  2. Subqueries एक बड़ी query को अलग अलग parts में divide कर देती है।  
  3. दूसरी queries की अपेक्षा subqueries ज्यादा readable होती है और आसानी से समझ आ जाती है। 
  4. Subqueries के results को आपको views की तरह memory में store करने की आवश्यकता नहीं होती है। 
  5. Subqueries में आप comparison operators भी यूज़ कर सकते है। 

Types of Subqueries 

Subqueries को उनके result के अनुसार 3 categories में divide किया गया है। 
  1. Scalar subquery – जब कोई subquery एक single value return करती है तो वह scalar subquery कहलाती है।    
  2. Row subquery – जब कोई subquery एक row return करती है तो उसे row subquery कहा जाता है।   
  3. Column subquery – ऐसी subquery जो एक column return करती है वह column subquery कहलाती है।  
  4. Table subquery –  एक table subquery वह subquery होती है जो एक table return करती है।  

Defining MySQL Subqueries 

MySQL में subqueries define करने का general syntax निचे दिया जा रहा है।

mysql > <statement> (SELECT, INSERT, UPDATE, DELETE) …. <table-name> (FROM/WHERE) <expression/operator> (<subquery>);

  

जैसा की मैने आपको पहले बताया subqueries को SELECT, INSERT, UPDATE और DELETE statements में define किया जा सकता है।

इन statements और दूसरे clauses को define करने के बाद आप table का नाम देते है और उसके बाद FROM या WHERE clause लगाते है। इसके बाद आप brackets में subquery को define करते है। इसे निचे एक उदाहरण के माध्यम से समझाया जा रहा है।

Subquery Example with WHERE Clause 

मान लीजिये आपने निचे दी हुई Employee table create की हुई है।  
MySQL-subquery-example-in-Hindi

अब आप उन employees के नाम show करना चाहते है जिनकी salary average से कम है। इस task को पूरा करने के लिए आपको 2 steps लेने होंगे।

सबसे पहले आप salary column का average calculate करेंगे। ऐसा आप इस प्रकार कर सकते है।

mysql > select avg(Salary) from Employee; 

 
मान लीजिये average salary 25000 है। इसके बाद आप इस result को यूज़ करते हुए उन employees के नाम retrieve करेंगे जिनकी salary 25000 से कम है। ऐसा इस प्रकार किया जा सकता है।

mysql > select Name from Employee where Salary < 25000; 

जब आप ऊपर दी गयी query को execute करेंगे तो आपको एक employee का नाम show होगा जिसकी salary average से कम है।

आइये अब देखते है की इस task को कैसे subqueries की मदद से सिर्फ एक single statement में ही आसानी से complete किया जा सकता है।

mysql > select Name from Employee where Salary < (select avg(Salary) from Employee); 

                 
ऊपर दी गयी query में सबसे पहले brackets के अंदर define की गयी subquery MySQL द्वारा execute की जाएगी। यह एक scalar subquery है। इसके बाद subquery को उसके result द्वारा replace कर दिया जायेगा। ऐसा होने पर एक single query बचेगी जिसे execute करके MySQL result show करेगी।

जैसा की आप देख सकते है दोनों ही तरीकों में result same आता है लेकिन subquery use करने से आपका काम आसान और automated हो जाता है।

Subquery Example with FROM Clause 

अब तक आपने देखा की आप subquery को WHERE clause के साथ किस प्रकार यूज़ कर सकते है। आइये अब देखते है की subquery को आप FROM clause के साथ किस प्रकार यूज़ कर सकते है।

मान लीजिये आप ऊपर show की गयी Employee table में से maximum salary show करना चाहते है। ऐसा आप subquery की मदद से इस प्रकार कर सकते है।

mysql > select max(TopSalary) from (select Salary from Employee as TopSalary); 

ऊपर दी गयी query में inner query Employee table के Salary column को return करेगी। यह एक column subquery है। ये column TopSalary के नाम से return किया जायेगा ताकि outer query को execute होने में कोई problem न हो।

इसके लिए AS clause का प्रयोग किया गया है। इसके बाद outer query इस column में से maximum salary result के रूप में return करेगी।   

Previous: MySQL Joins
Next: MySQL Views

MySQL in Hindi : Views

MySQL Views 

  • Introduction to MySQL views in Hindi
  • View processing algorithms in Hindi
  • Creating, altering & dropping MySQL views in Hindi

Introduction to MySQL Views 

MySQL views executed queries की result table होती है। मलतब किसी query को execute करके उसका result store कर लिया जाता है। इन्हें virtual tables भी कहा जाता है। ये database में physically stored नहीं होती है।

लेकिन आप इन पर वह सभी tasks perform कर सकते है जो किसी original table पर perform किये जाते है। यदि आप किसी view में changes करते है तो वे original table में भी automatically हो जाते है।  

MySQL views की मदद से आप different tables का joins के द्वारा result प्राप्त कर सकते है और उस result को बार बार joins की मदद से access करने की बजाय एक simple SELECT statement द्वारा प्राप्त किया जा सकता है। इससे आपको बार बार large queries को execute करने की जरुरत नहीं है। 
MySQL views की मदद से आप data के presentation को control सकते है। उदाहरण के लिए मान लीजिये आपकी table में कोई column ऐसा है जिसे आप किसी user से hide करना चाहते है तो पहले आप एक view create कर सकते है और उस view के द्वारा केवल वे ही columns select कर सकते है जो आप show करना चाहते है।

आप एक particular user को पूरी original table show करने की बजाय ये view show कर सकते है।

MySQL views आपके data को security भी provide करते है। Views की मदद से आप read only result set भी produce कर सकते है। Read only views को manipulate नहीं किया जा सकता है। इससे कोई भी आपके data को delete या manipulate नहीं कर सकता है।

View Processing Algorithms

MySQL में आप define कर सकते है की views किस तरह से process किये जायेंगे। इसके लिए MySQL आपको 2 algorithms provide करती है जिन्हें view processing algorithms कहा जाता है। ये algorithms सिर्फ MySQL में ही add की गयी है ये standard SQL में नहीं पायी जाती है। इन algorithms के बारे में निचे detail से दिया जा रहा है। 
  1. MERGE – जब आप इस algorithm के द्वारा view को process करते है तो view को execute करने वाला statement और view की definition इस तरह merge होते है की view definition उस statement को replace कर देती है।   
  2. TEMPTABLE – जब आप इस algorithm को यूज़ करते है तो view को temporary table में retrieve कर लिया जाता है बाद में इस table पर statements execute किये जाते है।      
  3. UNDEFINED – यदि आप ऊपर दी गयी दोनों algorithms को यूज़ नहीं करना चाहते तो आप UNDEFINED option यूज़ कर सकते है। जब आप इस option को यूज़ करते है तो कौनसी algorithm use की जाएगी ये decision run time पर छोड़ दिया जाता है।   

आइये अब देखते है की आप किस प्रकार MySQL में views create कर सकते है।

Creating MySQL Views 

Views create करने के लिए आप CREATE VIEW statement यूज़ करते है। इस statement का general syntax निचे दिया जा रहा है। 
mysql > CREATE
> [ALGORITHM (optional) = {UNDEFINED | MERGED | TEMPTABLE}] 
> VIEW view-name [(column-list)(optional)]
> AS select-statement 
    
Create view statement एक नया view create करता है। इसमें view processing algorithm को define करना optional होता है। इसके बाद आप view का नाम देते है। और फिर यदि आप चाहे तो base table के columns को view में अलग नाम दे सकते है।

सभी columns के नाम comma (,) से separated होने चाहिए। इसके बाद आप AS clause लगाते है जो की columns को rename करने के लिए यूज़ किया जाता है। इसके बाद आप वह select statement लिखते है जो view को बनाता है। आपको हमेशा एक बात ध्यान रखनी चाहिए की किसी भी view में सिर्फ SELECT statement की ही query होती है।

आइये अब इसे उदाहरण के माध्यम से समझने का प्रयास करते है।

mysql > create view EmpView as select * from Employee; 

यँहा पर EmpView नाम से एक view create किया गया है। Execute होने पर ये view Employee table के पुरे data को show करेगा। इस view को SELECT statement द्वारा execute किया जायेगा। इसका उदाहरण निचे दिया जा रहा है।

mysql > select * from EmpView; 

ऊपर दिए गए statement के execute होने पर Employee table का सम्पूर्ण data show हो जायेगा लेकिन आप चाहे तो कुछ columns को hide भी कर सकते है। उदाहरण के लिए यदि आप salary column को hide करना चाहते है उसके लिए view इस प्रकार create कर सकते है।

mysql > create view EmpView2 as select Id, Name,Age from Employee; 

यदि आप EmpView2 को create करके देखेंगे तो आपको Employee table से salary column show नहीं होगा।

Dropping MySQL Views 

किसी भी view को remove करने के लिए आप DROP VIEW statement यूज़ करते है। इसका syntax निचे दिया जा रहा है। 
mysql > DROP VIEW <view-name1>,<view-name2>, <view-nameN>; 
  

सबसे पहले आप DROP VIEW statement लिखते है और उसके बाद जितने भी views को आप drop करना चाहते है उन्हें आप comma (,) से separate करके लिख सकते है। उदाहरण के लिए यदि आप EmpView drop करना चाहते है तो ऐसा आप इस प्रकार कर सकते है।

mysql > drop view EmpView; 
Previous: MySQL Subqueries

MySQL in Hindi : Triggers

MySQL Triggers

  • Introduction to MySQL triggers in Hindi
  • Creating MySQL triggers in Hindi 
  • Deleting MySQL triggers in Hindi

Introduction to MySQL Triggers 

Triggers stored programs होते है। ये stored procedures की तरह ही होते है। लेकिन triggers को आप खुद execute नहीं करते है ये automatically execute होते है। Triggers का execution different events के बाद या पहले होता है। MySQL के संदर्भ में events 3 प्रकार के statements द्वारा generate होते है।

  1. INSERT
  2. UPDATE
  3. DELETE
ऊपर दिए गए statements को MySQL में trigger events माना गया क्योंकि ये database में change करते है। जब भी किसी table पर ऊपर दिए गए statements execute हो तो आप triggers fire कर सकते है। इसके लिए आप table से related triggers create करते है। Triggers create करने के बारे में आपको आगे बताया जायेगा।

यदि triggers की official definition की बात करें तो एक trigger database object होता है जो table से associated रहता है। जब भी उस table पर कोई event generate होता है तो trigger execute हो जाता है।

Triggers database administrators का काम थोड़ा आसान कर देते है। क्योंकि triggers के माध्यम से आप tasks को automate कर सकते है जिससे database administrators को उन्हें manually perform नहीं करना पड़ता है।

Triggers के द्वारा आप table पर validation perform कर सकते है। उदाहरण के लिए यदि आप table में कोई नयी row insert कर रहे है तो इससे पहले की pass की गयी values table में insert हो आप check कर सकते है की values valid है या नहीं।

Triggers के द्वारा आप different events पर कुछ calculations भी perform कर सकते है। जैसे की insert statement के बाद आप values पर calculations perform करके नयी table भी generate कर सकते है।

Triggers केवल तब ही fire होते है जब SQL statements द्वारा MySQL table में कुछ change किया जाता है। बाकी और किसी reason जैसे की Information schema आदि में change की वजह से triggers fire नहीं होते है।

किसी भी trigger को temporary table या view से associate नहीं किया जा सकता है। ये केवल permanent table के साथ ही associated रहता है।

आइये अब देखते है की आप MySQL में triggers किस प्रकार create कर सकते है।

Creating MySQL Triggers

MySQL में triggers create करने का general syntax निचे दिया जा रहा है। 
mysql > CREATE TRIGGER trigger_name
> TRIGGER-TIME TRIGGER-EVENT on TABLE-NAME 
> FOR EACH ROW
>BEGIN  
> trigger_body
>END  
      

जैसा की आप ऊपर दिए गए syntax में देख सकते है trigger create करते समय सबसे पहले CREATE TRIGGER statement define किया जाता है। इसके बाद trigger का नाम दिया जाता है।

इसके बाद किसी भी trigger के 2 सबसे महत्वपूर्ण elements define किये जाते है।

  • TRIGGER-TIME – ये trigger का execution time होता है। जैसा की मैने आपको topic की शुरआत में बताया था की या तो trigger किसी event से पहले execute होते है या बाद में execute होते है। इससे आप ये define करते है की trigger कब execute होगा। इसकी 2 values होती है।
    • BEFORE – जब आप चाहते है की trigger event से पहले execute हो तो आप trigger time BEFORE set कर सकते है। 
    • AFTER – यदि आप trigger को event के बाद में execute करना चाहते है तो trigger time AFTER set कर सकते है।       
  • TRIGGER-EVENT – Trigger events INSERT, UPDATE और DELETE होते है। आप जिस पर भी trigger fire करना चाहे उसे trigger time के बाद define कर देते है। 

TRIGGER EVENT के बाद आप define करते है की आप कौनसी table पर event execute करना चाहते है। इसके लिए ON command यूज़ की जाती है। ON statement define करने के बाद आप उस table का नाम देते है जिस पर आप trigger execute करना चाहते है।

इसके बाद FOR EACH ROW clause define किया जाता है। ये बताता है की trigger table की हर us row के लिए execute होगा जो event द्वारा affected होगी।

इसके बाद आप trigger की body define करते है। ये वो SQL statements होते है जो event generate होने पर trigger द्वारा execute किये जायेंगे।

OLD and NEW Aliases 

जब भी आप triggers के द्वारा affected rows के साथ काम करना चाहते है तो इसके लिए MySQL आपको OLD और NEW aliases provide करती है। OLD alias event generate होने से पहले के records को represent करता है और NEW alias event generate होने के बाद के records को represent करता है। 
Old records को handle करने के लिए आप OLD alias लिखते है इसके बाद dot operator लगाकर table का नाम लिखते है। इसी प्रकार आप new records को भी handle करते है। 
आइये अब triggers को एक उदाहरण के माध्यम से समझने का प्रयास करते है। 

Example 

मान लीजिये आप उन employees की table maintain करना चाहते है जिन्होंने आपकी organization छोड़ दी है। ऐसी situation में company छोड़ने वाले employees की entry Employee table से delete की जाएगी।

अब आप इस delete event पर trigger associate कर सकते है ताकि delete की गयी हर employee की information FiredEmployee table में save हो जाये ऐसा आप इस प्रकार सकते है।    

mysql > delimiter //
mysql > create trigger empTrigger after delete on Employee for each row
> begin
> insert into FiredEmployee (Id, Name, Age, Salary) values (old.Id, old.Name, old.Age, old.Salary);
> end //
mysql > delimiter ;  

जब भी आपकी company में से कोई employee नौकरी छोड़कर जायेगा और उसका data delete किया जायेगा तो वो automatically fired employees वाली table में save हो जायेगा।

Deleting Triggers

जब भी कोई table delete की जाती है तो उससे related सभी triggers automatically delete हो जाते है। लेकिन यदि आप सिर्फ trigger को delete करना चाहते है तो ऐसा DROP statement की मदद से कर सकते है। इसका syntax निचे दिया जा रहा है। 
mysql > DROP TRIGGER trigger_Name; 
   
यदि trigger किसी दूसरे schema में है तो आप निचे दिया गया syntax use कर सकते है।

mysql > DROP TRIGGER schemaName.triggerName; 

Triggers को delete करना निचे उदाहरण के माध्यम से समझाया जा रहा है।

mysql > drop trigger empTrigger; 

MySQL in Hindi : Stored routines

MySQL Stored Routines

  • Introduction to MySQL stored routines in Hindi
  • Uses of MySQL stored routines in Hindi
  • Advantages of MySQL stored routines in Hindi

      Introduction to MySQL Stored Routines 

      कई बार कुछ ऐसे statements होते है जिन्हें आपको बार बार execute करने की आवश्यकता होती है। उदाहरण के लिए 
      आप बार बार select statement के द्वारा tables के records check करते है।

      इससे आपका time भी waste होता है और यदि आप कोई MySQL से related application 
      develop कर रहे है 
      तो बार बार उन्हीं statement को execute करने की वजह 
      से compile time भी बहुत ज्यादा हो जाता है। ऐसी situations के लिए MySQL आपको एक mechanism provide करती है जो 
      stored routines कहलाते है। 

      एक Stored routine कुछ SQL statements का 
      set होता 
      है जिसे आप बाद में call करके reuse कर सकते है। ये set MySQL server में stored रहता है जिसे बाद में एक simple call statement के द्वारा execute करवाया जा सकता है।

      Stored routines के बारे में एक ख़ास बात ये है की ये एक particular database से related होते है। यानि की जो stored routines आपने एक database के लिए create किये है उन्हें दूसरे databases के लिए यूज़ नहीं किया जा सकता है।

      MySQL आपको 2 तरह के stored routines provide करती है।

      1. Stored procedures 
      2. Stored functions 
      इससे से पहले की आप इनके बारे में detail से जानें आइये देखते है की stored routines को किस प्रकार यूज़ किया जा सकता है। 

      Uses of Stored Routines 

      निचे कुछ ऐसी situations दी जा रही है जिनमें normally stored routines को यूज़ किया जाता है। 
      • Stored procedures के द्वारा आप ऐसे statements create कर सकते है जो server पर stored रहेंगे और जिन्हें different client applications server के through execute करवा सकती है। उदाहरण के लिए अलग अलग शहरों में कुछ clients आपकी application यूज़ कर रहे है तो particular statements को client application में store करने की बजाय server पर stored routines की form में store किया जा सकता है जँहा से सभी clients उन्हें execute करवा सकते है। इससे client application पर load कम हो जाता है और यदि कोई change करना है तो वो भी एक ही जगह करना होगा।  
         
         
         
      • अपनी application में security add करने के लिए भी आप stored routines को यूज़ कर सकते है। यदि कुछ ऐसे SQL statements है जो security के लिहाज से important है तो उन्हें आप stored routines में server पर store कर सकते है ताकि केवल verified users ही उन्हें execute करवा सके जैसे की Administrator आदि। 
      • यदि आप client applications के द्वारा data के access को control करना चाहते है तो इसके लिए भी stored routines को यूज़ किया जा सकता है।  
         

      Advantages of Stored Routines

      आइये अब stored routines 
      यूज़ करने की कुछ advantages के बारे में जानने का प्रयास करते है।

      Fast Execution 

      Stored routines यूज़ करने से आपकी application का execution fast हो जाता है। एक stored routine सिर्फ एक बार ही compile किया जाता है और इसके बाद इसे server में store कर दिया जाता है।

      जब भी इसे call किया जाता है तो ये दुबारा compile नहीं होता है और सीधा execute होता है। Compilation time बचने की 
      वजह से आपकी application में execution पहले से 
      fast हो जाता है।  
       
       
       
       

      Reduced client/server Traffic 

      बिना stored routines के आपको बहुत से SQL statements execute करवाने होंगे इससे server पर traffic ज्यादा होता है। लेकिन stored routines एक single SQL statement की तरह execute होते है इससे server पर traffic पहले से बहुत कम हो जाता है। 

      Centralized Control  

      Stored routines की एक प्रमुख advantage ये है की आप पुरे code को एक जगह server पर store कर पाते है। इससे Database Administrators (DBA’s ) को application को control करने की क्षमता प्राप्त होती है।           

      Security 

      Stored routines आपको एक extra security layer provide करते 
      है। Stored routines से आप tables से related security control implement कर सकते है।

      Types of Stored Routines

      जैसा की मैने आपको पहले बताया stored routines 2 तरह के होते है। 
      1. Stored Procedures
      2. Stored Functions 
      इन stored routines के बारे में detail से 
      जानने से पहले आइये देखते है की इनमें क्या difference होता है।

      Difference b/w stored procedures &
      stored functions

       
      Stored Procedure 
       
      Stored Functions
      1. Stored procedures द्वारा कोई value return नहीं की जाती 
        है।
      2. Stored procedures में SELECT statement के साथ दूसरे DML statements भी यूज़ कर सकते है।  
         
      3. Stored procedures में आप transactions यूज़ कर सकते है।  
      4. Stored Procedure को CALL command के द्वारा call किया जाता है।  
      1. Stored functions द्वारा value return की जाती 
        है। 
      2. Stored functions में आप केवल SELECT statement ही यूज़ कर सकते है।  
         
         
      3. Stored functions में आप ऐसे SQL statements नहीं यूज़ कर सकते है जो transaction 
        commits और rollbacks perform करते है।
      4. Stored functions 
        को SELECT command के द्वारा call किया जाता है।  
         

      Stored Procedures

      एक stored procedure SQL statements का set होता है। इस set को CALL command द्वारा call किया जाता है। Stored procedures कोई value return नहीं करते है लेकिन output variables के द्वारा values को pass किया जा सकता है। Stored procedures create करने का basic syntax निचे दिया जा रहा है।
      mysql >
      CREATE PROCEDURE procedure_name (parameter-list)
      >
      BEGIN 
      > //sql statements
      >
      END
       
       
       
       
      जब भी आप एक procedure create करते है तो उससे पहले delimiter change करते है। जैसा की आप जानते है की default delimiter semicolon (;
      ) होता है और इसे ही किसी भी MySQL 
      statement का end माना जाता है।

      लेकिन क्योंकि एक procedure एक complete statement की तरह execute होता है इसलिए यदि आप 
       
      procedure में  
      semicolon (;
      ) यूज़ करते है जो की आप करेंगे सभी SQL statements के बाद 
      तो procedure को वही पर end मान लिया जाता है। Procedure के अंदर यूज़ होने वाला semicolon procedure को end करने wale semicolon से conflict हो जायेगा। 

      ऐसी situation में आप procedure को end करने वाले delimiter को change कर देते है। ताकि आप semicolon (;
      ) procedure के अंदर यूज़ कर सके। इसके लिए आप DELIMITER statement का यूज़ करते है। इस statement के बाद आप वह character लिखते है जिसे आप DELIMITER बनाना चाहते है। इसका उदाहरण निचे दिया रहा है।

      mysql >
       
      delimiter //

       
       
       

      इस statement के execute होने के बाद कोई भी statement जिसे आप execute करवाना चाहते है उसे // से end किया जायेगा। साथ ही अब आप procedure के अंदर SQL statements को semicolon (;) से end कर सकते है।

      अब जब आपका procedure end होगा तो वह इसी delimiter से end होगा। Procedure के end होने के बाद आप delimiter को semicolon (;
      ) ऊपर दिए गए उदाहरण के अनुसार बना सकते है।

      आइये procedure कैसे create करते है ये एक उदाहरण से समझने का प्रयास करते है।

      mysql >
      delimiter //
       
       
       
       
       
      >
      create procedure myProcedure
       
       
       
       
       
      >
      begin
       
       
       
       
       
      >
      select * from Employee;
       
       
       
       
       
      >
      end //
      mysql >
      delimiter;
       

      ऊपर दिए गए उदाहरण में एक बहुत ही 
      simple stored procedure create किया गया है। Call किये जाने पर ये stored procedure Employee table से सभी rows को select करके show करता है।

      किसी भी stored procedure को call करने के लिए CALL statement यूज़ किया जाता है। इसका उदाहरण निचे दिया जा रहा है।

      mysql >
      call myProcedure;
       

      Stored Procedures with Parameters

      Stored procedures कोई value return नहीं करते है इसलिए इनमें value pass करने और value वापस प्राप्त करने के लिए MySQL आपको कुछ built इन keyword provide करती है।

      इन keywords की मदद से आप किसी भी procedure में input भी कर सकते है और output प्राप्त भी कर सकते है। आइये इन keywords के बारे में जानने का प्रयास करते है। 

      • IN – IN keyword procedure में input pass करने के लिए यूज़ किया जाता है। इस keyword के बाद आप parameter का नाम लिखते है और उसके बाद parameter type define करते है। जो parameter आप इस keyword के द्वारा पास करते है उसे procedure के बाहर 
        access नहीं किया जा सकता है।  
      • OUT – OUT keyword procedure से output प्राप्त करने के लिए use किया जाता है। इस keyword के बाद आप parameter का नाम देते है और उसके बाद parameter का type define करते है। इस keyword के द्वारा define किये गए parameter को procedure के बाहर 
        access किया जा सकता है।  
      • INOUT – ये keyword IN और OUT दोनों का सम्मिलित रूप है। इससे से आप value input भी कर सकते है और output भी प्राप्त कर सकते है। 

      आइये अब इन parameters के यूज़ को एक उदाहरण से समझने का प्रयास करते है। 

      mysql >
      delimiter //
       
       
       
       
       
       
      >
      create procedure add(in num int, out result int)  
       
       
       
       
       
       
      >
      begin
       
       
       
       
       
       
      >
      set result=num+2;
       
       
       
       
       
      >
      end //
      mysql >
      delimiter;
       
       
       
       
       
       
       
       
       

      ऊपर दिए गए उदाहरण में add procedure में दो parameter pass किये गए है। इनमे num input parameter है और result output parameter है। जब भी आप इसे call करेंगे तो एक integer number 
      pass करेंगे और procedure आपको उस number में  
      2 add कर देगा और उस value को result में store कर देगा। इस procedure को आप इस प्रकार call कर सकते है।

      mysql >
      call add(8, @result);
       

      जब भी आप किसी ऐसे procedure को call करते है जो parameters यूज़ करता है तो output parameter से पहले 
      @ symbol लगाया जाता है। अब इस procedure से result में store की गयी value प्राप्त करने के लिए आप इस प्रकार SELECT statement यूज़ कर सकते है।

      mysql >
      select @result;
       

      Stored Functions

      Stored procedures की तरह ही stored functions भी SQL statements के set होते है। लेकिन ये values return करते है। Stored functions को SELECT statement द्वारा call किया जाता है। Stored functions create करने का basic syntax निचे दिया जा रहा है। 
      mysql >
      CREATE FUNCTION function_name (parameter-list) RETURNS return_type 
       
       
       
       
       
       
      >
      BEGIN
       
       
       
       
       
       
      > //SQL statements 
       
       
       
       
       
       
      >
      END 
       
       
       
       

      Stored function create करने से पहले आप stored procedure की तरह ही delimiter को change करते है। इसके बारे में पहले बताया जा चूका है इसलिए यँहा पर नहीं बताया जा रहा है। आइये अब stored functions को एक उदाहरण से समझने का प्रयास करते है।

      mysql >
      delimiter //
      mysql >
      create function myFunction returns int(10)
       
       
       
       
       
      >
      begin
       
       
       
       
       
      >
      set num=5;
       
       
       
       
       
      >
      return num;
       
       
       
       
       
      >
      end 
      mysql >
      delimiter;

      ऊपर दिए गए उदाहरण में एक stored 
      function create किया गया है। इस stored function में एक variable set किया गया है num और उसकी value 5 set की गयी है। Call होने पर ये stored function simply num variable की value को return करता है।

      जैसा की आपको पहले बताया जा चूका है की किसी भी stored function को call करने के लिए SELECT statement यूज़ किया जाता है। ऊपर दिए गए stored function को आप इस प्रकार call कर सकते है।

      mysql >
      select myFunction();
       

      Stored Functions with Parameters

      Stored functions में parameters आप किसी भी normal method की तरह यूज़ कर सकते है। Stored functions में parameters declare करने का general syntax निचे दिया जा रहा है। 
      mysql >
      CREATE FUNCTION function-name(parameter-name parameter-type (size));
       
       
       
      आइये stored functions में parameters के यूज़ को उदाहरण से समझने का प्रयास करते है। 
      mysql >
      delimiter //
      mysql >
      create function add(num int(10))
       
       
       
       
       
       
      >
      returns int 
      (10)
       
       
       
       
       
       
      >
      begin
       
       
       
       
       
       
      >
       
      return num+2;
       
       
       
       
       
       
      >
      end 
      mysql >
      delimiter;

      MySQL in Hindi : Joins

      MySQL Joins

      • Introduction to MySQL joins in Hindi
      • Types of MySQL joins in Hindi
      • MySQL inner, left & right joins in Hindi 

      Introduction to MySQL Joins

      अभी तक आपने जितने भी SQL statements execute करवाये उन सबका result एक single table से related था। लेकिन कई बार ऐसा होता है की एक single table में पर्याप्त information नहीं होती है और एक से अधिक tables से information show करने की आवश्यकता पड़ती है।

      ऐसी situations के लिए MySQL आपको एक mechanism (commands/statements) provide करती है जिन्हें joins कहते है। 

      Joins की मदद से आप एक ही query के द्वारा कई tables से rows show कर सकते है। यदि ये काम बिना joins के किया जाये तो इसके लिए आपको एक से अधिक queries execute करवानी होगी। Joins के द्वारा show किया गया result एक नयी table form करता है जो different tables के columns से मिलकर बनी होती है।

      MySQL आपको 3 प्रकार के joins provide करती है।

      1. Inner join
      2. Left join
      3. Right join

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

      INNER JOIN  

      सबसे ज्यादा यूज़ किये जाने वाला join INNER JOIN होता है। आप इसे सिर्फ JOIN भी कह सकते है। जब आप इस join को यूज़ करते है तो result में उन rows को show किया जाता है जो दोनों tables में match करती है।

      इसका मतलब ये हुआ की जब दोनों tables से एक particular column match होगा तो ही कोई row show की जाएगी।

      इससे पहले की आप INNER JOIN apply करना सीखें आइये इसका general syntax देखते है। 

      mysql > SELECT <column-list> FROM tb1 JOIN tb2 ON (optional) tb1.col = tb2.col;  

      ON keyword का प्रयोग ये बताने के लिए किया जाता है की आप किस column को match करके result show करना है। इसका प्रयोग optional होता है।

      आइये अब INNER JOIN को एक उदाहरण से समझने का प्रयास करते है। मान लीजिये आपके पास 2 tables Student और Course है। 

      inner-join-in-Hindi

      ऊपर दिए हुए syntax को यूज़ करते हुए इन दोनों tables पर आप INNER JOIN इस प्रकार apply कर सकते है।

      mysql > select Student.Name, Course.Name from Student join Course on Student.Course = Course.Id;

      जब आप इस query को execute करेंगे तो result इस प्रकार show होगा।

      inner-join-example
      जैसा की मैने आपको बताया था केवल वही rows show होंगी जिनके columns मैच होंगे। ऊपर दिए गए example में Student 3 का course Course table की किसी Id से मैच नहीं हो रहा है इसलिए इसे result में include नहीं किया गया है।

      LEFT JOIN

      यदि आप चाहते है की चाहे particular column match हो या ना हो लेकिन left table की सभी rows show हो तो इसके लिए आप LEFT JOIN यूज़ करते है। LEFT JOIN के द्वारा आप बताते है की आपको left table की सभी rows show होनी चाहिए। 
      उदाहरण के लिए आप सभी students के नाम चाहते है चाहे उन्होंने कोई course join किया हो या नहीं। आइये इसे एक उदाहरण से समझने का प्रयास करते है।   
      ऊपर दी गयी tables पर आप LEFT JOIN इस प्रकार apply कर सकते है। 
      mysql > select Student.Name, Course.Name from Student left join Course on Student.Course = Course.Name;
         

      जब आप LEFT JOIN यूज़ करते हुए इस query को execute करेंगें तो result इस प्रकार show होगा।

      left-join-in-Hindi

      जैसा की आप results में देख सकते है एक LEFT JOIN left table में हर row को match करता है। इससे कोई फर्क नहीं पड़ता है की उससे match करती हुई value right side की table में है या नहीं।    

      RIGHT JOIN

      यदि आप चाहते है की right table से सभी rows show हो चाहे उसके लिए left table में कोई row हो या नहीं हो तो इसके लिए आप RIGHT JOIN यूज़ कर सकते है। उदाहरण के लिए मान लीजिये ऊपर दी गयी course table में 2 course और है।

      इन्हें M.com और B.Ed मान लीजिये। लेकिन Student table में ऐसा कोई student नहीं है जिसने इन courses को join कर रखा हो। 

      ऐसी situation में यदि आप सभी courses की list देखना चाहते है चाहे किसी student ने उसे join कर रखा हो या नहीं तो इसके लिए आप right join यूज़ कर सकते है। इसके लिए आप इस प्रकार query लिखेंगे।

      mysql > select Student.Name, Course.Name from Student right join Course on Student.Course = Course.Id; 
      जब आप इस query को execute करेंगे तो result इस प्रकार show होगा।

      OUTER JOIN

      यदि आप दोनों tables में से पूरा data show करना चाहते है चाहे कोई row match हो या न हो तो इसके लिए आप OUTER JOIN यूज़ करते है।

      जिस भी column की value मैच नहीं करती है उस column में NULL value show होती है। हालाँकि इस JOIN को MySQL में allow नहीं किया गया है फिर भी आप की जानकारी के लिए इसे यँहा बताया गया है। 

      यदि आप MySQL में OUTER JOIN यूज़ करना चाहते है तो LEFT और RIGHT JOINS के बीच में UNION operation perform कर ऐसा कर सकते है।

      Previous: MySQL Expressions & Functions
      Next: MySQL Subqueries