Latest web development tutorials

سكليتي فرعي

تم تضمين فرعي أو الاستعلامات المتداخلة أو الاستعلام الداخلي في الاستعلام جملة WHERE في الاستعلام سكليتي آخر.

استخدام الاستعلام الفرعي بإرجاع سيتم استخدام البيانات في الاستعلام الرئيسي كشرط لمواصلة تحديد البيانات التي يتم استردادها.

الاستعلامات الفرعية التي يمكن استخدامها مع SELECT، INSERT، UPDATE و DELETE قد تكون مصحوبة ببيانات مشغلي استخدام مثل =، <،>،> =، <=، IN، مثل بين.

وفيما يلي عدة قواعد فرعي التي يجب اتباعها:

  • يجب وضع الاستعلامات الفرعية بين قوسين.

  • يمكن أن يكون الاستعلام الفرعي جملة SELECT فقط عمود واحد، ما لم أعمدة متعددة في الاستعلام الرئيسي، ومقارنة عمود فرعي المحدد.

  • ORDER BY لا يمكن أن تستخدم في استعلام فرعي، على الرغم من أن الاستعلام الرئيسي يمكن استخدام ORDER BY. يمكنك استخدام GROUP BY في الاستعلامات الفرعية، يعمل نفس ORDER BY.

  • عودة فرعي أكثر من سطر واحد، ويمكن أن تستخدم إلا مع مشغل متعدد القيمة العالية، مثل مشغل IN.

  • بين المشغل لا يمكن استخدامها مع الاستعلامات الفرعية، ولكن، بين يمكن استخدامها داخل الاستعلامات الفرعية.

SELECT فرعي بيان

وعادة ما تستخدم فرعي مع عبارة SELECT. بناء الجملة الأساسية هي كما يلي:

COLUMN_NAME SELECT [، COLUMN_NAME]
من TABLE1 [، table2]
أين COLUMN_NAME OPERATOR
      (COLUMN_NAME SELECT [، COLUMN_NAME]
      من TABLE1 [، table2]
      [أين])

أمثلة

الجدول شركة افترض له السجلات التالية:

اسم معرف AGE عنوان راتب
---------- ---------- ---------- ---------- ----------
1 بولس 32 ولاية كاليفورنيا 20000.0
2 ألين 25 تكساس 15000.0
3 تيدي 23 النرويج 20000.0
4 مارك 25 ريتش موند 65000.0
5 ديفيد 27 تكساس 85000.0
6 كيم 22 جنوب قاعة 45000.0
7 جيمس 24 هيوستن 10000.0

الآن، دعونا دراسة فرعي عبارة SELECT:

سكليتي> SELECT * 
     من شركة 
     أين ID IN (SELECT ID 
                  من شركة 
                  أين الراتب> 45000)؛

وهذا ينتج النتائج التالية:

اسم معرف AGE عنوان راتب
---------- ---------- ---------- ---------- ----------
4 مارك 25 ريتش موند 65000.0
5 ديفيد 27 تكساس 85000.0

INSERT بيان فرعي

ويمكن أيضا أن تستخدم الاستعلامات الفرعية مع بيان INSERT. يستخدم بيان إدراج فرعي لإرجاع البيانات إلى جدول آخر. في الاستعلام الفرعي يمكن أن تكون البيانات المحددة أي حرف أو التاريخ أو وظيفة تعديل رقمي.

بناء الجملة الأساسية هي كما يلي:

INSERT INTO TABLE_NAME [(COLUMN1 [، COLUMN2])]
           SELECT [* | COLUMN1 [، COLUMN2]
           من TABLE1 [، table2]
           [أين قيمة OPERATOR]

أمثلة

لنفترض COMPANY_BKP شركة بنية الجدول وما شابه ذلك، ويمكن استخدام نفس CREATE TABLE لإنشاء، مجرد تغيير اسم COMPANY_BKP الجدول. الآن نسخ الجدول الشركة بأكملها إلى COMPANY_BKP، بناء الجملة كما يلي:

سكليتي> INSERT INTO COMPANY_BKP
     * اختر من شركة 
     أين ID IN (SELECT ID 
                  من شركة)؛

تحديث بيان فرعي

الاستعلامات الفرعية يمكن استخدامها مع عبارة UPDATE. عند استخدام عبارة UPDATE فرعي، يتم تحديث الأعمدة واحدة أو متعددة في الجدول.

بناء الجملة الأساسية هي كما يلي:

تحديث جدول
SET COLUMN_NAME = NEW_VALUE
[أين مشغل [VALUE]
   (SELECT COLUMN_NAME
   من TABLE_NAME)
   [WHERE)]

أمثلة

لنفترض أن لدينا جدول COMPANY_BKP، الجدول COMPANY النسخ الاحتياطي.

الأمثلة التالية من الجدول COMPANY كل عصر من أو يساوي 27 عملاء راتب تحديث الأصلي 0.50 أضعاف:

سكليتي> شركة UPDATE
     SET راتب = راتب * 0.50
     أين AGE IN (SELECT العمر من COMPANY_BKP
                   أين AGE> = 27)؛

وهذا سيؤثر على هذين الخطين من سجلات شركة مشاركة في الجدول على النحو التالي:

اسم معرف AGE عنوان راتب
---------- ---------- ---------- ---------- ----------
1 بولس 32 ولاية كاليفورنيا 10000.0
2 ألين 25 تكساس 15000.0
3 تيدي 23 النرويج 20000.0
4 مارك 25 ريتش موند 65000.0
5 ديفيد 27 تكساس 42500.0
6 كيم 22 جنوب قاعة 45000.0
7 جيمس 24 هيوستن 10000.0

DELETE فرعي بيان

الاستعلامات الفرعية التي يمكن استخدامها مع عبارة DELETE، تماما مثل غيرها من البيانات على النحو المذكور أعلاه.

بناء الجملة الأساسية هي كما يلي:

حذف من TABLE_NAME
[أين مشغل [VALUE]
   (SELECT COLUMN_NAME
   من TABLE_NAME)
   [WHERE)]

أمثلة

لنفترض أن لدينا جدول COMPANY_BKP، الجدول COMPANY النسخ الاحتياطي.

الأمثلة التالية حذف جميع سجلات العملاء أكبر من أو يساوي العمر 27 الجدول الشركة:

سكليتي> حذف من شركة
     أين AGE IN (SELECT العمر من COMPANY_BKP
                   أين AGE> 27)؛

وهذا سيؤثر على هذين الخطين من سجلات شركة مشاركة في الجدول على النحو التالي:

اسم معرف AGE عنوان راتب
---------- ---------- ---------- ---------- ----------
2 ألين 25 تكساس 15000.0
3 تيدي 23 النرويج 20000.0
4 مارك 25 ريتش موند 65000.0
5 ديفيد 27 تكساس 42500.0
6 كيم 22 جنوب قاعة 45000.0
7 جيمس 24 هيوستن 10000.0