mysql-examples.md•11 kB
# أمثلة MySQL
*[English](../../en/examples/mysql-examples.md) | [中文](../../zh/examples/mysql-examples.md) | [Français](../../fr/examples/mysql-examples.md) | [Español](../../es/examples/mysql-examples.md) | العربية | [Русский](../../ru/examples/mysql-examples.md)*
يقدم هذا المستند أمثلة عملية للعمل مع قواعد بيانات MySQL باستخدام MCP Database Utilities.
## التكوين الأساسي
```yaml
connections:
my-mysql:
type: mysql
host: localhost
port: 3306
database: my_database
user: mysql_user
password: mysql_password
charset: utf8mb4 # موصى به للدعم الكامل لليونيكود
```
## العمليات الشائعة
### سرد الجداول
**أنت**: "اعرض جميع الجداول في قاعدة بيانات MySQL الخاصة بي."
**الذكاء الاصطناعي**: "إليك الجداول في قاعدة بيانات MySQL الخاصة بك:
- users
- products
- orders
- categories
- suppliers
- inventory"
### عرض بنية الجدول
**أنت**: "أظهر لي بنية جدول users."
**الذكاء الاصطناعي**: "جدول users له البنية التالية:
- id (INT, PRIMARY KEY, AUTO_INCREMENT)
- name (VARCHAR(100), NOT NULL)
- email (VARCHAR(100), NOT NULL, UNIQUE)
- created_at (DATETIME, NOT NULL, DEFAULT CURRENT_TIMESTAMP)
- last_login (DATETIME)
- status (ENUM('active', 'inactive', 'suspended'), DEFAULT 'active')
- role_id (INT, FOREIGN KEY references roles(id))"
### استعلام أساسي
**أنت**: "أظهر لي آخر 5 مستخدمين مسجلين."
**الذكاء الاصطناعي**: "إليك آخر 5 مستخدمين مسجلين:
| id | name | email | created_at |
|----|------|-------|------------|
| 42 | محمد أحمد | mohammed@example.com | 2023-11-25 14:32:15 |
| 41 | فاطمة علي | fatima@example.com | 2023-11-24 09:45:22 |
| 40 | أحمد محمود | ahmed@example.com | 2023-11-23 18:12:05 |
| 39 | سارة حسن | sara@example.com | 2023-11-22 11:30:47 |
| 38 | عمر خالد | omar@example.com | 2023-11-21 16:08:33 |"
## استعلامات متقدمة
### ربط الجداول
**أنت**: "أظهر لي آخر 3 طلبات مع معلومات العميل والمنتج."
**الذكاء الاصطناعي**: "إليك آخر 3 طلبات مع معلومات العميل والمنتج:
| order_id | order_date | customer_name | customer_email | product_name | price | quantity |
|----------|------------|---------------|----------------|--------------|-------|----------|
| 1042 | 2023-11-25 | محمد أحمد | mohammed@example.com | هاتف ذكي برو | 899.99 | 1 |
| 1041 | 2023-11-24 | سارة حسن | sara@example.com | سماعات لاسلكية | 129.50 | 2 |
| 1040 | 2023-11-23 | أحمد محمود | ahmed@example.com | حاسوب محمول | 1299.00 | 1 |"
### دوال التجميع
**أنت**: "ما هو إجمالي المبيعات حسب فئة المنتج لهذا الشهر؟"
**الذكاء الاصطناعي**: "إليك إجمالي المبيعات حسب فئة المنتج لهذا الشهر:
| category | total_sales |
|----------|-------------|
| إلكترونيات | 28,456.75 |
| ملابس | 12,389.30 |
| منزل وحديقة | 9,876.50 |
| رياضة وترفيه | 7,654.25 |
| كتب ووسائط | 3,210.80 |"
### استخدام الاستعلامات الفرعية
**أنت**: "ما هم العملاء الذين أنفقوا أكثر من المتوسط هذا الشهر؟"
**الذكاء الاصطناعي**: "إليك العملاء الذين أنفقوا أكثر من المتوسط هذا الشهر:
| customer_id | name | email | total_spent | global_average |
|-------------|------|-------|-------------|----------------|
| 23 | فاطمة علي | fatima@example.com | 1,456.78 | 345.67 |
| 42 | محمد أحمد | mohammed@example.com | 1,245.50 | 345.67 |
| 15 | عمر خالد | omar@example.com | 987.25 | 345.67 |
| 31 | سارة حسن | sara@example.com | 876.30 | 345.67 |
| 8 | أحمد محمود | ahmed@example.com | 654.90 | 345.67 |"
## تحليل الأداء
### خطة تنفيذ الاستعلام
**أنت**: "اشرح خطة تنفيذ الاستعلام: SELECT * FROM orders JOIN customers ON orders.customer_id = customers.id WHERE orders.date > '2023-01-01'"
**الذكاء الاصطناعي**: "خطة تنفيذ الاستعلام:
```
+----+-------------+------------+------------+--------+---------------+---------+---------+----------------------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+------------+------------+--------+---------------+---------+---------+----------------------+------+----------+-------+
| 1 | SIMPLE | orders | NULL | range | idx_date | idx_date| 5 | NULL | 1250 | 100.00 | Using where |
| 1 | SIMPLE | customers | NULL | eq_ref | PRIMARY | PRIMARY | 4 | db.orders.customer_id | 1 | 100.00 | NULL |
+----+-------------+------------+------------+--------+---------------+---------+---------+----------------------+------+----------+-------+
```
هذا الاستعلام يستخدم:
1. مسح نطاقي على جدول 'orders' باستخدام الفهرس 'idx_date'
2. بحث بالمفتاح الأساسي في جدول 'customers' لكل صف مطابق من 'orders'
3. التقدير: سيتم فحص حوالي 1250 صفًا في جدول 'orders'"
### إحصائيات الجدول
**أنت**: "احصل على إحصائيات لجدول orders."
**الذكاء الاصطناعي**: "إحصائيات لجدول orders:
- عدد الصفوف: 15,423
- حجم الجدول: 4.2 ميجابايت
- متوسط حجم الصف: 285 بايت
- الفهارس:
* PRIMARY (id): 1.1 ميجابايت
* idx_customer_id (customer_id): 0.8 ميجابايت
* idx_date (date): 0.7 ميجابايت
* idx_status (status): 0.4 ميجابايت
- التجزئة: 2.3%
- آخر ANALYZE TABLE: 2023-11-20 08:15:32"
## ميزات خاصة بـ MySQL
### استخدام الإجراءات المخزنة
**أنت**: "هل يمكنك أن تريني كيفية استدعاء الإجراء المخزن 'get_client_orders'؟"
**الذكاء الاصطناعي**: "لاستدعاء الإجراء المخزن 'get_client_orders' الذي يسترجع جميع الطلبات لعميل محدد، يمكنك استخدام:
```sql
CALL get_client_orders(42);
```
النتيجة:
| order_id | date | amount | status |
|----------|------|--------|--------|
| 1042 | 2023-11-25 | 899.99 | تم التسليم |
| 987 | 2023-10-12 | 245.50 | تم التسليم |
| 856 | 2023-09-03 | 78.25 | تم التسليم |
| 743 | 2023-08-17 | 129.99 | تم التسليم |
هذا الإجراء المخزن يقبل معلمة client_id ويعيد جميع الطلبات المرتبطة بهذا العميل."
### استخدام العروض (Views)
**أنت**: "ما هي المعلومات المتاحة في العرض 'client_summary'؟"
**الذكاء الاصطناعي**: "العرض 'client_summary' يوفر ملخصًا لأنشطة كل عميل:
| client_id | name | email | total_orders | total_amount | last_order | loyalty_status |
|-----------|------|-------|--------------|--------------|------------|----------------|
| 42 | محمد أحمد | mohammed@example.com | 12 | 3,456.78 | 2023-11-25 | ذهبي |
| 23 | فاطمة علي | fatima@example.com | 8 | 2,345.67 | 2023-11-24 | فضي |
| 15 | عمر خالد | omar@example.com | 5 | 1,234.56 | 2023-11-20 | برونزي |
هذا العرض يجمع بيانات من جداول clients وorders وloyalty_program لتوفير نظرة عامة على نشاط كل عميل."
### استخدام الأحداث (Events)
**أنت**: "هل هناك أحداث مجدولة في قاعدة البيانات؟"
**الذكاء الاصطناعي**: "نعم، إليك الأحداث المجدولة في قاعدة البيانات:
1. **daily_sales_report**
- التكرار: يوميًا الساعة 23:00
- الوصف: ينشئ تقرير مبيعات يومي ويدرجه في جدول 'sales_reports'
2. **monthly_customer_cleanup**
- التكرار: اليوم الأول من كل شهر الساعة 02:00
- الوصف: يؤرشف العملاء غير النشطين لأكثر من 12 شهرًا
3. **hourly_inventory_check**
- التكرار: كل ساعة
- الوصف: يتحقق من مستويات المخزون وينشئ تنبيهات للمنتجات التي نفدت من المخزون"
## استكشاف الأخطاء وإصلاحها
### المشاكل الشائعة
1. **خطأ "Too many connections"**
- السبب: تم الوصول إلى الحد الأقصى من الاتصالات المتزامنة
- الحل: زيادة max_connections في my.cnf أو تحسين التطبيق لاستخدام مجمع اتصالات
2. **خطأ "Lock wait timeout exceeded"**
- السبب: معاملة تنتظر وقتًا طويلاً للحصول على قفل
- الحل: تحقق من المعاملات الطويلة أو المحظورة باستخدام `SHOW PROCESSLIST` وتحسين معاملاتك
3. **أداء بطيء**
- الأسباب المحتملة:
* استعلامات غير محسنة
* فهارس مفقودة
* تكوين خادم غير مناسب
- الحلول:
* استخدم EXPLAIN لتحليل الاستعلامات
* أضف فهارس مناسبة
* حسّن تكوين الخادم (innodb_buffer_pool_size، إلخ)
### أوامر تشخيصية مفيدة
```sql
-- عرض العمليات الجارية
SHOW PROCESSLIST;
-- التحقق من حالة الجداول
CHECK TABLE table_name;
-- تحسين جدول
OPTIMIZE TABLE table_name;
-- عرض متغيرات النظام
SHOW VARIABLES LIKE '%buffer%';
-- عرض إحصائيات الأداء
SHOW ENGINE INNODB STATUS;
```
## أفضل الممارسات
1. **الأمان**
- استخدم حسابات بأقل امتيازات
- قم بتفعيل SSL للاتصالات
- استخدم الاستعلامات المعدة مسبقًا لتجنب حقن SQL
2. **الأداء**
- قم بفهرسة الأعمدة المستخدمة بشكل متكرر في عبارات WHERE وJOIN وORDER BY
- تجنب SELECT * واختر فقط الأعمدة الضرورية
- استخدم EXPLAIN لتحليل وتحسين الاستعلامات
3. **الصيانة**
- جدولة نسخ احتياطية منتظمة
- تكوين النسخ المتماثل للتوافر العالي
- مراقبة الأداء واستخدام الموارد بانتظام