ایجاد یک view
درس “ایجاد View در SQL Server” به بررسی دقیق مفهوم View بهعنوان یک جدول مجازی در پایگاه داده میپردازد و نحوه طراحی، ایجاد و مدیریت آن را در محیط SQL Server Management Studio (SSMS) توضیح میدهد. در این درس، کاربردهای کلیدی View مانند سادهسازی کوئریهای پیچیده، افزایش امنیت دادهها با محدودسازی دسترسی، و ایجاد لایههای انتزاع برای پنهانسازی پیچیدگی ساختار پایگاه داده بهطور تخصصی بررسی میشود. همچنین مراحل عملیاتی ایجاد یک View، از جمله انتخاب جداول مرتبط، تعریف فیلترها و مرتبسازی دادهها، و ذخیره آن با استفاده از ابزارهای SSMS آموزش داده میشود. این درس به متخصصان کمک میکند تا با بهرهگیری از Viewها، کوئریهای بهینهتر و ساختاریافتهتر ایجاد کرده و نگهداری دادهها را تسهیل کنند.
پس در اینجا داخل Management Studio، اگر AdventureWorks رو باز کنیم تعدادی از optionهای زیر رو میبینیم.
همانطوری که قبلاً دیدید ما کارمان را با جداول ادامه می دادیم و حالا میخواهیم راجب به Views صحبت کنیم.
اگر ما علامت مثبت کنار views رو بزنیم، میبینیم که برخی از viewها اکنون برای ما ایجاد شدند، اما خودمان پیش میرویم و دوباره یکی رو ایجاد میکنیم.
برای این کار روی view کلیک راست میکنیم.
بالاترین گزینه که وجود دارد new view هست که برای ما یک صفحه باز میکند که از ما میپرسد کدام یک از جدولها رو برای view دوست دارم.
برای این view خاص، من دوست دارم که جدول customer و جدول person رو شامل بشود. من هر دو اونها رو اضافه میکنم و بعد از اون دکمه close برای این صفحهای که باز شده رو میزنم.
در این صفحه ما دو تا جدول Customer و Person رو میبینیم که با توجه به سفارشی سازیای که قبلاً اعمال کردیم، برای ما قرار داده شده.
برای ما برخی فیلدهای متفاوت و checkbox هایی در دسترس هست تا فیلدهایی رو که دوست داریم درچک باکسشون علامت تیک بزنیم.
بنابراین در جدول person دوست دارم که FirstName و last name رو انتخاب کنم و در جدول customer هم accuntnumber رو قرار میدهم.
روی این سه فیلد کلیک میکنیم.
من روی علامت تعجب قرمز رنگ در بالاترین قسمت سمت راست کلیک میکنم تا داده هایم رو برای من برگرداند و فیلدهایی رو که من مشخص کردم رو هم برای من برمی گرداند که فیلدهای firstname و lastname وaccunt number هستند و این دو جدول با هم در ارتباط هستند.
بنابراین ما میدانیم که کاترین ابل دارنده این شماره حساب و کیم ابرکرومبی دارنده این یکی شماره حساب هست. من جلو میروم و روی x در بالای تب کلیک میکنم و اون از من میپرسد که آیا دوست دارم این آیتم رو سیو کنم و yes رو من انتخاب می کنم.
از من میپرسد که چطور دوست داری اون رو صدا بزنی؟ من باید یک نام برای view انتخاب کنم، انتخاب نام اهمیتی ندارد چون در عملکرد هیچ تأثیری نمیگذارد و اون بیشتر برای فردی است که یک ایده از عملکرد این view دارد.
بنابراین من اون رو CustomerNamewithAccountNumber نامگذاری میکنم و اگر چه این به نظر یک اسم بلند میآید اما یک توضیحی از عملکردی که مد نظر ما هست را به راحتی به ما میدهد پس روی دکمه ok کلیک میکنم.
این view ممکن است که سریع برای شما در لیست Views نمایش داده نشود.
برای این منظور شما روی view کلیک راست میکنید و رفرش رو میزنید و سپس ویو جدید رو میبینید. ما فقط CustomerNamewithAccountNumber رو ایجاد کردیم.
اکنون نیو کوئری رو باز میکنم و در این کوئری میخواهم Select * From رو انجام بدهم.
تا الان ما دستور select رو برای انتخاب جداول انجام میدادیم، اما همچنین شما میتوانید این دستور رو برای view ها هم استفاده کنید.
بنابراین من بند CustomerNamewithAccountNumber from رو برای select میگذارم و جلو میروم و اون رو اجرا میکنم که میبینم همه customer ها رو با شماره حسابهایشان برای ما برمیگرداند.
بنابراین این view اساساً یک named query هست. ما این query از پیش تعیین شده رو داریم که firstname و last name و accountnumber رو انتخاب میکند. ما میتوانیم این کوئری رو هر زمان که دوست داریم بخوانیم. مراقب باشید که داده ها به صورت متفاوت ذخیره نشوند. بنابراین همه داده ها در جدول ها ذخیره شدند. برخی از داده ها در جدول customer هستند و برخی دیگر در جدول person اما با ترکیب این دو جدول ما داده ها رو از هر دو میبینیم. ما در ظاهر یک جدول درست کردیم ولی در واقع یک ویو هست و این اطلاعات و دیتاها از طریق ویو فراخوانی میشوند. اینکار خیلی از امکانات رو برای راحتی کار توسعه دهندگان فراهم میکند. بجای اینکه با تعداد زیادی از جدولها کار کنند اونها رو در یک view ادغام میکنند و فقط با view کار میکنند.
بسیاری از چیزهایی که ما در دستور select روی یک جدول انجام میدهیم، ما همچنین میتوانیم روی یک view هم انجام بدهیم.
ما یک بند where و یک بند order by هم میتوانیم اضافه کنیم.
پس در ادامه مینویسیم firstname like.
الان یک wildcard رو از صفحه کلید انتخاب می کنیم که wildcard از نوع A هست و بعد می نویسیم A% و به معنی این است که firstname هایی رو میخواهیم که تنها با A شروع بشوند.
در ادامه می نویسیم A% مجدداً از صفحه کلید یک wildcard مجدداً وارد می کنیم و به معنی این است که firstname هایی رو میخواهیم که تنها با A شروع بشوند اعلام شود.
در ادامه مینویسیم order by lastname به این معنی که مرتب سازی بر اساس lastname ها باشد.
روی دکمه execute کلیک میکنیم و میبینیم که با موفقیت انجام میشود. بدین صورت که firstname هایی که با a شروع میشوند را برمیگرداند و نتایج هم بر اساس last name مرتب شدند.
درست مثل یک table، ما میتوانیم دستورات sql مشابه رو در مقابل با یک view داشته باشیم. به عقب برمیگردیم و به صفحهای که یک view در اونجا ایجاد شده نگاه میکنیم، حالا روی نام view که ایجاد کردیم، کلیک راست میکنیم و design رو میزنیم و به من یک صفحه میدهد که 4 قسمت یا پنل در این صفحه وجود دارد. بد نیست بدانید به این صفحه Designer میگویند. از بالا به پایین، بالاترین پنل به ما نشان میدهد که کدام جدول رو من کار کردم و ارتباط بین این جدول ها رو نشان میدهد.
پنل بعدی نشان میدهد که ستون هایی که انتخاب کردیم کدام هستند.
سومین پنل دستورات sql رو نشان میدهد که ماشین به صورت اوتوماتیک با این نتایج بالا آمده.
پس این دستوراتی که دارید مشاهده می کنید همان هایی هستند که در طول دوره آموزشی sql با برخی از آنها آشنا شدید. میتوانید ببینید که ماشین SQL به صورت اتوماتیک برای ما برخی از دستوراتی که یاد گرفتیم رو تولید کرده.
بعد از اینها در قسمت پایین نتایج رو به ما نشان میدهد و تا زمانی که دکمه excute رو نزنیم، هیچ مجموعه ای دیده نمیشود.
ما روی علامت تعجب قرمز رنگ کلیک میکنیم. برای پنل سوم که ماشین به صورت اتوماتیک دستورات sql رو نوشته، ما می توانیم خودمان هم دستور اضافه کنیم.
بنابراین من میخواهم پیش بروم و یک بندی رو اضافه کنم و اینبار ما دستور where firstname like ‘B%’ رو میزنیم به این معنی که first name هایی که اولین حرف اونها b هست رو برای ما برگرداند.
دوباره دستور execute رو میزنم و حالا میبینم که view فیلتر شده با firstname هایی که با b شروع میشوند برای ما بنمایش درمیآید.
اگر شما احساس کنید که دوست دارید هر کدام از این پنلها را به صورت جداگانه اجرا کنید، باید بدانید که این نرم افزار قابلیت این را دارد که هر کدام را با روشن یا خاموش شدن بصورت سفارشی نشان بدهد و فضای بیشتری رو در اختیار ما قرار بدهد.
دکمه هایی در toolbar در سمت چپ وجود دارد و زمانی که شما روی اونها کلیک میکنید، نمایش پنلها به صورت متفاوت تغییر میکند و اونها رو به صورت جداگانه نشان میدهد. دوباره روی دکمه مشابه کلیک کنیند تا پنل شما به صورت قبل برگردد و اگر شما دوست دارید که صفحه شما به پنل خاص تغییر نکند از این دکمه ها استفاده نکنید.