View در SQL چیست و چه کاربردی دارد؟ – به زبان ساده با مثال و کد
- یاد میگیرید View را بهعنوان جدول مجازی تعریف کنید.
- با نحوه ساخت، استفاده و حذف View بهصورت عملی آشنا میشوید.
- تفاوت و کاربرد View و Stored Procedure را خواهید آموخت.
- با نقش View در نوشتن کوئریهای پیچیده و بهبود امنیت داده آشنا خواهید شد.
- نحوه مدیریت داده با دستورات INSERT ،UPDATE و DELETE در View را تمرین میکنید.
- با کاربردها و تفاوتهای Materialized View و View معمولی آشنا خواهید شد.

در این مطلب از مجله فرادرس به بررسی View-های SQL پرداختهایم. روش استفاده از View در پایگاههای داده مختلفی که بر اساس زبان SQL کار میکنند، کمی با هم تفاوت دارد، اما مفهوم کلی و کاربرد آن یکسان است. از تعریف View شروع کرده و بعد از بررسی و توضیح کاربردها و نحوه استفاده از آن به بیان فهرستوار مزایا و معایب View پرداختهایم. در نهایت هم نوع خاصی از View را به نام Materialized View معرفی کرده و با View معمولی مقایسه کردهایم.
View در SQL چیست و چه کاربردی دارد؟

View در واقع کوئری است که در دیکشنری داده ذخیره شده و کاربران همانند کار با جدولها میتوانند با آن کار کنند. View فضای فیزیکی حافظه را اشغال نمیکند، زیرا تنها چیزی ذخیره شده کوئری نوشته شده است. در صورت اجرای کوئری بر روی View به صورت بیدرنگ محاسبات مربوط به آن انجام میشوند. همچنین هر تغییر اعمال شده بر روی دادههای View در جدول واقعی هم اعمال میشود.
کاربردهای View
برای View-ها دو کاربرد اصلی بیان شده است که در فهرست زیر آنها را معرفی کردهایم. البته در ادامه مطلب این دو کاربرد را با جزئیات بیشتری توضیح دادهایم.
- نوشتن کوئریهای پیچیده را سادهتر میکند.
- محدود کردن دسترسی به دادههای حساس و مهم
تفاوت View با رویه ذخیره شده
چشمگیرترین مزیت استفاده از View در SQL این است که View، خودِ کوئری ارسال شده را نیز ذخیره میکند. بنابراین، مجبور نیستیم که کوئری خود را به صورت تکراری و پشت سر هم بنویسیم. اما باید بدانیم که چرا در عوض View از رویههای ذخیره شده استفاده نمیشود؟
حتی «رویههای ذخیره شده» (Stored Procedures) نیز میتوانند کوئری را ذخیره کرده و با هر بار فراخوانی آن را اجرا کنند. نکته اینجاست که استفاده از View سادهتر است و در مقایسه با رویه ذخیره شده به شکل سرراستتری اجرا میشود.
View-ها فقط قادر به نگهداری از یک عبارت هستند، در حالی که رویهها میتوانند چندین عبارت مختلف را درون خود نگهداری کنند. همچنین در View، همانند همه رویههای ذخیره شده، از هیچ نوع پارامتری استفاده نمیکنیم. یکی از شباهتهایView-ها و رویههای ذخیره شده این است که در هردو مورد امکان استفاده از عملیات مشخصی مانند Insert و Update و Delete وجود دارد.
آموزش SQL Server از مبتدی تا حرفه ای
SQL Server از نرم افزارهای پایگاه داده قدیمی و در عین حال با تجربه، بهروز و قدرتمند در دنیای کامپیوتر است. این پایگاه داده، در انواع حوزههای آموزشی، صنعتی و تجاری، کاربرد بسیار گستردهای دارد. به منظور یادگیری کار با SQL Server باید فیلمهای آموزشی مربوط به این پایگاه داده محبوب و پرطرفدار را در فرادرس مشاهده کرده و پابهپای مراحل آموزشی به پیش بروید. این دورهها به شکلی هستند که تمام مراحل کار با SQL Server را از سطوح مبتدی تا پیشرفته آموزش میدهند.

وبسایت آموزشی فرادرس، یکی از بهترین موسسات آموزشی است که فیلمهای بسیار مناسبی را برای یادگیری پایگاه داده SQL Server تولید میکند. در فرادرس برای آموزش SQL Server از مبتدی تا حرفهای، فیلمهای متنوعی تولید شدهاند. بنابراین، هر کس با توجه به سطح علمی خود میتواند گزینه مناسبی را پیدا کند. به طور کل میتوان به کیفیت بالای مطالب تدریس شده، فیلمهای تهیه شده، هزینه مقرون بهصرفه و عدم وجود محدودیت زمانی برای یادگیری به عنوان مزایای فیلمهای آموزشی فرادرس اشاره کرد.
در ادامه چند مورد از این فیلمهای آموزشی را برای مخاطبان محترم فهرست کردهایم. با کلیک بر روی تصویر بالا به صفحه اصلی این مجموعه آموزشی هدایت شده و از فیلمهای بیشتر دیدن کنید.
- فیلم آموزش SQL Server دوره مقدماتی فرادرس
- فیلم آموزش رایگان پروژه محور درباره ایجاد ویو سفارش فروشگاهی با SQL Server از فرادرس
- فیلم آموزش پروژه محور درباره ساخت دیکشنری برای دیتابیس با SQL Server در فرادرس
- فیلم آموزش کوئری نویسی پیشرفته در SQL Server فرادرس
- فیلم آموزش استفاده از جیسون JSON در SQL فرادرس
روش ایجاد View در SQL چیست؟
با استفاده از عبارت CREATE VIEW بهسادگی میتوانیم از روی یک یا چند جدول مختلف، View ایجاد کنیم. اما قبل از ادامه مطلب، دو جدول مرتبط به کارمندان ایجاد کردهایم. در بیشتر مثالهای این مطلب از این جدولها استفاده خواهیم کرد. همچنین چند داده دلخواه و فرضی را نیز به آنها وارد کردهایم.
اولین جدولی که ایجاد میکنیم به نام Clients است. در این جدول تمام اطلاعات پایه مربوط به کارمندان از قبیل «شماره شناسایی» ID، نام Name و آدرس ایمیل Email_Id را ذخیره کردهایم.
با اجرای کدهای بالا، جدولی به شکل زیر ایجاد شده است.

جدول دوم را با نام Clients_Location نامگذاری کردیم. این جدول برای نشان دادن کشور محل کار یا سکونت کارمندان به کار برده شده است. برای نگهداری مشخصات این کشورها از شمارهشناسایی ID، نام کشور Country و کد کشور Country_Code استفاده شده است.
به این جدول هم اطلاعاتی را به صورت دلخواه وارد کردهایم.
با اجرای کدهای بالا، جدولی به شکل زیر ایجاد شده است.

اکنون که جدولهای مورد نظر ساخته شدهاند، در ادامه مطلب به فرایند ساخت View میپردازیم.
سینتکس ساخت View در SQL
در کادر زیر سادهترین سینتکس ممکن و کامل برای ساخت View را نمایش دادهایم. با استفاده از این سینتکس بهسادگی میتوانیم View مورد نظر خود را از روی یک یا هر چند عدد جدول ایجاد کنیم.
همین که ویو ایجاد شد، میتوانیم از دستور SELECT نیز استفاده کنیم. از این دستور در ترکیب با جدولهای مختلف برای بدست آوردن و نمایش نتیجه استفاده میشود.

در ادامه مطلب، فرایند ساخت View را با جزئیات بیشتری توضیح دادهایم.
ساخت View از روی یک جدول
برای شروع این بخش در ابتدا کدهای مربوط به ساخت View سادهای را از روی جدول Clients پیادهسازی کردهایم.
با اجرای کدهای بالا، View به شکل زیر ساخته خواهد شد.

ساخت View از روی چند جدول
بعد از اینکه View مورد نظر ساخته شد با استفاده از دستور SELECT به شکل زیر، آن را اجرا کرده و دادههای ذخیره شده درون آن را تماشا میکنیم.
بر اثر اجرای کد بالا View ساخته شده به شکل زیر خواهد بود.

استفاده از دستورهای Insert و Update و Delete در View
وارد کردن ردیف جدید به View
برای مثال مربوط به وارد کردن داده به View، از View ساخته شده با نام V_Clients استفاده خواهیم کرد. این View را در بخشهای بالاتر همین مطلب ساختهایم. V_Clients از قبل پنج ردیف مختلف در خود دارد. با استفاده از دستور INSERT INTO ردیف ششم را به این View اضافه میکنیم.

همینطور که در خروجی قابل مشاهده است، ردیف دیگری به این جدول مجازی افزوده شده. به این معنا که کوئری شامل عبارت Insert با موفقیت اجرا شده است.
به روزرسانی ردیف در View
بعد از وارد کردن داده به View، میتوانیم دادههای درون آن را هم بهروزرسانی کنیم. اگر مثال قبل را در نظر بگیرید که ردیف جدیدی به View افزوده شد، داده مربوط به ستون شناسه ایمیل Email_Id را با عبارت update_later پُر کرده بودیم. به روزرسانی این داده، کاری است که در کدهای زیر انجام دادهایم.
بر اثر اجرای کوئری بالا، جدول زیر به عنوان خروجی به کاربر نمایش داده خواهد شد.

حذف ردیف از View
بر اثر اجرای کوئری بالا، خروجی زیر به کاربر نمایش داده خواهد شد.

همینطور که میبینیم در خروجی بالا ردیف با شماره 6 در ستون ID از View حذف شده است. این مثال، عمل حذف موفقیت آمیز ردیفها از View را تایید میکند.
روش Drop کردن View در SQL
دستور DROP در SQL برای حذف جدولها از درون پایگاه داده به کار برده میشود. با کمک این دستور حتی میتوانیم View-ها را نیز حذف کنیم. برای مثال میخواهیم که View با نام V_Clients را حذف کرده و سپس آن را اجرا کنیم. بعد از اجرای View میتوان مشخص کرد که آیا کوئری نوشته شده موفق بوده است یا خیر.
بعد از اجرای کوئری بالا خروجی زیر به کاربر نمایش داده خواهد شد.
Error: no such table: V_Clientsهمینطور که مشاهده میشود، عبارت خروجی بیان میکند که جدول V_Clients وجود ندارد. به این معنا که قابلیت استفاده از دستور DROP برای حذف View در SQL تایید شد.
- توجه: عبارت خروجی بالا در SQL Server نمایش داده شده است. استفاده از پایگاههای داده دیگری مانند MariaDB و MS SQL میتواند خروجی را به شکل دیگری نمایش دهد. البته در نهایت همه خروجیها به معنی ناممکن بودن دسترسی به جدول حذف شده هستند.
مزایا و معایب استفاده از View در SQL
مانند تمام اشیاء، توابع و دستورات SQL، حتی View-ها هم دارای مزایا و معایب مخصوص به خود هستند. با تسلط بر روی SQL Server و شناخت تمام مزایا و معایب استفاده از View در SQL به یکی از مدیران حرفهای پایگاه داده تبدیل میشوید. در این بخش از مطلب به بررسی مزایا و معایب View پرداخته و آنها را به صورت مختصر و مفید فهرست کردهایم.
مزایای استفاده از View
استفاده از View مزایای زیادی دارد که باعث شده چنین پُر کاربرد شود. تقریبا تمام پایگاههای داده مبتنی بر SQL از View پشتیبانی میکنند. شناخت این مزیتها به مدیران پایگاه داده کمک میکند که بهترین و بیشترین استفاده ممکن را از View ببرنند.
در فهرست زیر تلاش کردیم که به صورت خلاصه و کامل تمام مزایای استفاده از View را جمع آوری کنیم.
- امنیت: View-ها با محدود کردن دسترسی به دادهها برای کاربران میتوانند باعث تقویت امنیت شوند. برای نمونه، اگر جدولی شامل اطلاعات حساس باشد، میتوانیم دسترسی کاربری را نسبت به ارتباط مستقیم با جدول واقعی محدود کنیم. در عوض، از روی آن جدول View خاصی را ایجاد میکنیم که فقط شامل دادههای غیر حساس باشد. سپس به کاربران فقط اجازه دسترسی و مشاهده این View جدید را میدهیم.
- سادگی در استفاده: در حالی که در حوزه مدیریت پایگاه داده متخصص هستیم، اما کاربرانی که پایگاه داده یا اپلیکیشن خاصی برای استفاده آنها ایجاد شده، احتمالا از دانش کافی برخوردار نیستند. به منظور کمک به کاربران نهایی محصول برای فراخوانی دادهها و گرفتن نتیجه در سریعترین زمان ممکن، میتوانیم از View استفاده کنیم. با کمک View کوئریها پیچیده را ساخته و از دید کاربران نهایی پنهان میکنیم.
- کارآمدی حافظه: در حالی که ذخیره و اجرای کوئری بر روی جدولهای واقعی میتواند باعث مصرف فضای دیسک حافظه شود، استفاده از View چنین آثاری را ندارد. زیرا View-ها فقط جدولهای مجازی هستند. بنابراین، آنها منبع حافظه را به اندازهای جداول واقعی، مصرف نمیکنند.

- اعمال سریع تغییرات: در زمان کار با سیستمهای RDBMS بزرگ، بسیاری از جدولها ممکن است که با یکدیگر ارتباط داشته باشند. یعنی اینکه تغییرات حتی ساده و کوچک در جدول خاصی ممکن است باعث بروز تغییرات در جدولهای دیگری هم بشود. بنابراین، ارزیابی دامنه گسترده تغییرات میتواند حتی دلهره آورد و چالشآمیز شود. در چنین شرایطی و برای اعمال تغییرات، بهجای دستکاری کردن جدولهای واقعی، میتوانیم View ایجاد کرده و تغییرات را در آن اعمال کنیم.
- ثبات و تداوم اجرای پروژه: با توجه به نیازهای کاربران میتوان بهسادگی تغییراتی را در View-ها اعمال کرد. به همین صورت، نتیجه کار هم به سرعت قابل مشاهده است. برای نمونه، اگر View در زمینه گزارشات استفاده میکنید، تغییر دادن View به صورت خودکار محتوای گزارشات درخواست شده توسط کاربر را نیز تغییر خواهد داد.
- چندین View مختلف برای هر جدول: هر تعداد View که بخواهیم را میتوان برای جدولها به صورت مجزا تولید کرد. هر کاربر با هر مجوزی میتواند ویو خاصی از جدول را در اختیار داشته باشد. بنابراین، مدیر پایگاه داده این امکان را دارد که به ازای هر جدول به کاربران مختلف ویوهای مجزایی را نمایش دهد.
معایب استفاده از View
درست است که دلایل و مزایای زیادی برای استفاده از View در SQL وجود دارد. اما به همین ترتیب چند مشکل هم در زمان استفاده از View وجود دارد. رایجترین معایب استفاده از View-ها را در فهرست زیر بیان کردهایم.
- «رابطه پایگاه داده» (Database Relation): اگر ویژگی را از جدول واقعی حذف کنیم، این اتفاق بر عملکرد View-ها هم میتواند تاثیر بگذارد. به صورت کاملی شبیه به اتفاقی که در جدولهای مرتبط با هم میافتد. برای نمونه، اگر View در حال استفاده از ستون مربوط به آدرس ایمیل در جدول خاصی است و مدیر پایگاه داده آن ستون را حذف یا دادهای را از درون آن پاک کند، با توجه به اینکه این ستون در حال استفاده توسط View بود، خروجی نمایش داده شده توسط View از اتفاق روی داده متاثر خواهد شد.
- کارآمدی: اگرچه View-ها در زمان استفاده نیازی به فضای اضافه چندانی ندارند، اگر کوئریهای بسیار طولانی را مخفی کردهاید و کاربران به صورت تکراری از آن View استفاده کنند، کارایی پایگاه داده دچار اختلال خواهد شد.
چه زمانی از View در SQL استفاده کنیم؟
آشنایی با انواع پایگاه های داده در فرادرس
- فیلم آموزش پایگاه داده MySQL فرادرس
- فیلم آموزش مقدماتی اوراکل اپکس، تولید و توسعه نرم افزارهای تحت وب با Oracle APEX در فرادرس
- فیلم آموزش پایگاه داده SQLite در پایتون با فرادرس
- فیلم آموزش پایگاه داده MongoDB برای تحلیل، مدل سازی و پردازش داده ها در فرادرس
- فیلم آموزش مقدماتی PostgreSQL برای مدیریت پایگاه داده در فرادرس

View های Materialized
View-های Materialized نسخه رونوشتی از دادههای فراخوانی شده را به صورت فیزیکی ذخیره میکنند. این دادههای ذخیره شده را میتوان بدون اجرا کردن View به کار برد. برای این نوع از View، از نام «SNAPSHOTS» هم استفاده میشود. View-های Materialized شده، زمان پردازش مورد نیاز برای بازتولید کردن کل دادهها را کاهش میدهد. این مسئله به کاربران راه دور کمک میکند که دادههای مورد نیاز را در سیستم خود کپی کرده و به این صورت کارایی کوئریها را ارتقا دهند. بخش چالشآمیز کار اینجاست که در زمان رویدادن هر تغییری در جدول اصلی باید Materialized View-ها را نیز بهروزرسانی کرد.
در جدول زیر مقایسهای بین Materialized View و View-های معمولی انجام دادهایم.
| View | Materialized View |
| ساختار منطقی برای فراخوانی داده از جدولها | ساختار منطقی برای ذخیرهسازی دادهها به صورت فیزیکی روی حافظه |
| دسترسی کندتر به دادهها | دسترسی سریعتر |
| استفاده با هدف محدود کردن دسترسی مستقیم به دادهها | استفاده در حوزه نگهداری دادهها |
جمعبندی
View-ها در زمان کار بر روی پایگاه داده مزایای بسیار زیادی را ارائه میدهند. بنابراین لازم است که در زمان کار با اغلب پایگاههای داده درباره روش استفاده از View-ها هم اطلاعاتی را داشته باشیم. اکنون میتوانید از مثالهای بالا استفاده کرده و درک خود را از View-ها ارتقا بدهید. اگرچه شناخت View و آموزش روش استفاده از آن فقط یکی از مفاهیم بنیادین پایگاه داده است. اگر بدنبال موقعیت شغلی مدیریت پایگاه داده هستید، کسب مهارت و دانش درباره سایر مفاهیم حیاتی پایگاه داده نیز به همین صورت ضروری است.
در این مطلب از مجله فرادرس، تلاش کردیم که همه چیز را درباره View در SQL آموزش دهیم. از ساخت View شروع کرده و به روش استفاده از عملیاتی مانند Insert و Update و Delete رسیدیم. برای هر کدام مثال مرتبطی را همراه با کوئری مربوط به آن نمایش دادیم. در نهایت هم مزایا و معایب استفاده از View را بیان کردیم.
مطالب مجله فرادرس را در جستجوی گوگل سریعتر ببینید














عزیز این جملتون رو برعکس نوشتید . تصحیح کنید که دوستانی که مطالعه میکنند دچار مشکل نشوند ممنون :=> این است که View-ها اجازه استفاده از عملیات مشخصی مانند Insert و Update و Delete را میدهند. در حالی که رویهها چنین امکانی را فراهم نمیکنند.
با سلام خدمت شما؛
بله. شما تذکر شما صحیح است. در هردو مورد امکان استفاده از عملیات مشخصی مانند Insert و Update و Delete وجود دارد. مطلبی که اشاره کردید در متن اصلاح شد.
از همراهی شما با مجله فرادرس سپاسگزاریم.