پرس‌وجوهای پایه SQL؛ SELECT، WHERE، ORDER BY و DISTINCT

پرس‌وجوهای پایه در SQL

توسط admin | گروه SQL Server | 1405/05/16

نظرات 0

پرس‌وجوهای پایه در SQL

نشان فصل ۲پرس‌وجوهای پایه۲

این فصل پنج موضوع را پوشش می‌دهد: انتخاب همهٔ ستون‌ها و ردیف‌ها، انتخاب ستون‌های مشخص، انتخاب ردیف‌های مشخص، مرتب‌سازی ردیف‌ها و حذف ردیف‌های تکراری.

انتخاب همهٔ ستون‌ها و ردیف‌ها

ساده‌ترین نوع پرس‌وجو همهٔ ستون‌ها و همهٔ ردیف‌های یک جدول را نمایش می‌دهد. در بند SELECT یک ستاره وارد می‌شود تا مشخص شود همهٔ ستون‌ها باید در خروجی باشند و نام جدول در بند FROM قرار می‌گیرد، مانند نمونه‌های زیر:

SQL
SELECT *
FROM JOBS
جریان از دستور SQL به نتیجهپیکان ارتباط دستور با نتیجهٔ آن
JOBTITLE
SScientist
EEntertainer
WWriter
IInstructor
SQL
SELECT *
FROM RELIGIONS
جریان از دستور SQL به نتیجهپیکان ارتباط دستور با نتیجهٔ آن
COUNTRYRELIGIONPERCENT
GermanyProtestant45
GermanyCatholic37
EnglandCatholic30
EnglandAnglican70
  • همهٔ پرس‌وجوها دارای بندهای SELECT و FROM هستند.
  • بند FROM بعد از بند SELECT می‌آید.
  • ستاره (*) به معنی «همهٔ ستون‌ها» است.
  • نام جدول در بند FROM مشخص می‌شود.
  • ستون‌ها و ردیف‌ها می‌توانند با ترتیب دلخواه ظاهر شوند.

نحو عمومی یک دستور SQL SELECT در جدول زیر آمده است. کلیدواژه‌ها و مثال‌ها با حروف بزرگ و پارامترها با حروف کوچک نمایش داده شده‌اند.

خلاصهٔ نحو
CLAUSEPARAMETERSEXAMPLE
SELECT**
FROMtableJOBS

تمرین‌ها

  1. از مدرس بخواهید یک آموزش کوتاه دربارهٔ استفاده از پایگاه دادهٔ کلاس ارائه دهد.
  2. همهٔ ستون‌ها و همهٔ ردیف‌های جدول PERSONS را انتخاب کنید.
  3. جدول COUNTRIES را با یک دستور SELECT بررسی کنید.
  4. نگاهی به جدول ERRORS بیندازید.
  5. جدول ARMIES را بررسی کنید.

امتیاز اضافه

  1. بیشتر پایگاه‌های دادهٔ جدی جدولی به نام SYSCOLUMNS دارند. نگاهی به آن بیندازید.
  2. هر جدول دیگری را از جدول SYSCOLUMNS انتخاب و نمایش دهید.

انتخاب ستون‌های مشخص

برای انتخاب ستون‌های مشخص، به‌جای ستاره فهرستی از ستون‌ها را در دستور SELECT وارد می‌کنیم. نام هر ستون با یک ویرگول و در صورت تمایل فاصله از بقیه جدا می‌شود. ستون‌ها به همان ترتیبی که فهرست شده‌اند نمایش داده می‌شوند.

SQL
SELECT TITLE
FROM JOBS
جریان از دستور SQL به نتیجهپیکان ارتباط دستور با نتیجهٔ آن
TITLE
Scientist
Entertainer
Writer
Instructor
SQL
SELECT TITLE, JOB
FROM JOBS
جریان از دستور SQL به نتیجهپیکان ارتباط دستور با نتیجهٔ آن
TITLEJOB
ScientistS
EntertainerE
WriterW
InstructorI
SQL
SELECT *, JOB
FROM JOBS
جریان از دستور SQL به نتیجهپیکان ارتباط دستور با نتیجهٔ آن
JOBTITLEJOB
SScientistS
EEntertainerE
WWriterW
IInstructorI
  • نام ستون‌ها در بند SELECT فهرست می‌شوند.
  • نام ستون‌ها با ویرگول از هم جدا می‌شوند.
  • ستون‌ها به ترتیب فهرست‌شده ظاهر می‌شوند.
  • ردیف‌ها با ترتیب دلخواه ظاهر می‌شوند.
خلاصهٔ نحو بازبینی‌شده
CLAUSEPARAMETERSEXAMPLE
SELECT**
SELECTcol listLANGUAGE, COUNTRY
FROMtableJOBS

تمرین‌ها

  1. فقط ستون JOB را از جدول JOBS انتخاب کنید.
  2. ستون‌های NAME و BDATE را از جدول PERSONS نمایش دهید.
  3. جدول RELIGIONS سه ستون COUNTRY، RELIGION و PERCENT دارد. همهٔ این ستون‌ها را با ترتیب معکوس نمایش دهید.

امتیاز اضافه

  1. همهٔ ستون‌های جدول COUNTRIES را نمایش دهید، اما ستون COUNTRY را در هر دو انتها قرار دهید تا بتوانیم آن‌ها را «مثل یک حاکم» ردیف کنیم. ابتدا با ستاره و سپس بدون ستاره امتحان کنید.

انتخاب ردیف‌های مشخص

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

خلاصهٔ انواع مقدار
CATEGORYDESCRIPTIONEXAMPLES
NUMERICpositive values3, +12
NUMERICnegative values-7, -1024000
NUMERICdecimal values3.141519, -.96
NON-NUMERICsingle words'Chamberlin', 'SELECT'
NON-NUMERICmultiple words'We love SQL', 'The LORD is good to me'
NON-NUMERICsingle quotes'10 O''Clock', 'I don''t know'
DATE'yyyy-mm-dd' format'1996-01-01', '1996-12-31'

مقادیر عددی به شکل معمول وارد می‌شوند

مقادیر عددی در پرس‌وجوها با یک یا چند نویسهٔ زیر مشخص می‌شوند: + - 0 1 2 3 4 5 6 7 8 9 . علامت اختیاری است ولی در صورت وجود باید نخست بیاید. فقط یک نقطهٔ اعشاری مجاز است. ویرگول، علامت دلار و علامت درصد در مقادیر عددی مجاز نیستند.

مقادیر غیرعددی داخل کوتیشن قرار می‌گیرند

مقادیر غیرعددی که رشته (String) نامیده می‌شوند داخل تک‌کوتیشن نوشته می‌شوند. برای نمایش یک تک‌کوتیشن واقعی داخل رشته، دو تک‌کوتیشن پیاپی بنویسید.

مقادیر تاریخ با قالب 'yyyy-mm-dd' وارد می‌شوند

با اینکه استاندارد SQL نمایش یکنواختی برای تاریخ ندارد، قالب نشان‌داده‌شده در بیشتر گویش‌های SQL پشتیبانی می‌شود. تاریخ‌ها باید داخل تک‌کوتیشن قرار گیرند.

مقایسه (Comparison) عبارتی است که از نام ستون، عملگر مقایسه و یک مقدار تشکیل می‌شود. نتیجهٔ همهٔ مقایسه‌ها یا True است یا False. از مقایسه‌ها برای تعیین ردیف‌هایی استفاده می‌شود که باید در نتیجهٔ یک پرس‌وجو گنجانده شوند.

عملگرهای مقایسه
OPERATORMEANINGEXAMPLE
=Equal toNAME = 'EINSTEIN'
<>Not equal toBDATE <> '1944-05-02'
<Less thanPOP < 100000
<=Less than or equal toNAME <= 'O''Grady'
>Greater thanAREA > 999
>=Greater than or equal toBDATE >= '1962-06-19'

نام ستون در سمت چپ مشخص می‌شود

نام ستون را می‌توان با حروف بزرگ، کوچک یا ترکیبی وارد کرد. در این کتاب نام ستون‌ها با حروف بزرگ نمایش داده می‌شوند. توجه کنید حتی اگر نام ستون غیرعددی باشد، داخل کوتیشن قرار نمی‌گیرد.

مقدار در سمت راست مشخص می‌شود

مقادیر باید متناسب با نوع دادهٔ خود وارد شوند؛ اعداد به شکل معمول، رشته‌ها داخل تک‌کوتیشن و تاریخ‌ها با قالب yyyy-mm-dd. مقدار باید از همان نوع ستونی باشد که با آن مقایسه می‌شود.

عملگر در میانه مشخص می‌شود

عملگرهای مقایسه بین نام ستون و مقدار قرار می‌گیرند. وجود فاصله در دو طرف عملگر مجاز ولی اجباری نیست. با این حال داخل نمادهای عملگر چندنویسه‌ای نباید فاصله قرار گیرد؛ مانند <>, <=, >=.

مقایسه‌ها در بند WHERE از دستور SELECT نوشته می‌شوند. بند WHERE باید بلافاصله پس از بند FROM بیاید. جدول نتیجه همهٔ ردیف‌های جدول منبع را که مقایسه برای آن‌ها درست است شامل می‌شود.

SQL
SELECT COUNTRY, AREA
FROM COUNTRIES
WHERE AREA > 3000000
جریان از دستور SQL به نتیجهپیکان ارتباط دستور با نتیجهٔ آن
COUNTRYAREA
USA3679192
Canada3849674
China3696100
Brazil3286500
Russia6592800
SQL
SELECT NAME, COUNTRY
FROM PERSONS
WHERE COUNTRY = 'RUSSIA'
جریان از دستور SQL به نتیجهپیکان ارتباط دستور با نتیجهٔ آن
NAMECOUNTRY
RandRussia
TolstoyRussia
ChekhovRussia
BabelRussia
SQL
SELECT NAME, BDATE
FROM PERSONS
WHERE BDATE < '1300-01-01'
جریان از دستور SQL به نتیجهپیکان ارتباط دستور با نتیجهٔ آن
NAMEBDATE
Dante1265-03-31
Shikabu1000-09-03
Augustino0354-04-30
Magnus1193-12-05
Paul0013-06-01
  • بند WHERE پس از بند FROM می‌آید.
  • مقایسه‌ها در بند WHERE وارد می‌شوند.
  • ردیف‌هایی که مقایسه برای آن‌ها True است نمایش داده می‌شوند.
خلاصهٔ نحو SELECT با WHERE
CLAUSEPARAMETERSEXAMPLE
SELECT**
SELECTcol listLANGUAGE, COUNTRY
FROMtableJOBS
WHEREcol oper valueAREA > 3000000
خلاصهٔ عملگرهای مقایسه
OPERATORMEANINGEXAMPLE
=Equal toNAME = 'EINSTEIN'
<>Not equal toBDATE <> '1944-05-02'
<Less thanPOP < 100000
<=Less than or equal toNAME <= 'O''Grady'
>Greater thanAREA > 999
>=Greater than or equal toBDATE >= '1962-06-19'

تمرین‌ها

  1. همهٔ ستون‌ها و ردیف‌های جدول COUNTRIES را نمایش دهید. سپس فقط کشورهایی را نمایش دهید که مساحتشان کمتر از ۳۰ مایل مربع است. نتیجه باید ۵ ردیف داشته باشد.
  2. نام و کشور همهٔ افراد جدول PERSONS را نمایش دهید، سپس نتیجه را به افراد متولد کانادا محدود کنید. نتیجهٔ نهایی ۶ ردیف دارد.
  3. نام و تاریخ تولد افرادی را که پس از 1964-01-01 متولد شده‌اند نمایش دهید. نتیجه ۹ ردیف است.

امتیاز اضافه

  1. تاریخ تولد فردی با نام O'Toole چیست؟

مرتب‌سازی ردیف‌ها

برای مرتب‌سازی ردیف‌های جدول نتیجه از بند ORDER BY استفاده کنید. این بند اختیاری باید آخرین بند پرس‌وجو باشد. به‌عنوان پارامتر می‌توان نام ستون، موقعیت ستون در بند SELECT و کلیدواژهٔ DESC برای مرتب‌سازی نزولی را وارد کرد.

SQL
SELECT COUNTRY, AREA
FROM COUNTRIES
ORDER BY AREA
جریان از دستور SQL به نتیجهپیکان ارتباط دستور با نتیجهٔ آن
COUNTRYAREA
Monaco1
Vatican City1
Nauru8
Tuvalu9
San Marino24
SQL
SELECT COUNTRY, AREA
FROM COUNTRIES
ORDER BY 2
جریان از دستور SQL به نتیجهپیکان ارتباط دستور با نتیجهٔ آن
COUNTRYAREA
Monaco1
Vatican City1
Nauru8
Tuvalu9
San Marino24
SQL
SELECT COUNTRY, AREA
FROM COUNTRIES
ORDER BY AREA DESC
جریان از دستور SQL به نتیجهپیکان ارتباط دستور با نتیجهٔ آن
COUNTRYAREA
Russia6592800
Canada3849674
China3696100
USA3679192
Brazil3286500
  • بند ORDER BY باید آخر باشد.
  • می‌توان نام ستون یا موقعیت آن را مشخص کرد.
  • DESC مرتب‌سازی نزولی را مشخص می‌کند.

ردیف‌های جدول نتیجه را می‌توان بر اساس مقادیر بیش از یک ستون مرتب کرد؛ کافی است فهرست ستون‌ها را در بند ORDER BY وارد کنید. ترتیب ستون‌ها از چپ به راست، توالی اولویت از اصلی به فرعی را تعیین می‌کند.

SQL
SELECT LANGUAGE, POP
FROM COUNTRIES
ORDER BY LANGUAGE
جریان از دستور SQL به نتیجهپیکان ارتباط دستور با نتیجهٔ آن
LANGUAGEPOP
Afrikaans1651545
Albanian3413904
Amharic55979018
Arabic549338
Arabic65359623
Arabic533916
Arabic20643769
SQL
SELECT LANGUAGE, POP
FROM COUNTRIES
ORDER BY LANGUAGE, POP DESC
جریان از دستور SQL به نتیجهپیکان ارتباط دستور با نتیجهٔ آن
LANGUAGEPOP
Afrikaans1651545
Albanian3413904
Amharic55979018
Arabic65359623
Arabic30120420
Arabic29168848
Arabic28539321
  • فهرست ستون‌ها در بند ORDER BY مجاز است.
  • نام ستون‌ها با ویرگول جدا می‌شوند.
  • ستون‌ها به ترتیب اولویت اصلی تا فرعی فهرست می‌شوند.
خلاصهٔ نحو SELECT با ORDER BY
CLAUSEPARAMETERSEXAMPLE
SELECT**
SELECTcol listLANGUAGE, COUNTRY
FROMtableJOBS
WHEREcol oper valueAREA > 3000000
ORDER BYcol [ DESC ] listLANGUAGE DESC, COUNTRY
ORDER BYpos [ DESC ] list1 DESC, 3

تمرین‌ها

  1. همهٔ ستون‌های جدول PERSONS را برای افراد ایرلندی نمایش دهید. ۶ نفر هستند. آن‌ها را به ترتیب الفبایی نمایش دهید.
  2. همهٔ ستون‌های جدول COUNTRIES را برای کشورهای آلمانی‌زبان نمایش دهید. نتیجه ۴ ردیف دارد. سپس بر اساس GNP از بزرگ‌ترین به کوچک‌ترین مرتب کنید.
  3. کشور، شغل و نام همهٔ ایتالیایی‌های پایگاه داده را بر اساس نام مرتب کنید. نتیجه ۱۰ ردیف دارد.

امتیاز اضافه

  1. کدام کشور بیشترین بودجهٔ نظامی را دارد؟ کمترین را چطور؟ کدام بیشترین نیرو، بیشترین تانک، کشتی و هواپیما را دارد؟

حذف ردیف‌های تکراری

معمولاً جدول‌ها ردیف تکراری ندارند؛ اما اگر تنها زیرمجموعه‌ای از ستون‌ها انتخاب شود، نتیجهٔ پرس‌وجو ممکن است ردیف‌های تکراری داشته باشد. کلیدواژهٔ DISTINCT در بند SELECT استفاده می‌شود تا ردیف‌های تکراری در جدول نتیجه نمایش داده نشوند.

SQL
SELECT RELIGION
FROM RELIGIONS
WHERE PERCENT = 100
ORDER BY RELIGION
جریان از دستور SQL به نتیجهپیکان ارتباط دستور با نتیجهٔ آن
RELIGION
Catholic
Catholic
Catholic
Eastern Or...
Lutheran
Muslim
Muslim
Muslim
Sunni Mus...
SQL
SELECT DISTINCT RELIGION
FROM RELIGIONS
WHERE PERCENT = 100
ORDER BY RELIGION
جریان از دستور SQL به نتیجهپیکان ارتباط دستور با نتیجهٔ آن
RELIGION
Catholic
Eastern Or...
Lutheran
Muslim
Sunni Mus...
  • DISTINCT بعد از کلیدواژهٔ SELECT وارد می‌شود.
  • DISTINCT ردیف‌های تکراری را حذف می‌کند.
  • DISTINCT فقط یک‌بار در یک پرس‌وجو قابل ورود است.
خلاصهٔ نحو SELECT با DISTINCT
CLAUSEPARAMETERSEXAMPLE
SELECT**
SELECT[ DISTINCT ] col listLANGUAGE, COUNTRY
FROMtableJOBS
WHEREcol oper valueAREA > 3000000
ORDER BYcol [ DESC ] listLANGUAGE DESC, COUNTRY
ORDER BYpos [ DESC ] list1 DESC, 3

تمرین‌ها

  1. فقط ستون JOB را از جدول PERSONS نمایش دهید. ۴۰۲ ردیف وجود دارد ــ فعلاً شمارش نکنید. سپس ردیف‌های تکراری را حذف کنید؛ فقط ۷ ردیف باید باقی بماند.
  2. فهرستی الفبایی از زبان‌هایی نمایش دهید که نرخ باسوادی آن‌ها کمتر از ۳۰ درصد است. ردیف‌های تکراری را حذف کنید. نتیجهٔ نهایی ۹ ردیف است.
  3. کشورهایی را که دست‌کم یک دانشمند تولید کرده‌اند بر اساس کشور مرتب کنید. ردیف‌های تکراری را حذف کنید. تنها ۱۰ ردیف باید باقی بماند.

امتیاز اضافه

  1. فهرستی الفبایی از ادیانی بسازید که کمتر از پنج درصد جمعیت کشور آن‌ها را پیروی می‌کنند. ردیف‌های تکراری را حذف کنید. ۷ ردیف باید باقی بماند.

امتیاز کاربران به این مقاله

☆☆☆☆☆

0 نفر امتیاز داده اند. میانگین: 0.0 از 5

 

0 نظر

نظر محترم شما در مورد مقاله های وب سایت برنامه نویسی و پایگاه داده

نظرات محترم شما در خدمات رسانی بهتر ما را یاری می نمایند. لطفا اگر مایل بودید یک نظر ما را مهمان فرمائید. آدرس ایمیل و وب سایت شما نمایش داده نخواهد شد.

0 / 500