الموضوع: متابعة في oracle
عرض مشاركة واحدة
قديم 08-07-2004, 18:36   رقم المشاركة : 1 (permalink)
معلومات العضو
wad_altayeb
عضو مشارك
 
إحصائية العضو









wad_altayeb غير متواجد حالياً

 

إحصائية الترشيح

عدد النقاط : 10
wad_altayeb is on a distinguished road

 

 

متابعة في oracle

وما زال الحديث ممتد ا حول البرمجة باستخدام لغة الاستعلامات الهيكلية Structural Query Language SQL بقواعد البيانات Oracle. فقد تحدثنا سابق ا عن لغة معالجة البيانات DML وكيفية إدخال بيانات جديدة في الجدول. ونواصل الرحلة مع باقي أوامر DML بالإضافة إلى معرفة كيفية إنشاء الجداول بأكثر من طريقة مختلفة.

نستكمل سوي ا ما بدأناة من سرد وشرح لأوامر لغة DML التى تعنى بالتعامل مع جداول البيانات وإدارة محتوياتها أي ا كان نوعها. فيما يلى قائمة بمجموعة من الأوامر وشرح كل منها.

أمر التحديث Update

وي ستخدم عند الرغبة في تعديل كل أو بعض البيانات الموجودة مسبقا بالجدول. فمثلا نريد تعديل مرتب الموظف الذي يحمل الرقم 7788لنجعله 2500 جنيه فتكون جملة التحديث كما يلي:

UPDATE EMP SET SAL=2500 WHEREEMPNO=7788

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

تحديث كل البيانات:
يمكنك أيضا تحديث كل البيانات دفعة واحدة. فيمكنك تحديث قيمة أحد الحقول بقيمة ثابتة. كأن تجعل عمولة جميع الموظفين مبلغ 200 جنيه.

UPDATE EMP SET COMM = 200

وعند تنفيذ المثال تظهر الرسالة 14 row updated والتي تفيد بتحديث جميع السجلات بالجدول دون وجود أى أخطاء.

حذف البيانات Delete

يقوم الأمر Delete بحذف البيانات من الجدول. وفيما يلي نتناول بعض الأمثلة التي توضح كيف يتم ذلك:

DELETE FROM DEPT WHERE DEPTNO=50

انظر إلى هذا المثال حيث نريد حذف الإدارة التي تحمل الرقم 50 من جدول الإدارات والمعروف باسم Dept.

مسح جميع بيانات جدول:
يمكنك مسح جميع السجلات من جدول ما عن طريق الكود التالى كما يلي:

Delete from table_name

حيث إن TABLE_NAME هو اسم الجدول المراد مسح جميع بياناته.

ملحوظة/ في حالة تنفيذ الأمر السابق سيتم مسح جميع البيانات (السجلات) الموجودة بالجدول ولكن مع الاحتفاظ بهيكل الجدول Table Structure, فيكون الجدول موجودا ولكنه يتكون من حقول فارغة.


إنشاء الجداول:

تعلمنا مما سبق كيفية استعراض محتويات جدول وانشاء استعلامات مختلفة علي الجداول واختيار بيانات من أكثر من جدول, وكذلك ادخال بيانات جديدة إلى جدول موجود مسبقا والآن سوف نبدأ خطوة جديدة علي طريق Oracle SQL*Plus ألا وهي انشاء الجداول.

ولعل الخطوة الأولي لكي تستطيع إنشاء جدول من خلال Oracle أن تكون لديك صلاحية لذلك Create Table Privileges والتي يعطيها لك مدير قاعدة البيانات Database Administrator(DBA) التي نحن بصدد التعامل معها.

ملحوظة/ لست بحاجة إلى تلك الصلاحية إذا كنت تتعامل مع النسخة الشخصية لأوراكل Oracle Personal Edition.

الشيء الثاني والمهم لتتمكن من إنشاء الجداول هو أن تكون لديك مساحة تخزينية Free Space. وما دون ذلك فأنت مؤهل لإنشاء الجداول بكافة أنوعها وأي ا كان الهيكل المكون لها.

قواعد عامة:

إلا أنه قبل الشروع في إنشاء أى جدول, هناك بعض القواعد العامة والأساسية المرتبطة بأسماء الجداول يحب مراعاتها لكي تتم عملية الإنشاء بشكل صحيح. هذه القواعد هى:

- لابد وأن يبدأ اسم الجدول بحرف.

- ألا يتجاوز اسم الجدول عدد 30 حرفا.

- يمكن أن يكون اسم الجدول بالحروف الكبيرة A,B,Z أو الحروف الصغيرة a,b,z أو الأرقام كما يمكن أن يتضمن الرموز .(_ ,$ , #)

- عدم تكرار اسم الجدول أو تشابهه مع أحد كائنات قاعدة البيانات الأخرى.

- يجب ألا يكون اسم الجدول كلمة من الكلمات المحجوزةreserved word من قبل Oracle حيث لا يمكن ون تسمي جدولك From أو Select.

الثوابت Constraints

من البديهي أن يحتوي الجدول علي ثوابت تتحكم فى إدخال البيانات وتستخدم للربط بين الجداول المختلفة, فيما يلي أنواع ال-ثوابت Constraints:

أولا : الثابت NOT NULL Constraint

وهى خاصية ي قصد منها ضرورة إدخال بيانات بحقل ما. ومن ثم لن يقبل Oracle أن يمر مدخل البيانات على هذا الحقل دون أن ي دخل بيانات.

ثاني ا: الثابت UNIQUE Constraint

وهى خاصية تعنى عدم إمكانية تكرار البيان (محتوى الحقل) فى سجل آخر. وهو ما يتم عمله مع حقول أكواد المرتبات Payroll Code أو رقم الفاتورة Invoice No وغيرها.


ثالث ا: الثابت PRIMARY KEY Constraint

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


رابع ا: الثابت Constraint FOREIGN KEY

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


خامس أ: الثابت CHECK Constraint

وهو الم ستخدم فى تحديد قيم محددة لإدخال البيانات في حقل ما مثل حقل النوع Gender, الذى يحتوى على قيمة من اثنين هما On أو Off بمعنى (ذكر/أنثي).

أما عن تحديد أو إنشاء هذه الثوابت وتطبيقها على حقل ما بالجدول, فيمكنك أن تصنعه في نفس الوقت الذي تنشئ فيه الجدول أو بعد إنشاء الجدول كما سنذكر بالتفصيل لاحقا .


طرق إنشاء الجداول:

فى البداية نود أن نشير إلى أن طرق إنشاء الجدول متعددة إلا أنها تتوقف على الغرض الذى من أجله تريد إنشاء الجدول. إلا أنها تنحصر فى:

1) إنشاء جدول جديد عن طريق إدخال كافة المعلومات عن هيكله Table Structure بصورة جديدة.

2) إنشاء جدول جديد باستخدام جدول موجود بالفعل. وفي هذه الحالة عليك أن تختار إما أن تستعين بالجدول بالكامل (بيان + هيكل) أو تحتاج فقط تصميم وهيكل الجدول.

وفيما يلي شرح كل نوع من الأنواع السابقة علي حدة:


إنشاء جدول كنسخة من جدول آخر ببنيته وبياناته:

نفترض أننا نريد عمل نسخة كاملة من جدول الموظفين EMP بهيكله وبياناته ولكن تحت اسم Employees فستكون جملة الإنشاء كما يلي:

CREATE TABLE EMPLOYEE AS(SELECT * FROM EMP)

تظهر العبارة Table created. والتي تدل علي إتمام عملية نشاء الجدول بنجاح. وللتأكد يمكنك استعراض جميع الجداول الموجودة عن طريق الجملة الشهيرة SELECT * FROM TAB والتي ستجد فيها الجدول الجديد, وتظهر جميع بياناته كما بالجدول الأصلي EMP عند كتابة جملة الاستعلام التالية:

SELECT * FROM EMPLOYEE


إنشاء جدول كنسخة من بنية جدول آخر:

نفترض أنك تريد الاستعانة بهيكل الجدول EMP فقط دون الحاجة إلى بياناته, وذلك تحت اسم EMPP. فى هذه الحالة ستكون جملة الانشاء كما سبق ولكن مع إعطائها شرط تحقق غير صحيح WHERE CONDITION بحيث يتم النسخ لهيكل الجدول أولا ثم يذهب لنسخ البيانات ولكنه يفشل لعدم مطابقة شرط التحقق مع أحد البيانات الموجودة بالجدول فتكون جملة الإنشاء كما يلي:

CREATE TABLE EMPP AS(SELECT * FROM EMP WHERE EMPNO=555)

فتظهر بعد ذلك الرسالة Table Created والتي تدل علي إتمام عملية الإنشاء بنجاح, وللتأكد من أن الجدول قد تم إنشاؤه دون بيانات يمكنك كتابة جملة الاستعلام SELECT * FROM EMPP فتظهر الرسالة No Rows Selected والتي تدل علي عدم وجود بيانات.

نكتفى بهذا القدر على أن نستكمل فى اللقاء القادم إن شاء الله كيفية إنشاء جدول ذى هيكل جديد. أما السطور التالية فتحمل إليك بعض أهم الاخطاء الشائعة عند القيام بالعمليات الواردة بهذا المقال.


أخطاء شائعة:
0 rows updated

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

UPDATE EMP SET ENAME='AHMED' WHERE EMPNO=555

مع العلم بعدم وجود أي موظف يحمل الرقم 555 فبالتالى لم يتم تحديث أي بيانات.


ORA-02292:

ويحدث هذا الخطأ عند الرغبة في مسح بيانات من جدول ما مرتبطة ببيانات أخري في جدول آخر, انظر إلى المثال التالى حيث نريد حذف جميع البيانات من الجدول DEPT ولكننا ن فاجأ بظهور الخطأ ORA-02292: والذي يفيد بأن هناك بيانات بتلك الجدول مرتبطة ببيانات في جدول آخر, ألا وهي رقم الإدارة والمشترك بين جدول الموظفين وجدول الإدارات.

DELETE FROM DEPT

ORA-00955:

وينتج ذلك الخطأ عند الرغبة في انشاء جدول باسم يزدوج مع اسم جدول موجود بالفعل مسبقا علي قاعدة البيانات.
ويظهر ذلك والذي أردنا فيه انشاء جدول باسم EMPP مع العلم بأن هذا الجدول موجود من قبل.

[m3ft2]wad_Altayeb[/m3ft2]
wad_altayeb غير متواجد حالياً   رد مع اقتباس