مقداد شکیبا

  • ۱
  • ۰

دستور Select

انتخاب، گزارش گیری، جستجو، بازیابی، استخراج داده ها، لیست کردن و ... همگی در واقع توسط  دستور select قابل انجام است. این دستور تغییری روی داده های ذخیره شده ایجاد نمی کند.

مثال: نام و نام خانوادگی همه کارمندان را لیست کنید:

SELECT                  Name , Family                   FROM          Personnel

دستور بالا با دستور زیر چه تفاوتی دارد؟

SELECT                  Family , Name                   FROM          Personnel

از شرط در SELECT هم می توان استفاده کرد و نتایج جستجو را محدود کرد . مثال : نام و نام خانوادگی کارکنان متولد 1360 را لیست کنید

SELECT    Name , Family    FROM Personnel      WHERE        BirthYear = 1360

 

در تهیه گزارش، چنانچه به جای نوشتن نام فیلدها از * استفاده کنید همه فیلدهای جدول به همان ترتیبی که در طراحی ساختار جدول آمده است، ظاهر می شوند.

SELECT            *    FROM    Personel

با استفاده از کلمه کلیدی AS می توان نام فیلدها را هنگام نمایش گزارش تغییر داد. یکی از کاربردهای آن فارسی سازی عنوان گزارش است. مثال:

SELECT    Name  AS   'نام'  ,  Family   AS  'فامیل'   FROM   Personnel

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

SELECT    Name + Family   AS   'نام کارمند'    FROM   Personnel

برای آن که محتوای (خروجی) گزارش بالا خواناتر باشد بهتر است این کد را به شیوه زیر اصلاح کنیم. (چرا؟)

SELECT    Name + '  ' + Family   AS   'نام کارمند'    FROM   Personnel

مرتب سازی نتیجه (خروجی) گزارش: لیست کارمندان را که بر اساس حقوق مرتب شده است تهیه کنید.

SELECT   Name , Family , Salary  FROM   Personnel   ORDER BY  Salary

به دلیل نوشتن عبارت ORDER BY  Salary گزراش بر اساس فیلد Salary  به صورت صعودی مرتب می شود یعنی فرد با حقوق کمتر در بالای لیست قرار می گیرد و آخرین نفر لیست کارمندی است که بیشترین حقوق را می گیرد.

برای مرتب سازی نزولی کافیست دستور بالا به شکل زیر اصلاح گردد

SELECT   Name , Family , Salary  FROM   Personnel   ORDER BY  Salary   DESC

آیا لازم است فیلدی که مرتب سازی بر اساس آن صورت می گیرد به عنوان ستونی در خروجی گزارش هم آورده شود؟ (بحث کنید)

مرتب سازی بر اساس چند فیلد:

لیستی از کارمندان به ترتیب سن تهیه کنید(فرد مسن تر در بالای لیست باشد) افراد همسن به ترتیب حقوق مرتب شوند.(فرد با حقوق بیشتر بالاتر قرار گیرد)

SELECT   Name , Family , BirthYear ,  Salary     FROM   Personnel  

ORDER BY  BirthYear  ASC  ,  Salary   DESC

چنانچه دستور بالا را به شکل پائین بنویسیم. آیا نتیجه  همان است؟ چرا؟

SELECT   Name , Family , BirthYear ,  Salary     FROM   Personnel  

ORDER BY  Salary   DESC ,  BirthYear  ASC 

با استفاده از کلمه کلیدی LIKE در شرط WHERE می توان الگوی خاصی را جستجو کرد. لیست کارمندانی را تهیه کنید که فامیل آنها با 'Shakiba' آغاز می شود. مثلا Shakibayi , ShakibaFar , ShakibaPoor و ... و همچنین خود Shakiba

SELECT   *   FROM    Personnel     WHERE      Family   LIKE    'Shakiba%'

در واقع % نماینده هرتعداد کاراکتر دلخواه است.

سئوال 1 : آیا % را می توان در ابتدا یا وسط عبارت به کار برد؟

سئوال 2 : به % اصطلاحا کاراکتر عمومی (Wildcard) می گویند. آیا کاراکتر عمومی دیگری نیز در SQL وجود دارد؟

 

کاربرد عبارت DISTINCT در  دستور SELECT

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

دستور زیر لیستی غیر تکراری از همه نام هایی که کارمندان دارند را تولید می کند.

SELECT  DISTINCT  NAME  FROM  Personel


  • ۹۰/۰۵/۰۵
  • مقداد شکیبا

AS

ASC

DESC

FROM

LIKE

ORDER BY

SELECT

SQL

WHERE

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی