2018-07-23

كيف تبحث عن جدول او عمود او فيو فى الداتابيز SQL Server

``توجد حالات كثيرة نحتاج فيها لبحث عن جدول او عمود في قاعدة البيانات مثل
  1. نتعامل مع قاعدة بيانات لم يسبق التعامل معها و نعرف عنها القليل من المعلومات و نحاول بناء بعض التقارير عليها
  2. نعرف اسم الجدول او العمود بالتقريب و لكن لا نتذكرة تحديدا لذلك نريد البحث عنه لمعرفة الاسم بالتحديد
  3. عندنا معلومة مثل نهاية الشيفت و لا نعرف اي عمود يخزن تلك المعلومة  فنقوم بالبحث مثلا عن الاعمدة التى في اسمها مثل كلمة شفت او ما شابة حتى نصل إلى العمود الذي يخزن المعومة المطلوبه
و غالبا ما يكون ذلك لأننا نعمل على قواعد بيانات ليس لها اى شرح  او الشرح المتوفر قليل.

 يوجد فى سكويل سيرفر SQL Server  سكيما SCHEMA  خاصة تسمى Information_Schema و تحتوي على مجموعة من الفيوز. هذه  الفيوز تحتوي على معلومات عن الجداول و الأعمدة و الفيوز و القيود Constaints  و بعض التفاصيل الأخري.





و ما يخصنا هنا هو ثلاثة من الفيوز Information_Schema Views وهم
  1.  Information_Schema.Tables
  2. Information_Schema.Columns 
  3. Information_Schema.Views


  • Information_Schema.Tables

    Select * from Information_Schema.Tables 



    كما يظهر من الكويري السابق ان Information_Schema.Tables  يحتوي على بيانات جميع الجداول و الفيوز في قاعدة البيانات و يتكون من  أربعة أعمدة و هي 
    1. Table_Catalog  اسم الداتابيز التى تحتوي على الجدول
    2. Table_Schema اسم الاسكيما Schema  التى يوجد بها الجدول
    3. Table_Name  اسم الجدول 
    4. Table_Type  نوع الجدول و هوا اما Base Table  أو View و هوا ما يوضح إذا ما كان Table_Name هوا اسم جدول او اسم فيو و ذلك لأن هذا الفيو Information_Schema.Tables  يعرض بيانات كل الجداول و الفيوو الموجودة في الداتابيز وليس الجداول فقط
     
  • Information_Schema.Columns 

    Select * from Information_Schema.Columns
    يحتوي الفيو Information_Schema.Columns  على بيانات جميع الأعمدة المكونة للجداول في  قاعدة البيانات و يتكون هذا الفيو من أعمدة كثيرة سأذكر منها هنا  سبعة أعمدة فقط
    1. Table_Name اسم الجدول الذي فيه العمود
    2. Column_Name اسم العمود
    3.  Ordinal_Position رقم العمود في ترتيب الاعمدة داخل الجدول
    4.  Column_Default لو ان هناك قيمة افتراضية للعمود Default Value  فسيتم تسجيلخا هنا
    5. Is_Nullable هل العمود يسمح بادخال Null Value
    6.  Data_Type نوع البيانات المخزنة في العمود
    7. Character_Maximum_Length أقصي عدد من الحروف يمكن تخزينها في العمود لو كان العمود يحتوي على نص. 

  • Information_Schema.Views

    Select * from Information_Schema.Views

    و يحتوي الفيو Information_Schema.Views  على بيانات جميع الفيوز View  فى قاعدة البيانات و يتكون من ستة أعمدة و هي 
    1. Catalog_Name اسم الداتابيز الت تحتوي الفيو
    2. Table_Schema اسم الSchema التى تحتوي الفيو
    3.  Table_Name اسم الفيو
    4. View_Definition الكويري المستخدم لانشاء الفيو
    5. Check_Option يعرض هذا العمود إذا كان الفيو تم انشاءه ب With Check_Option ام لا
    6. Is_Updatable  يشير إذا كان هذا الفيو View  يمكن تنفيذ Insert, Update, Delete  ام لا

     

بعد استعراض هذه الفيوز يمكن الاستفادة منها في البحث عن جدول او عمود او فيو فى قاعدة البيانات

    لنفرض مثلا اننا نريد البحث عن كل الجداول التى تحتوي على بيانات الفواتير  و لا نعرف اسم الجداول بالتحديد فمثلا نبحث عن كل الجداول التى تحتوي في اسمها على كلمة Bill  مثل الكويري التالى
 Select * from Information_Schema.Tables where Table_Name like '%BILL%

    و يمكن البحث عن الأعمدة التى تحتوي على عنوان عن الطريق البحث عن كلمة مثل Address
 Select * from Information_Schema.Columns where Column_Name like '%Address%'

      أو البحث عن الأعمدة التى تحتوي على عنوان عن الطريق البحث عن كلمة مثل Address  و لكن ان توجد في جدول Customer
 Select * from Information_Schema.Columns where Column_Name like '%Address%' and Table_Name ='Customer'

و في النهاية في انتظار ارائكم و تعليقاتكم

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

إرسال تعليق

الموضوع المميز

تاثير استعمال Like على Performance الكويري في SQL Server

  نفترض كويري كما بالأسفل Select Id, FirstName, LastName,  JobDescription  From Employee where FristName Like '%hm%'

أكثر المواضيع زيارة