تعد استعلامات SQL الفرعية ميزات قيمة تمكننا من تضمين استعلام واحد داخل استعلام آخر مما يضيف المزيد من الأهمية لاسترداد البيانات ومعالجتها بطريقة معقدة. يتم استخدامه لإعداد جداول مؤقتة أو نتائج وسيطة ليتم استخدامها لاحقًا بواسطة الاستعلام الخارجي.
استعلام فرعي في جملة FROM
يمكن استخدام عبارة FROM لتحديد تعبير استعلام فرعي في SQL. يتم بعد ذلك استخدام العلاقة التي ينتجها الاستعلام الفرعي كعلاقة جديدة يتم تطبيق الاستعلام الخارجي عليها لمزيد من العمليات. الاستعلامات الفرعية فيFROMيتم استخدام العبارة عندما نحتاج إلى إنشاء مجموعة بيانات مؤقتة غير موجودة في أي جدول فعلي. يمكن أن يكون هذا مفيدًا للغاية عند العمل مع مجموعات البيانات المعقدة.
أوامر SQL DDL
لا يمكن استخدام متغيرات الارتباط من الجداول المشار إليها في عبارة FROM الخاصة بالاستعلام الخارجي مباشرةً داخل الاستعلامات الفرعية الموجودة في عبارة FROM. فيما يلي صيغتان لاستخدام الاستعلام الفرعي في جملة FROM المستخدمة في سيناريوهات مختلفة.
1. استعلام فرعي بسيط فيFROMبند:
حدد العمود 1 العمود 2
من (SELECT column_x AS C1 column_y FROM table WHERE condition) AS subquery_table
أين External_condition؛
2. استعلام فرعي فيFROMجملة معJOIN:
حدد العمود 1 العمود 2
SQL اختر من جداول متعددةمن (SELECT column_x AS C1 column_y FROM table WHERE PREDICATE_X) AS table2
الانضمام إلى الجدول 1 على table2.some_column = table1.some_column
حيث المسند؛
حدود:
- استعلام فرعي : الاستعلام الداخلي محاط بين قوسين. يقوم باسترداد البيانات التي ستكون بمثابة جدول مؤقت.
- الاسم المستعار : يجب إعطاء الاستعلام الفرعي اسمًا مستعارًا (
subquery_table) ليتم الرجوع إليها في الاستعلام الخارجي. - الاستعلام الخارجي : يمكن للاستعلام الخارجي بعد ذلك العمل مع هذا الجدول المؤقت الذي تم إنشاؤه بواسطة الاستعلام الفرعي الذي يقوم بتطبيق عوامل التصفية أو إجراء عمليات أخرى.
كيفية عمل الاستعلامات الفرعية في جملة FROM
- تقييم الاستعلام الفرعي : يتم تقييم الاستعلام الفرعي الموجود في جملة from أولاً ثم يتم تخزين نتائج التقييم في علاقة مؤقتة جديدة.
- الاستعلام الخارجي : بعد تنفيذ الاستعلام الفرعي وإرجاع مجموعة بيانات، يتم تقييم الاستعلام الخارجي عن طريق تحديد تلك المجموعات فقط من العلاقة المؤقتة التي تفي بالمسند في عبارة المكان الخاصة بالاستعلام الخارجي.
مثال على استخدام الاستعلام الفرعي في جملة FROM
دعونا نناقش بعض الأمثلة الواقعية لفهم كيفية عمل الاستعلامات الفرعية في جملة FROM عمليًا. هنا لدينا جدولين مدرب جدول يحتوي على معلومات عن المعلمين بما في ذلك رواتبهم وقسمهم. واحد آخر هو قسم جدول يحتوي على معلومات حول الأقسام المختلفة بما في ذلك ميزانية القسم.
حدد SQL باسم
مدرب طاولة
| معرف المدرب | اسم | قسم | مرتب |
|---|---|---|---|
| 44547 | سميث | علوم الكمبيوتر | 95000 |
| 44541 | فاتورة | كهربائي | 55000 |
| 47778 | وحيد | العلوم الإنسانية | 44000 |
| 48147 | إريك | ميكانيكية | 80000 |
| 411547 | بلسم | تكنولوجيا المعلومات | 65000 |
| 48898 | جينا | مدني | 50000 |
قسم طاولة
| اسم القسم | ميزانية |
|---|---|
| علوم الكمبيوتر | 100000 |
| كهربائي | 80000 |
| العلوم الإنسانية | 50000 |
| ميكانيكية | 40000 |
| تكنولوجيا المعلومات | 90000 |
| مدني | 60000 |
مثال 1: ابحث عن جميع الأساتذة الذين تزيد رواتبهم عن متوسط ميزانية جميع الأقسام.
في هذا المثال سوف نستخدم استعلامًا فرعيًا في جملة FROM لحساب متوسط الميزانية لجميع الأقسام ثم إجراء المقارنة مع رواتب المعلمين.
استفسار:
SELECT I.InstructorID I.Name I.Department I.Salary
FROM (SELECT AVG(Budget) AS averageBudget FROM Department) AS BUDGET
Instructor AS I
WHERE I.Salary > BUDGET.averageBudget;
الإخراج
| معرف المدرب | اسم | قسم | مرتب |
|---|---|---|---|
| 44547 | سميث | علوم الكمبيوتر | 95000 |
| 48147 | إريك | ميكانيكية | 80000 |
توضيح:
القائمة مقابل المجموعة في Java
- متوسط ميزانية جميع الأقسام من علاقة القسم هو 70000.
- يعد Erik وSmith هما المدربان الوحيدان في علاقة المعلم الذي يزيد راتبه عن 70000، وبالتالي فهما موجودان في علاقة الإخراج.
لماذا نستخدم الاستعلامات الفرعية في جملة FROM؟
هناك مزايا مختلفة لاستخدام الاستعلامات الفرعية في جملة FROM كما هو موضح أدناه:
- تبسيط : يمكنهم تبسيط الاستعلامات المعقدة عن طريق تقسيمها إلى أجزاء أصغر يسهل التحكم فيها. لا تحتاج إلى إنشاء جداول مؤقتة بشكل صريح في قاعدة البيانات الخاصة بك.
- تحسين إمكانية القراءة : استخدام الاستعلامات الفرعية في جملة FROM يجعل الاستعلام أكثر قابلية للقراءة لأنه يقسم > المرونة : تمكنك الاستعلامات الفرعية من تنفيذ العمليات التي قد تكون غير ملائمة، مثل التجميعات أو التصفية فيما يتعلق بمجموعات البيانات الأخرى دون الحاجة إلى إنشاء جداول وسيطة.
خاتمة
تتيح لنا الاستعلامات الفرعية الموجودة في جملة FROM التحديد مجموعات النتائج المؤقتة التي قد يتم استخدامها من خلال الاستعلامات الخارجية. إنها تجعل عمليات SQL المعقدة أسهل وتعزز إمكانية قراءة الاستعلام وتوفر المرونة في تصفية البيانات وتجميعها. إن معرفة كيفية استخدام الاستعلامات الفرعية ضمن جملة FROM هي مهارة أساسية لكل ممارس في SQL خاصةً عند التعامل مع قواعد البيانات المعقدة أو عندما يتعين عليك تنفيذ تحليل البيانات المعقدة.
إنشاء اختبار