خانه/ برنامه‌نویسی در SQL Server/ Views

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 واقعاً شروع می‌کند به رفتار مثل یک زبان برنامه‌نویسی.