View: ذخیره کردن یک پرسوجو با یک نام
مبتدی
۱۱ دقیقه مطالعه
یادت هست در درس CTE، یک پرسوجوی پیچیده را با WITH نامگذاری کردیم تا خواناتر شود؟ مشکل CTE این است که فقط در همان یک پرسوجو معتبر است. View همان ایده را یک قدم جلوتر میبرد: پرسوجو را برای همیشه در پایگاهداده ذخیره میکند، طوری که هر بار بخواهی، فقط کافی است نامش را صدا بزنی — درست مثل یک جدول واقعی.
ساختار پایه
sql
CREATE VIEW BookSales AS SELECT product, price FROM sales WHERE category = N'کتاب';
از این به بعد، بهجای تکرار این JOIN/WHERE در همهجا، کافی است بنویسی:
sql
SELECT * FROM BookSales WHERE price > 100000;
بیا این را بسازیم و ازش استفاده کنیم:
امتحانش کن — ساخت و استفاده از View
توانستیم روی
BookSales — که خودش نتیجهی یک پرسوجو است — دوباره WHERE بگذاریم، دقیقاً مثل یک جدول واقعی. این قدرت اصلی View است: میتوان رویش پرسوجو زد، فیلتر کرد، حتی JOIN داد.View در برابر جدول واقعی
| جدول | View | |
|---|---|---|
| داده را ذخیره میکند؟ | بله | خیر — فقط تعریف پرسوجو را نگه میدارد؛ هر بار اجرا میشود |
| همیشه بهروز است؟ | — | بله، چون هر بار مستقیم از جدول اصلی میخواند |
| کاربرد اصلی | نگهداری داده | سادهسازی، امنیت (محدودکردن ستونهای در دسترس)، خوانایی |
یک کاربرد مهم: پنهانکردن ستونهای حساس
View میتواند برای کنترل دسترسی هم استفاده شود — مثلاً بهجای دادن دسترسی کامل جدول کارمندان، فقط یک View بدون ستون حقوق در اختیار بگذاری:
sql
CREATE VIEW PublicEmployeeInfo AS SELECT id, full_name FROM employees; -- کاربرانی که فقط به این View دسترسی دارند، اصلاً نمیتوانند ستون حقوق را ببینند
حذف یک View
sql
DROP VIEW BookSales;
جمعبندی این درس
- View یک پرسوجوی ذخیرهشده با یک نام است؛ خودش دادهای نگه نمیدارد.
- میتوان مثل یک جدول واقعی رویش
SELECT،WHEREوJOINزد. - کاربرد رایج: سادهسازی پرسوجوهای تکراری، و محدودکردن ستونهای در دسترس برای کنترل امنیتی.
در درس بعدی سراغ Stored Procedures میرویم — قدمی فراتر از View، جایی که SQL Server واقعاً شروع میکند به رفتار مثل یک زبان برنامهنویسی.