View ها در SQL جداول مجازی هستند که به شما امکان میدهند تا نتایج یک یا چند پرسوجو را بهطور موقت در قالب یک جدول نمایش دهید. این نتایج میتوانند از چندین جدول یا حتی چندین زیرپرسوجو بهدست آیند. View ها در واقع دادهها را ذخیره نمیکنند، بلکه یک پرسوجو است که هر بار که به آن دسترسی پیدا میکنید، اجرا میشود و نتایج آن را بهطور موقت نمایش میدهد.
مزایای استفاده از View ها:
- سادهسازی دسترسی به دادهها: میتوانید با استفاده از یک view پیچیدگیهای ترکیب چند جدول را پنهان کنید و کاربران را به سادگی به نتایج دلخواه خود هدایت کنید.
- امنیت: میتوانید از view ها برای محدود کردن دسترسی به بخشی از دادهها استفاده کنید. به عنوان مثال، با استفاده از view ها میتوانید فقط بخشی از دادهها را به کاربران خاص نشان دهید.
- جداسازی لایهها: View ها به شما این امکان را میدهند که لایهای از جداسازی بین دادهها و منطق پردازش آنها ایجاد کنید.
- سهولت در نگهداری: با استفاده از view ها میتوانید در صورت تغییر ساختار جداول، تنها view را بهروزرسانی کنید و نیازی به تغییر همهجا نخواهید داشت.
ساختار کلی دستور CREATE VIEW:
دستور CREATE VIEW به شما این امکان را میدهد که یک view جدید ایجاد کنید که نتیجه یک پرسوجو را نمایش دهد.
SELECT column1, column2, ...
FROM table_name
WHERE condition;
- view_name: نامی که به view داده میشود.
- SELECT column1, column2, ...: پرسوجویی که نتایج آن در view نمایش داده میشود.
- FROM table_name: جدول یا جداولی که دادهها از آنها استخراج میشود.
- WHERE condition: شرایطی که باید برای دادهها اعمال شود (اختیاری).
مثالهایی از استفاده از CREATE VIEW:
1. ایجاد یک View ساده
فرض کنید یک جدول به نام employees دارید و میخواهید فقط اطلاعات مربوط به کارمندان با شغل "مدیر" را در یک view نمایش دهید.
SELECT first_name, last_name, job_title
FROM employees
WHERE job_title = 'Manager';
این view تمامی مدیران را از جدول employees نمایش میدهد. اکنون میتوانید بهسادگی با انجام یک SELECT از view خود، اطلاعات مدیران را دریافت کنید.
2. ایجاد View با چند جدول (Join)
فرض کنید دو جدول به نامهای orders و customers دارید و میخواهید اطلاعات مربوط به مشتریانی که سفارش دادهاند و جزئیات سفارشهایشان را نمایش دهید.
SELECT c.customer_id, c.customer_name, o.order_id, o.order_date
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id;
در این مثال، view ایجاد شده اطلاعاتی از مشتریان و سفارشهایشان را ترکیب میکند. برای نمایش نتایج، میتوانید از دستور SELECT استفاده کنید:
3. ایجاد View با گروهبندی (GROUP BY)
فرض کنید یک جدول به نام sales دارید که جزئیات فروشها را در آن ذخیره میکنید. میخواهید مجموع فروشها را برای هر محصول محاسبه کرده و در یک view نمایش دهید.
SELECT product_id, SUM(sales_amount) AS total_sales
FROM sales
GROUP BY product_id;
این view مجموع فروشها را برای هر محصول نشان میدهد. برای مشاهده نتایج میتوانید از دستور زیر استفاده کنید:
ویژگیهای مهم View ها:
- View ها فقط یک پرسوجو هستند: آنها دادهها را ذخیره نمیکنند و فقط نتایج یک پرسوجو را نمایش میدهند.
- View ها بهروز میشوند: هر بار که از یک view استفاده میکنید، پرسوجو مجدداً اجرا میشود و آخرین دادهها را به شما نمایش میدهد.
- View ها نمیتوانند دادهها را مستقیماً تغییر دهند: بهطور معمول، نمیتوان دادهها را از طریق یک view تغییر داد، مگر اینکه view ساده باشد و شرایط خاصی داشته باشد.
- View ها میتوانند پیچیده شوند: میتوان از view ها برای ایجاد ترکیبهای پیچیده بین جداول استفاده کرد.
4. ویرایش یک View (ALTER VIEW)
اگر نیاز به ویرایش یک view داشته باشید، در SQL استاندارد دستور ALTER VIEW وجود ندارد. برای تغییر یک view، باید ابتدا آن را حذف کنید و سپس یک view جدید ایجاد کنید.
4.1. حذف یک View
برای حذف یک view میتوانید از دستور DROP VIEW استفاده کنید:
این دستور view را حذف میکند.
5. ایجاد Viewهای پیچیدهتر
در برخی موارد ممکن است بخواهید از view ها برای تحلیلهای پیچیدهتر مانند استفاده از توابع جمعی (SUM, AVG, COUNT) یا استفاده از subquery ها بهره ببرید.
مثال: View با استفاده از Subquery
SELECT order_id, customer_id, order_date, order_amount
FROM orders
WHERE order_amount > (SELECT AVG(order_amount) FROM orders);
در این مثال، view فقط سفارشهایی را نمایش میدهد که مبلغ آنها بیشتر از میانگین مبلغ تمام سفارشها است.
نتیجهگیری:
View ها در SQL ابزار مفیدی برای سادهسازی درخواستها، بهبود امنیت، و ایجاد لایههای انتزاعی از دادهها هستند. با استفاده از CREATE VIEW میتوانید جداول مجازی ایجاد کنید که به شما اجازه میدهد دادهها را بهصورت تجزیهشده و راحتتر تحلیل کنید.
