دستور SELECT
در MySQL یکی از مهمترین دستورات برای استخراج و نمایش دادهها از پایگاه داده است.
با استفاده از این دستور، میتوان گزارشهای متنوعی تهیه کرد که شامل فیلتر کردن، مرتبسازی، گروهبندی، انجام محاسبات، و ترکیب دادهها از چندین جدول میشود.
۱. ساختار کلی دستور SELECT
دستور SELECT
برای دریافت اطلاعات از یک یا چند جدول به کار میرود:
SELECT column1, column2, ... FROM table_name;
🔹 column1, column2, … → نام ستونهایی که میخواهید نمایش داده شوند.
🔹 table_name → نام جدولی که دادهها از آن استخراج میشوند.
مثال: نمایش تمام دادههای یک جدول
SELECT * FROM users;
🔹 این دستور تمامی ستونها و رکوردها از جدول users
را نمایش میدهد.
۲. فیلتر کردن دادهها با WHERE
برای استخراج اطلاعات خاص، میتوان از WHERE
برای فیلتر کردن دادهها استفاده کرد.
مثال: دریافت کاربران با نام “علیرضا”
SELECT * FROM users WHERE name = 'علیرضا';
🔹 فقط کاربرانی نمایش داده میشوند که نام آنها “علیرضا” باشد.
مثال: دریافت کاربران بالای ۱۸ سال
SELECT * FROM users WHERE age > 18;
🔹 فقط کاربرانی نمایش داده میشوند که مقدار age
بیشتر از ۱۸ باشد.
عملگرهای پرکاربرد در WHERE
عملگر | توضیح |
---|---|
= | برابر بودن |
!= یا <> | نابرابر بودن |
> | بزرگتر از |
< | کوچکتر از |
>= | بزرگتر یا مساوی |
<= | کوچکتر یا مساوی |
BETWEEN | بین دو مقدار |
IN | مقدار مشخصی از بین یک لیست |
LIKE | جستجو در متن (الگو) |
IS NULL | بررسی مقدار خالی |
مثال: کاربران بین ۲۰ تا ۳۰ سال
SELECT * FROM users WHERE age BETWEEN 20 AND 30;
مثال: کاربران با نامهای “علی” یا “محمد”
SELECT * FROM users WHERE name IN ('علی', 'محمد');
مثال: کاربران با ایمیلهایی که با “gmail.com” تمام میشوند
SELECT * FROM users WHERE email LIKE '%gmail.com';
🔹 علامت %
نشان میدهد که هر مقداری قبل از "gmail.com"
مجاز است.
۳. مرتبسازی دادهها با ORDER BY
برای مرتب کردن دادههای گزارش، از ORDER BY
استفاده میشود.
مثال: مرتبسازی کاربران بر اساس سن (صعودی)
SELECT * FROM users ORDER BY age ASC;
مثال: مرتبسازی کاربران بر اساس نام خانوادگی (نزولی)
SELECT * FROM users ORDER BY last_name DESC;
🔹 ASC
→ مرتبسازی صعودی (کوچک به بزرگ)
🔹 DESC
→ مرتبسازی نزولی (بزرگ به کوچک)
۴. محدود کردن تعداد نتایج با LIMIT
اگر بخواهید تعداد مشخصی از رکوردها را در گزارش نمایش دهید، از LIMIT
استفاده کنید.
مثال: دریافت ۵ کاربر اول
SELECT * FROM users LIMIT 5;
مثال: دریافت ۵ کاربر بعد از رد کردن ۱۰ کاربر اول
SELECT * FROM users LIMIT 5 OFFSET 10;
🔹 OFFSET 10
→ از رکورد یازدهم شروع شود.
🔹 LIMIT 5
→ فقط ۵ رکورد نمایش داده شود.
۵. گروهبندی دادهها با GROUP BY
GROUP BY
برای دستهبندی دادهها و انجام محاسبات آماری روی هر گروه استفاده میشود.
مثال: شمارش تعداد کاربران بر اساس سن
SELECT age, COUNT(*) AS total_users FROM users GROUP BY age;
🔹 این دستور تعداد کاربرانی را که سن یکسان دارند نمایش میدهد.
مثال: محاسبه میانگین سن کاربران در هر شهر
SELECT city, AVG(age) AS avg_age FROM users GROUP BY city;
عملکردهای تجمعی (Aggregate Functions) در MySQL
تابع | توضیح |
---|---|
COUNT(*) | شمارش تعداد رکوردها |
SUM(column) | مجموع مقادیر یک ستون |
AVG(column) | میانگین مقادیر یک ستون |
MAX(column) | بیشترین مقدار |
MIN(column) | کمترین مقدار |
۶. استفاده از JOIN برای ترکیب دادهها
برای تهیه گزارشهایی که شامل اطلاعات از چندین جدول هستند، از JOIN
استفاده میشود.
مثال: دریافت اطلاعات سفارشهای کاربران
SELECT users.name, orders.order_date, orders.amount
FROM users
JOIN orders ON users.id = orders.user_id;
🔹 این گزارش نام کاربر، تاریخ سفارش، و مبلغ سفارش را از دو جدول users
و orders
استخراج میکند.
۷. استفاده از UNION برای ترکیب چند SELECT
UNION
برای ترکیب نتایج چندین SELECT
استفاده میشود.
مثال: ترکیب کاربران تهران و مشهد در یک گزارش
SELECT name, city FROM users WHERE city = 'تهران'
UNION
SELECT name, city FROM users WHERE city = 'مشهد';
🔹 این دستور کاربران تهران و مشهد را در یک گزارش نمایش میدهد.
۸. استفاده از SUBQUERY برای گزارشهای پیشرفته
یک زیرپرسوجو (Subquery) یک SELECT داخل یک SELECT دیگر است.
مثال: نمایش کاربران با بیشترین مبلغ سفارش
SELECT * FROM users WHERE id IN (
SELECT user_id FROM orders WHERE amount = (SELECT MAX(amount) FROM orders)
);
🔹 این دستور اطلاعات کاربری را نمایش میدهد که بیشترین مبلغ سفارش را داشته است.
نتیجهگیری
- دستور
SELECT
ابزار اصلی برای استخراج دادهها از پایگاه داده است. - با استفاده از
WHERE
میتوان دادهها را فیلتر کرد. - با
ORDER BY
میتوان دادهها را مرتبسازی کرد. LIMIT
تعداد نتایج را محدود میکند.GROUP BY
برای دستهبندی دادهها و انجام محاسبات استفاده میشود.JOIN
امکان ترکیب دادهها از چندین جدول را فراهم میکند.UNION
نتایج چندین SELECT را ترکیب میکند.- SUBQUERY برای پرسوجوهای پیچیدهتر استفاده میشود.
✅ با ترکیب این قابلیتها، میتوان گزارشهای حرفهای و تحلیلی از دادههای MySQL تهیه کرد.