MySQL: عمليات قاعدة بيانات MySQL وتكوين مجموعات الأحرف
آخر تحديث: 2026-08-26
قاعدة البيانات هي وعاء لتخزين البيانات — ويُعد العمل مع قاعدة البيانات الخطوة الأولى في استخدام MySQL.
سيُعلمك هذا الدرس كيفية تنفيذ عمليات CRUD على قواعد البيانات وتهيئة مجموعات الأحرف.
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) المشكلة: أحرف صينية مشوشة
قام أحد المطورين بإنشاء قاعدة بيانات للتجارة الإلكترونية وأدخل فيها أسماء منتجات باللغة الصينية:
INSERT INTO products (name) VALUES ('iPhone');
SELECT * FROM products;
النتيجة: يتم عرض name على أنه ??? أو أحرف مشوشة.
السبب: مجموعة الأحرف الافتراضية لقاعدة البيانات هي latin1، وهي لا تدعم اللغة الصينية.
(2) حل لـ utf8mb4
-- Specify utf8mb4 character set when creating the database
CREATE DATABASE ecommerce
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
المزايا: يدعم جميع أحرف يونيكود، بما في ذلك الأحرف الصينية واليابانية والكورية والرموز التعبيرية.
| مجموعة الأحرف | النطاق المدعوم | مستوى التوصية |
|---|---|---|
| latin1 | أحرف أوروبا الغربية | ❌ |
| utf8 | الترميز الأساسي متعدد اللغات (لا يدعم الأحرف المكونة من 4 بايت) | ⚠️ |
| utf8mb4 | يونيكود كامل (بما في ذلك الرموز التعبيرية) | ⭐⭐⭐ |
3. إنشاء قاعدة بيانات
(1) قواعد النحو الأساسية
CREATE DATABASE [IF NOT EXISTS] database_name
[CHARACTER SET charset_name]
[COLLATE collation_name];
▶ مثال: إنشاء قاعدة بيانات
-- 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;
الناتج:
Query OK, 1 row affected (0.01 sec)
4. عرض قاعدة البيانات
▶ مثال: عرض جميع قواعد البيانات
-- View All Databases
SHOW DATABASES;
-- View the statement used to create the database
SHOW CREATE DATABASE mydb;
-- View the currently used database
SELECT DATABASE();
الناتج:
+--------------------+
| Database |
+--------------------+
| ecommerce |
| information_schema |
| mydb |
| mysql |
| performance_schema |
| sys |
+--------------------+
6 rows in set (0.00 sec)
5. اختيار قاعدة بيانات
▶ مثال: الأمر USE
-- Select a Database
USE ecommerce;
-- Verify the current database
SELECT DATABASE();
الناتج:
+------------+
| DATABASE() |
+------------+
| ecommerce |
+------------+
6. تعديل قاعدة البيانات
▶ مثال: تغيير مجموعة الأحرف
-- Modify the Database Character Set
ALTER DATABASE mydb
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- Verify Changes
SHOW CREATE DATABASE mydb;
الناتج:
+----------+------------------------------------------------------------------------------------------+
| Database | Create Database |
+----------+------------------------------------------------------------------------------------------+
| mydb | CREATE DATABASE `mydb` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */ |
+----------+------------------------------------------------------------------------------------------+
7. حذف قاعدة البيانات
▶ مثال: حذف قاعدة بيانات
-- 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 إلى المقارنة الثنائية (التي تراعي تمييز الأحرف الكبيرة والصغيرة).
▶ مثال: عرض مجموعات الأحرف
-- 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';
الناتج:
+--------------------------+-----------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------+
| character_set_server | utf8mb4 |
+--------------------------+-----------------------------------------------+
9. النسخ الاحتياطي لقاعدة البيانات واستعادتها
▶ مثال: النسخ الاحتياطي باستخدام mysqldump
# 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
▶ مثال: استعادة قاعدة بيانات
# 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;
❓ أسئلة شائعة
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;ALTER DATABASE لتغيير مجموعة أحرف قاعدة البيانات، واستخدم ALTER TABLE لتغيير مجموعة أحرف الجدول، واستخدم CONVERT TO لتحويل البيانات الموجودة.📖 ملخص
- CREATE DATABASE: إنشاء قاعدة بيانات؛ نوصي باستخدام
IF NOT EXISTSوutf8mb4 - الاستخدام: حدد قاعدة البيانات الحالية؛ حيث ستُجرى جميع العمليات اللاحقة في تلك القاعدة.
- SHOW DATABASES لعرض جميع قواعد البيانات، SHOW CREATE DATABASE لعرض عبارة الإنشاء
- ALTER DATABASE يُعدِّل خصائص قاعدة البيانات (مجموعة الأحرف، ترتيب الأحرف)
- DROP DATABASE يحذف قاعدة البيانات. تأكد من وجود نسخة احتياطية قبل المتابعة.
- utf8mb4 هي مجموعة الأحرف الموصى بها؛ فهي تدعم مجموعة أحرف يونيكود الكاملة والرموز التعبيرية
- يُستخدم mysqldump لعمل نسخ احتياطية لقاعدة البيانات، ويُستخدم mysql < file.sql لاستعادة البيانات
📝 تمارين
-
المسألة الأساسية (مستوى الصعوبة ⭐): أنشئ قاعدة بيانات باسم
schoolباستخدام مجموعة الأحرفutf8mb4وقواعد الترتيبutf8mb4_unicode_ci. -
تمرين متقدم (مستوى الصعوبة ⭐⭐): راجع بيان إنشاء قاعدة البيانات
schoolللتأكد من أن مجموعة الأحرف قد تم تكوينها بشكل صحيح. بعد ذلك، أنشئ جدولًا تجريبيًّا وأدخل بيانات تحتوي على رموز تعبيرية للتحقق من دعمها. -
التحدي (الصعوبة: ⭐⭐⭐): اكتب برنامجًا نصيًّا للنسخ الاحتياطي لنسخ قاعدة البيانات
schoolاحتياطيًّا إلى الدليلbackup/، بحيث تتضمن أسماء الملفات التاريخ (على سبيل المثال،school_20260703.sql).