دستور SELECT در SQL برای بازیابی (خواندن) دادههای خاص از یک یا چند جدول استفاده میشود. این یکی از اصلیترین دستورات در SQL است که برای استخراج اطلاعات مورد نیاز از پایگاه داده به کار میرود.
اجزای دستور SELECT:
- SELECT: کلمه کلیدی که نشان میدهد میخواهید دادهها را بازیابی کنید.
- column_name1, column_name2, …: (اختیاری) لیستی از ستونهایی که میخواهید بازیابی شوند. علامت * به معنای بازیابی تمام ستونها است.
- FROM table_name: نام جدولی که میخواهید دادهها را از آن بازیابی کنید.
- WHERE (condition): (اختیاری) شرطی را تعیین میکند که مشخص میکند کدام رکوردها باید بازیابی شوند.
- ORDER BY column_name ASC/DESC: (اختیاری) ترتیب خروجی را بر اساس یک یا چند ستون مرتب میکند. ASC برای مرتبسازی صعودی و DESC برای نزولی استفاده میشود.
- GROUP BY column_name: (اختیاری) رکوردها را بر اساس یک یا چند ستون گروه بندی میکند.
- HAVING (condition): (اختیاری) شرطی را برای گروههای ایجاد شده با GROUP BY اعمال میکند.
مثال:
فرض کنید جدول زیر را برای ذخیره اطلاعات دانشجویان داریم:
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(۲۵۵) NOT NULL,
email VARCHAR(۲۵۵) NOT NULL,
gpa DECIMAL(۳,۲)
);
برای بازیابی نام و ایمیل تمام دانشجویان دستور زیر را اجرا میکنیم:
SELECT name, email
FROM students;
نکات:
- میتوانید از
*
برای بازیابی تمام ستونهای جدول استفاده کنید. - میتوانید از شرط
WHERE
برای بازیابی رکوردهای خاص بر اساس معیارهای مشخص استفاده کنید. - میتوانید از دستور
ORDER BY
برای مرتبسازی خروجی بر اساس یک یا چند ستون استفاده کنید. - میتوانید از دستور
GROUP BY
برای گروه بندی رکوردها بر اساس یک یا چند ستون و سپس اعمال شرط بر روی گروهها باHAVING
استفاده کنید.
مثال ۲:
- بازیابی اطلاعات دانشجویانی که gpa آنها بالاتر از ۳.۵ است:
SELECT *
FROM students
WHERE gpa > ۳.۵;
- بازیابی نام و ایمیل دانشجویان به ترتیب حروف الفبا:
SELECT name, email
FROM students
ORDER BY name ASC;
- محاسبه میانگین gpa دانشجویان بر اساس رشته تحصیلی:
SELECT department, AVG(gpa) AS average_gpa
FROM students
GROUP BY department;
مثال ۳
فرض کنید جدول زیر را برای ذخیره اطلاعات کارمندان داریم:
CREATE TABLE employees (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(۲۵۵) NOT NULL,
email VARCHAR(۲۵۵) NOT NULL,
department VARCHAR(۵۰) NOT NULL,
salary DECIMAL(۱۰,۲) NOT NULL,
hire_date DATE NOT NULL
);
مثال ۱: بازیابی نام و ایمیل تمام کارمندان
SELECT name, email
FROM employees;
مثال ۲: بازیابی اطلاعات کارمندان با حقوق بیشتر از ۱۰ میلیون تومان
SELECT *
FROM employees
WHERE salary > ۱۰۰۰۰۰۰۰;
مثال ۳: بازیابی نام و حقوق کارمندان به ترتیب حقوق
SELECT name, salary
FROM employees
ORDER BY salary DESC;
مثال ۴: محاسبه میانگین حقوق کارمندان در هر بخش
SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department;
مثال ۵: بازیابی اطلاعات کارمندانی که در سال ۱۴۰۲ استخدام شدهاند
SELECT *
FROM employees
WHERE hire_date BETWEEN '۲۰۲۳-۰۳-۲۱' AND '۲۰۲۴-۰۳-۲۰';
مثال ۶: بازیابی اطلاعات ۵ کارمند با حقوق بالا
SELECT *
FROM employees
ORDER BY salary DESC
LIMIT ۵;
مثال ۷: استفاده از توابع در SELECT
SELECT name, CONCAT(name, "@example.com") AS email
FROM employees;
مثال ۸: استفاده از subquery در SELECT
SELECT name, department
FROM employees
WHERE department IN (
SELECT department
FROM departments
WHERE location = "تهران"
);
نکات:
- در مثالهای بالا، فقط تعدادی از کاربردهای مختلف دستور SELECT نشان داده شده است.
- میتوانید از ترکیب دستورات مختلف SQL برای بازیابی اطلاعات پیچیدهتر از پایگاه داده استفاده کنید.