کاربرد View در SQL
View یک جدول مجازی است.
این فصل نشان می دهد که چگونه یک View را ایجاد، حذف و یا تغییر دهیم.
دستور CREATE VIEW
در SQL یک View یک جدول مجازی است که نتیجه حاصل از عبارات و دستورات SQL می باشد.
یک view شامل سطر و ستونهایی دقیقا شبیه یک جدول واقعی است. فیلدها در یک View فیلدهایی هستند که از یک یا چند جدول واقعی در پایگاه داده گرفته شده اند.
شما می توانید توابع موجود در SQL، عبارت WHERE و JOIN را به یک View اضافه کنید و داده های نتیجه را به همان صورت که داده ها در یک جدول آورده می شوند، نشان دهید.
فرم CREATE VIEW:
SELECT column_name(s)
FROM table_name
WHERE condition
توجه: یک View همیشه داده های به روز شده (up-to-date) را نشان می دهد! موتور یک پایگاه داده، داده های یک View را هر زمانی که View فرا خوانی می شود ، به روز می کند.
مثال:
اگر پایگاه داده Northwind را دارید شما می توانید چندین view را که به طور پیش فرض روی آن نصب شده است را ببینید.
View با نام Current Product List، لیست محصولات جاری (محصولاتی که تولید آنها متوقف نشده است) را از جدول Products نشان می دهد. این view توسط دستور زیر ایجاد می شود.
SELECT ProductID,ProductName
FROM Products
WHERE Discontinued=No
می توانیم View فوق را به صورت زیر فراخوانی کنیم:
مثال دیگری از View در پایگاه داده Northwind، تمام محصولاتی را که در جدول Products قیمت واحدشان بزرگتر از میانگین قیمت هاست را بر می گرداند:
SELECT ProductName,UnitPrice
FROM Products
WHERE UnitPrice>(SELECT AVG(UnitPrice) FROM Products)
می توانیم view فوق را به صورت زیر فراخوانی کنیم:
مثال دیگری از View در پایگاه داده Northwind، کل فروش را برای هر طبقه از محصولات در سال 1997 محاسبه می کند. توجه کنید که این view داده هایش را از view ی دیگری که Product Sales for 1997 نامیده می شود می گیرد.
SELECT DISTINCT CategoryName,Sum(ProductSales) AS CategorySales
FROM [Product Sales for 1997]
GROUP BY CategoryName
می توانیم view فوق را به صورت زیر اجرا کنیم:
همچنین می توان یک شرط روی Query فوق تعریف کرد. می خواهیم فروش کل محصولاتی که در گروه Beverages هستند را ببینیم.
WHERE CategoryName='Beverages'
تغییر (به روز رسانی) یک View
می توانیم یک View را به وسیله دستور زیر به روز رسانی کنیم:
فرم دستور CREATE OR REPLACE VIEW:
SELECT column_name(s)
FROM table_name
WHERE condition
می خواهیم ستون Category را به Current Product List اضافه کنیم. به وسیله دستور زیر view را تغییر می دهیم:
SELECT ProductID,ProductName,Category
FROM Products
WHERE Discontinued=No
حذف یک View
می توانید یک view را به وسیله فرمان DROP VIEW حذف کنیم.
فرم DROP VIEW:
برای مشاهده فیلم های آموزشی مقدماتی تا پیشرفته پایگاه داده SQLServer کلیک کنید.
- نوشته شده توسط مهندس تمیزی
- بازدید: 54684
دیدگاهها
میتوان نتیجه گرفت که یک view همانند یک تابع در برنامه نویسی است
منظورم این است که شما یک result_set را در یک ویو ذخیره میکنید و هر موقع که نیاز به این view داشتید آنرا فراخوانی میکنید.
ولی نمیدانم حسن این کار نسبت به نوشتن دوباره دستور سکلت مورد نظر چیست؟
ایمیل های سایت در ضمن برای من نمیاید در صورت پاسخ دادن از کجا باید مطلع بشوم.؟!
با سلام.
VIEW در واقع جهت نمایش کوئری به کار میره. در VIEW میتونید چند SELECT رو با هم به کار ببرید و در واقع در اون میتونید نحوهی نمایش رو تعیین کنید.
همونطور که از اسمش پیداست جنبهی نمایشی داره و کاربردش با SELECT فرق داره.
سلام
بروزرسانی view تو sql Server با دستور Alter View انجام میشه:
ALTER VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition
دراین مثال چرا باید Discontinued=No قرار بدیدم؟این کار اجباریه! CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName,Category
FROM Products
WHERE Discontinued=No
با سلام.
اجبار نیست! اگر دقت کنید این عبارت در قسمت WHERE نوشته شده است. در واقع شرط کوئری این هست که Discontinued برابر با مقدار No باشه.
سلام
چرا در این مثال تابع AVG که یه تابع Agrregate هست برخلاف قوانین توابع Agrregate همراه با where اومده؟ و از Having استفاه نشده؟CREATE VIEW [Products Above Average Price] AS
SELECT ProductName,UnitPrice
FROM Products
WHERE UnitPrice>(SELE CT AVG(UnitPrice) FROM Products)
با سلام و احترام.
WHERE شرطی است که روی تکتک رکوردها اعمال میشه، ولی HAVING شرطی هست که روی مجموعهی رکوردها اعمال میشه. این دو با هم فرق دارند.
هیچ مشکلی هم نداره که با هم تو یه کوئری آورده بشن، چون تداخلی ایجاد نمیکنن. گرامر یک کوئری در زیر آمده است:
SELECT *
FROM table_name
WHERE condition
GROUP BY fields_name
HAVING BY condition_for_group_by
ORDER BY sort_field_name
سلام و خدا قوت و تشکر بابت سایت عالیتون
برای اینکه یک ستون به view بتوانیم insert کنیم باید اول view قبلی رو drop کنیم بعد دوباره view بسازیم یا راه دیگه ای هم هست؟
با سلام و تشکر
اگر دقت کنید در هنگام ساخت View باید یک پرس و جو درج کنید. در این پرس و جو میتوانید ستون کم یا زیاد کنید. منظور از ستون در واقع نام فیلدهایی هست که بعد از عبارت SELECT میآید.
view در واقع نمایی هست که خود شما برای پرس و جوهاتون میسازید.
بله درسته.
ولی میخواستم بدونم بعد اینکه یه view ساختیم میشه فیلدی رو بهش insert کرد ؟
شما منظورتون اضافه کردن یک فیلد به view هست که بالا توضیح دادن با دستور بروزرسانی view این کار رو بکنید
اسم ستونهای قبلی که تو view هست و ستون جدید رو وارد کنید
شما باید اون فیلد رو در قسمت SELECT بیارید.
عملیات insert, update & delete فقط در جدول صورت میگیره. view فقط برای نمایش هست.