آموزش sql server – جلسه چهارم

4

سلام. خدمت دوستان عزیز باید بگم که در این جلسه از آموزشمون قراره پرکاربرد ترین و مهمترین دستورات SQL را آموزش بدهم.پس سعی کنید خوب یاد بگیرید( البته مثل همیشه همراه با مثال و تمرین )

انواع Query یا پرس وجو


۱.پرس و جوی عمومی (انتخاب همه اطلاعات جدول)

نام جدول  select * from

مثال:

select * from student

تمامی رکورد های جدول دانش اموز را نمایش می دهد.

۲٫پرس و جوی فیلد های خاصی از جدول

نام جدول from     …,نام فیلد۲ , نام فیلد۱   select

۳٫انتخاب فیلد های خاص و نمایش آنها با نام های جدید در خروجی

نام جدول  from     …, ‘نام جدید برای فیلداول ‘  as    نام فیلد۱   select

۴٫مرتب سازی پرس وجو

نام فیلد  orther by  نام جدول  from   نام فیلد ها   select

پرس جو براساس نام فیلدی که در جلوی orther by نوشته شده است مرتب می شود.

۵٫استفاده از عملگر های منطقی در شرط نمایش orther by

شرط ۲  (and/or/not )   شرط۱    where   نام فیلد  orther by  نام جدول select * from

۶٫نمایش query با حذف مقادیر تکراری

….   نام جدول from   …, نام فیلد select distinct

۷٫استفاده از litrall یا رشته  همراه با پرس وجو

…. نام جدول from   ….  , نام فیلد ۱,   ‘ select  ‘litrall1

۸٫ استفاده از عملگر like

توسط عملگر like می توانیم یک الگو یا شکل کلی برای ارزیابی مقادیری که می خواهیم تعریف کنیم که در صورت مطابقت با الگو نمایش داده شوند.

‘الگو’  where like    [نام فیلد  orther by]  نام جدول select * from

۹.استفاده از gruop by

هرگاه بخواهیم نتیجه نمایش پرس وجو بر اساس یک فیلد دسته بندی شود نام آن را در جلوی عبارت gruop by می نویسیم. توجه کنید نام فیلد جلوی gruop by حتما باید در جلوی دستورselect نوشته شود ودر صورت استفاده از فیلد های دیگر باید از توابع جمعی استفاده کنیم.

نکته:همیشه و همیشه هنگامی که از توابع جمعی استفاده می کنیم حتما باید از کلمه gruop by استفاده شود.

توابع جمعی:

()sum: جمع

()avg: میانگین

() max:  پیدا کردن بزرگترین مقدار

()min: پیدا کردن کوچکترین مقدار

() cuont:  شمارش تعداد

نام فیلد group by     نام جدول select * from

مثال:

جمع نمرات هر دانش آموز با سن بالای ۱۵ (دسته بندی بر اساس نام و فامیل)

select std_name , std_family,sum(grade) from student

where age>15  gruop by std_name,std_family

۱۰.استفاده از group by  اعمال شرط having  بر روی آن

برای شرط دسته بندی رکورد ها استفاده می شود. عبارت having شرط نمایش مقادیر دسته ها را مشخص می کند و بعد از دسته بندی شدن اعمال می شود ولی شرط جلوی where روی تمامی رکورد ها و قبل از دسته بندی شدن اعمال می شود.

شرط   having    نام فیلد group by     نام جدول select * from

مثال:

جمع  نمرات دانش اموزانی بالای ۱۵ سال  که جمع نمرا ت آنها از ۱۶ بیشتر شده است .

select std_name , std_family,sum(grade) from student

where age>15  gruop by std_name,std_family  having sum(*)>16

نکته : معمولا having هرشرطی را با توابع جمعی بیان می کند در غیر این صورت فقط می توان در شرط از نام فیلدی استفاده کرد که در جلوی عبارت group by نوشته شده است.

۱۱.استفاده ا ز عملگر in

جهت تعیین شرط با محدوده ای از مقادیر(عملیات in شبیه عملگر or می باشد)

(‘رشته ۳′,’رشته ۲′,’رشته ۱’) in   نام فیلد  where     نام جدول  select * from

۱۲٫استفاده از عملگر top:

هرگاه بخواهیم حداکثر تعداد رکورد های نمایشی را در خروجی نمایش دهیم از این عملگر استفاده می کنیم.

select top 5 grade from student

۵نمره اول جدول دانش آموز را برمی گرداند.

تذکر:برای نمایش درصدری از رکورد ها در خروجی  بعد از کلمه top ابتدا عدد و سپس کلمه percent را می نویسم .

select top 5  percent   grade from student

۵درصد اول نمرات جدول دانش آموز را برمی گرداند.

۱۳٫برای بررسی مقادیر فیلد ها با مقدار null در شرط نمایش رکورد ها

is null/is not null   نام فیلد  where     نام جدول  select * from

۱۴.استفاده از عبارت comput by:

توسط این عبارت یک عملیات را روی رکورد های دسته بند ی شده توسط توابع جمعی انجام می دهیم.هنگام استفاده از این عملگر حتما باید عبارت orther  by را نوشته و فیلد جلوی  comput  حتماباید جلوی orther آمده باشد.

شرط  where     نام جدول  select * from

نام فیلد   orther by

نام فیلد دسته بندی شده  by     توابع جمعی   compute

تفاوت gruop by و comput by :

comput نتیجه عملیات روی رکورد های دسته بندی شده را به صورت تفکیک شده  نمایش می دهد.

۱۵٫استفاده از عبارت into:

نتیجه پرس وجو در یک جدول موقت ذخیره میشود که نام آن جدول حتما باید ذکر شود.نشانه یک جدول موقت  عبارت# می باشد.جدول موقت می تواند توسط دستور select مقادیر خود را نمایش دهد.

….   نام جدول اصلی  from     نام جدول موقت select * into

ایجاد جستجوی های فرعی :

هر گاه قسمت where  یک دستور select با یکی از عملگر های زیر select  دیگری را بنویسیم یک پرس و جو یفرعی ایجاد کرده ایم.

in: بررسی وجود مقادیر یک فیلد در یک مجموعه  جواب که خروجی select فرعی است.

(دستورات پرس و جوی فرعی )  inنام فیلد  where     نام جدول  select * from

any: مقادیر یک فیلد توسط عملگر “=” با مقدار جواب select  داخلی مقایسه می شود.

(دستورات پرس و جوی فرعی )=     نام فیلد  where     نام جدول  select * from

all:مقادیر یک فیلد توسط عملگرهای “=<>” با مقدار جواب select  داخلی مقایسه می شود.

(دستورات پرس و جوی فرعی ) =/</>  نام فیلد  where     نام جدول  select * from

exists/not exists:وجود مقادیر یک فیلد یا عدم وجود آن که بامقدار جواب select داخلی مقایسه می شود.

(دستورات پرس و جوی فرعی )   exists/not exists    نام فیلد  where     نام جدول  select * from

مثال:

ابتدا جداول زیر را بسازید.

جدول فروشنده(saller):

با فیلد های:saller_ name,saller _num

جدول محصولات(product):

با فیلد های:pro_ name,pro _num

جدول فروش(salle):

با فیلد های:saller_ num,pro _num,number

۱٫نام فروشندگانی که یکی از کالاهایی که احمدی فروخته است را فروخته اند نمایش داده شود.

پاسخ:

باتوجه به این که اطلاعات در دو جدول جداگانه  ذخیره شده باید از پرس و جوی های فرعی استفاده کنیم.

select   saller_name    from   saller

where   saller.saller_num=salle.saller num

(این دستور ارتباط بین جداول را ابتدا چک می کند)

and    pro _num    in

select pro_num  from  salle )

where   saller.saller_num=salle.saller num  and

(‘saller_name=’ahmadi

و در آخر سعی کنید این دو تمرین را حل کنید تا در جلسه بعد پاسخ خودتون و پاسخ من روباهم  مقایسه کنیم.

۲٫نام فروشندگانی که هیچ کالای نفروخته اند نمایش داده شود.

۳٫کد کالا هایی که بیش از یک بار فروخته شده است.

موفق باشید

برچسب‌ها :

توضیحات در مورد نویسنده :

مسعود رضایی هستم ، 23 ساله ، مدیر گروه نوجوان تک تمپ ، دانشجو ، علاقمند به طراحی وب سایت ، گرافیک و بازی های رایانه ای . هدف ما بالا بردن هنر گرافیک در بین هموطنان مان است .

Visit Masoud's Website

ارسال نظر



محصولات فروشگاه



<