آموزش SQL – دستورات select (انتخاب کننده)

دوستانی که برنامه نویسی کار میکنند میدونن که ما برای ذخیره سازی اطلاعات خودمون میتونیم به ۲ روش عمل کنیم :

  1. استفاده از سیستم فایل
  2. استفاده از پایگاه داده

استفاده از سیستم فایل به همین صورت ذخیره سازی داده ها درون فایل هست. مثلا یه فایل متنی ایجاد میکنیم و داده های خودمون رو درون اون ذخیره میکنیم.

بهترین روش برای ذخیره داده ها استفاده از پایگاه داده است , من در این اموزش میخوام به شما دوستان عزیز دستورات مربوط به پایگاه داده های از نوع SQL رو آموزش بدم , از جمله پایگاه داده هایی که دستورات SQL رو پشتیبانی میکنند میشه Mysql , Oracle , msSQL , SQLite و … مثال زد.

در این آموزش به دستورات انتخاب کننده میپردازیم , دستورات انتخاب کننده چی هستن؟ فرض کنید شما یک سری داده توی پایگاه داده ی خودتون دارید و میخواید انتخابشون کنید! برای انتخاب کردن داده های مورد نظر خودتون از دستورات انتخاب کننده باید استفاده کنید.

پس دستورات انتخاب کننده (select) برای گرفتن داده ها از دیتابیس (پایگاه داده) استفاده میشن , دستورات انتخاب کننده با کلمه ی کلیدی select شروع میشن و ساختار کلی انها به صورت زیر است:

در مثال بالا ساختار کلی دستور Select رو نوشتم , ساختار به این صورت است که ابتدا کلمه ی Select رو ذکر میکنیم و بعدش نام ستون هایی از جدول مورد نظر خودمون که بهشون نیاز داریم رو ذکر میکنیم (در ادامه کاملتر توضیح میدم) , ستاره یا * به معنای این هست که همه ی ستون ها رو میخوام داشته باشم , و در اخر اسم جدول خودمون (table) رو ذکر میکنیم تا داده ها از جدول گرفته بشن و به ما نمایش داده بشن. برای مثال فرض کنید من یه جدول به صورت زیر داشته باشم و دستور بالا رو روی این جدول اجرا کنم:

جدول من به صورت زیر خواهد بود

mobile family name id
۰۹۱۱۱۱۱۱۱۱۱ khanzadi mahdi ۱
۰۹۱۲۱۱۱۱۱۱۱ kian mohammad ۲
۰۹۰۰۰۰۰۰۰۰۰ hosseiny hossein ۳
۰۹۳۳۳۳۳۳۳۳۳ tabari hassan ۴

حالا اگه دستور مثال قبلی رو روی این جدول اجرا کنیم کل داده های جدول به ما داده میشه 😀 این داده ها شامل id و name و family و mobile افراد موجود در جدول میشه.

حالا اگه من نیاز به گرفتن id نداشته باشم چیکار کنم؟ برای چی وقتی نیازی به داده ای ندارم الکی بیام و اون رو از دیتابیس بگیرم؟ گرفتن داده های اظافی باعث فشار و زیادشدن کار برای CPU و Ram میشه!

اگه همه ی ستون ها رو نخوام باید به جای استفاده از * (ستاره) , نام فیلدها رو ذکر کنم و هر فیلد رو با ویرگول (,) جدا کنم. ساختار کلی به صورت زیر خواهد بود:

من در بالا ۴ فیلد (ستون) با نام های field_1 تا field_4 ذکر کردم , اگه تنها نیاز به یک ستون (فیلد) دارید فقط همون رو میتونید ذکر کنید و همچنین ویرگول دیگه نباید بزارید. ویرگول فقط برای جدا کردن چند فیلد(ستون) از هم استفاده میشه.

نکته : در پایگاه های داده به هر ستون اسم فیلد میدن , به هر سطر اسم رکورد میدن (field , record) , توی این اموزش هرجا گفتم فیلد منظورم ستون است و هرجا گفتم رکورد منظورم سطر هست. ستون ها عمودی هستند و سطر ها افقی هستند. ما هر داده ای رو که توی جدول خودمون وارد میکنیم به صورت یک سطر وارد میشه.

در جدولی که در بالا ذکر کردم اگه به فیلد id نیازی نداشته باشیم میتونیم دستورات زیر رو اجرا کنیم: (نام جدول رو tbl_name در نظر میگیرم)

حالا اگه دستورات بالا اجرا بشه همه ی داده های جدول به ما نشون داده میشن. این داده ها شامل نام و فامیل و شماره تماس برای افراد درون جدول است.

به همین راحتی و خوشمزگی 😀 باید به شما بگم که یادگیری SQL خیلی راحت تر از همه ی زبان های برنامه نویسی است.

تا اینجا وقتی که دستور Select رو اجرا میکردیم تمام داده های ما از جدول گرفته میشدن! حالا اگه یک داده ی خاصی رو بخوایم باید چیکار کنیم؟ مثلا اگه من شماره تماس فردی با نام mahdi و فامیل khanzadi رو بخوام از جدول بگیرم باید چیکار کنم؟؟

برای اینکه شرطی رو ذکر کنید و با توجه به اون شرط داده ها رو از جدول بگیرید نیاز دارید تا دستور where رو به انتهای دستور select اظافه کنید , نحوه ی کار به صورت زیر خواهد بود :

در مثال بالا تمام داده هایی (رکورد ها یا سطرها) که فیلد (ستون) نام انها برابر با mahdi باشه به ما داده میشه , وقتی که من دستور بالا رو اجرا کنم دیگه داده های مربوط به شخصی با نام hassan رو به من نمیده! بلکه فقط چیزی که نیاز دارم رو از پایگاه داده میگیرم 😀

پس تا اینجا متوجه شدیم که با اظافه کردن بخش where به انتهای دستور Select میتونم شرط خودم رو بنویسم! شما میتونید شرط های خودتون رو با دستورات and و or با هم ترکیب کنید.

نکته : در صورتی که از and استفاده میکنید باید شرط هایی که با هم and کردید همه درست باشن تا داده ای به شما نمایش داده بشه , در غیر این صورت هیچ داده ای به شما نمایش داده نمیشه چون شرط شما برقرار نیست! و در حالتی که از or استفاده میکنید اگه حتی یکی از شرط هایی که باهم or کردید درست باشه داده ها بر حسب اون نمایش داده میشن. به مثال زیر دقت کنید:

در مثال بالا داده هایی که ستون name انها برابر با mahdi و ستون family انها برابر با khanzadi باشه نمایش داده میشن. اگه همچین داده ای وجود نداشته باشه (شرط برقرار نباشه) هیچ داده ای به من داده نمیشه!

حالا به مثال زیر دقت کنید:

در دستورات بالا دوتا رکورد (سطر) از جدول به من داده میشه که شامل داده های مربوط به شخصی است که نام اون مهدی و یا حسن است. (سطر هایی که نام در انها مهدی یا حسن باشه به من داده میشن که دو سطر هستند با توجه به جدولی که در ابتدای اموزش درج کردم) , به همین راحتی.

شما میتونید از مقایسه های ریاضی مانند تساوی (=) , بزرگتر بودن (<) و کوچکتر بودن (>) استفاده کنید. به مثال زیر دقت کنید:

با اجرا کردن دستور بالا , تمام داده هایی که فیلد (ستون) مربوط به id انها بیشتر از ۲ هست به من نمایش داده میشه.

حالا اگه بخوام تمام داده هایی که id اونها بین ۲ و ۵۰ هست رو داشته باشم باید چیکار کنم ؟ به راحتی از دستور And استفاده میکنم مثل زیر :

دستورات SQL خیلی راحت و ساده هستند. تا اینجا شما با دستور Select و بخش where اشنا شدید. بخش where شامل دستورات پیشرفته تری برای جستوجو هست که در اموزش های بعدی به شما دوستان عزیز اموزش میدم. امیدوارم که با قوی تر یاد گرفتن SQL بتونید فشار حاصل از جستوجوها در پایگاه داده ی خودتون رو کاهش بدید! شاید در ابتدا به نظر مسخره و بدرد نخور بیاد ولی به مرور زمان که در برنامه نویسی حرفه ای تر بشید و تجربه ی بیشتری کسب کنید میبینید که خیلی مهمه و ارزش داره!

موفق و پیروز و سربلند باشید.

به اشتراک بگذارید:Email this to someoneShare on FacebookTweet about this on TwitterShare on Google+Digg thisShare on LinkedInPin on PinterestShare on StumbleUponFlattr the authorShare on RedditBuffer this pageShare on TumblrPrint this pageShare on YummlyShare on VK
  1. پیمان

    سلام
    در یه پروژه یه صفحه دارم که با استفاده از حلقه مطالب درج شده در بانک رو میخونه
    حالا من میخوام ۲۰۰ کاراکتر اول یک فیلد رو نمایش بدم باید چکار کنم؟؟؟
    ممنون میشم خیلی زود جواب بدید

    • شما دوتا راه خواهید داشت :
      استفاده از PHP برای گرفتن ۲۰۰ کاراکتر اول که با دستور substr این کار رو میتونید انجام بدید.
      مثلا substr(yourtext,0,200)
      استفاده از دستور SQL و گرفتن ۲۰۰ کاراکتر اول با دستور substr که برای مثال صورت زیر میتونید کوئری بنویسید:
      SELECT pub_name, SUBSTR(pub_name,4,5)
      FROM publisher
      WHERE country=’Iran’;

می‌خواهید دیدگاهتان را بیان کنید؟