MySQL: مقدمة إلى MySQL ومفاهيم قواعد البيانات الأساسية

يُعد MySQL نظام إدارة قواعد البيانات العلائقية مفتوح المصدر الأكثر انتشارًا في العالم — فهو يجعل تخزين البيانات والاستعلام عنها عملية بسيطة وفعالة.

صُمم هذا البرنامج التعليمي للمبتدئين الذين ليس لديهم أي خبرة سابقة. يبدأ البرنامج بأساسيات قواعد البيانات ويتطور تدريجيًا حتى تصبح بارعًا في استخدام MySQL لإدارة البيانات.

1. ما ستتعلمه



2. قصة حقيقية لمطور

(1) المشكلة: لم يعد برنامج Excel قادرًا على التعامل مع الأمر

كُلف مدير عمليات التجارة الإلكترونية بمهمة عاجلة:

"قم بتجميع اتجاهات المبيعات خلال الـ 12 شهراً الماضية، بحيث تشمل 5,000 عميل و30,000 طلب — وقدم التقرير إلى الرئيس التنفيذي صباح الغد."

افتح ملف Excel: أكثر من 100,000 صف من البيانات، حجم الملف 50 ميغابايت.

توالت المشاكل واحدة تلو الأخرى:

(2) حلول قواعد البيانات

إعادة التصميم باستخدام MySQL:

SQL
-- Create a Customer Table
CREATE TABLE customers (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    email VARCHAR(150)
);

-- Create the Orders Table
CREATE TABLE orders (
    id INT PRIMARY KEY AUTO_INCREMENT,
    customer_id INT,
    amount DECIMAL(10,2),
    order_date DATE,
    FOREIGN KEY (customer_id) REFERENCES customers(id)
);

-- One SQL Identify Annual Sales Trends
SELECT 
    DATE_FORMAT(order_date, '%Y-%m') AS month,
    COUNT(*) AS total_orders,
    SUM(amount) AS total_revenue
FROM orders
WHERE order_date >= '2025-07-01'
GROUP BY month
ORDER BY month;

مقارنة العائد:

البعد Excel MySQL
استعلام يضم 100,000 صف أكثر من 30 ثانية أقل من ثانية واحدة
عمليات الربط بين الجداول المتعددة VLOOKUP اليدوي الربط التلقائي
التحرير التعاوني تعارضات الملفات عمليات القراءة/الكتابة المتزامنة دون تعارضات
تحديث البيانات التحديث اليدوي الاستعلام في الوقت الفعلي عن أحدث البيانات
أمن البيانات مخاطر فقدان البيانات حماية المعاملات والنسخ الاحتياطي


3. ما هي قاعدة البيانات؟

قاعدة البيانات هي مستودع يُستخدم لتنظيم البيانات وتخزينها وإدارتها وفقًا لبنية بيانات معينة.

(1) قواعد البيانات مقابل تخزين الملفات

100%
graph TB
    A[Data Storage Methods] --> B[File Storage]
    A --> C[Database]
    B --> D[Excel / CSV / TXT]
    B --> E[Manual Management,Low efficiency]
    C --> F[Structured Storage]
    C --> G[Efficient Queries,Safe and Reliable]
البعد تخزين الملفات قاعدة البيانات
حجم البيانات آلاف الصفوف ملايين إلى مئات الملايين من الصفوف
سرعة الاستعلام بطيئة (مسح كامل للملف) سريعة (تحسين الفهرس)
الوصول المتزامن غير مدعوم يدعم الوصول المتزامن للقراءة/الكتابة من قبل عدة مستخدمين
سلامة البيانات غير مضمونة القيود + المعاملات مضمونة
الأمان على مستوى الملف أذونات المستخدم + التشفير

(2) فئات قواعد البيانات

100%
graph TB
    A[Database] --> B[Relational Database RDBMS]
    A --> C[Non-relational database NoSQL]
    B --> D[MySQL / PostgreSQL]
    B --> E[Oracle / SQL Server]
    B --> F[SQLite]
    C --> G[Key-value type: Redis]
    C --> H[Document-based: MongoDB]
    C --> I[Column Type: Cassandra]
    C --> J[Graph Database: Neo4j]
النوع المنتجات التمثيلية نموذج البيانات السيناريوهات القابلة للتطبيق
علاقاتية MySQL، PostgreSQL الجداول (الصفوف + الأعمدة) البيانات المنظمة، معالجة المعاملات
المفتاح-القيمة Redis أزواج المفتاح-القيمة التخزين المؤقت، الجلسات، قوائم المتصدرين
قائم على المستندات MongoDB مستندات JSON/BSON البيانات شبه المنظمة، إدارة المحتوى
نوع عائلة الأعمدة كاساندرا عائلة الأعمدة تحليلات البيانات الضخمة، بيانات السلاسل الزمنية
قاعدة بيانات الرسوم البيانية Neo4j العقد + الحواف الشبكات الاجتماعية، أنظمة التوصيات
💡 نصيحة: MySQL هي قاعدة بيانات علائقية؛ حيث تُخزَّن البيانات في شكل جداول، ويمكن إنشاء علاقات بين الجداول.



4. المفاهيم الأساسية لقواعد البيانات العلائقية

(1) جدول

الجدول هو الوحدة الأساسية لتخزين البيانات في قاعدة البيانات، ويتكون من صفوف وأعمدة.

100%
graph LR
    subgraph customers Table
        direction TB
        H[id | name | email | created_at]
        R1[1 | Alice | alice@email.com | 2025-01-15]
        R2[2 | Bob | bob@email.com | 2025-02-20]
        R3[3 | Charlie | charlie@email.com | 2025-03-10]
    end
المصطلح التعريف مثال
جدول مجموعة من البيانات customers جدول
الصف سجل معين المعلومات الكاملة عن أليس
العمود خاصية من خصائص البيانات name العمود
المفتاح الأساسي حقل يُعرِّف كل صف بشكل فريد عمود id
المفتاح الخارجي حقل يشير إلى جدول آخر orders.customer_id

(2) أنواع العلاقات

100%
erDiagram
    CUSTOMERS ||--o{ ORDERS : "A customer has multiple orders"
    ORDERS ||--|{ ORDER_ITEMS : "An order contains multiple line items"
    PRODUCTS ||--o{ ORDER_ITEMS : "An item appears in multiple orders"
نوع العلاقة الوصف مثال
واحد إلى واحد (1:1) سجل واحد يقابل سجلًا آخر المستخدم ↔ بطاقة الهوية
واحد إلى عدة (1:N) سجل واحد يتوافق مع عدة سجلات العميل → الطلب
علاقة متعدد إلى متعدد (M:N) تتوافق سجلات متعددة مع بعضها البعض الطلاب ↔ المقررات الدراسية (عبر نموذج التسجيل في المقرر)

(3) تصنيف لغات SQL

لغة SQL (لغة الاستعلام الهيكلية) هي اللغة القياسية المستخدمة في التعامل مع قواعد البيانات العلائقية.

الفئة الاسم الكامل الكلمات المفتاحية الغرض
DDL لغة تعريف البيانات CREATE/ALTER/DROP تحدد بنية قاعدة البيانات
DML لغة معالجة البيانات INSERT/UPDATE/DELETE إدراج البيانات وتحديثها وحذفها
DQL لغة استعلام البيانات SELECT استعلام البيانات
DCL لغة التحكم في البيانات GRANT/REVOKE إدارة الأذونات
TCL لغة التحكم في المعاملات COMMIT/ROLLBACK التحكم في المعاملات


5. تاريخ MySQL

(1) سجل الإصدارات

100%
timeline
    title MySQL Version History
    1995 : MySQL 1.0 Published
         : From Sweden MySQL AB Company Development
    2000 : MySQL 3.23
         : Supports transaction processing
    2003 : MySQL 4.0
         : Support UNION Search
    2005 : MySQL 5.0
         : Supports stored procedures、View、Trigger
    2008 : Sun Acquisition MySQL AB
    2010 : Oracle Acquisition Sun
         : Obtain MySQL Ownership
    2013 : MySQL 5.6
         : InnoDB Full-Text Search
    2016 : MySQL 5.7
         : JSON Support、Performance Improvements
    2018 : MySQL 8.0
         : Window Functions、CTE、Characters
    2024 : MySQL 8.4 LTS
         : Long-Term Support Version
    2024 : MySQL 9.0 Innovation
         : Latest Innovative Version

(2) فلسفة تصميم MySQL

المبادئ الأساسية لتصميم MySQL:

البساطة أولاً

الأداء أولاً

النظام البيئي المفتوح



6. المزايا الرئيسية لـ MySQL

(1) مقارنة المزايا

البعد MySQL PostgreSQL Oracle SQL Server
السعر مجاني (مفتوح المصدر) مجاني (مفتوح المصدر) باهظ الثمن (تجاري) باهظ الثمن (تجاري)
صعوبة التعلم ⭐ سهل ⭐⭐ متوسط ⭐⭐⭐ صعب ⭐⭐ متوسط
أداء القراءة ⭐⭐⭐ سريع للغاية ⭐⭐ سريع ⭐⭐ سريع ⭐⭐ سريع
نشاط المجتمع ⭐⭐⭐ مرتفع جدًا ⭐⭐ مرتفع ⭐ معتدل ⭐ معتدل
حالات الاستخدام تطبيقات الويب، التجارة الإلكترونية الاستعلامات المعقدة، نظم المعلومات الجغرافية أنظمة المؤسسات واسعة النطاق منظومة ويندوز

(2) حالات الاستخدام النموذجية

100%
mindmap
  root((MySQL Applications))
    Web Development
      Blog System
      E-commerce Platform
      Social Networks
      Content Management
    Enterprise Applications
      ERP System
      CRM System
      Inventory Management
      Order Processing
    Data Analysis
      Log Storage
      User Behavior
      Report Statistics
    Mobile Apps
      App Backend
      Game Data
      Push Notification System

من يستخدم MySQL؟

الشركة الغرض
Meta (فيسبوك) بيانات المستخدمين، الشبكة الاجتماعية
تويتر التغريدات، ملفات تعريف المستخدمين
GitHub مستودعات الأكواد، بيانات المستخدمين
Airbnb العروض، الحجوزات، المستخدمون
Shopify البنية الخلفية للتجارة الإلكترونية، والمنتجات والطلبات
Booking.com حجوزات الفنادق، تقييمات المستخدمين


7. مقدمة موجزة عن MySQL

(1) الاتصال بـ MySQL في ثلاث خطوات

الخطوة الأمر/الإجراء
1. التثبيت تشغيل Docker بأمر واحد (انظر الدرس 2 لمزيد من التفاصيل)
2. الاتصال mysql -u root -p
3. التحقق SELECT VERSION();

📖 سيتناول الدرس التالي بالتفصيل: التثبيت عبر الأنظمة المختلفة (ويندوز/ماك/لينكس/دوكر)، والاتصال ببرنامج MySQL Workbench، وإعدادات الأمان. ويقدم هذا القسم لمحة عامة سريعة فقط.

▶ مثال: تشغيل Docker بأمر واحد

BASH
# Pull and Start MySQL 8.0 (see Lesson 2 for details)
docker run -d --name mysql-tutorial \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=MyPass123! \
  mysql:8.0

# Enter MySQL Command Line
docker exec -it mysql-tutorial mysql -u root -pMyPass123!

▶ مثال: التحقق السريع بعد الاتصال

SQL
-- View MySQL Version
SELECT VERSION();

-- View All Databases
SHOW DATABASES;
▶ جرّب الكود

الناتج:

TEXT 📖 للعرض فقط
+-----------+
| VERSION() |
+-----------+
| 8.0.36    |
+-----------+

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

▶ مثال: إنشاء أول قاعدة بيانات وجدول لك

SQL
-- 1. Create a Database
CREATE DATABASE my_first_db;

-- 2. Using the Database
USE my_first_db;

-- 3. Create a user table
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 4. Insert Data
INSERT INTO users (username, email) VALUES ('Alice', 'alice@example.com');
INSERT INTO users (username, email) VALUES ('Bob', 'bob@example.com');

-- 5. Query Data
SELECT * FROM users;
▶ جرّب الكود

الناتج:

TEXT 📖 للعرض فقط
+----+----------+-----------------+---------------------+
| id | username | email           | created_at          |
+----+----------+-----------------+---------------------+
|  1 | Alice    | alice@example.com | 2026-07-03 10:30:00 |
|  2 | Bob      | bob@example.com   | 2026-07-03 10:30:01 |
+----+----------+-----------------+---------------------+

▶ مثال: عمليات CRUD على البيانات

SQL
-- Conditional Query
SELECT username, email FROM users WHERE username = 'Alice';

-- Update Data
UPDATE users SET email = 'alice_new@example.com' WHERE id = 1;

-- Delete Data
DELETE FROM users WHERE id = 2;

-- Count the number of users
SELECT COUNT(*) AS total_users FROM users;
▶ جرّب الكود

❓ أسئلة شائعة

س ما هي العلاقة بين MySQL و SQL؟
ج لغة SQL هي اللغة القياسية لتشغيل قواعد البيانات (مثل «اللغة الإنجليزية»)، بينما MySQL هو برنامج قاعدة بيانات يطبق معيار SQL (مثل «اللغة الإنجليزية المستخدمة في المملكة المتحدة»).
س هل برنامج MySQL مجاني؟ وهل يمكن استخدامه لأغراض تجارية؟
ج إصدار MySQL Community Edition مجاني ومفتوح المصدر (بموجب ترخيص GPL) ويمكن استخدامه لأغراض تجارية. ومع ذلك، إذا قمت بتعديل كود مصدر MySQL وتوزيعه، فيجب عليك أيضًا إصداره كمصدر مفتوح. تقدم شركة Oracle إصدارًا تجاريًا (مقابل رسوم) يوفر ميزات إضافية مخصصة للمؤسسات.
س أيهما يجب أن أختار، MySQL أم MariaDB؟
ج MariaDB هي نسخة مشتقة من MySQL وتتمتع بتوافق كبير معها من حيث بناء الجمل. بالنسبة للمشاريع الجديدة، يُعد MySQL 8.0 أو الإصدارات الأحدث هو الخيار السائد؛ أما إذا كانت لديك مخاوف بشأن استراتيجية أوراكل في مجال البرمجيات مفتوحة المصدر، فإن MariaDB تُعد بديلاً جيدًا.
س هل أحتاج إلى تعلم لغة برمجة قبل تعلم MySQL؟
ج لا. لغة SQL هي لغة قائمة بذاتها، وتتميز ببنية نحوية تشبه اللغة الإنجليزية الطبيعية. يمكنك تعلمها مباشرةً من خلال سطر أوامر MySQL. وستتناول الدروس اللاحقة كيفية الاتصال بـ MySQL باستخدام Node.js أو Python.
س ما هو حجم المشاريع التي يناسبها MySQL؟
ج يناسب MySQL جميع أنواع المشاريع، بدءًا من المشاريع الشخصية الصغيرة وصولاً إلى تطبيقات المؤسسات واسعة النطاق. يمكن لجدول واحد تخزين مئات الملايين من صفوف البيانات، وبفضل تقنية تقسيم قواعد البيانات والجداول (sharding)، يمكنه دعم نطاقات أكبر من ذلك. وتستخدم كل من Meta وTwitter وGitHub قاعدة بيانات MySQL.
س هل يمكن استخدام MySQL على أنظمة التشغيل Windows وMac وLinux؟
ج نعم. يدعم MySQL رسميًا جميع الأنظمة الأساسية. نوصي بتثبيته باستخدام Docker — قم بإعداده مرة واحدة، وشغّله في أي مكان.

📖 ملخص


📝 تمارين

  1. تمرين أساسي (مستوى الصعوبة: ⭐): قم بتثبيت MySQL 8.0 باستخدام Docker. بمجرد الاتصال، قم بتشغيل SELECT VERSION(); للتحقق من رقم الإصدار.

  2. مشكلة متقدمة (درجة الصعوبة ⭐⭐): أنشئ قاعدة بيانات باسم school تحتوي على جدول باسم students (id، name، age، grade)، وأدخل 5 سجلات، ثم استرجع جميع السجلات.

  3. سؤال التحدي (مستوى الصعوبة: ⭐⭐⭐): أنشئ الجدول courses والجدول المرتبط به student_courses (علاقة «كثير إلى كثير»)، وصمم الحقول المناسبة، واستخدم عملية «JOIN» للاستعلام عن جميع المقررات الدراسية التي درسها طالب معين.

Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%