موضوعنا اليوم هو استخدام الــView او ما يسمى المنظار او الجداول الافتراضية :
لكي لا يصبح كتابة الصيغ في SQL معقداً في كل مره - اذا كانت هذه الصيغ تُستخدم بكثرة - تم تضمين تعابير خاصة في SQL تمكننا من انشاء جداول افتراضية او ما يسمى بالمنظار او View تساعدنا في استعادة البيانات التي يرجعها استعلام معين, فهي توفر جداول افتراضية تحتوي على البيانات ضمن تشكيل مطلوب .
ويمكن معاملته كأي جدول من جداول قواعد البيانات اذ يكمن الفرق الوحيد بينه وبين الجداول في كون البيانات التي تحتويه مخزنة في جداول اخرى .
ايضا تساعد الجداول الافتراضية في منع المستخدمين من الوصول الى الجداول الاصلية في قواعد البيانات اذ يحتوي المنظار او الجدول الافتراضي على جزء من البيانات المتوفرة في الجدول الاصلي .
كما يساعدنا على اخفاء بعض البيانات ان اردنا مثلا عرض جدول موظف ولا نريد عرض راتبه نقوم بإنشاء جدول افتراضي يحتوي على بيانات الموظف كاملة عدا حقل الراتب ونتيح لأي موظف اخر التعامل مع هذا الجدول على انه جدول الموظف الحقيقي .
عادةً لا يمكن تعديل البيانات من خلال جدول افتراضي فهو يشكل نسخة بيانات قابلة للقراءة فقط يمكن تخصيصها للمستخدمين ذوي الصلاحيات المنخفضة .
لا نشاء منظار او اجدول افتراضي نستخدم الصيغة التالية :
CREATE VIEW view_name
AS query;
حيث view_name هو اسم الجدول الافتراضي و query هو استعلام يمكن ان نستخدم فيه أي من التقنيات التي تعرفنا عليها في الدروس السابقة .
مثال:
لنفرض انه لدينا استعلام معقد نسبياً يعيد قيم من جدولين مرتبطين بأسلوب Inner Join واردنا انشاء جدول افتراضي ليحتوي على قيم الحقول المعادة من هذا الاستعلام ستكون الصيغة كما يلي :
CREATE VIEW MySimpleView
Projects.projectName ,
count
(Tasks.taskID) AS TasksNumber
From Tasks
Inner Join Projects
ON
Tasks.projectID = Projects.projectID
Group by
projectName;
لاحظ انشاءنا جدول افتراضي بإسم MySimpleView يحتوي على الحقول projectName و tasksNumber .. بعد ان قمنا بإنشاء الجدول الافتراضي يمكننا ببساطة استخدام أي استعلام والتعامل مع الجدول الافتراضي كما في الصيغة التالية :
Select
projectName from MySimpleView;
تعديل البيانات عبر تعديل الجدول الافتراضي:
عادة ليس من الممكن تعديل البيانات عبر تطبيق التعابير Insert و Updateو Delete على الجدول الافتراضي ولكن يمكن تحقيق هذا الغرض في حالة توفرت الشروط التالية :- يجب ألا يحوي الاستعلام الخاص بالمنظار أي تابع تجميعي كما يجب ألا يستخدم تعبير Group By .
- يجب الا يحتوي الاستعلام الخاص بالجدول الافتراضي التعبير Top او Distinict .
- يجب الا يحتوي الاستعلام الخاص بالجدول الافتراضي حقول تم اجراء عمليات حسابية عليها او تم حسابها .
لتعديل بنية جدول افتراضي نستخدم الصيغة /
ALTER VIEW
viewName AS newQuery;
وهذه الصيغة تعمل في SQL Server اما في Oracle فتكون الصيغة كما يلي
CREATE OR REPLACE VIEW viewName AS newQuery
CREATE OR REPLACE VIEW viewName AS newQuery
انتبه ملاحظة :
- يستخدم التعبير ALTER VIEW في Oracle و DB2 لأداء اغراض مختلفة عن تلك المستخدمة في SQL Server .
- افضل طريقة لتعديل جدول افتراضي في DB2 هي حذفه واعادة انشاءه بالشكل المطلوب من جديد.
- في MySQL لم تكن المعاينات مدعومة قبل النسخة 5.0.1 ولكن تم اضافتها وهي تستخدم صيغة مشابهه للصيغة المستخدمة في SQL Server .
مثال
اذا كان لدينا الجدول Studio الذي يحتوي على اسماء وارقام الاستوديوهات studioNumber , studioName وارقام البرامج programNumber التي سوف تُصور في مركز تلفزيوني .. واذا كان لدينا الجدول Actors الذي يحتوي على اسماء الممثلين ActorName واسماء البرامج التي يشتركون في تمثيلها programName واذا اردنا تعديل بنية الجدول الافتراضي ActorsStudios في SQL Server و MySQL تصبح الصيغة كالآتي :
ALTER VIEW ActorsStudios
AS
Select
actorName , studioName from Actors Inner Join Studios
ON
Studios.studioNumber = Actors.studioNumber;
ويصبح المثال في Oracle كما يلي :
CREATE OR REPLACE
VIEW ActorsStudios AS
Select
actorName , studioName from Actors Inner Join Studios
ON
Studios.studioNumber = Actors.studioNumber;
حذف الجداول الافتراضية :
يمكننا حذف الجدول الافتراضي بصورة كاملة من قاعدة البيانات باستخدام التعبير DROP VIEW وحذفه لا يعني حذف الاصول او الجداول الاساسية التي دخلت في الاستعلام الذي انشأ الجدول الافتراضي.
ونستخدم ذلك بالصيغة التالية :
ونستخدم ذلك بالصيغة التالية :
DROP VIEW
viewName;
مثال اذا اردنا حذف مثلا الجدول الافتراضي الذي اسمة MyView سنكتب الصيغة كما يلي:
DROP VIEW MyView;
اكتفي بهذا ونلتقي في الدرس القادم تحت عنوان
الجداول المؤقتة
استودعكم الله
لا تنسى مشاركة الدرس وكذلك الاشتراك في المدونة
ليصل اليك كل جديدنا ....
هل يقابل هذا استعلام إنشاء جدول فى أكسيس؟
ردحذفلا ,,,
حذف