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

 

توجه!!!

در این نوشته به مهم‌ترین کاربردهای SELECT شامل خواندن اطلاعات از یک جدول و همچنین انواع مختلف JOIN ها خواهیم پرداخت.

 

SELECT چیست ؟

دستور SELECT وسیله‌ای است که با کمک آن اطلاعات را از جدول‌های پایگاه داده بازخوانی می‌کنیم. اطلاعات برگشت داده شده توسط این دستور ممکن است از یک جدول، چند جدول، Viewها، Stored Procedure‌ها یا منابع دیگر اطلاعاتی که پایگاه داده به آن دسترسی دارد، خوانده شوند.

کوئری یا Query چیست ؟

دستوراتی که با زبان SQL نوشته می‌شوند تا تغییرات لازم را روی پایگاه داده انجام دهند، کوئری نامیده می‌شوند.

جدول‌های پایه برای خواندن اطلاعات

در این مقاله ما از دو جدول آزمایشی به نام‌های students و classes استفاده می‌کنیم. ساختار این دو جدول به شکل  زیر است:

در دو جدول بالا چهار دانش آموز و دو کلاس موجود است. هر دانش آموز با استفاده از کلید خارجی class_id در یک کلاس ثبت شده است.

خواندن اطلاعات از جدول‌ها به صورت تکی

دستور SELECT در ساده‌ترین شکل خود:

	
SELECT * FROM `نام جدول`

با دو دستور زیر اطلاعات جدول‌های فوق را می‌توانیم به صورت کامل و تک به تک بازخوانی کنیم:

-- 1
SELECT * FROM students;
 
-- 2
SELECT * FROM classes;

نکته:

در سیستم‌های پایگاه داده معمولا دو علامت خط تیره در ابتدای خط، آن خط را به حالت توضیحات تبدیل می‌کند.

اگر در Query ما چند دستور جداگانه وجود دارد، لازم است تا انتهای هر دستور را با نقطه‌ویرگول «;» علامت‌گذاری کنیم.

هنگامی که قصد داریم نام جدول‌ها و ستون‌های جدول‌ها را در Query بنویسیم، قراردادن علامت Back Quote یا «`» در ابتدا و انتهای نام اختیاری است. اگر نام جدول یا ستون از کلمات غیرمجاز در پایگاه داده باشد، استفاده از Back Quote الزامی خواهد بود

 

-- 1
SELECT * FROM `students`;
 
-- 2
SELECT * FROM `classes`;

خواندن برخی از ستون‌ها

به جای علامت * که معادل تمامی ستون‌های جدول است می‌توانیم نام برخی از ستون‌ها را مقابل SELECT بنویسیم:

JOIN خارجی چپ و راست

اتصال جدول‌ها به صورت خارجی ممکن است به شکل چپ LEFT JOIN یا راست RIGHT JOIN باشد.

  1. LEFT JOIN حالتی است که همیشه ردیف‌های جدول اول در خروجی موجود هستند. حتی اگر ردیف متناظری در جدول دوم موجود نباشد.

  2. RIGHT JOIN حالتی است که همیشه ردیف‌های جدول دوم در خروجی موجود هستند. حتی اگر ردیف متناظری در جدول اول موجود نباشد.

 

گروه‌بندی نتایج با GROUP BY

یکی از نیازهای متداول هنگام دریافت اطلاعات از پایگاه داده، گروه‌بندی آن‌ها است. برای مثال هنگامی که بخواهیم میانگین نمرات هر دانش‌آموز را در درس‌های مختلف به دست آوریم یا تعداد دانش‌آموزانی که در هر کلاس هستند را بشماریم.

در مثال‌های بالا، برای میانگین نمرات، لازم است تا نمرات هر دانش‌آموز با هم به یک گروه تبدیل شوند و میانگین هر گروه به صورت مجزا محاسبه شود.

برای روشن‌تر شدن موضوع، روی داده‌های مثال بالا، تعداد دانش‌آموزان هر کلاس را می‌شماریم:

SELECT `classes`.`name`, count( students.id ) FROM
 `classes` inner join `students` on students.class_id = classes.id
    group by `classes`.`id`

اجرای دستور فوق، نتیجه‌ی زیر را برمی‌گرداند:

همان‌طور که مشاهده می‌کنید، تعداد دانش‌آموزان هر کلاس با استفاده از دستور count محاسبه و نمایش داده شده است. تابع count یک تابع Aggregate است

 

راهنمای استفاده از دستور GROUP BY

برای استفاده از دستور GROUP BY همان طور که در مثال فوق قابل مشاهده است، یک فیلد منحصر به فرد که نتایج می‌بایست بر اساس آن گروه‌بندی شوند لازم است. این فیلد معمولا فیلد ID است که منحصر به فرد است. در نمونه بالا از ID کلاس برای گروه‌بندی استفاده کرده‌ایم. امکان استفاده از نام کلاس نیز وجود داشت ولی در صورتی که نام دو کلاس به اشتباه شبیه هم وارد شوند، نتایج قابل استفاده نخواهند بود.

 

توابع Aggregate

دستوراتی که روی گروهی از نتایج عمل می‌کنند، اصطلاحا دستورات Aggregate نامیده می‌شوند. فهرست توایع Aggregate در سیستم‌های مختلف پایگاه داده نیز متفاوت است. همچنین عملکرد این سیستم‌ها روی شکل برگشت دادن نتایج نیز تفاوت‌هایی با یکدیگر دارد که بسته به نوع سیستم، می‌بایست آشنایی کافی را با آن به دست آورید.

  1. فهرست توابع Aggregate در SQL Server
  2. فهرست توابع Aggregate در MySQL
  3. فهرست توابع Aggregate در Oracle
  4. فهرست توابع Aggregate در SQLite

توابعی که معمولا بیشتر مورد استفاده قرار می‌گیرند و در تمامی سیستم‌های پایگاه داده نیز موجود هستند عبارتند از:

  • COUNT
  • AVG
  • SUM
  • MIN
  • MAX

 

 

آموزش PHP MySQL


Warning: ltrim() expects parameter 1 to be string, object given in /home/victoryi/public_html/wp-includes/formatting.php on line 4477

sqlخواندن اطلاعاتدستور SELECT در SQLنرم‌افزارها و سایت‌های اینترنتی

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *