الاثنين، 8 أكتوبر 2018

الدرس السادس عشر المزيد من الخيارات مع عبارة SELECT

كما ذكرنا في الدرس السابق ان عبارة SELECT هي واحدة من ايعازات DML  وهي تمكننا من استرجاع المعلومات من جداول قواعد البيانات او من المشاهد VIEWS.


SELECT * FROM [Person].PersonPhone PHON

في المثال السابق استخدمنا اسم مصغر PHON لوصف الجدول وتالي فان نظام DBMS سوف يتعرف على كلمة PHON على انها البديل عن اسم الجدول وهذا الامر مفيد جدا عند كتابة استعلامات معقدة تشمل اكثر من جدول. 

في المثال التالي كما نلاجظ استخدمنا الاسم المصغر في PHON بعد عبارة SELECT ثم نقطة (.) ثم النجمة (*) اي (PHON.*) هذا سوف يخبر DBMS اننا نريد استرجاع كل حقول الجدول المسمى PHON ولكن في الحقيقة ان DBMS سوف يبحث في جدول اسمه PersonPhone ولكنه يعرف عندما نذكر له PHON اننا نعني الجدول PersonPhone. 


SELECT PHON.* FROM [Person].PersonPhone PHON

كما نلاحظ في الصورة التالية عند تنفيذ الايعازين سوف نحصل على نفس النتيجة ، لذا قد يسأل احد ما هي الفائدة من استخدام الاسماء المختصرة للجداول. والجواب يكمن ان ذلك يكون مفيد عندما تكون الاستعلامات معقدة وتحتوي على اكثر من جدول سوف نأخذ مثال لتوضيح ذلك.



في المثال التالي سوف نستخدم ثلاث جداول للحصول على معلومات الشخص وهاتفه والبريد الالكتروني  وكما يلي :

  1. [Person].Person: يحتوي على معلومات الشخص
  2. [Person].PersonPhone: يحتوي على ارقام الهواتف 
  3. [Person].EmailAddress: يحتوي على عناوين  البريد الالكتروني



SELECT * FROM [Person].Person 
INNER JOIN [Person].PersonPhone ON [Person].Person.BusinessEntityID=[Person].PersonPhone.BusinessEntityID
INNER JOIN [Person].EmailAddress ON [Person].Person.BusinessEntityID=[Person].EmailAddress.BusinessEntityID

كما لاحظنا اضطررنا الى كتابة اسماء الجداول المطولة و هذا سوف يكون امر مزعج اذا زاد تعقيد الاستعلام حيث ان مثالنا لايزال بسيط. مثلا اذا اردنا ان نختار المعلومات السابقة لشخص واحد فقط اعتمادا على معرف الشخص وهو الحقل BusinessEntityID
اذا نفذنا الايعاز التالي سوف نحصل على خطاء

والسبب في ذلك هو ان الحقل BusinessEntityID موجود في الجداول الثلاثة لذا انظام DBMS سوف يحتاج منا الى ان نخبره من اي جدول عليه ان يستخدم هذا الحقل 
وهنا ايضا سوف نظطر الى كتابة اسم الجدول المطول وكما يلي 

في المثال التالي استخدمنا الاسماء المختصرة وكما يلي فأصبح الايعاز اكثر وضوحا:



اضافة الى وضوح الايعاز يمكن ان ننفذ الايعاز التالي والذي سوف يعيد فقط حقول جدول PersonPhone 


كذلك يمكن تنفيذ الايعاز التالي والذي سوف يعيد كل حقول جدول PersonPhone وكل حقول جدول EmailAddress

اخيرا يمكن عرض حقول مختارة من الجداول الثلاثة، وهنا ايضا نلاحظ ان الاسماء المختصرة للجداول ساعدت في تبسيط شكل الايعاز







ليست هناك تعليقات:

إرسال تعليق