MySQL: مقدمة إلى قواعد بناء الجمل الأساسية في لغة SQL وشرح…

آخر تحديث: 2026-08-26

لغة SQL هي لغة عالمية للتعامل مع قواعد البيانات — وبمجرد تعلمها، ستحصل على مفتاح الوصول إلى جميع قواعد البيانات العلائقية.

يقدم هذا الدرس مقدمة منهجية لتصنيف لغة SQL وقواعدها النحوية الأساسية، مما يضع أساسًا متينًا لمواصلة الدراسة.

1. ما ستتعلمه



2. قصة حقيقية لمحلل

(1) المشكلة: ما كان هذا ليحدث لو انتقلنا إلى قاعدة بيانات أخرى

محلل بيانات كان يستخدم «أوراكل» في شركته السابقة، ويستخدم الآن «ماي إس كيو إل» في شركته الجديدة:

"أنا أكتب لغة SQL الخاصة بـ Oracle منذ ثلاث سنوات، وبعد أن انتقلت إلى MySQL، لاحظت أن بعض قواعد الصياغة قد تغيرت — فقد أصبح ROWNUM هو LIMIT، وSYSDATE أصبح NOW(). فهل عليّ أن أبدأ من الصفر مرة أخرى؟"

في الواقع، لا داعي لذلك — فبنية لغة SQL الأساسية موحدة عالميًا، ولا تمثل الاختلافات سوى 5٪.

(2) الحل وفقًا لمعيار SQL

SQL هو معيار دولي (ISO/IEC 9075) تلتزم به جميع قواعد البيانات العلائقية:

SQL
-- This SQL runs on MySQL, PostgreSQL, Oracle, and SQL Server
SELECT 1 + 1 AS result;

المزايا: تعلم قواعد لغة SQL القياسية؛ فعند الانتقال إلى قاعدة بيانات أخرى، لن تحتاج سوى إلى تعلم 5% من الاختلافات.

قاعدة البيانات الصيغة المتطابقة الصيغة المختلفة
MySQL 95% LIMIT، AUTO_INCREMENT
PostgreSQL 95% SERIAL، ILIKE
Oracle 95% ROWNUM، SYSDATE
SQL Server 95% TOP، GETDATE()


3. الفئات الخمس الرئيسية لـ SQL

100%
graph TB
    A[SQL Language] --> B[DDL Data Definition]
    A --> C[DML Data Manipulation]
    A --> D[DQL Data Query]
    A --> E[DCL Data Control]
    A --> F[TCL Transaction Control]
    B --> B1[CREATE]
    B --> B2[ALTER]
    B --> B3[DROP]
    C --> C1[INSERT]
    C --> C2[UPDATE]
    C --> C3[DELETE]
    D --> D1[SELECT]
    E --> E1[GRANT]
    E --> E2[REVOKE]
    F --> F1[COMMIT]
    F --> F2[ROLLBACK]
الفئة الاسم الكامل الكلمات المفتاحية الغرض مستوى الخطر
DDL لغة تعريف البيانات CREATE/ALTER/DROP/TRUNCATE تحدد بنية قاعدة البيانات ⚠️ متوسطة
DML لغة معالجة البيانات INSERT/UPDATE/DELETE إدراج البيانات وتحديثها وحذفها ⚠️ متوسط
DQL لغة استعلام البيانات SELECT استعلام البيانات ✅ آمن
DCL لغة التحكم في البيانات GRANT/REVOKE إدارة الأذونات 🔴 عالية
TCL لغة التحكم في المعاملات COMMIT/ROLLBACK/SAVEPOINT التحكم في المعاملات ⚠️ متوسط

(1) DDL — لغة تعريف البيانات

تحديد هيكل قاعدة البيانات (قواعد البيانات، والجداول، والفهارس).

SQL
-- Create a Database
CREATE DATABASE mydb;

-- Create a Table
CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(50)
);

-- Modify the table structure
ALTER TABLE users ADD COLUMN email VARCHAR(100);

-- Delete Table
DROP TABLE users;

-- Clear Table Data (Keep Structure)
TRUNCATE TABLE users;

(2) DML — لغة معالجة البيانات

البيانات الواردة في الجدول (إضافة، حذف، تحديث).

SQL
-- Insert data
INSERT INTO users (id, name) VALUES (1, 'Alice');

-- Update Data
UPDATE users SET name = 'Bob' WHERE id = 1;

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

(3) DQL — لغة استعلام البيانات

استعلام عن البيانات الموجودة في الجدول.

SQL
-- Query All Fields
SELECT * FROM users;

-- Conditional Query
SELECT name, email FROM users WHERE id > 10;

-- Sorted Queries
SELECT * FROM users ORDER BY created_at DESC;

-- Limit Results
SELECT * FROM users LIMIT 10;

(4) DCL — لغة التحكم في البيانات

إدارة أذونات المستخدمين.

SQL
-- Grant Permissions
GRANT SELECT, INSERT ON mydb.* TO 'user'@'localhost';

-- Revoke Permissions
REVOKE INSERT ON mydb.* FROM 'user'@'localhost';

(5) TCL — لغة التحكم في المعاملات

إدارة عملية إرسال المعاملات وإلغائها.

SQL
-- Start Transaction
START TRANSACTION;

-- Perform an action
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;

-- Commit Transaction
COMMIT;

-- Or roll back the transaction
ROLLBACK;


4. قواعد بناء الجملة الأساسية لعبارة SELECT

(1) الصيغة الكاملة لأمر SELECT

SQL
SELECT [DISTINCT] column1, column2, ...
FROM table_name
[WHERE condition]
[ORDER BY column [ASC|DESC]]
[LIMIT offset, count];

▶ مثال: استعلام أساسي

SQL
-- Query All Fields
SELECT * FROM employees;

-- Query a Specific Field
SELECT first_name, last_name, salary FROM employees;

-- Using Aliases
SELECT first_name AS first_name, last_name AS last_name, salary AS salary FROM employees;

-- (Omit) AS (same result)
SELECT first_name first_name, last_name last_name FROM employees;
SELECT DISTINCT department FROM employees;
▶ جرّب الكود

الناتج:

TEXT 📖 للعرض فقط
+------+--------+---------+
| first_name | last_name | salary  |
+------+--------+---------+
| John | Smith  | 5000.00 |
| Jane | Doe    | 6000.00 |
+------+--------+---------+

▶ مثال: الاستعلام الشرطي

SQL
-- Equal Value Query
SELECT * FROM employees WHERE department = 'Engineering';

-- Range Query
SELECT * FROM employees WHERE salary BETWEEN 4000 AND 8000;

-- List Query
SELECT * FROM employees WHERE department IN ('Sales', 'Marketing');

-- Fuzzy Search
SELECT * FROM employees WHERE first_name LIKE 'J%';

-- Null Value Query
SELECT * FROM employees WHERE manager_id IS NULL;
▶ جرّب الكود

الناتج:

TEXT 📖 للعرض فقط
+-------------+-----------+--------+-------------+
| first_name  | last_name | salary | department  |
+-------------+-----------+--------+-------------+
| John        | Smith     | 5000.00| Engineering |
| Jane        | Doe       | 6000.00| Engineering |
+-------------+-----------+--------+-------------+


5. تعليقات SQL

(1) التعليقات أحادية السطر

SQL
-- This is a single-line comment (Standard Format)
SELECT * FROM users; -- Query All Users

# This is also a single-line comment (MySQL-specific)
SELECT * FROM users;

(2) التعليقات متعددة الأسطر

SQL
/*
This is a multi-line comment
Can span multiple lines
Commonly used to illustrate complex queries
*/
SELECT * FROM users
WHERE status = 'active';

▶ مثال: التطبيقات العملية للتعليقات

SQL
/*
Features: Query statistics on active users
Author: Alice
Date: 2026-07-03
Revision History:
  - 2026-07-02 Add email_verified condition
  - 2026-07-03 Add a filter for registration date
*/
SELECT 
    COUNT(*) AS total_users,           -- Total Number of Users
    AVG(age) AS avg_age,               -- Average Age
    MIN(created_at) AS earliest_reg    -- Earliest registration date
FROM users
WHERE status = 'active'                -- Count only active users
  AND email_verified = TRUE            -- Email verified
  AND created_at >= '2025-01-01';      -- Registered after 2025
▶ جرّب الكود

6. الكلمات المفتاحية والكلمات المحجوزة

(1) ما هي الكلمة المفتاحية؟

الكلمات الرئيسية هي كلمات لها معانٍ خاصة في لغة SQL، مثل SELECT وFROM وWHERE.

النوع الوصف مثال
الكلمة المفتاحية لها معنى خاص، ولكن يمكن استخدامها كمعرّف (يجب وضعها بين علامتي اقتباس مائلة) order، group
الكلمات المحجوزة لا يمكن استخدامها كمعرّفات (لا يُنصح باستخدامها حتى عند وضعها بين علامات الاقتباس المائلة) SELECT، TABLE

▶ مثال: التعامل مع تعارضات الكلمات المفتاحية

SQL
-- Error: order is a keyword
CREATE TABLE order (id INT);

-- Correct: Enclose in backticks
CREATE TABLE `order` (id INT);

-- Better: Avoid using keywords as table names
CREATE TABLE orders (id INT);
▶ جرّب الكود

7. قواعد تسمية المعرّفات

(1) قواعد تسمية الملفات

القاعدة الوصف مثال
نطاق الأحرف الأحرف والأرقام وعلامات التسطير user_name
الحرف الأول يجب أن يكون حرفًا أو شرطة سفلية 1user
الحد الأقصى للطول 64 حرفًا كحد أقصى
التمييز بين الأحرف الكبيرة والصغيرة نظام ويندوز لا يميز بين الأحرف الكبيرة والصغيرة، بينما نظام لينكس يميز بينها Usersusers (لينكس)
كلمة محجوزة تجنب استخدامها order ❌ → orders

(2) قواعد التسمية الموصى بها

النمط المثال التوصية
snake_case user_name، order_id ⭐⭐⭐
camelCase userName، orderId ⭐⭐
PascalCase UserName، OrderId
💡 نصيحة: يوصي مجتمع MySQL باستخدام snake_case، وهو ما يتوافق مع أسلوب التوثيق الرسمي.

▶ مثال: الممارسات الجيدة في تسمية الملفات

SQL
-- Good Naming Practices
CREATE TABLE user_orders (
    id INT PRIMARY KEY,
    user_id INT,
    order_number VARCHAR(20),
    total_amount DECIMAL(10,2),
    created_at TIMESTAMP
);

-- Poor Naming
CREATE TABLE t1 (
    c1 INT,
    c2 VARCHAR(20),
    c3 DECIMAL(10,2)
);
▶ جرّب الكود

8. إرشادات لكتابة عبارات SQL

(1) إرشادات التنسيق

SQL
-- Recommended Format: Capitalize keywords, one field per line
SELECT 
    first_name,
    last_name,
    salary
FROM employees
WHERE department = 'Engineering'
ORDER BY salary DESC
LIMIT 10;

(2) أهمية الفاصلة المنقوطة

SQL
-- A semicolon is a statement terminator.
SELECT * FROM users;  -- Statement 1
SELECT * FROM orders; -- Statement 2

-- Multiple statements must be separated by semicolons when executed.


❓ أسئلة شائعة

س هل يجب كتابة عبارات SQL بأحرف كبيرة؟
ج لا، ليس من الضروري ذلك، ولكن يُنصح بكتابة الكلمات المفتاحية (SELECT/FROM/WHERE) بأحرف كبيرة لتحسين قابلية القراءة. لا يميز MySQL بين الأحرف الكبيرة والصغيرة.
س أيهما أفضل، * أم حقل محدد؟
ج نوصي باستخدام حقل محدد في بيئات الإنتاج (أداء أفضل، ودلالات أوضح). يمكنك استخدام * خلال مرحلة التعلم.
س هل تؤثر تعليقات SQL على الأداء؟
ج لا. يتجاهل محلل MySQL التعليقات، ولا يتم تنفيذها.
س هل يمكن استخدام الأحرف الصينية في أسماء الجداول أو أسماء الحقول؟
ج من الناحية الفنية، نعم (يلزم استخدام علامات الاقتباس المائلة)، لكن يُنصح بشدة بعدم القيام بذلك. استخدم اللغة الإنجليزية user_name بدلاً من 用户名.
س أيهما أكثر خطورة، DDL أم DML؟
ج DDL (DROP/ALTER) أكثر خطورة — فحذف الجدول يؤدي إلى حذف جميع بياناته، وقد يؤثر تعديل بنية الجدول على التطبيق. تأكد من عمل نسخة احتياطية من بياناتك قبل تنفيذ هذه العمليات.

📖 ملخص


📝 تمارين

  1. سؤال أساسي (درجة الصعوبة ⭐): اكتب عبارة DDL لإنشاء الجدول students، الذي يتضمن الحقول id (المفتاح الأساسي)، و name (غير فارغ)، و age، و grade.

  2. سؤال متقدم (درجة الصعوبة ⭐⭐): اكتب جملة SELECT لاسترداد الموظفين من الجدول employees الذين يزيد راتبهم عن 5,000 والذين ينتمون إلى قسم «المبيعات»، مرتبةً حسب الراتب بترتيب تنازلي، مع عرض أول 5 صفوف فقط.

  3. تحدي (الصعوبة: ⭐⭐⭐): اكتب معاملة كاملة تنقل مبلغ 100 يوان من الحساب «أ» إلى الحساب «ب»، على أن تتضمن بداية المعاملة، وعبارتي «UPDATE»، وعمليتي «commit» أو «rollback».

Web-Tutorial.com

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

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

100%