programmer_85 بتاريخ: 18 مارس 2013 تقديم بلاغ مشاركة بتاريخ: 18 مارس 2013 (معدل) السلام عليكم ورحمة الله بركاته ..ان موضوع ال view في قواعد البيانات يعد من اهم المواضيع التي يعتمد عليها في البرمجة واستخراج الكيوري ..اذا ماهو ال view ؟؟هو عبارة عن نافذة او جدول خيالي او وهمي الذي يسمح لعرض البيانات من خلاله وكيفية التعديل عليها .هو ايضا بعد كائن او مايسمى object قواعد البيانات التي يوجد داخل خادم قواعد البيانات database server والذي يقوم فقط بتخزين الكيوري query عبر الامر select query .في حين ان اي تغييرات تعمل من خلال view فانها سوف تعمل تلك التغييرات على الكائنات الاخرى في قواعد البيانات مثل الجداول مثلا.ماهي الميزات في view؟؟1- يقوم بتزويد ودعم الحماية .2- يقوم بتحسين الاداء والتنفيذ في قواعد البيانات.3- يقو بدعم والتزويد على امكانية الاداء والتنفيذ على اوامر DML وعملياتها . مثل INSERT ...4- يقوم بتبسيط الكيوريات المعقدة complex queries حتى تسهل امكانية استخدامها .5- يقوم بمساعدة الوصول الى قواعد البيانات عن طريق فقط مستخدمين محددين في ذلكماهي العيوب في view؟؟1- الاعتماد على الجدول : يمكن ان تنشئ view معتمدا على ذلك في الجدول . لكن في حين انكقمت بتغيير التركيب في الجدول اقصد الاعمدة التي هي مرتبطة مع view فلابد ان تقوم بتغيير ذلك ايضا في viewماهو الفرق بين الجدول وال view ???اولا الجدول :1- يحتوي على بيانات2- الجداول دائما تكون محددة ومقيدة3- مستقلة : اي اذا حصل تغيير في غير الجداول لا علاقة بالجدول في ان تتغير محتوياته وفقا للكائن الذي غيرت فيه .4- يقوم بدعم تنفيذ عمليات واومر DML على اي بياناتزثانيا : ال VIEW :1- لاتحتوي علي بيانات 2- غير محددة3- معتمدة على غيرها اي اذا حصل تغيير في الجدول سوف تتغير البيانات وفقا للجدول التي في VIEW4- تدعم عمليات DML على البيانات المتربطة .ماهي انواع ال VIEW ???1- ال view البسيط simple2- ال view المعقد complexماهي الصيغة العامة لانشاء ال view ?? create [or replace] [no force/]force] view view_name as select query [with check option] /[with read only]; وسوف نناقش كل مفهوم من الصيغة على حده ان شاء اللهيتبع تم تعديل 18 مارس 2013 بواسطة programmer_85 2 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
DBProgrammer بتاريخ: 18 مارس 2013 تقديم بلاغ مشاركة بتاريخ: 18 مارس 2013 جزاك الله خير اخي Programmer_85 مشاركة مفيدة والى الامام ان شاء الله .. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
programmer_85 بتاريخ: 19 مارس 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 19 مارس 2013 السلام عليكميتبع الدرس السابقماهو simple view؟؟ان الفيو البسيط يتم فقط انشاءه على جدول واحد حيث انه لايحتوي على group by ,group fuction,distinct operator join.ان عمليات DDL التي تتنفذ من خلال الجدول فانه هذا لايعكس اي تغييرات على simple view الفيو البسيط.ولكن لكي يلائم الفيو ماتم تغييره في الجدول فيجب ان يستخدم الامر create or replace view commandمثال :نقوم اولا بانشاء فيو عبر الصيغة العامة السابقة .لانشاء فيو بسيط : create view v1 as select ename,job,sal,deptno from emp;[/size] [size=5] نقوم الان بعرض مافي الفيو وذلك عن طريق الامر select select * from v1; لنرى المخرجات بعد الاستعلام عنها : ENAME JOB SAL DEPTNO---------- --------- ------ ------ALLEN SALESMAN 1600 30WARD SALESMAN 1250 30JONES MANAGER 2975 20MARTIN SALESMAN 1250 30BLAKE MANAGER 2850 30CLARK MANAGER 2450 10SCOTT ANALYST 3000 20KING PRESIDENT 5000 10TURNER SALESMAN 1500 30FORD ANALYST 3000 2010 rows selected. نقوم الان بحذف القسم 10 من الفيو ومن ثم نرى ذلك هل تم حذفه من الجدول ام لا. delete from v1 where deptno=10; سوف تكون المخرجات اولا في الفيو كالاتي : ENAME JOB SAL DEPTNO---------- --------- ------ ------ALLEN SALESMAN 1600 30WARD SALESMAN 1250 30JONES MANAGER 2975 20MARTIN SALESMAN 1250 30BLAKE MANAGER 2850 30SCOTT ANALYST 3000 20TURNER SALESMAN 1500 30FORD ANALYST 3000 208 rows selected. ثانيا نرى المخرجات في الجدول emp والذي يعد هو الاصلي للبيانات. select ename ,job,sal,deptno from emp; المخرجات راح تكون كالاتي: ENAME JOB SAL DEPTNO---------- --------- ------ ------ALLEN SALESMAN 1600 30WARD SALESMAN 1250 30JONES MANAGER 2975 20MARTIN SALESMAN 1250 30BLAKE MANAGER 2850 30SCOTT ANALYST 3000 20TURNER SALESMAN 1500 30FORD ANALYST 3000 20 اذا استنتنجنا من ذلك ان في الاصل يتم حذف في الجدول ولكن من خلال الفيو اي ان الامر يذهب اولا ويحذف من الجدول emp ولكن عن طريقة واجهة view .ايضا ممكن ان نعمل update من خلال الفيو وكلن في الاصل كما ذكرنا ان عمليات DML تتم من خلال الفيو ولكن تغير البيانات تكون في الجدول . update v1 set sal=sal+100; سوف تكون المخرجات كالاتي: select * from v1; or[/size] [size=5]select * from emp; المخرجات التي في الجدول هي انفسها التي في الفيو ENAME JOB SAL DEPTNO---------- --------- ------ ------ALLEN SALESMAN 1700 30WARD SALESMAN 1350 30JONES MANAGER 3075 20MARTIN SALESMAN 1350 30BLAKE MANAGER 2950 30SCOTT ANALYST 3100 20TURNER SALESMAN 1600 30FORD ANALYST 3100 208 rows selected. ملاحظة مهمة:عندما قمنا بانشاء الفيو قمنا فقط باخذ بعض الاعمدة من الجدول emp وليس الكل كالاتي:select ename,job,sal,deptno from empالان نريد ان نضيف صف جديد من خلال الامر insert خلال الفيو الى الجدول وليس الى الجدول مباشرة .من المعلوم ان لدينا فقط اربعة اعمدة في الفيو .. اذا لايتيح لنا فقط الاضافة الا عبر تلك الاعمدة الاربعة . insert into v1 values('ahmed','doctor',2000,10); عندما نضيف الصف السابق الى الفيو فانه يعطينا خطا قطعا وهذا هو الخطا : ORA-01400: cannot insert NULL into ("SCOTT"."EMP"."EMPNO") هذا الخطا يخبر بان لايمكن ان نضيف صف جديد وذلك بسبب ان لدينا في الجدول وليس في الفيوحقل اسمه EMPNO لايحتوي على قيمة خالية اي NULLفلابد ان نتبه ذلك عندما ننشئ الفيو نفحص اولا هل لدينا اعمدة لاتقبل القيم الخالية NULL ام لا .يتبع ..... 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
alibrahim بتاريخ: 20 مارس 2013 تقديم بلاغ مشاركة بتاريخ: 20 مارس 2013 جزاكم الله كل خيرموضوع ممتاز جداانا سمعت عن حاجه اسمه Materialize Viewهل في فرق ؟؟؟ اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
gamalf11 بتاريخ: 20 مارس 2013 تقديم بلاغ مشاركة بتاريخ: 20 مارس 2013 شكرا جزيلا وبتمنى الاستمرار في الشرح 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
programmer_85 بتاريخ: 20 مارس 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 20 مارس 2013 جزاكم الله كل خير موضوع ممتاز جدا انا سمعت عن حاجه اسمه Materialize View هل في فرق ؟؟؟ سياتي شرحها بالتفصيل ان شاء الله اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
programmer_85 بتاريخ: 20 مارس 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 20 مارس 2013 السلام عليكميتبع الدرس السابق.المثال االثاني :قم بانشاء v2 حيث انه يحتوي على كل الاعمدة التي في الجدول empسوف يكون انشاء v2 بالشكل التالي. create view v2 as select * from emp; عندما نقوم باستعراض البيانات في الفيو عن طريق select * from v2; نلاحظ ان المخرجات في الفيو وكذا ايضا في الجدول emp نفسها وهي كالاتي: EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO------ ---------- --------- ------ --------- ------ ------ ------ 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 19-APR-87 3000 20 7839 KING PRESIDENT 17-NOV-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 23-MAY-87 1100 20 7900 JAMES CLERK 7698 03-DEC-81 950 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 MILLER CLERK 7782 23-JAN-82 1300 10 وكذا ايضا كما راينا في المثال السابق كيفية تطبيق اوامر DML على الفيو ومن خلال الفيو يتم التغير في الجدول .وهنا ايضا عميلة insert فانك عندما تظيف للجدول فانه يقبله بلا شك لاننا عملنا في انشاء الفيو view كل الاعمدة في الجدول emp ولن يحدث اي خطا في الامر insert كما وقع في المثال السابق وبينا ذلك .الان : نقوم باضافة عمود جديد الى الجدول EMP وليكن اسمه expr اي عمود الخبرة وياتي اضافة هذا العمود بعد انشاء الفيو ومن المعلوم عندما نظيف عمود جديد فانه يكون عن طريق الاوامر DDL التي تهتم باالتركيب والتغير في هيكلة الجدول . alter table emp add expr number(2);[/size] [size=5] الان نقوم بالاستعراض الجدول هل فعلا تم اضافة عمود جديد الى emp ام لا . select * from emp ستكون المخرجات كالاتي : EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO EXPR------ ---------- --------- ------ --------- ------ ------ ------ ------ 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 19-APR-87 3000 20 7839 KING PRESIDENT 17-NOV-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 23-MAY-87 1100 20 7900 JAMES CLERK 7698 03-DEC-81 950 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 MILLER CLERK 7782 23-JAN-82 1300 10 نعم بالفعل تم اضافة عمود جديد الى الجدول emp .الان وهو المهم لنقم بعرض الفيو v2 هل تم اضافة العمود expr الى الفيو مباشرة ام لا . select * from v2; سوف تكون المخرجات كالاتي : EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO------ ---------- --------- ------ --------- ------ ------ ------ 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 19-APR-87 3000 20 7839 KING PRESIDENT 17-NOV-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 23-MAY-87 1100 20 7900 JAMES CLERK 7698 03-DEC-81 950 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 MILLER CLERK 7782 23-JAN-82 1300 10 اذا نلاحظ انه لم يتم اضافة العمود expr الى الفيو v2 وهذا يفيد مطلقا قطعا لا شكان اوامر DDL عندما يتم اجرائها على الجدول EMP فانها لاتحدث اي تغييرا في الفيو التي تمانشاءه قبل التغيير في الجدول EMP.الان لدينا نقطة مهمة : وهي اننا انشاءنا الفيو V2 وهو يحتوي على كل الاعمدة التي في الجدول EMP قبل اضافة العمود EXPRالان نريد ان نقوم بحذف عمود من الجدول وليكن مثلا hiredate على سبيل المثال . alter table emp drop column hiredate; نقوم الان باستعراض الجدول emp select * from emp; نلاحظ ان المخرجات هي : EMPNO ENAME JOB MGR SAL COMM DEPTNO EXPR------ ---------- --------- ------ ------ ------ ------ ------ 7369 SMITH CLERK 7902 800 20 7499 ALLEN SALESMAN 7698 1600 300 30 7521 WARD SALESMAN 7698 1250 500 30 7566 JONES MANAGER 7839 2975 20 7654 MARTIN SALESMAN 7698 1250 1400 30 7698 BLAKE MANAGER 7839 2850 30 7782 CLARK MANAGER 7839 2450 10 7788 SCOTT ANALYST 7566 3000 20 7839 KING PRESIDENT 5000 10 7844 TURNER SALESMAN 7698 1500 0 30 7876 ADAMS CLERK 7788 1100 20 7900 JAMES CLERK 7698 950 30 7902 FORD ANALYST 7566 3000 20 7934 MILLER CLERK 7782 1300 10 وفعلا تم حذف العمود hiredate من الجدول empالان لنرى الفيو v2 هل تم فعلا حذف العمود hiredate ام لا select * from v2; عندما نرى المخرجات في الفيو يعطي لنا رسالة خطا .والرسالة هذه تقول بان تم حذف عمود من الفيو ولايمكن ان يعطي لنا اي مخرجات وهذه هي الرسالة . ORA-04063: view "SCOTT.V2" has errors اذا استنتجنا من ذلك نقطيتين مهمتين وهي:الاولى : ان عندما نظيف اي عمود جديد الى الجدول مثلا emp بعد انشاء الفيو فانه العمود الجديد لايعرض في الفيو .الثانية: ان عندما نقوم بحذف اي عمود من الجدول مثلا emp وهذا العمود قد تم اختياره او انشاءه مسبقا في فيو فاننا عندمانعرض الفيو يعطي لنا رسالة خطا .. وهي تفيد بانه تم حذف بعض الاعمدة لحل المشكلة في النقطة الثانية هي:اننا لابد ان نعيد ان انشاء الفيو مرة ثانية وذلك عن طريق الصيغة التالية: create or replace view v2 as select * from emp; لاحظ ان الصيغة السابقة هي نفسها التي نتسخدمها عند انشاء فيو جديد فقط هناك كلمة اضافة وهي كلمة محجوزة اسمها replace وهي الاستبدال .فتقوم يتتغير واعادة هيكلة الفيو وفقا للجدول emp الذي تم اجراء التعديلات عليه اخيرا .وهكذا يمكن ان تعيد ذلك في حالة قمت بحذف عمود اخر وهي لتفادي المشكلة التي وضحت سابقا ..يتبع .......... اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
programmer_85 بتاريخ: 23 مارس 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 23 مارس 2013 السلام عليكميتبع الدرس السابق..المثال الثالث : create view v3 as select * from emp where deptno =10; نقوم الان بعرض مافي الفيو v3 ووهو كما اشارنا سابقا نفس المعلومات التي في الجدول emp select * from v3; حيث ان المخرجات كالاتي : EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO------ ---------- --------- ------ --------- ------ ------ ------ 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7839 KING PRESIDENT 17-NOV-81 5000 10 7934 MILLER CLERK 7782 23-JAN-82 1300 10 وهي نفسها كما في الجدول عندما تعرض ذلك .الان سوف نقوم بادخال بعض الصفوف الجديدة عبر الفيو v3 لنرى ماهي الاخطاء التي ستظهر هناومن ثم نقاوم بمعالجتها وفقا لحلها الصحيح والمناسب . insert into v3 (empno,ename,deptno)values(1001,'ahmed ',10);[/size][/b] [b][size=5]insert into v3 (empno,ename,deptno)values(1002,'omer',10);[/size][/b] [b][size=5]insert into v3 (empno,ename,deptno)values(1003,'ali',10);[/size][/b] [b][size=5]insert into v3 (empno,ename,deptno)values(1004,'amged',30);[/size][/b] [b][size=5] نلاحظ اننا عندما قمنا بانشاء الفيو v2 عملنا شرط وهو ان deptno = 10 اي اجلب ليالموظفين الذي يعملون في الدائرة 10 ومن ثم قمنا بادخال 4 صفوف جديدة الى الفيو v3 حيث ان تلك الصفوف الجديدةى تم ادخال بشكل صحيح دون اي خطالكن نلاحظ في الصف الرابع والذي يقمن بادخاله عبر الفيو v3 والذي يحملالدائرة 30 .. ففي الالص كما اشارنا سابقا ان هذا كان بالاحرى ان لايمكن ادخاله الي الفيو v3وفقا للشرط الذي كان في الفيو v3 عند انشاءه نقوم الان بالاستعراض ونرى كلا من v3 والجدول emp اولا الفيو v3 select * from v3; المخرجات كالاتي في الفيو v3 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO----- ---------- --------- ------ --------- ------ ------ ------ 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7839 KING PRESIDENT 17-NOV-81 5000 10 7934 MILLER CLERK 7782 23-JAN-82 1300 10 1001 ahmed 10 1002 omer 10 1003 ali 10 نلاحظ ان اصف الاخير الذي يحمل الدائرة 30 غير موجود في الفيو v3 ولكن مع هذا بالفعل تم ادخاله من خلال الفيو اذا لنرى ذلك هل هو موجود مع تلك الصفوف الاخرى التي تم ادخالها موخرا في الجدول emp ام لا . select * from emp; المخرجات كالاتي في الجدول emp EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO------ ---------- --------- ------ --------- ------ ------ ------ 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 19-APR-87 3000 20 7839 KING PRESIDENT 17-NOV-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 23-MAY-87 1100 20 7900 JAMES CLERK 7698 03-DEC-81 950 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 MILLER CLERK 7782 23-JAN-82 1300 10 1001 ahmed 10 1002 omer 10 1003 ali 10 1004 amged 30 اذا فعلا الصف الاخير الذي يحمل الدائرة 30 هو موجود بالفعل في الجدول emp اذا كيف علينا ان نمنع ذلك من خلال الفيو حتى لايسمح بادخال اي قيمة الا اذا كانت القيمة موافقة للشرط الذيتم انشاءه مع الفيو .لهذا السبب تم انشاء شي اسمه check option view وهو كما ذكرناه في الصيغة العامة في الدرس الاول .بانه يعمل على فحص المدخل ..هل المدخل صحيح وفقل للشرك ام لا .نرى ذلك في المثال االرابع وهو :نقوم بانشاء فيو v4 [/size][/b] [b][size=5]create view v4 as select * from emp where deptno =10 with check option;[/size][/b] [b][size=5] نعرض الان فيو v4 select * from v4; المخرجات كالاتي : EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO----- ---------- --------- ------ --------- ------ ------ ------ 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7839 KING PRESIDENT 17-NOV-81 5000 10 7934 MILLER CLERK 7782 23-JAN-82 1300 10 1001 ahmed 10 1002 omer 10 1003 ali 10 نقوم الان بادخال فقط صفيين جديدين احدهما يحمل الدائرة 10 والاخر يحمل الدائرة 30 insert into v4 (empno,ename,deptno)values(1005,'sami',10);[/size][/b] [b][size=5] عند ادخال الصف الاول والذي يحمل 10 يتم ادخال دون اي مشكله لانه موافق للشرط الذي في الفيو v4لكن عند ادخال الصف التالي والذي يحمل الدائرة 30 insert into v4 (empno,ename,deptno)values(1006,'kamal',30); يقوم باعطاء لك خطا ويقول بان هذا المدخل غير متوافق مع الشرط الذي تم انشاءه في الفيو v4وهذا هو الخطا: ORA-01402: view WITH CHECK OPTION where-clause violation في المرة السابقة تم ادخال الصف والذي يحمل الدائرة 30 دون اي خطا او فحص للمدخل وذلك لان الشرط في الفيو السابق v3 لايحتوي على جملة الفحص للشرط وهي :with check option اذا الان عرفنا ماهي فائدة تلك الجملة والتي تفحص المدخل وفقا لللشرط ...يتبع ........ 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
programmer_85 بتاريخ: 29 مارس 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 29 مارس 2013 السلام عليكم اخوتي اعذروني ماقدرت اواصل بقية الدروس لانشغالي ولكن ان شاء الله في الايام القليلة القادمة سوف اكمل كل شرح الفيو دعواتكم 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
microvision بتاريخ: 7 أبريل 2013 تقديم بلاغ مشاركة بتاريخ: 7 أبريل 2013 فعلا شرح اكثر من رائع و مبسط جدا ... اشكرك بشدة اخى العزيز .. جزاك الله خيرا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
laila08 بتاريخ: 29 أبريل 2013 تقديم بلاغ مشاركة بتاريخ: 29 أبريل 2013 شرح رائع و مبسط اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
programmer_85 بتاريخ: 10 مايو 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 10 مايو 2013 السلام عليكم .. غدا ان شاء الله سوف اكمل مالم يتم من درس الفيو ... وانا اعتذر عن عدم اكمالي لذلك وذلك بسبب انشغالي 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
programmer_85 بتاريخ: 12 مايو 2013 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 12 مايو 2013 materialized view عندما نقوم بانشاء materialized view من خلال اي كائن في الداتا بيس (الجداول) فان هذا الكائن او الجدول يجب ان يحتوي على primary key حتى نقيد العمود الذي نريد ان نضع له ذلك . ان الميزة في materialized view هي زيادة تعزيز الاداء والتنفيذ في الكيوري وهذه ميزة كبيرة وعظيمة . materialized view يقوم فقط بقراءة البيانات اي الكيووري ولايمكن ان يعمل او يسمح لتنفيذ العمليت الاخرى في لغة dml مثل ال update,delete,insert ايضا عندما يجرى ان تعديلات او تغيير في الجدول فان تلك التغييرات لاتنعكس عىلى اي تغييرات في materialized view بعكس كما راينا في الفيو . يمكن ان نتسخدم هذا الامر لاجراء التعديلات على materialized view عندما تتم هناك اي تغييرات على الجدول : ('exec_dbms_mview.refresh('name_materialized view ملاحظة: في حالة اذا لم يمكن المستخدم ليس له الصلاحية في انشاء materialized view يجب ان ينشى من ال system مثال : ادخل الى conn system/manager حيث manager كلمة المرور نعمل الامر الاول وهو لابد من عمل column يحتوي على primary key كما اشارنا سابقا. sgl>alter table scott.emp add primary key(empno); الامر الثاني نقوم الان بانشاء materialized view create materialized view mv1 as select * from scott.emp; نقوم الان بعرض materialized view وفقا كما انشاناه من الجدول emp داخل scott scheme select * from mv1 عندما ننفذ الكود السابق نرى ان الصفوف التي تعرض هي نفسها التي في جدول emp وهي 14 صف نقوم الان في الكود التالي بحذف الموظفين الذين وضيفتهم هي clerk .. طبعا الحذف سوف يكون من الجدول وليس من materialized view لانه لايدعم اوامر DML . delete from scott.emp where job='CLERK'; في الكود التالي نعمل SELECT من الجدول EMP , ونرى كم عدد الصفوف التي حذفت سوف نرى انها 4 صفوف حذفت و10 صفوف باقية . SELECT * from scott.emp; الان في الكود التالي نعمل ايضا select لكن ليس من الجدول وانما من materialized view ونرى ان الصفوف هي 14 صف واناه لم يجرى اي تغيير عليه عندما تم التغيير ع الجدول emp select * from scott.emp; نقوم الان بعمل اضافة صف جديد الى الجدول emp ونرى هل سوف يتم اضافته الى materialized view ام لا .. insert into scott.emp(empno,ename)values (1200,'ahmed'); عندما نعمل select من الجدول emp نرى انه قد تم اضافة صف جديد الى 10 صفوف السابقة وبذلك يصبح 11 صف select * from scott.emp; الان نقوم بعمل select لل materialized view هل سيصبح هناك صف زائد ام لا 14 صف السابقة .. بالطبع لا يمكن اي اضافة او تعديل او حذف ع materialized view select * from mv1; اذا كيف يمكن لنا ان نجعل نفس ماهو في الجدول يكون نفسه في materialized view كما لشرت سابقا يمكن ان نتسخدم هذا الامر : exec dbms_mview.refresh('mv1'); الان ممكن ان نعمل select للجدول emp select * from scott.emp; سوف تكون المخرجات في materialized view هي نفسها التي الجدول select * from mv1; اخيرا كيف يمكن ان نحذف materialized view من خلال الصيغة العامة : drop materialized view view_name; ارجو ان يكون الشرح وافي وواصل بشكل مفهوم ... لاتنسونا من دعائكم .. 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
anas.soft بتاريخ: 28 أبريل 2014 تقديم بلاغ مشاركة بتاريخ: 28 أبريل 2014 اولا اشكرك على الشرح الرئع اخي العزيز ولكن عندي استفسار كيف يتم استعراض هيكلية الفيو والتعديل عليها ولك جزيل الشكر والتقدير اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
فائد الخليدي بتاريخ: 4 مارس 2015 تقديم بلاغ مشاركة بتاريخ: 4 مارس 2015 استعراض هيكلية view بواسطة desc view_name; اما بالنسبة للسماح بالتعديل يتم انشاء view بهذه الطريقة CREATE MATERIALIZED VIEW view_name FOR UPDATE ASSELECT * FROM table_name; اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
أسد عبدالله بتاريخ: 10 يونيو 2017 تقديم بلاغ مشاركة بتاريخ: 10 يونيو 2017 استعراض هيكلية view بواسطة desc view_name; اما بالنسبة للسماح بالتعديل يتم انشاء view بهذه الطريقة CREATE MATERIALIZED VIEW view_name FOR UPDATE AS SELECT * FROM table_name; اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
أسد عبدالله بتاريخ: 10 يونيو 2017 تقديم بلاغ مشاركة بتاريخ: 10 يونيو 2017 م هي التعليمه اللي تظهر لي كود انشاء ال view ? اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
anas.soft بتاريخ: 16 أكتوبر 2017 تقديم بلاغ مشاركة بتاريخ: 16 أكتوبر 2017 م هي التعليمه اللي تظهر لي كود انشاء ال view ? السلام عليكم يمكنك مشاهدة كود انشاء ال VIEW من خلال الاستعلام التالي : SELECT text FROM user_views WHERE view_name = 'YOUR VIEW_NAME' كما يمكنك مشاهدة كود ال VIEW من خلال برنامج TOAD بالتوفيق اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
NoUh NaNo بتاريخ: 11 ديسمبر 2019 تقديم بلاغ مشاركة بتاريخ: 11 ديسمبر 2019 هل يمكن اجابتي على السؤال 6 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.