SQL Reference
```wiki
مرجع SQL
مقدمة
SQL (Structured Query Language) هي لغة قياسية لإدارة البيانات في قواعد البيانات العلائقية. تُستخدم على نطاق واسع في تطبيقات الويب، والتحليلات المالية، وحتى في منصات الخيارات الثنائية لتحليل بيانات التداول. هذا المرجع يهدف إلى تقديم نظرة عامة شاملة لـ SQL للمبتدئين، مع التركيز على الاستخدامات العملية في سياق تحليل بيانات الخيارات الثنائية. سنغطي أساسيات اللغة، بما في ذلك استعلامات البيانات، والتعديلات، والوظائف الشائعة.
أساسيات SQL
قواعد البيانات والجداول
قاعدة البيانات هي مجموعة منظمة من البيانات. تتكون قاعدة البيانات من جداول، وكل جدول يحتوي على صفوف وأعمدة. الصفوف تمثل سجلات فردية، والأعمدة تمثل سمات تلك السجلات. فكر في جدول كمجموعة بيانات منظمة في جدول بيانات.
الاستعلامات (Queries)
الاستعلامات هي الطريقة التي نطلب بها البيانات من قاعدة البيانات. أبسط استعلام هو `SELECT`، والذي يسمح لنا باسترداد بيانات محددة من جدول.
بناء جملة SELECT الأساسي
```sql SELECT column1, column2, ... FROM table_name WHERE condition; ```
- `SELECT`: تحدد الأعمدة التي تريد استردادها.
- `FROM`: تحدد الجدول الذي تريد استرداد البيانات منه.
- `WHERE`: تحدد الشروط التي يجب أن تستوفيها السجلات المراد استردادها.
أمثلة
لنفترض أن لدينا جدولًا باسم `trades` يحتوي على الأعمدة التالية: `trade_id`, `asset_id`, `entry_time`, `expiry_time`, `amount`, `result`.
- استرداد جميع الأعمدة من جدول `trades`:
```sql SELECT * FROM trades; ```
- استرداد أعمدة `trade_id` و `result` فقط من جدول `trades`:
```sql SELECT trade_id, result FROM trades; ```
- استرداد جميع التداولات التي كانت النتيجة فيها "win":
```sql SELECT * FROM trades WHERE result = 'win'; ```
عوامل التشغيل (Operators)
عوامل المقارنة
تُستخدم عوامل المقارنة في جملة `WHERE` لتحديد الشروط. تتضمن:
- `=`: يساوي
- `<>` أو `!=`: لا يساوي
- `>`: أكبر من
- `<`: أصغر من
- `>=`: أكبر من أو يساوي
- `<=`: أصغر من أو يساوي
العوامل المنطقية
تُستخدم العوامل المنطقية لدمج عدة شروط. تتضمن:
- `AND`: يجب أن يكون كلا الشرطين صحيحين.
- `OR`: يجب أن يكون أحد الشرطين صحيحين على الأقل.
- `NOT`: يعكس الشرط.
أمثلة
- استرداد التداولات التي كانت النتيجة فيها "win" والمبلغ أكبر من 100:
```sql SELECT * FROM trades WHERE result = 'win' AND amount > 100; ```
- استرداد التداولات التي كانت النتيجة فيها "win" أو "loss":
```sql SELECT * FROM trades WHERE result = 'win' OR result = 'loss'; ```
- استرداد التداولات التي لم تكن النتيجة فيها "pending":
```sql SELECT * FROM trades WHERE NOT result = 'pending'; ```
الوظائف (Functions)
الوظائف المضمنة
SQL يوفر العديد من الوظائف المضمنة لإجراء عمليات على البيانات. تشمل:
- `COUNT()`: تحسب عدد الصفوف.
- `SUM()`: تحسب مجموع القيم في عمود.
- `AVG()`: تحسب متوسط القيم في عمود.
- `MIN()`: تجد الحد الأدنى للقيمة في عمود.
- `MAX()`: تجد الحد الأقصى للقيمة في عمود.
- `NOW()`: ترجع التاريخ والوقت الحاليين.
أمثلة
- حساب عدد التداولات في جدول `trades`:
```sql SELECT COUNT(*) FROM trades; ```
- حساب متوسط مبلغ التداول في جدول `trades`:
```sql SELECT AVG(amount) FROM trades; ```
- إيجاد الحد الأقصى لمبلغ التداول في جدول `trades`:
```sql SELECT MAX(amount) FROM trades; ```
التعديلات (Modifications)
INSERT
تُستخدم جملة `INSERT` لإضافة صفوف جديدة إلى جدول.
```sql INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...); ```
UPDATE
تُستخدم جملة `UPDATE` لتعديل الصفوف الموجودة في جدول.
```sql UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition; ```
DELETE
تُستخدم جملة `DELETE` لحذف الصفوف من جدول.
```sql DELETE FROM table_name WHERE condition; ```
أمثلة
- إضافة تداول جديد إلى جدول `trades`:
```sql INSERT INTO trades (asset_id, entry_time, expiry_time, amount, result) VALUES ('EURUSD', '2023-10-27 10:00:00', '2023-10-27 10:05:00', 50, 'win'); ```
- تحديث نتيجة التداول `trade_id` بقيمة 123 إلى "loss":
```sql UPDATE trades SET result = 'loss' WHERE trade_id = 123; ```
- حذف جميع التداولات التي كانت النتيجة فيها "pending":
```sql DELETE FROM trades WHERE result = 'pending'; ```
فرز وترتيب النتائج
ORDER BY
تُستخدم جملة `ORDER BY` لفرز النتائج بترتيب تصاعدي أو تنازلي.
```sql SELECT column1, column2, ... FROM table_name ORDER BY column1 ASC | DESC; ```
- `ASC`: ترتيب تصاعدي (افتراضي).
- `DESC`: ترتيب تنازلي.
أمثلة
- استرداد جميع التداولات من جدول `trades` مرتبة حسب `entry_time` بترتيب تصاعدي:
```sql SELECT * FROM trades ORDER BY entry_time ASC; ```
- استرداد جميع التداولات من جدول `trades` مرتبة حسب `amount` بترتيب تنازلي:
```sql SELECT * FROM trades ORDER BY amount DESC; ```
تجميع البيانات (Grouping)
GROUP BY
تُستخدم جملة `GROUP BY` لتجميع الصفوف ذات القيم المتشابهة في عمود واحد أو أكثر. غالبًا ما تُستخدم مع الوظائف التجميعية (COUNT, SUM, AVG, MIN, MAX).
HAVING
تُستخدم جملة `HAVING` لتصفية المجموعات التي تم إنشاؤها بواسطة `GROUP BY`.
أمثلة
- حساب عدد التداولات لكل `asset_id` في جدول `trades`:
```sql SELECT asset_id, COUNT(*) AS total_trades FROM trades GROUP BY asset_id; ```
- حساب متوسط مبلغ التداول لكل `asset_id` في جدول `trades`، فقط بالنسبة للأصول التي لديها أكثر من 10 تداولات:
```sql SELECT asset_id, AVG(amount) AS average_amount FROM trades GROUP BY asset_id HAVING COUNT(*) > 10; ```
الربط بين الجداول (Joins)
INNER JOIN
يُرجع فقط الصفوف التي تتطابق في كلا الجدولين.
LEFT JOIN
يُرجع جميع الصفوف من الجدول الأيسر والصفوف المطابقة من الجدول الأيمن. إذا لم يكن هناك تطابق، فسيتم إرجاع `NULL` للقيم من الجدول الأيمن.
RIGHT JOIN
يُرجع جميع الصفوف من الجدول الأيمن والصفوف المطابقة من الجدول الأيسر. إذا لم يكن هناك تطابق، فسيتم إرجاع `NULL` للقيم من الجدول الأيسر.
أمثلة
لنفترض أن لدينا جدولين: `trades` و `assets`. جدول `assets` يحتوي على معلومات حول الأصول (`asset_id`, `asset_name`).
- استرداد `trade_id` و `asset_name` من جدول `trades` و `assets` حيث يتطابق `asset_id`:
```sql SELECT trades.trade_id, assets.asset_name FROM trades INNER JOIN assets ON trades.asset_id = assets.asset_id; ```
استخدام SQL في تحليل الخيارات الثنائية
SQL يمكن أن يكون أداة قوية لتحليل بيانات التداول في الخيارات الثنائية. يمكن استخدامه لـ:
- حساب معدل الفوز (Win Rate)
- تحديد الأصول الأكثر ربحية.
- تحليل الأداء بمرور الوقت.
- تحديد الأنماط في بيانات التداول.
- تقييم فعالية استراتيجيات التداول المختلفة مثل استراتيجية مارتينجال، استراتيجية فيبوناتشي، استراتيجية الاختراق، استراتيجية المتوسطات المتحركة، استراتيجية RSI، استراتيجية MACD، استراتيجية بولينجر باند، استراتيجية الدعم والمقاومة، استراتيجية التداول العكسي، استراتيجية التداول المتأرجح.
- تحديد العلاقة بين حجم التداول ونجاح التداول باستخدام تحليل حجم التداول.
- تحديد الاتجاهات في السوق.
- تطبيق التحليل الفني باستخدام مؤشرات مثل مؤشر القوة النسبية، مؤشر الماكد، مؤشر ستوكاستيك.
- تقييم أداء استراتيجية 60 ثانية و استراتيجية 5 دقائق.
- تحليل الشموع اليابانية وتأثيرها على نتائج التداول.
- تحديد أفضل أوقات التداول بناءً على بيانات تاريخية.
- تحسين إدارة المخاطر من خلال تحليل الخسائر المحتملة.
- تحديد المستويات الرئيسية للدعم والمقاومة.
- استخدام أنماط الرسوم البيانية لتوقع تحركات الأسعار.
نصائح وأفضل الممارسات
- استخدم أسماء ذات معنى للجداول والأعمدة.
- استخدم التعليقات لشرح استعلاماتك.
- اختبر استعلاماتك على مجموعة بيانات صغيرة قبل تشغيلها على قاعدة بيانات كبيرة.
- استخدم الفهارس لتحسين أداء الاستعلامات.
- كن حذرًا عند استخدام جملة `DELETE`، حيث يمكن أن تؤدي إلى فقدان البيانات.
موارد إضافية
- [W3Schools SQL Tutorial](https://www.w3schools.com/sql/)
- [SQLZoo](https://sqlzoo.net/)
- [MySQL Tutorial](https://www.mysql-tutorial.com/)
روابط داخلية
- الخيارات الثنائية
- تحليل البيانات
- قاعدة البيانات العلائقية
- استعلام
- استراتيجية مارتينجال
- استراتيجية فيبوناتشي
- تحليل حجم التداول
- التحليل الفني
- مؤشر القوة النسبية
- إدارة المخاطر
```
ابدأ التداول الآن
سجّل في IQ Option (الحد الأدنى للإيداع 10 دولار) افتح حساباً في Pocket Option (الحد الأدنى للإيداع 5 دولار)
انضم إلى مجتمعنا
اشترك في قناة Telegram الخاصة بنا @strategybin لتصلك: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات اتجاهات السوق ✓ مواد تعليمية للمبتدئين