بی آکادمی
آموزش HTML
آموزش CSS
جاوااسکریپت
آموزش SQL
آموزش MySQL
آموزش PHP
داکر دسکتاپ

📌 آموزش پایگاه داده MySQL


🎯 اهداف یادگیری

  • شناخت مفاهیم پایه پایگاه داده
  • یادگیری نصب و راه‌اندازی MySQL
  • آشنایی با دستورات اصلی SQL
  • یادگیری ایجاد، مدیریت و پرس‌وجو از دیتابیس

📌 پایگاه داده چیست؟

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

sql
CREATE DATABASE my_database;

💡 برای مبتدیان: پایگاه داده یعنی چه؟

🏢 تشبیه شرکت:

یک پایگاه داده را مانند یک شرکت در نظر بگیرید:

  • دیتابیس = ساختمان شرکت (مکان ذخیره اطلاعات)
  • جداول = دپارتمان‌های مختلف (مالی، منابع انسانی، فروش)
  • رکوردها = پرونده‌های کارمندان (اطلاعات فردی)
  • فیلدها = جزئیات هر پرونده (نام، سن، حقوق)

🎯 نکات کلیدی درباره MySQL:

  1. MySQL یک سیستم مدیریت پایگاه داده رابطه‌ای (RDBMS) است
  2. منبع باز (Open Source) و رایگان می‌باشد
  3. از زبان SQL برای مدیریت داده‌ها استفاده می‌کند
  4. محبوب‌ترین دیتابیس برای برنامه‌های وب است
امتحان کنید

📌 نصب و راه‌اندازی MySQL

برای شروع کار با MySQL، ابتدا باید آن را نصب کنید:

bash
# نصب MySQL در اوبونتو
sudo apt-get update
sudo apt-get install mysql-server
# راه‌اندازی سرویس
sudo systemctl start mysql
sudo systemctl enable mysql

🔧 روش‌های نصب MySQL

۱. نصب روی ویندوز

از MySQL Installer استفاده کنید که شامل تمام ابزارهای لازم است:

  1. دانلود MySQL Installer از سایت رسمی
  2. اجرای فایل نصبی و انتخاب محصولات
  3. پیکربندی تنظیمات اولیه
  4. تست اتصال به سرور

۲. نصب روی لینوکس (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 متصل شوید:

bash
# اتصال به سرور MySQL
mysql -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

📌 ایجاد اولین دیتابیس

پس از اتصال، می‌توانید اولین دیتابیس خود را ایجاد کنید:

sql
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)

اضافه کردن رکوردهای جدید به جدول:

sql
INSERT INTO students (first_name, last_name, age, grade)
VALUES ('علی', 'رضایی', 15, 'نهم');
INSERT INTO students (first_name, last_name, age, grade)
VALUES ('فاطمه', 'محمدی', 16, 'دهم');

۲. خواندن داده (READ - SELECT)

خواندن و مشاهده داده‌های جدول:

sql
SELECT * FROM students;
SELECT first_name, last_name FROM students;
SELECT * FROM students WHERE age > 15;

۳. به‌روزرسانی داده (UPDATE)

ویرایش داده‌های موجود در جدول:

sql
UPDATE students
SET grade = 'یازدهم'
WHERE first_name = 'فاطمه';

۴. حذف داده (DELETE)

حذف رکوردها از جدول:

sql
DELETE FROM students
WHERE id = 2;

🔍 نکات مهم درباره دستورات CRUD

✅ دستور INSERT

برای اضافه کردن داده جدید استفاده می‌شود:

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);

نکات:

  • ترتیب مقادیر باید با ترتیب ستون‌ها مطابقت داشته باشد
  • مقادیر رشته‌ای باید درون کوتیشن قرار گیرند
  • ستون‌های اختیاری را می‌توان حذف کرد

✅ دستور SELECT

برای خواندن و بازیابی داده استفاده می‌شود:

SELECT column1, column2, ...
FROM table_name
WHERE condition;

نکات:

  • * برای انتخاب تمام ستون‌ها استفاده می‌شود
  • شرط WHERE برای فیلتر کردن نتایج استفاده می‌شود
  • می‌توان از ORDER BY برای مرتب‌سازی استفاده کرد

✅ دستور UPDATE

برای ویرایش داده‌های موجود استفاده می‌شود:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

هشدار: بدون شرط WHERE، تمام رکوردها به‌روزرسانی می‌شوند!

✅ دستور DELETE

برای حذف رکوردها استفاده می‌شود:

DELETE FROM table_name
WHERE condition;

هشدار: بدون شرط WHERE، تمام رکوردها حذف می‌شوند!

📌 شرط‌ها و فیلترها (WHERE)

استفاده از شرط‌های مختلف برای فیلتر کردن داده‌ها:

sql
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 '_ا%' - مقادیری که کاراکتر دوم آن "ا" است

📌 مرتب‌سازی و محدود کردن نتایج

sql
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;

📌 تمرین عملی

یک دیتابیس جدید برای کتابخانه ایجاد کنید و داده‌های نمونه اضافه کنید:

sql
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 داده‌ها را گروه‌بندی کنید
انجام تمرین

راهنمای تمرین:

  1. دیتابیس library را ایجاد کنید
  2. جدول books با فیلدهای مناسب بسازید
  3. حداقل ۵ کتاب مختلف insert کنید
  4. کوئری‌های SELECT مختلف اجرا کنید
  5. از WHERE, ORDER BY, LIMIT استفاده کنید

📌 قدم بعدی

در درس بعدی با روابط بین جدول‌ها و JOIN ها در MySQL آشنا خواهیم شد!

🚀 آماده‌سازی برای روابط جدول‌ها

حالا که با مبانی MySQL آشنا شدید، در بخش بعدی یاد خواهید گرفت که چگونه:

  • بین جدول‌ها رابطه ایجاد کنید (Relationships)
  • از کلیدهای خارجی (Foreign Keys) استفاده کنید
  • جدول‌ها را با JOIN به هم متصل کنید
  • نرمال‌سازی دیتابیس انجام دهید

📝 توصیه برای یادگیری بهتر:

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