آموزشی
بررسی دقیق تر دیدها در MySQL – قسمت سوم
به قسمت سوم آموزش دیدها در MySQL رسیدهایم. در این جا به بررسی تغییر دیدها، حذف دیدها و اطلاعات کلی درباره دیدها و مجوزهای مورد نیاز برای دیدها خواهیم پرداخت. با ما در الفبایت همراه باشید.
توجه: اگر قسمتهای اول و دوم آموزش دیدها را مطالعه نکردهاید حتما از لینکهای زیر به آنها مراجعه کنید.
قسمت اول: مفهوم دیدها
قسمت دوم: الگوریتم دیدها

تغییر دیدها:
گاهی اوقات ممکن است نیاز شود دیدها را مورد تغییر قرار داد. با دستور alter view میتوان تعریف فعلی دید را به تعریف دیگری تغییر داد. این دستور به شکل زیر به کار میرود:
۱ ۲ ۳ ۴ | alter [algorithm = algorithm_type ] view view_name [(column_list)] as select_statement [wish [cascade | local] check option ]; |
اگر دستور create view را که در قسمت اول به توضیح آن پرداختیم با دستور alter view مقایسه کنید متوجه خواهید شد که دستور alter view تنها فاقد گزینه or replace است. و در بقیه موارد کاملا یکسان هستند.
مثال: دید userview (که روی users از پایگاهداده alefbyte ایجاد شدهاست) را طوری تغییر دهید که ستون id حذف شود.
برای انجام این کار باید از دستور aleter view به شکل زیر استفاده کنید:
۱ ۲ ۳ | aleter view userview as select username,name from users; |

حذف دیدها:
گاهی ممکن است احساس کنید که دیدهایی را نیاز ندارید اگر بخواهید آنها را حذف کنید باید از دستور drop view به شکل زیر استفاده کنید:
۱ | drop view view_name [, view_name]; |
اگر شما بخواهید چند دید را همزمان حذف کنید باید نام آنها را پشت سر هم به همراه ویرگول بنویسد.
مثال: دید userview را از پایگاه داده حذف کنید.
برای انجام این کار باید از دستور drop view به شکل زیر استفاده کرد:
توجه: قبل از حذف بهتر است قسمت “اطلاعات کلی درباره دیدها در MySQL” را نیز مطالعه کنید.
۱ | drop view userview; |
این دستور دید userview را از پایگاه داده alefbyte حذف میکند.
نکته: توجه داشته باشید برای مشاهده دیدهای موجود در سیستم باید از دستور show tables استفاده کنید.
اطلاعات کلی درباره دیدها در MySQL:
MySQL در ابتدای نصب دارای بانک اطلاعاتی ایست به نام INFORMATION_SCHEMA که اگر آن را حذف نکرده باشید دارای جدولی به نام VIEW است. در این جدول اطلاعاتی راجع به تمامی دیدهای سیستم ذخیره شدهاست. به عنوان مثال میتوانید اطلاعات دید userview را با دستور زیر مشاهده کنید:
۱ ۲ ۳ | select * from INFORMATION_SCHEMA.VIEW where TABLE_NAME = 'user_view' and TABLE_SCHEMA = 'alefbyte'; |

در MySQL دستهای از دستورات show نیز وجود دارد که اطلاعاتی کلی راجع به دیدها ارائه میدهد برای استفاده از آنها باید به شکل زیر عمل کنید:
۱ | show create view view_name; |

دستورات زیر نیز همان طور که برای جدولها استفاده میشود برای دیدها نیز استفاده میشوند:
- describe
- show columns
- show table status
- show tables
اگر دستور show tables را به شکل show full tables به کار ببرید علاوه بر نمایش اسامی جدولها و دیدها نشان میدهد که آن جدول از نوع پایه و یا view میباشد.
مجوز های مورد نیاز دیدها:
برای ایجاد دید باید مجوز اجرای دستور create view را داشته باشید. علاوه بر این باید مجوز لازم برای دستیابی به جدولهایی را داشته باشید که دیدها بر روی آنها تعریف می شوند:
- برای هر ستونی از جدول که در لیست ستونهای دید ظاهر میشود(توسط دستور select انتخاب می گردد)، باید مجوز دستیابی به ستونها را داشته باشید.
- برای ستونهایی که در جای دیگری مثل where یا group by مراجعه میشوند، باید مجوز select را داشته باشید.
- برای استفاده از گزینه or replace در دستور create view یا برای تغییر دید با دستور alter view، باید مجوز drop را برای دید داشته باشید.
- دستور drop نیاز به مجوز drop دارد.
- مجوز های لازم برای دستیابی به دیدها مثل دستیابی به جدولها است. برای انتخاب از طریق دید، باید مجوز select داشته باشید. برای دیدهای قابل بروزرسانی، باید مجوزهای insert ، delete یا update را داشته باشید.
- مجوزهای دید، به خود دید اعمال میشود و نه به جدولهای پایه آنها.
فرض کنید برای یک دید قابل بروزرسانی مجوز update دارید؛ در این صورت با استفاده از این دید میتوانید جدول را تغییر دهید. اما مستقیما نمیتوانید در جدول تغییر ایجاد کنید. برای این که بتوانید مستقیما در جدول تغییر ایجاد کنید باید مجوز update روی جدول را را داشته باشید. - دستور show create view نیاز به مجوز select دارد.
نکته پایانی: در MySQL حداکثر تعداد جدولهایی که در یک دید میتوان به آنها مراجعه کرد برابر ۶۱ میباشد.
به پایان دوره آموزش دیدها در MySQL رسیدیم.
لطفا نظرها و دیدگاههای خود را برای افزایش کیفیت پستهای بعدی با ما در میان بگذارید.
با ما در الفبایت همراه باشید…
مطلب آموزنده ای بود
ممنون