MySQL Views

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 से दिया जा रहा है।

  • MERGE – जब आप इस algorithm के द्वारा view को process करते है तो view को execute करने वाला statement और view की definition इस तरह merge होते है की view definition उस statement को replace कर देती है।
  • TEMPTABLE – जब आप इस algorithm को यूज़ करते है तो view को temporary table में retrieve कर लिया जाता है बाद में इस table पर statements execute किये जाते है।
  • 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;