``توجد حالات كثيرة نحتاج فيها لبحث عن جدول او عمود في قاعدة البيانات مثل
يوجد فى سكويل سيرفر SQL Server سكيما SCHEMA خاصة تسمى Information_Schema و تحتوي على مجموعة من الفيوز. هذه الفيوز تحتوي على معلومات عن الجداول و الأعمدة و الفيوز و القيود Constaints و بعض التفاصيل الأخري.
و ما يخصنا هنا هو ثلاثة من الفيوز Information_Schema Views وهم
و في النهاية في انتظار ارائكم و تعليقاتكم
- نتعامل مع قاعدة بيانات لم يسبق التعامل معها و نعرف عنها القليل من المعلومات و نحاول بناء بعض التقارير عليها
- نعرف اسم الجدول او العمود بالتقريب و لكن لا نتذكرة تحديدا لذلك نريد البحث عنه لمعرفة الاسم بالتحديد
- عندنا معلومة مثل نهاية الشيفت و لا نعرف اي عمود يخزن تلك المعلومة فنقوم بالبحث مثلا عن الاعمدة التى في اسمها مثل كلمة شفت او ما شابة حتى نصل إلى العمود الذي يخزن المعومة المطلوبه
يوجد فى سكويل سيرفر SQL Server سكيما SCHEMA خاصة تسمى Information_Schema و تحتوي على مجموعة من الفيوز. هذه الفيوز تحتوي على معلومات عن الجداول و الأعمدة و الفيوز و القيود Constaints و بعض التفاصيل الأخري.
و ما يخصنا هنا هو ثلاثة من الفيوز Information_Schema Views وهم
- Information_Schema.Tables
- Information_Schema.Columns
- Information_Schema.Views
Information_Schema.Tables
Select * from Information_Schema.Tables
كما يظهر من الكويري السابق ان Information_Schema.Tables يحتوي على بيانات جميع الجداول و الفيوز في قاعدة البيانات و يتكون من أربعة أعمدة و هي- Table_Catalog اسم الداتابيز التى تحتوي على الجدول
- Table_Schema اسم الاسكيما Schema التى يوجد بها الجدول
- Table_Name اسم الجدول
- Table_Type نوع الجدول و هوا اما Base Table أو View و هوا ما يوضح إذا ما كان Table_Name هوا اسم جدول او اسم فيو و ذلك لأن هذا الفيو Information_Schema.Tables يعرض بيانات كل الجداول و الفيوو الموجودة في الداتابيز وليس الجداول فقط
Information_Schema.Columns
Select * from Information_Schema.Columns- Table_Name اسم الجدول الذي فيه العمود
- Column_Name اسم العمود
- Ordinal_Position رقم العمود في ترتيب الاعمدة داخل الجدول
- Column_Default لو ان هناك قيمة افتراضية للعمود Default Value فسيتم تسجيلخا هنا
- Is_Nullable هل العمود يسمح بادخال Null Value
- Data_Type نوع البيانات المخزنة في العمود
- Character_Maximum_Length أقصي عدد من الحروف يمكن تخزينها في العمود لو كان العمود يحتوي على نص.
Information_Schema.Views
Select * from Information_Schema.Views
و يحتوي الفيو Information_Schema.Views على بيانات جميع الفيوز View فى قاعدة البيانات و يتكون من ستة أعمدة و هي- Catalog_Name اسم الداتابيز الت تحتوي الفيو
- Table_Schema اسم الSchema التى تحتوي الفيو
- Table_Name اسم الفيو
- View_Definition الكويري المستخدم لانشاء الفيو
- Check_Option يعرض هذا العمود إذا كان الفيو تم انشاءه ب With Check_Option ام لا
- 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'
و في النهاية في انتظار ارائكم و تعليقاتكم