📌 آموزش پایگاه داده MySQL
🎯 اهداف یادگیری
- شناخت مفاهیم پایه پایگاه داده
- یادگیری نصب و راهاندازی MySQL
- آشنایی با دستورات اصلی SQL
- یادگیری ایجاد، مدیریت و پرسوجو از دیتابیس
📌 پایگاه داده چیست؟
پایگاه داده مجموعهای سازمانیافته از اطلاعات است که به صورت الکترونیکی ذخیره و مدیریت میشود:
CREATE DATABASE my_database;
💡 برای مبتدیان: پایگاه داده یعنی چه؟
🏢 تشبیه شرکت:
یک پایگاه داده را مانند یک شرکت در نظر بگیرید:
- دیتابیس = ساختمان شرکت (مکان ذخیره اطلاعات)
- جداول = دپارتمانهای مختلف (مالی، منابع انسانی، فروش)
- رکوردها = پروندههای کارمندان (اطلاعات فردی)
- فیلدها = جزئیات هر پرونده (نام، سن، حقوق)
🎯 نکات کلیدی درباره MySQL:
- MySQL یک سیستم مدیریت پایگاه داده رابطهای (RDBMS) است
- منبع باز (Open Source) و رایگان میباشد
- از زبان SQL برای مدیریت دادهها استفاده میکند
- محبوبترین دیتابیس برای برنامههای وب است
📌 نصب و راهاندازی MySQL
برای شروع کار با MySQL، ابتدا باید آن را نصب کنید:
# نصب MySQL در اوبونتوsudo apt-get updatesudo apt-get install mysql-server# راهاندازی سرویسsudo systemctl start mysqlsudo systemctl enable mysql
🔧 روشهای نصب MySQL
۱. نصب روی ویندوز
از MySQL Installer استفاده کنید که شامل تمام ابزارهای لازم است:
- دانلود MySQL Installer از سایت رسمی
- اجرای فایل نصبی و انتخاب محصولات
- پیکربندی تنظیمات اولیه
- تست اتصال به سرور
۲. نصب روی لینوکس (Ubuntu/Debian)
استفاده از package manager:
sudo apt update
sudo apt install mysql-server
sudo mysql_secure_installation
۳. نصب روی macOS
استفاده از Homebrew یا دانلود مستقیم:
brew install mysql
brew services start mysql
💡 نکته امنیتی:
بعد از نصب حتماً دستور mysql_secure_installation
را اجرا کنید تا تنظیمات امنیتی اولیه اعمال شوند.
📌 اتصال به MySQL
پس از نصب، میتوانید از طریق خط فرمان به MySQL متصل شوید:
# اتصال به سرور MySQLmysql -u root -p# پس از اجرای دستور بالا، پسورد خواسته میشودEnter password: your_password
🔌 روشهای مختلف اتصال به MySQL
۱. خط فرمان (Command Line)
سادهترین روش برای مدیریت دیتابیس:
mysql -h hostname -u username -p
پارامترها:
-h
: نام هاست یا آدرس سرور-u
: نام کاربری-p
: درخواست پسورد (اختیاری اما توصیه میشود)
۲. ابزارهای گرافیکی (GUI)
برای مدیریت راحتتر با رابط کاربری:
- MySQL Workbench (رسمی)
- phpMyAdmin (وببیس)
- HeidiSQL (ویندوز)
- DBeaver (چندپلتفرمی)
۳. اتصال برنامهنویسی
اتصال از طریق زبانهای برنامهنویسی:
- PHP: mysqli یا PDO
- Python: mysql-connector-python
- Java: JDBC Driver
- Node.js: mysql2 package
📌 ایجاد اولین دیتابیس
پس از اتصال، میتوانید اولین دیتابیس خود را ایجاد کنید:
CREATE DATABASE school;USE school;CREATE TABLE students ( id INT PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(50), last_name VARCHAR(50), age INT, grade VARCHAR(10));
🏗️ ساختار ایجاد دیتابیس و جدول
۱. ایجاد دیتابیس (CREATE DATABASE)
یک دیتابیس جدید با نام مشخص ایجاد میکند:
CREATE DATABASE database_name;
نکات:
- نام دیتابیس باید یکتا باشد
- از کاراکترهای مجاز استفاده کنید (حروف، اعداد، underline)
- حساس به بزرگی و کوچکی حروف نیست (case-insensitive)
۲. انتخاب دیتابیس (USE)
دیتابیس فعال برای اجرای دستورات بعدی را مشخص میکند:
USE database_name;
تا زمانی که دیتابیس دیگری انتخاب نشود، تمام دستورات روی این دیتابیس اجرا میشوند.
۳. ایجاد جدول (CREATE TABLE)
یک جدول جدید با ستونهای مشخص ایجاد میکند:
CREATE TABLE table_name (
column1 datatype constraints,
column2 datatype constraints,
...
);
💡 انواع دادههای رایج (Data Types):
- INT: اعداد صحیح
- VARCHAR(n): رشته متنی با طول متغیر
- DATE: تاریخ
- DECIMAL: اعداد اعشاری دقیق
- BOOLEAN: مقدار true/false
📌 دستورات اصلی SQL (CRUD)
۱. ایجاد داده (CREATE - INSERT)
اضافه کردن رکوردهای جدید به جدول:
INSERT INTO students (first_name, last_name, age, grade)VALUES ('علی', 'رضایی', 15, 'نهم');INSERT INTO students (first_name, last_name, age, grade)VALUES ('فاطمه', 'محمدی', 16, 'دهم');
۲. خواندن داده (READ - SELECT)
خواندن و مشاهده دادههای جدول:
SELECT * FROM students;SELECT first_name, last_name FROM students;SELECT * FROM students WHERE age > 15;
۳. بهروزرسانی داده (UPDATE)
ویرایش دادههای موجود در جدول:
UPDATE students SET grade = 'یازدهم'WHERE first_name = 'فاطمه';
۴. حذف داده (DELETE)
حذف رکوردها از جدول:
DELETE FROM students WHERE id = 2;
🔍 نکات مهم درباره دستورات CRUD
✅ دستور INSERT
برای اضافه کردن داده جدید استفاده میشود:
INSERT INTO table_name (column1, column2, ...)VALUES (value1, value2, ...);
نکات:
- ترتیب مقادیر باید با ترتیب ستونها مطابقت داشته باشد
- مقادیر رشتهای باید درون کوتیشن قرار گیرند
- ستونهای اختیاری را میتوان حذف کرد
✅ دستور SELECT
برای خواندن و بازیابی داده استفاده میشود:
SELECT column1, column2, ...FROM table_nameWHERE condition;
نکات:
*
برای انتخاب تمام ستونها استفاده میشود- شرط WHERE برای فیلتر کردن نتایج استفاده میشود
- میتوان از ORDER BY برای مرتبسازی استفاده کرد
✅ دستور UPDATE
برای ویرایش دادههای موجود استفاده میشود:
UPDATE table_nameSET column1 = value1, column2 = value2, ...WHERE condition;
هشدار: بدون شرط WHERE، تمام رکوردها بهروزرسانی میشوند!
✅ دستور DELETE
برای حذف رکوردها استفاده میشود:
DELETE FROM table_nameWHERE condition;
هشدار: بدون شرط WHERE، تمام رکوردها حذف میشوند!
📌 شرطها و فیلترها (WHERE)
استفاده از شرطهای مختلف برای فیلتر کردن دادهها:
SELECT * FROM students WHERE age = 15;SELECT * FROM students WHERE first_name LIKE 'ع%';SELECT * FROM students WHERE age BETWEEN 14 AND 16;SELECT * FROM students WHERE grade IN ('نهم', 'دهم');
🔍 عملگرهای شرطی در WHERE
عملگرهای مقایسهای:
=
مساوی!=
یا<>
نامساوی>
بزرگتر از<
کوچکتر از>=
بزرگتر یا مساوی<=
کوچکتر یا مساوی
عملگرهای منطقی:
AND
و (هر دو شرط true باشند)OR
یا (یکی از شرطها true باشد)NOT
نقیض شرط
عملگرهای ویژه:
LIKE
جستجوی الگوییIN
وجود در لیستBETWEEN
بین دو مقدارIS NULL
بررسی مقدار null
💡 نکات مهم درباره LIKE:
عملگر LIKE برای جستجوی الگویی استفاده میشود:
%
- هر تعداد کاراکتر (صفر یا بیشتر)_
- دقیقاً یک کاراکترLIKE 'ع%'
- مقادیری که با "ع" شروع میشوندLIKE '%ی'
- مقادیری که با "ی" پایان مییابندLIKE '_ا%'
- مقادیری که کاراکتر دوم آن "ا" است
📌 مرتبسازی و محدود کردن نتایج
SELECT * FROM students ORDER BY age DESC;SELECT * FROM students ORDER BY last_name ASC, first_name ASC;SELECT * FROM students LIMIT 5;SELECT * FROM students LIMIT 5 OFFSET 10;
📊 مدیریت نتایج کوئری
۱. مرتبسازی (ORDER BY)
برای مرتبسازی نتایج بر اساس یک یا چند ستون:
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...
نکات:
ASC
- صعودی (پیشفرض)DESC
- نزولی- میتوان بر اساس چند ستون مرتبسازی کرد
- میتوان بر اساس ستونهای محاسباتی مرتبسازی کرد
۲. محدود کردن (LIMIT)
برای محدود کردن تعداد نتایج برگشتی:
LIMIT number_of_rows
مفید برای pagination و جلوگیری از بازگشت دادههای زیاد.
۳. جابجایی (OFFSET)
برای رد شدن از تعداد مشخصی از رکوردها:
LIMIT number OFFSET skip_count
برای صفحهبندی (pagination) بسیار useful است.
💡 مثال کاربردی برای Pagination:
برای پیادهسازی صفحهبندی در یک برنامه وب:
-- صفحه اول: رکوردهای ۱ تا ۱۰SELECT * FROM products LIMIT 10 OFFSET 0;-- صفحه دوم: رکوردهای ۱۱ تا ۲۰ SELECT * FROM products LIMIT 10 OFFSET 10;-- صفحه سوم: رکوردهای ۲۱ تا ۳۰SELECT * FROM products LIMIT 10 OFFSET 20;
📌 تمرین عملی
یک دیتابیس جدید برای کتابخانه ایجاد کنید و دادههای نمونه اضافه کنید:
CREATE DATABASE library;USE library;CREATE TABLE books ( id INT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(100), author VARCHAR(50), published_year INT, genre VARCHAR(30));
🔧 راهنمای گام به گام تمرین
مرحله ۱: ایجاد دیتابیس و جدول
دیتابیس library و جدول books را ایجاد کنید:
CREATE DATABASE library;USE library;CREATE TABLE books (id INT PRIMARY KEY AUTO_INCREMENT,title VARCHAR(100),author VARCHAR(50),published_year INT,genre VARCHAR(30));
مرحله ۲: اضافه کردن دادههای نمونه
حداقل ۵ کتاب مختلف اضافه کنید:
INSERT INTO books (title, author, published_year, genre)VALUES('شازده کوچولو', 'آنتوان دو سنت اگزوپری', 1943, 'داستانی'),
('صد سال تنهایی', 'گابریل گارسیا مارکز', 1967, 'رمان'),
('کیمیاگر', 'پائولو کوئلیو', 1988, 'فلسفی'),
('بوف کور', 'صادق هدایت', 1937, 'ادبیات'),
('مدیر مدرسه', 'جلال آل احمد', 1958, 'اجتماعی');
مرحله ۳: اجرای کوئریهای مختلف
کوئریهای مختلف اجرا کنید تا با دادهها کار کنید:
-- همه کتابهاSELECT * FROM books;
-- کتابهای بعد از سال ۱۹۵۰
SELECT * FROM books WHERE published_year > 1950;
-- کتابهای مرتبشده بر اساس سال
SELECT * FROM books ORDER BY published_year ASC;
-- تعداد کتابها در هر ژانر
SELECT genre, COUNT(*) FROM books GROUP BY genre;
💡 نکات پیشرفته برای تمرین:
- از دستور
DESCRIBE books;
برای مشاهده ساختار جدول استفاده کنید - با دستور
ALTER TABLE
ستون جدید اضافه کنید - از تابع
COUNT()
برای شمارش رکوردها استفاده کنید - با
GROUP BY
دادهها را گروهبندی کنید
راهنمای تمرین:
- دیتابیس library را ایجاد کنید
- جدول books با فیلدهای مناسب بسازید
- حداقل ۵ کتاب مختلف insert کنید
- کوئریهای SELECT مختلف اجرا کنید
- از WHERE, ORDER BY, LIMIT استفاده کنید
📌 قدم بعدی
در درس بعدی با روابط بین جدولها و JOIN ها در MySQL آشنا خواهیم شد!
🚀 آمادهسازی برای روابط جدولها
حالا که با مبانی MySQL آشنا شدید، در بخش بعدی یاد خواهید گرفت که چگونه:
- بین جدولها رابطه ایجاد کنید (Relationships)
- از کلیدهای خارجی (Foreign Keys) استفاده کنید
- جدولها را با JOIN به هم متصل کنید
- نرمالسازی دیتابیس انجام دهید
📝 توصیه برای یادگیری بهتر:
قبل از رفتن به بخش بعدی، حتماً این تمرین را انجام دهید و با دستورات پایه SQL کاملاً آشنا شوید. درک این مفاهیم پایه، یادگیری روابط پیچیده را بسیار آسانتر خواهد کرد.