# أمثلة 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. **الصيانة**
   - جدولة نسخ احتياطية منتظمة
   - تكوين النسخ المتماثل للتوافر العالي
   - مراقبة الأداء واستخدام الموارد بانتظام
