MySQL: عمليات قاعدة بيانات MySQL وتكوين مجموعات الأحرف

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

قاعدة البيانات هي وعاء لتخزين البيانات — ويُعد العمل مع قاعدة البيانات الخطوة الأولى في استخدام MySQL.

سيُعلمك هذا الدرس كيفية تنفيذ عمليات CRUD على قواعد البيانات وتهيئة مجموعات الأحرف.

100%
graph TB
    A[Database Operations] --> B[CREATE DATABASE<br/>Create a Database]
    A --> C[SHOW DATABASES<br/>View Database]
    A --> D[USE<br/>Select a Database]
    A --> E[ALTER DATABASE<br/>Modify the character set]
    A --> F[DROP DATABASE<br/>Delete the database]
    B --> B1[Specify a character set utf8mb4]
    E --> E1[Modify the character set/Sorting Rules]

1. ما ستتعلمه



2. قصة حقيقية عن موقع إلكتروني متعدد اللغات

(1) المشكلة: أحرف صينية مشوشة

قام أحد المطورين بإنشاء قاعدة بيانات للتجارة الإلكترونية وأدخل فيها أسماء منتجات باللغة الصينية:

SQL
INSERT INTO products (name) VALUES ('iPhone');
SELECT * FROM products;

النتيجة: يتم عرض name على أنه ??? أو أحرف مشوشة.

السبب: مجموعة الأحرف الافتراضية لقاعدة البيانات هي latin1، وهي لا تدعم اللغة الصينية.

(2) حل لـ utf8mb4

SQL
-- Specify utf8mb4 character set when creating the database
CREATE DATABASE ecommerce
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

المزايا: يدعم جميع أحرف يونيكود، بما في ذلك الأحرف الصينية واليابانية والكورية والرموز التعبيرية.

مجموعة الأحرف النطاق المدعوم مستوى التوصية
latin1 أحرف أوروبا الغربية
utf8 الترميز الأساسي متعدد اللغات (لا يدعم الأحرف المكونة من 4 بايت) ⚠️
utf8mb4 يونيكود كامل (بما في ذلك الرموز التعبيرية) ⭐⭐⭐


3. إنشاء قاعدة بيانات

(1) قواعد النحو الأساسية

SQL
CREATE DATABASE [IF NOT EXISTS] database_name
[CHARACTER SET charset_name]
[COLLATE collation_name];

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

SQL
-- The Simplest Way to Create
CREATE DATABASE mydb;

-- Create it if it doesn't exist (Recommended)
CREATE DATABASE IF NOT EXISTS mydb;

-- Specify a character set (Recommended)
CREATE DATABASE IF NOT EXISTS mydb
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

-- Creating an E-commerce Database
CREATE DATABASE IF NOT EXISTS ecommerce
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
▶ جرّب الكود

الناتج:

TEXT 📖 للعرض فقط
Query OK, 1 row affected (0.01 sec)


4. عرض قاعدة البيانات

▶ مثال: عرض جميع قواعد البيانات

SQL
-- View All Databases
SHOW DATABASES;

-- View the statement used to create the database
SHOW CREATE DATABASE mydb;

-- View the currently used database
SELECT DATABASE();
▶ جرّب الكود

الناتج:

TEXT 📖 للعرض فقط
+--------------------+
| Database           |
+--------------------+
| ecommerce          |
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)


5. اختيار قاعدة بيانات

▶ مثال: الأمر USE

SQL
-- Select a Database
USE ecommerce;

-- Verify the current database
SELECT DATABASE();
▶ جرّب الكود

الناتج:

TEXT 📖 للعرض فقط
+------------+
| DATABASE() |
+------------+
| ecommerce  |
+------------+


6. تعديل قاعدة البيانات

▶ مثال: تغيير مجموعة الأحرف

SQL
-- Modify the Database Character Set
ALTER DATABASE mydb
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

-- Verify Changes
SHOW CREATE DATABASE mydb;
▶ جرّب الكود

الناتج:

TEXT 📖 للعرض فقط
+----------+------------------------------------------------------------------------------------------+
| Database | Create Database                                                                          |
+----------+------------------------------------------------------------------------------------------+
| mydb     | CREATE DATABASE `mydb` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */ |
+----------+------------------------------------------------------------------------------------------+


7. حذف قاعدة البيانات

▶ مثال: حذف قاعدة بيانات

SQL
-- Delete the database
DROP DATABASE mydb;

-- Secure Deletion (If it exists)
DROP DATABASE IF EXISTS mydb;
▶ جرّب الكود
⚠️ ملاحظة: سيؤدي حذف قاعدة البيانات إلى حذف جميع الجداول والبيانات الموجودة فيها نهائيًا، ولا يمكن التراجع عن هذا الإجراء! تأكد من تأكيد الحذف أو عمل نسخة احتياطية من بياناتك قبل المتابعة.



8. مجموعات الأحرف وقواعد الفرز

(1) مجموعات الأحرف الشائعة

مجموعة الأحرف طول البايت الأحرف المدعومة حالات الاستخدام
ASCII 1 الإنجليزية + الأرقام سيناريوهات باللغة الإنجليزية بالكامل
latin1 1 أحرف أوروبا الغربية التوافق مع الأنظمة القديمة
utf8 1-3 الترميز الأساسي متعدد اللغات التوافق مع الإصدارات السابقة
utf8mb4 1-4 يونيكود كامل الإعداد الافتراضي الموصى به

(2) قواعد الفرز

تحدد قواعد الفرز كيفية مقارنة السلاسل وترتيبها.

قاعدة الفرز الوصف التمييز بين الأحرف الكبيرة والصغيرة
utf8mb4_general_ci للأغراض العامة، سريع لا يميز بين الأحرف الكبيرة والصغيرة
utf8mb4_unicode_ci دقيق، يدعم لغات متعددة لا يميز بين الأحرف الكبيرة والصغيرة
utf8mb4_bin المقارنة الثنائية التمييز بين الأحرف الكبيرة والصغيرة
💡 نصيحة: يشير _ci إلى المقارنة التي لا تراعي تمييز الأحرف الكبيرة والصغيرة، بينما يشير _bin إلى المقارنة الثنائية (التي تراعي تمييز الأحرف الكبيرة والصغيرة).

▶ مثال: عرض مجموعات الأحرف

SQL
-- View All Character Sets
SHOW CHARACTER SET;

-- View All Sorting Rules
SHOW COLLATION LIKE 'utf8mb4%';

-- View the server's default character set
SHOW VARIABLES LIKE 'character_set_server';

-- View the database character set
SHOW VARIABLES LIKE 'character_set_database';
▶ جرّب الكود

الناتج:

TEXT 📖 للعرض فقط
+--------------------------+-----------------------------------------------+
| Variable_name            | Value                                         |
+--------------------------+-----------------------------------------------+
| character_set_server     | utf8mb4                                       |
+--------------------------+-----------------------------------------------+


9. النسخ الاحتياطي لقاعدة البيانات واستعادتها

▶ مثال: النسخ الاحتياطي باستخدام mysqldump

BASH
# Backing Up a Single Database
mysqldump -u root -p mydb > mydb_backup.sql

# Back up all databases
mysqldump -u root -p --all-databases > all_backup.sql

# Back up only the table structure
mysqldump -u root -p --no-data mydb > mydb_schema.sql

# Back Up a Specific Table
mysqldump -u root -p mydb users orders > tables_backup.sql

▶ مثال: استعادة قاعدة بيانات

BASH
# Restore from a backup file
mysql -u root -p mydb < mydb_backup.sql

# Restore from the MySQL command line
mysql> SOURCE /path/to/mydb_backup.sql;


❓ أسئلة شائعة

س ما الفرق بين utf8 و utf8mb4؟
ج يستخدم utf8 3 بايت كحد أقصى ولا يدعم الأحرف المكونة من 4 بايت مثل الرموز التعبيرية. أما utf8mb4 فهو تنسيق UTF-8 الكامل؛ ويُنصح باستخدام utf8mb4 دائمًا.
س هل يمكنني تغيير اسم قاعدة البيانات؟
ج لا يدعم MySQL إعادة تسمية قاعدة البيانات بشكل مباشر. يمكنك إنشاء قاعدة بيانات جديدة، ونقل الجداول إليها، ثم حذف قاعدة البيانات القديمة.
س كيف يمكنني التحقق من حجم قاعدة البيانات؟
ج قم بتشغيل الاستعلام information_schema:SELECT table_schema, ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS size_mb FROM information_schema.tables GROUP BY table_schema;
س ما الفرق بين DROP DATABASE و TRUNCATE DATABASE؟
ج تقوم DROP بحذف قاعدة البيانات بأكملها (المخطط والبيانات)، بينما تقوم TRUNCATE بمسح البيانات فقط مع الاحتفاظ بالمخطط. (لا يتوفر في MySQL أمر TRUNCATE DATABASE؛ لذا يجب استخدام TRUNCATE على كل جدول على حدة.)
س كيف يمكنني تصحيح مجموعة أحرف غير صحيحة؟
ج استخدم ALTER DATABASE لتغيير مجموعة أحرف قاعدة البيانات، واستخدم ALTER TABLE لتغيير مجموعة أحرف الجدول، واستخدم CONVERT TO لتحويل البيانات الموجودة.

📖 ملخص


📝 تمارين

  1. المسألة الأساسية (مستوى الصعوبة ⭐): أنشئ قاعدة بيانات باسم school باستخدام مجموعة الأحرف utf8mb4 وقواعد الترتيب utf8mb4_unicode_ci.

  2. تمرين متقدم (مستوى الصعوبة ⭐⭐): راجع بيان إنشاء قاعدة البيانات school للتأكد من أن مجموعة الأحرف قد تم تكوينها بشكل صحيح. بعد ذلك، أنشئ جدولًا تجريبيًّا وأدخل بيانات تحتوي على رموز تعبيرية للتحقق من دعمها.

  3. التحدي (الصعوبة: ⭐⭐⭐): اكتب برنامجًا نصيًّا للنسخ الاحتياطي لنسخ قاعدة البيانات school احتياطيًّا إلى الدليل backup/، بحيث تتضمن أسماء الملفات التاريخ (على سبيل المثال، school_20260703.sql).

Web-Tutorial.com

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

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

100%