المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الدرس الحادي عشر : الجزء الثالث - لغة تقنية الاستعلامات - تنفيذ العمليات - دورة Microsoft Access 2003


khaledbelal
03-30-2010, 10:21 PM
بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته



سنبعد في درسنا هذا عن tsqlمؤقتاً عن جو البحث وسنتحدث عن اضافة وحذف الجداول في قواعد البيانات .

سنبدأ أولاً بصيغة انشاء جدول وهي بالشكل التالي :


CREATE TABLE TB ( colum type, colum type,........);
TB : هو اسم الجدول المراد إنشاؤه في القاعدة .
colum : اسم الحقل المراد إنشاؤه في الجدول .
type : نوع بيانات الحقل .


ملاحظة / عند تنفيذ الاستعلام أغلق شاشة الكود.. وإذا كان اسم الجدول المراد إنشاؤه موجود في خانة جداول
احذفه لأننا نستخدم أمر البناء (CREATE TABLE) وليس تعديل..

مثال على ذلك : لننشئ جدولاً تحت اسم tb1يحتوي على حقلين : الإسم Name من نوع ( نص - String ) والآخر العمر Age من نوع Number:


CREATE TABLE tb1 (name text,age number );

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

ولكن ماذا لو أردنا أن نحدد حجم حقل الاسم Name بست خانات فقط ... إذاً ضع عدد الخانات بين قوسين مع تعيين نوع بيانات الاسم مثل Text وذلك بالشكل التالي :


CREATE TABLE tb1 (name text(6),age number );


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

آخر نقطة سأشرحها في انشاء الجداول هي كيف نجعل الحقل لا يقبل فراغ (Null)..
جرب هذا المثال مع الإسم أيضاً :


CREATE TABLE tb1 (name text(6) Not Null,age number );


نفذ هذا الاستعلام وحاول أن تترك خانة الاسم فارغة وانزل الخانة التي تليها..
ستجد أنه لا يمكنك فعل ذلك.. وإذا كتبته لن يزيد عن ستة أحرف.. لأننا حددنا ذلك في الكود..

ماذا عن الحذف..؟
عندما نريد أن نحذف جدول نستخدم الأمر (DROP Table).. مثال لحذف الجدول السابق..


DROP Table tb1;


ولو كان هذا الجدول مرتبطاً بعلاقات فلا بد من تحديثها باضافة الأمر (CASCADE) إلى آخر الكود وذلك بالشكل التالي :


DROP Table tb1 CASCADE;


لا تنسى أن تنشأ الجدول بعد حذفه لأننا سوف نعمل عليه مجدداً

والآن سنبدأ في اضافة حقول إليه وذلك بعد عملية الانشاء - أعتقد أن الفرق بين الجدول وقاعدة البيانات والحقول والسجلات أصبح واضحاً - .

الصيغة العامة لإضافة الحقول :


ALTER TABLE tb1 ADD colum type
فلنضف حقلين جديدين للجدول السابق : الأول هوتاريخ الميلاد ، والثاني النوع ( ذكر - أنثى ) .


ALTER TABLE tb1 ADD birth_Date date,Gender Text;


اذهب الآن إلى الجدول tb1 وألق نظرة عليه.. ستجد أنه أضيف إليه حقلين هما (birth_Date - Gender)..
وهذا هو عمل الاستعلام السابق ولا تنسى خلف كل حقل نوع بياناته في الاستعلام..

والآن لنحذف أحد هذه الحقول وليكن مثلاً حقل Gender... لاحظ أننا دائماً نضيف كلمة CASCADEلتحديث العلاقات - في حال وجودها - ، وذلك بالشكل التالي :


ALTER TABLE tb1 DROP gender CASCADE;


ارجع إلى الجدول tb1 وألق نظرة عليه.. ستجد أن الحقل Gender غير موجود (حذف)..

والآن سوف نتعلم اضافة السجلات ، وسوف نستخدم الجدول Rabiaكجدول لنجرب أوامرنا عليه ، والآن إلى الصيغة العامة لأمر الإضافة :


INSERT INTO table VALUES (v1, v2,......);
لاحظ أننا سنمرر القيم واحداً وراء الثاني وتفصل بينهم فاصلة عادية (،) مع مراعاة وضع النصوص بين علامتي تنصيص "" والتواريخ بين علامتي ## .
سنمرر القيم التالية : الرقم - الإسم الأول - الإسم الأخير - رقم الهاتف - العنوان - البريد الإلكتروني - الموقع - متزوج/لا - ملاحظات - العمر - المرحلة الدراسية .
وذلك بالشكل التالي :


Insert into Rabia values(8,'muzayd','morir',88888888,'Twaal','^_^@ho tmail.com','www.^_^.com',false,'X ملاحظاتك X',27,'الابتدائية');


نفذ الاستعلام.. واذهب إلى الجدول Rabia وألق نظرة عليه ستجد أن الكود أضاف سجل كامل آخر الجدول.. بالبيانات التي أعطيناه..

قد يسأل أحدهم ويقول : كيف أضيفت تلك القيم إلى الحقول مع أننا لم نذكر اسم أي حقل ولم نحدده..؟؟
لا تخف فإن الدالة (Insert into) تقوم بإدخال المتغيرات - القيم - المعطاه لها على الترتيب..
ويجب أن تعرف ترتيب الحقول أنت.. وتضع القيم حسب الترتيب الموجود بالجدول..

سأضع لك بعض النقاط لكي تكون لك نظرة ثاقبة على الأكواد البرمجية :
بعض النقاط قد تكلمنا عنها وسأعيدها للتذكير :

1- لاحظ أن أي قيمة نصية وضعناها بين علامتي تنصيص.. وهذا أمر ضروري
وركز أقول لك قيمة : أي كلمة أريد أن أضعها هي بعينها في الجدول.
2- لاحظ أن أي قيمة عددية لم نضعها بين علامتي تنصيص وهذا أمر ضروري في آكسيس..
أما لغات البرمجة إذا كانت القيمة عددية فالأمر لا يفرق سواء وضعت علامة التنصيص أم لم تضعها.
3- لاحظ في إحدى الخانات وضعنا فيها كلمة false .. ما الذي تلاحظه في هذه الخانة..؟؟
إنها أحرف نصية لم نضعها بين علامتي تنصيص لماذا.. لأننا لا نريد أن نضع الكلمة نفسها كقيمة وإنما قصدنا بها أمر ونريد من البرنامج تنفيذه.. وهو أمر الخطأ - عدم الزواج - .

تواجهنا في الكود السابق بعض المشاكل.. وهي كالتالي :

هل تذكر عندما صنعنا القاعدة أننا وضعنا حقل الرقم حقلاً وحيداً - لا تتكر قميته - ما يعني أننا مجبرين على أن نغيره من الكود في كل مرة نريد تنفيذ الاستعلام فيها.
هل سنقوم في كل مرة بتغيير الكود ثم نحفظه ثم ننفذه << نفعل ذلك كل مرة ؟ إنه متعب جداً..
ماذا لو كنا نريد إضافة بيانات لشخص آخر هذا يعني أننا سنغير جميع البيانات بالكود *_* ..

يوفر لك آكسيس طريقة رائعة.. شبيهة بتلك التي تفعل في البرمجة.. فلنعدل على الكود السابق..

عدل قيمة الرقم (8) إلى (MyNumber) وقيمة الاسم (muzayd) إلى (MyName) ولا تنسى أن تزيل علامة التنصيص منها لأننا نقصد بها أمر وليس قيمة..
سيكون الكود هكذا :


INSERT INTO Rabia VALUES (MyNumber, MyName, 'morir', 88888888, 'Twaal', '^_^@hotmail.com', 'www.^_^.com', false, 'X ملاحظاتك X', 27, 'الابتدائية');


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



* ملاحظة :
إن هذا الجزء في الأكسيس سيقابله متغير في الفيجوال بيسك .. كذلك الامر بالنسبة للبحث .


هل تتذكر جملة البحث التالية :


SELECT * FROM Rabia WHERE age = 60;



جرب أن تزيل القيمة 60 وضع متغيراً مثلاً MyAge بالشكل التالي :


SELECT * FROM Rabia WHERE age = MyAge;


وهذا يعطيك تحكماً فيما ترغب في البحث عنه..



التعديل :



الصيغة العامة لتعديل بيانات سجل ما بالشكل التالي :


UPDATE table_name SET colum1 = v1 , colum2 = v2 WHERE colum = v;


سنجرب الآن مثالاً لجعل العمر = 28والموقع = www.XXXX.com للشخص الذي اسمه الأول ( أبو ربيع ) والاخير ( آل خريف ) :


Update Rabia set age=28 , site='www.XXXX.com' where fname='أبو ربيع' and lname='آل خريف';


ناظر الآن الجدول Rabia وستلاحظ أن البيانات المحددة تم تغييرها..

ولكن ماذا لو كان الأمر يشمل أكثر من سجل ؟ في الواقع هذا الأمر شائع ويشبهه المثال التالي :


Update Rabia set fname='ابو ربيع' where fname='أبو ربيع';


لاحظ أن الألف في الاسم الأول بدون همزة وفي الاسم الثاني بهمزة..

قد يستخدم مثل هذا المثال لتوحيد الأسماء خصوصاً مع اللغة العربية ، كما يمكن أن يستخدم أيضاً لتجاهل تأثير الهمزة في عمليات البحث ، فمثلاً يصبح أحمد = احمد .

ولكن ماذا لو أردنا تعميم التغييرات ... في هذه الحالة لن نضع الشرط ، ويمكن وضع أمر شبيه بالأمر التالي لزيادة الأعمار 5 سنوات :


Update Rabia set age=age+5;


نفذ الكود السابق وستلاحظ أن الأعمار زادت خمس سنوات..

يعتبر هذا الأمر من أكثر الأوامر شيوعاً في قواعد بيانات الشركات ... فمثلاً يستخدم لزيادة رواتب الموظفين بنسبة معينة ( يمكن أن تكون زيادة ثابته أو نسبيه ) .

ولكن ماذا عن الحذف ؟ في الواقع تتخذ جملة الحذف الصيغة العامة التالية :


DELETE FROM table WHERE colum = value;


ويمكن أن يكون الحذف تحت تأثير تحقق أكثر من شرط .. في المثال التالي سوف نحذف جميع الأشخاص الذين تزيد أعمارهم عن الثمانين :


Delete from Rabia where age >80;


ولكن ماذا عن حذف كامل محتويات جدول ما ... بإختصار هذه هي الطريقة :


DELETE * FROM Rabia;


ولكن انتبه لا تحذف الجدول Rabia لأننا باقي بنشتغل عليه..









تم بحمد الله.. ونلتقي بالدرس القادم إن شاء الله..

تحياتي : أبو ربيع

--------------------------

المصدر (http://www.gryati.com/vb/showthread.php?t=14458)