آشنایی با SQL - بخش هشتم - آشنایی با دستور SELECT

انتخاب، گزارش گیری، جستجو، بازیابی، استخراج داده ها، لیست کردن و … همگی در واقع توسط دستور select قابل انجام است. این دستور تغییری روی داده های ذخیره شده ایجاد نمی کند.
مثال: نام و نام خانوادگی همه کارمندان را لیست کنید:
SELECT Name, Family
;FROM Personnel
دستور بالا با دستور زیر چه تفاوتی دارد؟
SELECT Family, Name
;FROM Personnel
از شرط در SELECT هم می توان استفاده کرد و نتایج جستجو را محدود کرد . مثال : نام و نام خانوادگی کارکنان متولد ۱۳۶۰ را لیست کنید
SELECT Family, Name
FROM Personnel
;WHERE BirthYear = 1360
در تهیه گزارش، چنانچه به جای نوشتن نام فیلدها از * استفاده کنید همه فیلدهای جدول به همان ترتیبی که در طراحی ساختار جدول آمده است، ظاهر می شوند.
SELECT *
;FROM Personnel
با استفاده از کلمه کلیدی 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
;ORDERED BY Salary
به دلیل نوشتن عبارت ORDER BY Salary گزراش بر اساس فیلد Salary به صورت صعودی مرتب می شود یعنی فرد با حقوق کمتر در بالای لیست قرار می گیرد و آخرین نفر لیست کارمندی است که بیشترین حقوق را می گیرد.
برای مرتب سازی نزولی کافیست دستور بالا به شکل زیر اصلاح گردد:
SELECT Name,Family,Salary
FROM Personnel
;ORDERED BY Salary DESC
آیا لازم است فیلدی که مرتب سازی بر اساس آن صورت می گیرد به عنوان ستونی در خروجی گزارش هم آورده شود؟ (بحث کنید)
مرتب سازی بر اساس چند فیلد:
لیستی از کارمندان به ترتیب سن تهیه کنید(فرد مسن تر در بالای لیست باشد) افراد همسن به ترتیب حقوق مرتب شوند.(فرد با حقوق بیشتر بالاتر قرار گیرد)
SELECT Name, Family, BithYear, Salary
FROM Personnel
;ORDERED BY BithYear ASC, Salary DESC
چنانچه دستور بالا را به شکل پائین بنویسیم. آیا نتیجه همان است؟ چرا؟
SELECT Name, Family, BithYear, Salary
FROM Personnel
;ORDERED BY Salary DESC, BithYear ASC
با استفاده از کلمه کلیدی LIKE در شرط WHERE می توان الگوی خاصی را جستجو کرد. لیست کارمندانی را تهیه کنید که فامیل آنها با ‘Shakiba’ آغاز می شود. مثلا Shakibayi , ShakibaFar , ShakibaPoor و … و همچنین خود Shakiba
SELECT *
FROM Personnel
;WHERE Family LIKE ‘Shakiba%’
در واقع % نماینده هرتعداد کاراکتر دلخواه است.
سئوال ۱ : آیا % را می توان در ابتدا یا وسط عبارت به کار برد؟
سئوال ۲ : به % اصطلاحا کاراکتر عمومی (Wildcard) می گویند. آیا کاراکتر عمومی دیگری نیز در SQL وجود دارد؟
کاربرد عبارت DISTINCT در دستور SELECT
با نوشتن این عبارت در جلوی SELECT می توان ردیف های تکراری را از نتایج جستجو حذف کرد.
دستور زیر لیستی غیر تکراری از همه نام هایی که کارمندان دارند را تولید می کند.
SELECT DISTINCT Name
;FROM Personnel
مقالات مرتبط
- آشنایی با SQL – بخش یازدهم – آشنایی با پیوند جدول ها
- آشنایی با SQL – بخش دهم – آشنایی با Group By
- آشنایی با SQL – بخش نهم – آشنایی با Aggregate Functions
- آشنایی با SQL – بخش هفتم – آشنایی با AND, OR و NOT
- آشنایی با SQL – بخش ششم – آشنایی با دستور DELETE
- آشنایی با SQL – بخش پنجم – آشنایی با دستور UPDATE
- آشنایی با SQL – بخش چهارم – آشنایی با دستور INSERT
- آشنایی با SQL – بخش سوم – آشنایی با دستور CREATE
- آشنایی با SQL – بخش اول – SQL چیست؟
- آشنایی با SQL – بخش دوم – انواع داده