دليل إدارة وتشغيل قواعد بيانات أوراكل الفهرس

لغة الأستعلامات الهيكلية SQL Structured Query Langauge

في الجزء التالي سنحاول فهم لغة الأستعلامات الهيكلية بشكل عام كمفهوم وإستخدام , للحصول علي تفاصيل الأستخدام للأوامر والعبارات يرجي الرجوع إلي الصيغ بعد العودة ألي الفهرس أعلاه

لفهم لغة الأستعلامات الهيكلية أو ما يطلق عليه إختصارا SQL وجب التعرف علي مجموعة من المكونات والمفاهيم المرتبطة بلغة الإستعلامات الهيكلية وهذه المكونات هي :

  • الجداول

في نظم قواعد البيانات العلائقية relational database systems (DBS) يتم استخدام كلمة جدول Table للدلالة علي البيانات , فالجدول في نظم قواعد البيانات العلائقية هو عبارة عن حيز معين له شكل معين ومكونات محددة قابله للزيادة أو النقصان تحوي في آخر الأمر بيانات . يتكون الجدول من مجموعة من السطور ومجموعة من الأعمدة ويشكل تقاطع العمود والسطر ما يسمي بالحقل . والحقل هو الذي يحوي البيانات والسطر هو عبارة عن مجموعة من الحقول التي تصف جوانب مختلفة لشئ ما , مثل الموظف يمكن أن يحوي السطر الذي يسجل بياناته أسمه ووظيفته ومكان عمله , بينما يحوي العامود بيانات محددة عن كل الأشياء فمثلا عامود الوظيفة في جدول الموظفين يشمل بيانات كل الوظائف .

تتنوع أشكال البيانات التي يمكن تخزينها في الحقل ومن أهمها

  • Char
  • Varchar2
  • Date
  • Number
  • لمزيد من المعلومات عن أنواع البيانات إذهب إلي أنوا البيانات

    كل جدول له أسم واحد فقط ويحوي أعمدة لكل منها إسم خاص به ولا يمكن أن يوجد إسمان متشابهان لعمودين مختلفين في نفس الجدول ,

    • الإستعلام - الجزء الأول

    الإستعلام هو العملية التي يتم تطبيقها على البيانات بحيث تقوم بإدخال أو عرض أو تعديل أو حذف تلك البيانات , كما أن الاستعلام يمكن يستخدم لبناء وتعديل وحذف المكونات التي تحفظ وتدير البيانات

    لاسترجاع بيانات فإننا نستخدم عبارة Select وهي عبارة تتكون من مجموعة من الكلمات كما هو موضح في الجزء التالي , الكلمة أو الكلمات المذكورة بين القوسين [ ] هي كلمات إختيارية

    select [distinct] < column(s) >
    from < table >
    [ where ]
    [ order by ]

    الأعمدة المحددة Selecting Columns

    الأعمدة المراد استعراضها يتم ذكرها بعد كلمة Select وهي تسمي projection , فمثلا عبارة Select name,dept from emp تكون الأعمدة المراد أظهارها هي عامود name وعامود dept

    يمكن عند تنفيذ عبارة select أستعراض كل الأعمدة دون ذكر أسماء كل الأعمدة بإستخدام * , فمثلا لاستعراض كل أعمدة جدول emp يمكن كتابة الأمر Select * from emp

    يمكن أن تحوي الأعمدة ناتج عمليات حسابية , فمثلا يمكن احتساب الراتب السنوي للموظفين بكتابة العبارة التالية , Select salary*12 from emp

    الجدول Table

    يمكن أن يكون الجدول مكون فعلي مثل أن يكون جدول أو view أو synonym , كما يمكن أن يكون ناتج عبارة select كما في المثال التالي :

    Select name,dept from ( Select id,name,dept from emp) ;

    يجب ان تكون الأعمدة المحددة في المستوي الأعلي , وهي في حالتنا name,dept موجودة في الحزء الثاني من الأستعلام , والجزء الثاني من الأستعلام يسمي الأستعلام الجزئي (Sub Query)

    الشرط Condition

    يمكن تحديد شرط متعلق بالبيانات المراد إسترجاعها أو شروط عامة لا علاقة لها بالبيانات , فمثلا يمكن أن تحدد استرجاع بيانات الموظف الذي يحمل الرقم 23 كما بالمثال التالي :

    Select name from emp where id = 23;

    كما يمكن كتابة جملة بحيث رواتب الموظفين فقط في حالة الأستعلام شريطة أن يتم الأستعلام في بداية الشهر كما بالمثال التالي

    Select name,salary from emp where to_char(sysdate,'dd')='01';

    الترتيب Order

    يمكن عرض البيانات بناء علي القيم الموجودة في الأعمدة فمثلا يمكن ترتيب الموظفين حسب الأسماء كما بالمثال التالي

    Select name from emp order by name;

    تصاعديا وتنازليا

    يمكن أن نلحق بعبارة order by كلمة asc للدلالة علي ترتيب البيانات تصاعديا , أي بداً بالقيم الأصغر فالأكبر , أو تنازليا بإستخدام كلمة desc . كما بالمثال التالي

    Select name,salary from emp order by salary desc;

    ستقوم هذه العبارة بعرض بيانات الموظفين مرتبه حسب الراتب تنازليا

    • الإستعلام - الجزء الثاني

    في هذا الجزء سنتعرف علي المزيد من أدوات الأستعلام وهي

    • Group By
    • Having
    • Sample
    • Unique and Distinct
    • start with and connect by

    Group By

    تستعمل عبارة group by في تجميع البيانات , فمثلا أن كان لديك جدول لموظفين من جنسيات مختلفة وترغب في معرفة عدد الموظفين من كل جنسية , فإنه يمكنك كتابة الأستعلام بالشكل التالي

    Select Nationality,Count(id) from emp group by Nationality;

    في المثال السابق نفرض أن لديك جدول للموظفين يحوي رقم الموظف (id) و جنسية الموظف (Nationality) ويشترط ليكون الاستعلام دقيق أن يتم يكون لكل موظف رقم

    Having

    تستخدم عبارة Having للقيام بعملية فلتره لناتج عبارة Group By , كما هو موضح بالرسم التالي

    مخطط توضيحي لعمل عبارة Having

    في المثال التالي بتجميع الموظفين للحصول علي عدد الموظفين من كل جنسية ومن ثم نعرض فقط الجنسيات التي تحوي أكثر من 10 موظفين , بمعني أننا نريد معرفة الجنسيات التي بها موظفون أكثر من 10

    Select Nationality,Count(id) from emp group by Nationality having Count(id)>10;

    Sample

    تستخدم عبارة Sample لأخذ عينة من البيانات , فمثلا يمكن أخذ 10% من البيانات بواسطة العبارة التالية :

    Select name,salary from emp sample(10);

    Unique and Distinct

    عند أستخدام كلمة Unique أو Distinct فإننا نحصل علي البيانات المفردة , فمثلا يمكنك بإستخدام أي من الكلمتين معرفة الجنسيات المتوفرة لديك بالجدول كما بالمثال التالي

    Select distinct nationality from emp;

    start with and connect by

    تستخدم عبارتي start with و connect by للبحث لمعالجة بيانات ذات طبيعة هرمية كما بالشكل التالي الذي يوضح جانب من جدول الموظفين

    رسم توضيحي لبيانات ذات طبيعة هرمية

    للعرض البيانات الموضحة بالشكل أعلاه بشكل يوضح هرمية توزيع الموظفين بداً من المدير أعلي القائمة يمكننا كتابة الأستعلام التالي :

    select name from emp start with id=55 connect by prior id=manager;

    لعرض النتيجة السابقة بشكل يمكن فهمه بسهولة يمكنك أضافة عدد من الفراغات مساويه لمستوي كل موظف كما بالمثال التالي :
    select lpad(' ',2*(level-1)) || name from emp start with id=55 connect by prior id=manager;