learn oracle

42
ﻣﻮﻗﻊ ﻣﻦ اﻟﻤﻠﻒ ﺗﺤﻤﻴﻞ ﺗﻢ اﻟﺘﻘﻨﻴﺔ اﻟﺒﻮﺻﻠﺔwww.boosla.com

Upload: ayman-kanaan-kamil

Post on 24-Oct-2014

35 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Learn Oracle

تم تحميل الملف من موقع البوصلة التقنية

www.boosla.com

Page 2: Learn Oracle

بسم اهللا الرحمن الرحيم

عبـارة عـن قواعـد البيانـات أنعـن مفـاهيم علـم قواعـد البيانـات ؛ مـن الـدروس السـابقة نستتنج

سـهل ييقـة أو أكثـر مـن طريقـة ل البيانـات وعرضـها بطر ميع لكمية كبيـرة مـن المعلومـات أو تج .االستفادة منها

. إلى الملف ات إضافة معلومة أو بيان-أ . حذف البيانات القديمة -ب .ير البيانات الموجودة ي تغ- جـ .يانات داخل الملفات ترتيب وتنظيم الب-د

. عرض البيانات على شكل تقرير أو نموذج -هـ .. وكتطبيق لهذه المفاهيم ، سنتعلم لغة أوراكل من الـصفر بإذن اهللا تعالى

لقواعـد البيانـات فيجـب ةنمـا هـي لغـة قواعـد بيانـات مبرمجـ إو ر لغة برمجةالتعتباالوراكل إناالوراكــل وبــين لغــات البرمجــة الفــرق االساســي بــين لغــة قواعــد البيانــات ا ن نعــرف هــذ اعلينــايعنـي أنهـا ، SQL Server Microsoftوأقـرب إلـى Access Microsoftهي شبيهة إلـى ، فاالخرى

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

فيمكنك عمل برنامج رسم كما برنامج الرسام في ويندوز ويمكنـك الـتحكم بهـا علـى حـد كبير من المرونة واإلمكانيات التي تسمح لك حتى باالرتباط بقواعـد بيانـات متعـددة ولكـن

:نذكر منها غيرها من لغات قواعد البيانات تتميز ببميزات عالية تميزها عن أوراكل ساسـي النتشـارها أوهـو سـبب ؛ إذ تتمتـع بأمـان عـالي جـدا ، قاعدة بيانات قويـة و آمنـة أنها •

..لها التكلفة الباهظة الهائل رغم

مـــة تعللــسلس

ةــــــولبسه

Page 3: Learn Oracle

. ، مقارنة بغيرها نها تعتبر قواعد بيانات ضخمةأ •ــي أ • ــا ف ــا وإظهاره ــديها أدوات تســاعدها للتعامــل معه ــددة يوجــد ل ــا يســمى شــكال متع ، بم

حيث يمكنك إدخال البيانات واستخراجها عـن ، DEVELOPER تطبيقات أوراكل ؛ أي الـ طريــق نمــاذج وتقــارير ورســوم بيانيــة ولكــن ال يمكنهــا التعامــل مــع قاعــدة بيانــات غيــر

.نك من عمل برامج مثل الرسامكأوراكل كما أنها ال تم

٠ )Administer( مدير قواعد البيانات االوراكل-١ ) . Developer (مطور قواعد البيانات االوراكل -٢

و SQL، يجـب أن نـتقن لغـة ونحن بصدد التعلم للوصول إلى مطور قواعد البيانات ، وحتى نتعلمـه PL/SQL.. ثـم نـدخل فـي الــDEVELOPER بجزأيـه الــ FORM والــ REPORT .. وسـوف نبـدأ هنـا

.. PL/SQL ثم SQL عن الـتواضعبكورس م

Structured Query Language

عبارة عن مجموعة من األوامـر التـي تحتاجهـا البـرامج وكـذلك المسـتخدمين للوصـول للبيانـات ..الموجودة ضمن قاعدة بيانات أوراكل

وذلـك فـي منتصـف السـبعينات ، وكانـت IBMللغـة البدايـة مـن قبـل شـركة تم تطـوير هـذه ا . عالقئية بيانات حيث كانت عبارة عن نموذج لنظام إدارة قواعد System Rتسمى

ومن SEQUEL2 باسم INM Journal of R&Dفي مجلة م١٩٧٦ في SQLبعدها تم توصيف لغة . SQLأول نسحة تجارية من لغة إنزال م ١٩٧٩ في ORACLEثم قامت شركة

،ألنهـا تتعامـل مـع Non-Procedural Language هـي عبـارة عـن لغـة غيـر إجرائيـة SQLولغـة مجموعة سجالت في الوقت نفسه وليس مع سجل وحيد كما أنها تمكننا من استكشاف البيانات

.تلقائيا دارة النظـام وقواعـد البيانـات على تعليمات تفيد المستخدمين وتمكنهم من إ SQLوتحتوي لغة

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

SQL SQL*Plus مـن خـالل Oracle Server عبارة عن لغة تعليمات لإلتصال بمخدم أوراكل SQLوكما نعلم أن

، يتم تخزينها في جزء مـن الـذاكرة SQLأية أداة أو أي تطبيق ، وعندما تقوم بكتابة تعليمة . وتبقى فيها حتى تقوم بكتابة تعليمة جديدة SQL buffer المؤقتة SQLيسمى ذاكرة

SQLعــن أداة مــن أدوات أوراكــل يمكنهــا التعــرف علــى تعليمــات فهــي عبــارة SQL*Plusأمــا وإرسالها إلى مخدم أوراكل لتنفيذها ،وهي تمتلك تعليمات إضـافية خاصـة بهـا سـنقوم بشـرحها

.في الدرس الثاني إن شاء اهللا

Page 4: Learn Oracle

وراكـل ، أي أنـه مـن خـالل هـذه اللغـة نسـتطيع أ نتعامل من خاللها مع قاعدة البيانات وهذه اللغة ، ومنحـه (GRANT) عطاء الصـالحيات لمسـتخدم بإعطائـه صـالحية االتصـال بقاعـدة البيانـات إ

إنشـاء الجـداول كـذلك بإمكاننـا ، ) REVOKE (صـالحيات وامتيـازات ممارسـة عمليـات معينـة (CREATE)، ــا ــديل عليهـ ــداول ، (ALTER) والتعـ ــذف الجـ ــا ، (DROP)وحـ ــوب فيهـ ــر مرغـ الغيـ

والتعـــديل علـــى البيانـــات المدخلـــة ، (INSERT)ل بالبيانـــات وكـــذلك نســـتطيع مـــلء الجـــداو(UPDATE) ، وحذف أي بيانات(DELETE) وبعـد أن تكتمـل لـدينا الجـداول . غيـر مرغـوب فيهـا

.(SELECT)نستطيع االستعالم عن البيانات المدخلة وذلك باألمر مجموعـة أوامـر لغـة ل ،حيـث تشـكل كـ ثالثة أقسـام إلى SQLتقسيم أوامر مما سبق يمكننا

:فرعية من هذه اللغة وهي كالتالي

١- Data Definition Language (DDL): - :وتحتوي على ثالث أوامر وهي

. ( CREATE TABLE )يستخدم إلنشاء الجداول .( ALTER TABLE )يستخدم للتعديل على جدول منشأ سابقا .( DROP TABLE ) غير مرغوب فيه يستخدم لحذف جدول

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

٢- Data Manipulation Language (DML): - :وتحتوي على أربع أوامر وهي

.( INSERT INTO )دخال البيانات إلى الجدول أمر إ .( UPDATE ) أمر التعديل على بيانات الجدول .( DELETE ) أمر حذف بيانات من الجدول . ( SELECT ) أمر االستعالم عن شيء معين في بيانات الجدول

وتعـديل ، بـداخل الجـداول وذلـك مـن إدخـال بيانـات وتعمل هذه األوامـر علـى البيانـات التـي .وحذف بيانات مدخله واالستعالم عن بيانات معينه ، بيانات مدخله

٣- (DCL) Data Control Language: - :وتحتوي على أمرين اثنين هما

.(GRANT)أمر إعطاء االمتيازات والصالحيات .(REVOKE)زات والصالحيات أمر منح االمتيا

فـي بدراسة كل أمر على حده والتعـرف علـى وظيفتـه وكيفيـة التعامـل معـه وكتابتـه وسنقوم ..دروسنا القادمة بإذن اهللا تعالى

Page 5: Learn Oracle

.ببميزات عالية تميزها عن غيرها من لغات قواعد البيانات أوراكلتتميز • ،ألنهـا ) (Non-Procedural Language هي عبارة عن لغة غير إجرائية SQLلغة •

لغــة تعليمــات ، وهـي تتعامـل مــع مجموعـة ســجالت فـي الوقــت نفســه ولـيس مــع سـجل وحيــد .. من خالل أية أداة أو أي تطبيق Oracle Serverلإلتصال بمخدم أوراكل

• SQL*Plus يمكنهــا التعــرف علــى تعليمــات ؛ عبــارة عــن أداة مــن أدوات أوراكــلSQL .إلى مخدم أوراكل لتنفيذها ،وهي تمتلك تعليمات إضافية خاصة بهاوإرسالها

• م أوامر قستSQL إلى ثالثة أقسام : . )DDL (تعريف البيانات أوامر -١ . )DML( أوامر معالجة البيانات -٢ ).DCL(أوامر التحكم بالبيانات -٣

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

..وسامحونا على التقصير ، وفق اهللا الجميع لما يحبه ويرضاه

ــــــــــــــــــــــفـــــاألسيـــــــــ

Email:[email protected]

Page 6: Learn Oracle

بسم اهللا الرحمن الرحيم

Data التي نقرأها ؛ بشرح أوامر لغة معالجة البيانات SQLعادة إن لم يكن دائما ما تبدأ دروس Manipulation Language (DML) وبــاألخص تعليمــة اإلســتعالم عــن البيانــات و استعراضــها ،

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

..لدى المتعلم قويا ومتوافقا مع منهجية أوراكل ، SQL * Plus 3.3لـذلك سنشـرح هـذا األسـاس علـى درسـين ، أوالهمـا نتحـدث فيـه عـن قـوائم

وثانيهـا عـن ..دم خاص باسمنا ، ومنحـه صـالحية االتصـال بقاعـدة البيانـات وكيفة إنشاء مستخ ..ونبدأ على بركة اهللا .. SQL * Plus 3.3 أوامر القوائم التحرير والملفات في

SQL * Plus 3.3: -

... SQL * Plus 3.3 عند تحميلك للغة ، ستجد أيقونة في سطح المكتب باسم

وكلمـة User name تظهر لك شاشة تقـوم بسـؤالك عـن اسـم المسـتخدم لها غيلك ند تشوعفــي حــال كنــت تســتخدم النســخة Database وتعريــف اســم قاعــدة البيانــات Password المــرور

الخاصة بالكمبيوتر الشخصـي فيمكنـك اسـتخدام اسـم المسـتخدم وكلمـة المـرور فقـط فـي ضع االفتراضي عند تشغيله ألول مرة هو كتابة حال لم يكن لديك أكثر من قاعدة بيانات الو

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

:كمايلي ..

..وهو افتراضي ..لنظام بمعنى أصح وهو ما يمثل أواركل أو ا ؛ system االسم االول*

سلسلــة تعلـــم

ةــــــبسهول

SQL * Plus 3.3

system

manager

Page 7: Learn Oracle

..scottأو من خالل االسم الثاني وهو المستخدم االفتراضي

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

مثــل االتصــال واإلضــافة والحــذف والتعــديل ) الصــالحيات (الســماحيات بعــض إلعطائــك ســتخدمت ..واآلن سنتلم كيفية إنشاء مستخدم خاص بك ..واالستعالم

،وحتـى revoke و grant هـي المسـؤولة عـن ذلـك باسـتخدام االمـرين DCL عرفنا سـابقا أن لغـة

وفـي دروس متقدمـة إن شـاء اهللا ؛ ، grant نستطيع انشاء مسـتخدم جديـد ، سـنحتاج حاليـا لألمـر وفيما يلي خطوات إنشاء مستخدم جديد ..إلعطاء صالحيات العمليات له revoke سنتتخدم األمر

ل ؛ حتـى تطبقهـا ومنحه بعض الصالحيات واالمتيازات ، لكن لن تتقن هذه الخطـوات أخـي الفاضـ ..حرفيا ، وخطوة خطوة مع بعضنا البعض

بكلمة السر ali :وليكن المستخدم الذي نريد انشاءه هو .. نبدأ بكتابة األمر التالي -١aaa ).. نشىء مستخدم باسمه ، وكلمة سر سهلة ، حتى ال ينساهاطبعأ كل واحد ي.. (

; SQL> create user ali identified by aaa

..aaa : يكون معرفا بكلمة السر ، ali أنشئ مستخدم باإلسم :ومعناه ..ولكن ستظهر لك رسالة الخطأ التالية

ERROR at line 1 : ORA-01031 : كافية غير صالحيات

أنك ليست لديك أي صالحية حتى تنشئ مستخدم جديد ، والسبب هو : لة اومفاد هذه الرس

..فيجب االتصال بالنظام ..، أو بمعنى أصح بالنظام عدم اتصالك بأوراكل

..من خالل األمر system يكون االتصال بالنظام -٢SQL> connect system

..وكذلك عندما تريد أن تتصل بأي مستخدمSQL> connect اسم المستخدم

scott

tiger

Page 8: Learn Oracle

يظهر لنا السطر التالي ، ) Enter(بدون فاصلة منقوطة ، وبمجرد الضغط على مفتاح االدخال

) .. password ( طالبا منا ادخال كلمة السر

Enter password : هنا ندخل كلمة السر ..كمايلي manager وهي system فندخل له كلمة السر الخاصة بـ

Enter password : ******* ..فتظهر لنا العبارة التالية

Connected .

..دل على أننا اتصلنا بالنظام ، ويمكننا إجراء مانريده من عمليات والتي ت ٣- نعيد كتابة أمر إنشاء مستخدم جديد ..

SQL> create user ali identified by aaa ; ..فتظهر لنا العبارة التالية والتي تخبرنا أنه تم إنشاء مستخدم

User created.

..grant االتصال بالنظام ، من خالل األمر صالحيةali واآلن نعطي المستخدمSQL> grant connect to ali;

..حق االتصال بالنظام ali ومعناها اعطي المستخدم ..فتظهر لنا الرسالة التالية

Grant succeeded. ..حق االتصال بالنظام ali وهي تخبرنا ، أنه تم اعطاء المستخدم

، بكلمة سر معينـة ، وإعطائـه حـق اإلتصـال بالنظـام ، وبذلك نكون استطعنا إنشاء مستخدم ..كمايلي ..وبقي أن تجرب هذه الصالحية

ثم ادخل مرة أخـرى ، وعنـد ظهـور شاشـة الـدخول قـم بادخـال اسـم ، SQL قم بالخروج نهائيا من ثم كلمة السر ، أو تكتـب كلمـة السـر فـي الخانـة الثانيـة / المستخدم الذي أنشأته متبوعا بـ

..عند ذلك تدخل إلى النظام .. OK ثم اضغط على زر..كلها صحيحة ..

Page 9: Learn Oracle

إذا كان اسم المستخدم خاطئا ، أو كانت كلمة السر خاطئة ستدخل إلى بيئة في حالة ما

SQL * Plus 3.3 تطالب بإدخال اسم المستخدم وكلمة السرولكن س ، ..

ندخل اسم المستخدم ، وكلمة السر ، مجموعة ) SQL * Plus 3.3(عند الدخول إلى •

..العمل في الشبكة إن كانت موجودة بكلمة السر system : مستخدمين افترافضين هما)SQL * Plus 3.3(يوجد في بيئة •

:manager و scott بكلمة السر :tiger.. :هي ) SQL * Plus 3.3(صيغة إنشاء مستخدم في بيئة •

; SQL> create user name user identified by password . كلمة السر الخاصة به password اسم للمستخدم ، و name userحيث

اليسمح بإنشاء مستخدم ومنحه صالحيات إال بعد االتصال بالنظام ، ويكون االتصال • ..بالنظام و بأي مستخدم بالصيغة التالية

SQL> connect اسم المستخدم

. صالحية االتصال لمستخدم ، نستخدم الصيغة التالية إلعطاء •SQL> grant connect to name user ;

.. اسم للمستخدم name user حيث ****************************************************************************************************

بيئة التحرير والملفات فيعن أوامر القوائم و القادم بإذن اهللا سنتحدثوفي الدرسSQL * Plus 3.3 محونا على التقصير ، وفق اهللا الجميع وسا.، فإلى لقاء قريب بإذن اهللا تعالى

..لما يحبه ويرضاه

ـــــــــــــــــــــــــفــاألسيـــــــــ

Email:[email protected]

Page 10: Learn Oracle

بسم اهللا الرحمن الرحيم

في بيئة والملفات يرر في هذا الدرس بإذن اهللا ؛ أوامر التحسنشرح SQL * Plus 3.3 ..

SQL * Plus ، إجراء عمليات التحرير عليها باستخدام أوامر SQLيمكنك بعد كتابة أوامر

:مع إعطاء األمثلة الموضحة ، وسنقوم اآلن بشرح هذه األوامر 3.3

• Append

..هو الشكل العام للتعليمة إن sql>A ماسنضيفه

sql>select ename from : لدينا التعليمة التالية : فمثال

: نكتب from بعد empوأردنا كتابة اسم الجدول Sql>A emp ;

: وهنا تصبح التعليمة على الشكل sql>select ename from emp ;

• Change

يسمح هذا األمر بتغيير كلمة ما ضمن التعليمة بكلمة أخرى ، ونستفيد من هذا األمر عند النسـتطيع SQL * Plus 3.3 اسم جدول أو حقل بالخطـأ ، وذلـك ألننـا فـي بيئـة كتابة

..الرجوع إلى السطر السابق في حالة كتابة التعليمات

سلسلــة تعلـــم

ةــــــبسهول

SQL * Plus 3.3

3.3

Page 11: Learn Oracle

..هو الشكل العام للتعليمة إن sql> C / old /new

.الكلمة الجديدة new الكلمة المراد استبدالها ، وold حيث..وهذا هو الشكل القياسي لها : فإذا كانت لدينا العبارة التاية

sql>select enamee from emp dept

: نكتب األمر ename إلى enameeوأردنا تغيير كلمة sql> c / enamee / ename

: بكتابة األمر ، وذلك حذف نص ما عندما نريد وهناك صيغة ثانية ،sql>C[HANGE] / text /

:لتكن لدينا مثال العبارة التالية مثال

sql>select ename from emp dept ; : نكتب deptفإذا أردنا حذف كلمة

sql> c / dept /

نريد الحذف فقط ، الثانية ال ستبدالها بالمحذوف ألننا /الحظ أننالم نكتب شيء بعد الـ * :فتصبح العبارة بعد الحذف

sql>select ename from emp ; • Clear buffer SQL

في ذاكرة مؤقتة SQLكما ذكرنا في درسنا السابق فإنه يتم تخزين أي تعليمة من تعليمات :ة األمر ، ويكمننا مسح هذه الذاركة بكتابSQL bufferتسمى دارئ

sql>clear buffer (cl buff);

:واختصارا لألمر نكتب مابداخل القوس فقط ، فمثال لتكن العبارة التالية sql>select * from tab ;

وناتج هذا ..هذا األمر يقوم باستعراض أسماء جميع الجدوال الموجودة في قاعدة البيانات فإذا أردنا ..SQL bufferى الشاة ويخزن مؤقتا في األمر ، الذي هو أسماء الجدوال ، سيظهر عل

..مسح هذه القيمة المخزنة نكتب SQL> cl buff ;

:فتظهر لنا العبارة التاية والتي تخبرنا بمسح هذه الذاكرة buffer cleared

Page 12: Learn Oracle

E ويمكن اختصار هذا األمر بالضغط على مفتاحيshift +Delete .. فتظهر لنا الرسالة ..ية التال

• Save ..المؤقتة في ملف بكتابة األمر SQLيمكن حفظ محتوى ذاكرة

sql>sav filename.sql

E حيثfilename.sqlاسم الملف المراد الحفظ به ، ويلزم باإلمتدادsql SCOOTلو استعرضنا جميع الجدوال الموجود ة في قاعدة البيانات ، ولكن للمستخدم : فمثال

..سنجد النتجة التالية .. tiger بكلمة السر الخاصة بها ; SQL> select * from tab

TNAME TABTYPE CLUSTERID

------------------------------ ------- --------- BONUS TABLE DEPT TABLE EMP TABLE SALGRADE TABLE SECTION TABLE STUDENT TABLE

rows selected ; 6

:نكتب األمر التالي .. وما ستجلبه من نتائج Selectوأردنا حفظ هذه تعليمة

sql>sav ali.sql ;

Page 13: Learn Oracle

..فستظهر لنا العبارة التالية

Created file ali.sql

...ali.sql تخبرنا أنه تم حفظ التعليمة بملف اسمه تيوال

..فظناه في التعليمة التالية وسنتأكد من نجاح هذه التعليمة ، عندما نجلب الملف الذي ح

• Get

والشكل العام لهذا .. المؤقتة SQLيستدعي هذا األمر محتوى آخر ملف تم حفظه ضمن ذاكرة..األمر

sql>get filename.sql المؤقتة SQLتم حفظه ضمن ذاكرةملف آخر اسم filename.sqlحيث

..ali.sqlالذي حفظناه سابقا باالسمولنقم اآلن بجلب الملف SQL> get ali.sql;

..والنتيجة هي بيان ناتج آخر استعالم 1* select * from tab

.. SQLبعد محث / وبمجرد تنفيذ التعليمة بكتابةSQL> /

..فيظهر لنا نتيجة اإلستعالم ، كما رأيناها قبل خزن الملف TNAME TABTYPE CLUSTERID ------------------------------ ------- --------- BONUS TABLE DEPT TABLE EMP TABLE SALGRADE TABLE SECTION TABLE STUDENT TABLE 6 rows selected.

• Start

:يمكننا القيام بتنفيذ محتوى ملف ؛ تم حفظه من قبل بكتابة األمر sql>star filename.sql

Page 14: Learn Oracle

..أو األمر sql> @ filename.sql

.. نكتب األمر ali.sqlفمثال إذا أردنا تنفيذ محتوى الملف

SQL> star ali.sql; ..أو األمر

SQL> @ ali.sql; ..وستكون لدينا نفس النتيجة طبعا

• Edit .بواسطته نستطيع تحرير وتعديل محتوى تعليمات ملف مافهذا األمر هام ويكثر استخدامه ،

:فإذا كان الملف الحالي نكتب SQL> ed

..Enterط مفتاح ثم نضغ ..العبارة التالية فستظهر لنا

Wrote file afiedt.buf برنامج التحرير الخاص (نافذة المفكرة والتي تدل على الملف الذي كتب ، بفتح

) :Windowsبالـ

ــا ؛ ــف التــي تعليمــة الويظهــر مكتوبــا داخله وعنــدها نســتطيع التعــديل ..تــم كتابتهــا فــي المل

بعـد ان SQLإلضافة والحذف في التعليمات ، ألننا ال نستطيع مسح تعليمة كتبناها فـي بيئـة وا في المفكرة ثم نسـخها ولصـقها SQLتجاوزناها بسطر أو أكثر ، ويفضل البعض كتابة تعليمات

Page 15: Learn Oracle

، وهـذا تفضــيل خـاطئ بــل هــو نـاجم عــن الكسـل فــي الكتابـة اللحظيــة لكــل SQLفـي بيئــة .. وقتها تعليمة وتنفيذها في

E ولكن لماذا هذا التفضيل خاطئ ، ألسباب منها : ..حتى تتعلم أخطائك حين الكتابة • .تتعود على كتابة التعليمات • ..رسائل الخطأ وكيفية التعامل معها على عرف توت •

..نكتب .. أما لتحرير ملف ما ، ومحفوظ باسم معين

SQL> ed ali.sql; ..وبنفس الخطوات السابقة

ــا مــن التحريــر فــي بيئــة المفكــرة ــاء التعليمــات بالفاصــلة ..وبعــد انتهائن ننتبــه إلــى عــد م انه

.. SQLبعد محث / بكتابة ، ليس علينا سوى حفظ الملف ، ثم تنفيذه ;المنقوطة

• Describe )الخ..رقم ، نص ، تاريخ ( ، من حيث نوعها إظهار صفات حقول الجدولبهذا األمر د المقصو

..وصيغة هذا األمر ..وحجم هذا الحقل ، وبيان إن كان لهذا الحقل قيد أم ال SQL> desc tablename;

..هو اسم الجدول tablename يثح ..نكتب األمر التالي .. emp فمثال إذا أردنا عرض خصائص الجدول

SQL> desc emp; ..هي كما يلي النتيجة و

Name Null? Type ------------------------------- -------- ---- EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2)

Page 16: Learn Oracle

-: SQL * Plus 3.3في بيئة ر في بيئة حريمن أوامر الت • sql>A ماسنضيفه :أمر اإلضافة - sql> C / old /new :أمر التعديل - .الكلمة الجديدة new الكلمة المراد استبدالها ، و old حيث - SQL : ; SQL> cl buff) مخزن مؤقت (أمر مسح دارئ - -: SQL * Plus 3.3في بيئة ر في بيئة حريمن أوامر الت • sql>sav filename.sql : أمر حفظ الملفات -

sqlاسم الملف المراد الحفظ به ، ويلزم باإلمتدادfilename.sql حيث :أمر جلب محتوى ملف -

sql>get filename.sql . . المؤقتة SQL تم حفظه ضمن ذاكرةملف آخر اسم filename.sql ثحي

:أمر تنفيذ محتوى ملف -sql>star filename.sql

..أو األمر sql> @ filename.sql

..ملف محفوظ سابقا اسم filename.sql ثحيأمر تشغيل برنامج تحرير -

SQL> ed ..خصائص جدول عرض أمر -

SQL> desc tablename; ..هو اسم الجدول tablename يثح

****************************************************************************************************

.. Select القادم بإذن اهللا سنبدأ بجلمة اإلستعالم وفي الدرس ..وسامحونا على التقصير ، وفق اهللا الجميع لما يحبه ويرضاه .فإلى لقاء قريب بإذن اهللا تعالى

ـــــــــفـــــــــــــــــــــــــــــاألسيـــــــــ

Email:[email protected]

Page 17: Learn Oracle

بسم اهللا الرحمن الرحيم

هـي لغـة تعريـف البيانـات ، وتعتبـر ، و D.D.Lلغـة الفرعيـة SQLعلمنا سابقا أن من لغات كما

، وعندما تقوم بتعريف هذه البيانات يتم وضع إدخاالت لها في قـاموس البيانـات SQLأصال بناء : فإن األوامر األساسية لهذه اللغة هي أيضا ، وكما ذكرنا سابقاORACLEالخاص بـ

. ( CREATE TABLE ) الجداول يستخدم إلنشاء • . ( ALTER TABLE )يستخدم للتعديل على جدول منشأ سابقا • .( DROP TABLE ) يستخدم لحذف جدول غير مرغوب فيه •

..وسنبدأ في درسنا هذا بشرح األمر األول واألساسي • CREATE TABLE:

:هناك نوعين من األوامر إلنشاء جدول ) .new table(شاء جدول جديد ان • ) .copied table(من جدول آخر قديم بحقول أخرى بصفات ، انشاء جدول جديد •

create new table :كالتالي CREATEلكي نقوم بإنشاء جدول نستخدم األمر

CREATE TABLE الجدولاسم ;( حقول الجدول )

:اسم الجدول عدة شروط وهي ويشترط في . حرفا 30ال يتجاوز طول اسم الجدول عن -١يبدأ البد أن يمكن ان يكون اسم الجدول خليط من األرقام والحروف والرموز الخاصه ولكن -٢

.بحرف على األقل . أن ال يكون اسم الجدول كلمة محجوزة في اللغة -٣

.والشروط السابقة تـنـطبـق أيضا على أسماء الحقول في الجدول

سلسلــة تعلـــم

ةــــــبسهول

SQL

Page 18: Learn Oracle

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

.الحقا بإذن اهللا حقل ، علما بأن عدة أنواع نذكرها مع القيمة القصوى لكل SQLكما أن للمتغيرات في لغة

..حديثة ، ومن البديهي أن تزيد هذه القيم في اإلصدارات ال 8ORACLE هذه القيم خاصة بـ

CHAR 2000عدد ثابت من الحروف ، والحد األقصى لعدد األحرف هو ستخدم هذا النوع لتخزين يو

.بايت

CHAR (16) اسم الحقل var char يستخدم هذا النوع لتخزين بيانات حرفية متنوعة ، والحد األقصى لعدد

.بايت 4000األحرف هو

VARCHAR (50) اسم الحقل

var char2 ة ، والحد األقصى لعدد يستخدم هذا النوع لتخزين بيانات حرفية متنوع

.بايت 4000 األحرف هو

VARCHAR2 (50) اسم الحقل

؟ VARCHAR & VARCHAR2 ماهو الفرق بينلكن خانـات ٦ خانات وكان االسم يتكون مـن ١٠حجزنا يسمى المتغير المطاطي أي لو var char2أن

سـوف يحجـز جميـع الخانـات حتـى ف var char الـ بعكس خانات تلقائيا٦فانه سوف يقصر الى . ولو لم تستعمل

NUMBER

وتحديــد طــول الحقــل ) ٩..... ٢،١،٠(تتكــون البيانــات المدخلــة فــي هــذا الحقــل مــن األرقــام ..اختياري

Page 19: Learn Oracle

NUMBER (50) اسم الحقل

NUMBER ) ٩..... ٢،١،٠( تتكون البيانات المدخلة في هذا الحقل من األرقام

NUMBER ( I , j ) اسم الحقل j ، أمـا اصلة أيضـا طول العدد العشري كامال شامال العدد الصحيح وما على يمين الف Iحيث يمثل

.فيمثل طول األعداد العشرية يمين الفاصلة RAW

.بايت 2000و لخزن بيانات ثنائية ، وأقصى طول له هيستخدم DATE :

) .يوم ، شهر ، سنة (لخزن بيانات من نوع التاريخ ويستخدم LONG

. جيجا بايت 2لخزن البيانات النصية ، والتي يصل طولها إلى ويستخدم :وهناك أنواع أخرى لسنا بحاجة إليها اآلن وهي

LONG RAW ) ت جيجا باي 2يحتوي على بيانات ثنائية يصل طولها إلى ( . ROWID ) أسطر الجدول في القرص يحتوي على مواقع ( .

: أو اإلصدارات األحدث منه ٨اإلصدار وأما هذه األربعة األخيرة فهي موجودة فقط في BLOB ) كائن ثنائي كبير( . CLOB ) يعتمد على المحارفكبير كائن ( . NCLOB ) وحيدة البايت أو متعددة البياتات يعتمد على المحارفكبير كائن .( BFILE ) ملف خارجي كبير( .

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

..كنت تحت أي مستخدم آخر ، فاخرج منه ، وادخل باسمك : ويحتوي على الحقول التاليةSCHOOLالقيام بإنشاء جدول للمدارس باسم نريد: مثال

.مفتاح أساسي 10 بطول رقميونوعه رقم المدرسة .غير فارغ 30 بطول حرفي ونوعه ةاسم المدرس .غير فارغ 15 بطول حرفيونوعه )ابتدائي ، متوسط ، ثانوي ( نوع المدرسة .30 بطول حرفي ونوعه موقع المدرسة .تاريخ ونوعه ةتاريخ تأسيس المدرس

Page 20: Learn Oracle

..وهذا عند كل إنشاء جدول بالطريقة التالية ، جديد تعليمات إنشاء جدول سنكتب و

CREATE TABLE SCHOOL ( )لهاطو( نوع البيانات اسم الحقل [ فارغ أو غير فارغ أو قـيود ] , )طولها( نوع البيانات اسم الحقل [ فارغ أو غير فارغ أو قيـود ] , ……………………………………………………….. , ……………………………………………………….. , ……………………………………………………….. , )طولها( نوع البيانات اسم الحقل [ فارغ أو غير فارغ أو قـيود ]

) ; وسنشرح كيفية إنشاء القيود على ..مكتوب باألحمر هي القيود على هذه الحقل وماهو

..الحقول في درسنا القادم بإذن اهللا ..إذا نكتب ما يلي إلنشاء جدول المدرسة

CREATE TABLE SCHOOL ( S_NO NUMBER (10) , S_NAME VARCHAR 2 (30) , S_TYPE CHAR (15) , S_LOC VARCHAR 2 (30) , S_DATE DATE ) ;

..وإذا ظهرت لنا العبارة التالية ، نكون قد نجحنا في إنشاء الجدول Table created .

:ويفضل أن يكون اسم الحقل على جزأين . ليشير إليه Sيشير إلى اسم الجدول ، وهنا أخذنا الحرف جزأ .يشير إلى اسم الحقل نفسه ويكون معبرا عنه جزأ

وهذا التفضيل سببه التسهيل ، وذلك عند اإلستعالم عن الحقول أو إجراء بعض العمليات ..عليها

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

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

SQL> DESC SCHOOL;

Page 21: Learn Oracle

..لنا مواصفات جدول المدرسة كمايلي وستظهر

Name Null? Type ------------------------------- -------- ---- S_NO NUMBER(10) S_NAME CHAR2(30) S_TYPE CHAR(15) S_LOC CHAR2(30) S_DATE DATE

..درسنا هذا ببيان الطريقة الثانية إلنشاء الجدوال ونختم

ecopied tabl بـدون أن نعرفهـا مـن ناحيـة الطـول ، وذلـك يحوي بعـض الحقـول ، دجديبإنشاء جدول هنا قوم ن

:الصيغة التالية نستخدم حقول أخرى نختارها من جدول آخر ، ولكي نقوم بذلك بصفات

CREATE TABLE اسم الجدول الجديد ( الجدول الجديد حقول ) AS SELECT ( ( قديم الجدول المن حقول نختار FROM قديم اسم الجدول ال ;

من الجدول السابق ار له بعض الحقول من تخ، ون STUDENTسنقوم بإنشاء جدول جديد اسمه

..منه ، وسنختار حقلين SCHOOLالذي أنشأناه وهو

SQL> CREATE TABLE STUDENT (S_NO,S_NAME) AS SELECT S_NAME,S_TYPE FROM SCHOOL ; Table created .

، ويحوي على STUDENT الطالب المسمى لي جدول قمن التعليمات السابقة أننا أنشأنا حالحظ ن

بـدون أن نعـرف أطوالهمـا ، وذلـك ،)S_NAME(واسم الطالـب ) S_NO(حقلين هما رقم الطالب ــين همــا ــا أخــذنا أطوالهمــا بأخــذنا حقل ونــوع المدرســة ) S_NAME(حقــل اســم المدرســة ألنن

)S_TYPE ( من الجدول السابقSCHOOL.

Page 22: Learn Oracle

STUDENTولكي تتأكد من كالمي السابق ، اكتب أمر استعراض خصاءئص الجدول الجديد

.. ، كما يلي SCHOOLوستجد أنه أعطى حقوله خصائص الحقلين المختارين من جدول

SQL> DESC STUDENT ; Name Null? Type ------------------------------- -------- ---- S_NO CHAR(30) S_NAME CHAR(15)

:هناك نوعين من األوامر إلنشاء جدول *

:وصيغته شاء جدول جديد ان •CREATE TABLE الجدولاسم ;( حقول الجدول )

:وصيغته من جدول آخر قديم حقول أخرى بصفات وانشاء جدول جديد •

CREATE TABLE اسم الجدول الجديد ( الجدول الجديد حقول ) AS SELECT ( ( قديم الجدول المن حقول نختار FROM قديم اسم الجدول ال ;

:عدة شروط وهي وحقوله اسم الجدول ويشترط في * . حرفا 30ال يتجاوز طول اسم الجدول عن -١يبدأ البد أن يمكن ان يكون اسم الجدول خليط من األرقام والحروف والرموز الخاصه ولكن -٢

.بحرف على األقل . أن ال يكون اسم الجدول كلمة محجوزة في اللغة -٣ :لحقول الجدول صفتين هما و

.أي الحجم الذي سيخزنه في قاعدة البيانات : طول هذا الحقل - عني الشروط الالزمة لقيم هذه الحقولت وهي : القيود على هذا الحقل - : أهمها ما يلي عدة أنواع SQLللمتغيرات في لغة •

CHAR و VARCHAR و VARCHAR2 وNUMBER و RAWو DATA وLONG.

Page 23: Learn Oracle

: VARCHAR & VARCHAR2 الفرق بين* ٦ خانـات وكـان االسـم يتكـون مـن ١٠حجزنـا يسمى المتغيـر المطـاطي أي لـو VARCHAR2 أن

ســوف يحجــز جميــع ف VARCHAR الـــبعكــس خانــات تلقائيــا٦خانــات فانــه ســوف يقصــر الــى . الخانات حتى ولو لم تستعمل

**************************************************************************************************** ..سنشرح ماهية القيود وأنواعها مع مثال لكل نوع القادم بإذن اهللا وفي الدرس

..وسامحونا على التقصير ، وفق اهللا الجميع لما يحبه ويرضاه . تعالى فإلى لقاء قريب بإذن اهللا

ـــــــــفـــــــــــــــــــــــــــــاألسيـــــــــ

Email:[email protected]

Page 24: Learn Oracle

بسم اهللا الرحمن الرحيم

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

حية اإلتصـال فقـط ، ولكـي تكـون لـيكم بـاقي الصـالحيات ، نكتـب الإالصـ اآلن ليس لكـم ..األمر التالي

SQL> grant resource to ; ..فتظهر لنا العبارة التالية ، والتي تخبرنا أنه تم منح الصالحية

Grant succeeded. ..واآلن بإمكانكم إنشاء الجدوال والتعامل معها بكل حرية من خالل اسمك الخاص

معينـة ، ولكنهـا التحمـل أي حقـول بمواصـفات دةق بإنشاء جـدول يحـوي عـ في درسنا الساب قمنا

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

.Nut Null يجب إدخال قيمة في الحقل • .Unique أن ال تكرر قيمة الحقل • .Default للحقلفتراضيةوضع قيمة ا • .Check إجراء فحص معين على الحقل • .Primary Key إنشاء قيد مفتاح رئيسي • .Foreign Key إنشاء قيد مفتاح ثانوي •

سلسلــة تعلـــم

ةــــــبسهول

Page 25: Learn Oracle

constraint line In

، ، أي يكتب القيد في نفس سطر تعريف الحقل تعريف الحقلشاء قيود على مستوى وتعني إن ..أو في السطر التالي مباشرة

constraint line Out يود بعد اإلنتهـاء مـن تعريـف ، أي تكتب جميع الق تعريف الجدول وتعني إنشاء قيود على مستوى

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

.لى فقط فتسري عليه الطريقة األو) Default ( للحقلفتراضيةذو القيمة اإل

.أن اليتكرر اسم القيد • . حرف 30أن اليزيد عن •

..وسنبدأ بشرح هذه القيود إن شاء اهللا ، مع ذكر مثال لكل قيد بطريقتي كتابته

)Nut Null( أي يجـب أن يحتـوي ..حقل ذو قيمـة فارغـة وهو وضع قيد على حقل ما ، بحيث اليكون هذا ال

.. على قيمة ان الطالب مثال ، يجب أن يحويرقم الطالب وحقل اسم كحقل ..على قيمة • In line

SQL> create table customer ( 2 cust_no number(4) not null, 3 cust_name varchar2(40) not null, 4 cust_address varchar2 (30) 5 );

والحقــل ) cust_no(رقــم الزبــون : بالزبــائن ؛ أن الحقــل األول الجــدول الخــاص نــاأنشــأنا ه •ألنه .. كالهما عرفناهما بأن اليكونا ذو قيمة فارغة )cust_name(اسم الزبون :الثاني

، فليس )cust_address( وان الزبونعن :أما الحقل الثالث ..يجب معرفة رقم الزبون واسمه .مهما ، فال ضير أن يكون فارغا عند إدخال البيانات

بعـد تعريـف الحقـل مباشـرة ، سـواء فـي نفـس السـطر not nullأننا ذكرنا اسم القيـد وهـو • .كما في تعريف حقل رقم الزبون ، أو في سطر آخر كما في تعريف حقل اسم الزبون

Page 26: Learn Oracle

• Out line

SQL> create table customer ( 2 cust_no number(4), 3 cust_name varchar2(40) , 4 cust_address varchar2 (30), 5 constraint cust_no_nt 6 check (cust_no is not null), 7 constraint cust_name_nt 8 check ( cust_name is not null) 9 );

، وهذه الطريقة أفضل من األولى ؛ فمثال عندما عرفنا عرفنا الحقول أوال ، ثم وضعنا القيود أننا

..كتبنا اآلتي ) رقم الزبون (الحقل

constraint cust_no_nt : كلمة محجوزة معناها قيد ، ثم نذكر اسم القيد وهو يتكون من جزأين constraint حيث .. هو اسم الحقل نفسه ..جزء األول ال • وبهذه الطريقة نكتب اسماء nt هو اختصار السم القيد ، وهنا اختصرناه بـ..الجزء الثاني •

..بقية القيود األخرى وهذا .. هل ليس فارغاcust_noالحقل فمعناه افحص is not nullcust_no (check(أما •

) .ي على قيمة أي يحتو (ما نريده أن ال يكون فارغا

)Unique( فمثال لـو وضـعنا هـذا القيـد ومعناه أال تتكرر قيمة هذا الحقل الذي سنضع هذا القيد عليه ، : كما يلي ..على حقل رقم الزبون ، نستنتج أنه ال نريد أن يتكرر رقم الزبون

• In line

SQL> create table customer ( 2 cust_no number(4) unique, 3 cust_name varchar2(40) not null, 4 cust_address varchar2(30) 5 );

Page 27: Learn Oracle

• Out line

SQL> create table customer ( 2 cust_no number(4), 3 cust_name varchar2(40) not null, 4 cust_address varchar2(30), 5 constraint cust_no_uni 6 unique ( cust_no) 7 );

)Default( افتراضــية لحقــل مــا ، مــثال لحقــل عمــر الطالــب ، نضــع قيمــة ونســتفيد منــه فــي وضــع قيمــة

..افتراضية لعمره ، وذلك في حالة عدم إدخال المستخدم أي قيمة .. فقط In line وهذا القيد هو الوحيد الذي يكتب بطريقة

create table student ( std_no number(7) not null, std_name varchar2(40) not null, std_age number(2) default 20 , std_nation varchar2(20) default 'saudi' );

على أنه رقم وأعطيناه قيمة افتراضية في حالـة ) std_no (الب أننا عرفنا حقل عمر الط •

سنة20عدم إدخال المستخدم ألي قيمة ، وهي القيمة على أنـه نصـي ، وأعطينـاه قيمـة افتراضـية )std_nation(عرفنا حقل جنسية الطالب و •

Saudi الجنسيةفي حالة عدم إدخال المستخدم ألي قيمة ، وهي

)Check( ونستفيد منه عندما نريد أن نفحـص قيمـة مدخلـة لحقـل معـين يقبـل مجموعـة قـيم محـددة

. المخلة من بين القيم الموجودة حيث يقوم القيد بفحص القيمة،سلفا

Page 28: Learn Oracle

• In line SQL> create table student ( 2 std_no number(7) not null, 3 std_name varchar2(40) not null, 4 std_sex varchar2(1) 5 check ( std_sex in (' m ',' f ')), 6 std_case varchar2(1) 7 check ( std_case in (' s ',' m',' w ',' d ')), 8 std_age number(2) 9 check ( std_age between 19 and 30 ) 10 );

checkعلى أنه نصي وأعطيناه قيد الفحص ) std_sex(أننا عرفنا حقل جنس الطالب •

.. يعني ذلك أن الطالب ذكر mفهنا يفحص قيمة الحقل ، فعندما يدخل المستخدم الحرف .. يعني ذلك أن الطالب أنثى fوعندما يدخل المستخدم الحرف

علــى أنــه نصــي وأعطينــاه قيــد ) std_case(ة للطالــب وعرفنــا حقــل الحالــة اإلجتماعيــ •فهنا يفحص هنا يفحص قيمة الحقل ، فعندما يدخل المستخدم الحرف وcheckالفحص

..قيمة الحقل .متزوجيعني ذلك أن الطالب s فعندما يدخل المستخدم الحرف - .أرمل يعني ذلك أن الطالب wوعندما يدخل المستخدم الحرف - .مطلق يعني ذلك أن الطالب mدما يدخل المستخدم الحرف وعن - . أعزب يعني ذلك أن الطالبdوعندما يدخل المستخدم الحرف -

هنـا وcheckعلى أنه نصي وأعطيناه قيد الفحـص ) std_ age(وعرفنا حقل عمر الطالب • .. 30 إلى 19مابين القيمة العمرية من يفحص قيمة الحقل

• Out line

SQL> create table student 2 ( std_no number(7) not null, 3 std_name varchar2(40) not null, 4 std_sex varchar2(1), 5 std_case varchar2(1), 6 std_age number(2), 7 constraint std_sex_chk 8 check (std_sex in (' m ',' f ')), 9 constraint std_case_chk 10 check( std_case in (' s ',' m',' w ',' d ')), 11 constraint stdstd_age_chk 12 check ( std_age between 19 and 30) 13 );

Page 29: Learn Oracle

..ار إليكم ــــــــاء حــرج..وأخيرا

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

..فه باألمر التالي اكتب الجدول بالطريقة األولى ثم قم بحذ SQL> drop table ;

...ثم اكتب الجدول بالطريقة الثانية وهكذا

: SQL أمر إعطاء صالحية إنشاء الجدوال وغيرها من الكائنات في * SQL> grant resource to ;

..فتظهر لنا العبارة التالية ، والتي تخبرنا أنه تم منح الصالحية Grant succeeded.

:هناك مجموعة قيود يمكن أن نستخدمها على الحقول وهي كالتالي* .Nut Null يجب إدخال قيمة في الحقل • .Unique الحقلأن ال تكرر قيمة • .Default وضع قيمة افتراضية للحقل • .Check إجراء فحص معين على الحقل • .Primary Key إنشاء قيد مفتاح رئيسي • .Foreign Key إنشاء قيد مفتاح ثانوي •

:هناك طريقتان إلنشاء القيود على الحقول * ..line constrainIn تعريف الحقل على مستوى - ..line constrainOut تعريف الجدول مستوى على - :اسم القيد هو يتكون من جزأين *

.. الحقل نفسه اسم هو ..الجزء األول • ..سم القيد إلاختصار هو ..الجزء الثاني •

وهـاتين الطـريقتين تسـريان علــى جميـع القيـود السـتة التــي ذكرناهـا ، ماعـدا القيـد ذو القيمــة .فتسري عليه الطريقة األولى فقط ) Default ( اإلبتدائية للحقل

: أمر حذف جدول هو •SQL> drop table ;

****************************************************************************************************

Page 30: Learn Oracle

١ . moh وبكلمة السر Mohmadباإلسم • .. صالحية اإلتصال بأوراكل هامنح • ..) من درس اليوم( إنشاء الجدوالامنحه صالحية •٢ :، وبالحقول التالية" الطالب : " اسم الجدول • ) بايتات ٨رقم الطالب بحجم ( - . بت ٥٠اسم الطالب بحجم - .تاريخ الميالد - .معدل الطالب في الثانوية - .اظهر مواصفات الجدول • .احفظ نتيجة المواصفات في ملف • .استدعي الملف المحفوظ • .. المؤقتةSQL مخزن ذاكرة امسح •

الرجاء اإلجابة عليها ، وبعث اإلجابات على بريدي الخاص ، حتى نعلم مدى ..استيعابكم وفهمكم

مـن سنكمل ما بقي لنا من موضـوع القيـود علـى الجـدوال ، وهمـا القادم بإذن اهللا وفي الدرس المفتاح الرئيسـي وقيـد قيد : لجدوال بعضها ببعض ، أال وهما أهم القيود والمسؤالن عن ربط ا

) ..األجنبي (المفتاح الثانوي ...فإلى لقاء قريب بإذن اهللا تعالى

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

ـــــــــفـــــــــــــــــــــــــــــاألسيـــــــــEmail:[email protected]

Page 31: Learn Oracle

بسم اهللا الرحمن الرحيم

في درسنا هذا اليوم القصير في مادته األولى ، وبشرح األربعة قيودق في درسنا السابقمنا

من جميع القيدين األخيرين ، وهما األهم إن شاء اهللا سنكملالمهم في مضمونه ؛ ..العلمية .. حيث تكوين العالقات بينهاألنهما المسؤالن عن ربط الجدوال بعضها ببعض منالقيود

) ..األجنبي (المفتاح الثانوي وقيدالمفتاح الرئيسي قيد: وهما

)Primary Key( صفة المفتاح الرئيسي في هذا ؛ في جدول ما من عدة حقول إعطاء حقل معين القيد هذا وظيفة ..الجدول

في الدرس الثالث في دورة مفاهيم قواعد البيانات أنه كما عرفناه: حدد بشكل وحيد ومتفرد بحيث يتميز عن غيره ، فال تتكرر قيمتـه فـي أكثـر الذي يالمفتاح

) .أي ال يمكننا أن نترك الحقل فارغا بدون قيمة ( Nullمن حقل واحد ، وال يقبل قيمة

• In line SQL> create table student 2 ( std_no number(10) 3 primary key, 4 std_name varchar2(50) 5 );

، فنتعامـل مـع بيانـات )std_no(لطالـب رقـم ا حقـل أننا أنشـأنا جـدول الطـالب بمفتـاح رئيسـي هـو

حث عن طالب معين ع من خالله البستطيونلذي هو مفتاح رئيسي ؛ ا وهذا الحقل الطالب ، بواسطة

سلسلــة تعلـــم

ةــــــبسهول

Page 32: Learn Oracle

، ويكـون هـذا المفتـاح رئيسـيا ب معين ، بمجرد أن ندخل رقم الطالب حذف طالعند وكذلك

..في جدول الطالب ، وأجنبيا في الجدوال األخرى

Out line SQL> create table student 2 ( std_no number(10) , 3 std_name varchar2(50), 4 constraint pk _std_01 5 primary key (std_no) 6 );

Access نظطر إلى إنشاء أكثر من حقل رئيسـي فـي جـدول واحـد كمـا فـي الــ تفي بعض الحاال

وفي ORACLEتطيع ذلك ولكن بالطريقة الثانية الغير خطية س ن)Out line. (

) KeyForeign( في هذا جنبي وظيفة هذا القيد إعطاء حقل معين من عدة حقول في جدول ما ؛ صفة المفتاح األ

.الجدول

كما عرفناه في الدرس الثالث في دورة مفاهيم قواعد البيانات أنه : فتـاح األجنبـي بهـذا أو أكثـر يسـتخدم للـربط بـين جـدولين ، وسـمي الم ) صفة (عبارة عن حقل

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

المفتـاح األجنبـي ويستخدم المفتاح األجنبي كمؤشر مقابل للمفتاح الرئيسي ، بمعنى آخر فإن ، مـع االلتـزام بوجـود دول لربطـه مـع جـدول آخـر أو أكثـر تضـاف لجـ ) صـفة (هو عبارة عن حقل

Data(أن المفتاح األجنبي يجب أن يكون من نفس نـوع بيانـات مفتاح رئيسي مقابل مع مالحظة Type (، فلــو كــان المفتــاح الرئيســي مــن النــوع رقــم مــثال ، يجــب أن يكــون المفتــاح الرئيســي

. مؤشر للرئيسي المفتاح األجنبي من النوع رقم ، لذلك يعتبر األجنبي

• In line حتى ننشئ مفتاحـا أجنبيـا فـي جـدول مـا ، يجـب أن يكـون هـذا المفتـاح رئيسـيا فـي جـدول آخـر أنشأناه سابقا ، وفي هذا المثال سنقوم إن شـاء اهللا بإنشـاء مفتـاح رئيسـي فـي جـدول األقسـام وهـو

ل الطالب يعود لهذا الرئيسي ، وبالمثال يتضـح رقم القسم ، ثم نقوم بإنشاء حقل أجنبي في جدو !المقال

Page 33: Learn Oracle

.. األبأو ) Mister(رئيسي جدول األقسام ، ويسمى هذا الجدول بالإنشاء •

SQL> create table section 2 ( sec_no number(2) 3 primary key , 4 sec_name varchar2(20) not null 5 );

واسـم القسـم كمفتـاح رئيسـي ، ) sec_no (ا جـدول األقسـام ؛ وفيـه رقـم القسـم أنشأننالحظ أننا

)sec_name( بقيد أال يكون فارغا..

.. االبنأو ) Detail(إنشاء جدول الطالب ، ويسمى هذا الجدول بالتفصيل •

SQL> create table student ( 2 std_no number(7) 3 primary key, 4 std_name varchar2 (30) not null, 5 sec_no number(2) references 6 section (sec_no) 7 );

..واسم الطالب بقيد أال يكون فارغا ..أنشأنا جدول الطالب ؛ وفيه رقم الطالب كمفتاح رئيسي :لكن األهم

وري جـدا وهـذا أمـر ضـر ) الذي باللون األخضرsec_no( أننا عرفنا حقل واسمه رقم القسم •أن نعرف األجنبي أوال في الجدول التفصيل ، ثم نبين أنه يؤشر إلى مفتاح رئيسي في جدول

ألننا نعلم أن المفتاح األجنبي ،..هو نفس حجم رقم القسم في جدول األقسام بحجم آخريجــب أن يكــون تعريفــه مــن نفــس نــوع بيانــات وحجــم المفتــاح الرئيســي الــذي يؤشــر إليــه

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

Section وهو المفتاح )sec_no ماسبق كله هو بطريقة ال ننسى أن و )باللون الرماديIn line.

• Out line نقوم بإنشاء الجدول الثاني وهو التفصيل بهـذه الطريقـة ، ألن الجـدول األول اليهمنـا إنشـائه بـأي

..طريقة

Page 34: Learn Oracle

ال يمكننا حذف جدول األقسام ، إال بعد أن نحذف جدول الطالب لوجود عالقة بينهما ، لنجرب ..ونكتب

SQL> drop table section; يمكننـا حـذف الجـدول ،الرتباطـه بحقـل رئيسـي بجـدول نه ال سالة خطأ ، مفادها أ ستظهر لنا ر

..الطالب ..Out line نقوم أوال بحذف جدول الطالب ، إلنشائه مرة أخرى بطريقة ف

SQL> drop table student; Table dropped.

..وال نحذف جدول األقسام بل نبقيه كما هو :وحتى نعرف الجدوال التي لدينا اآلن نكتب

SQL> select *from tab; ..فتظهر لنا النتيجة التالية

TNAME TABTYPE CLUSTERID ------------------------------ ------- --------- SECTION TABLE

ئه إن شـاء أمـا المفتـاح األجنبـي فسننشـ In lineاآلن ننشئ جدول الطالب كمـا أنشـأناه بطريقـة ..Out lineاهللا بطريقة

SQL> create table student ( 2 std_no number(7)primary key, 3 std_name varchar2 (30) not null, 4 sec_no number(2), 5 std_age number(2), 6 constraint fk_std_01 7 foreign key (sec_no) 8 references section (sec_no) 9 );

أنــه باإلضــافة إلــى وجــود تعريــف للمفتــاح الرئيســي فــي هــذا الجــدول وهــو رقــم الطالــب الحــظ ن)std_no ( احتوى هذا الجدول أيضا مفتاحا ثانويا وهو رقم القسم ،)sec_no ( فيسمح تعريف ،

يمكـن أن يأخـذ اسـما المفتاح الثانوي بتحديد الحقل المرجع فـي الجـدول المـرتبط بـه ، والـذي ..آخر

ولكي يكون تعريف المفتاح الثانوي سليما ، يجب أن يكون كال الحقلين من نفس نوع البيانات جرب تعريف الحقـل الثـانوي بنـوع آخـر أو بحجـم يختلـف عـن ..(ونفس الحجم كما ذكرنا سابقا

) .الحقل المؤشر إليه

Page 35: Learn Oracle

كـل بأننـا نريـد إنشـاء تكامـل مرجعـي بـين الحقـل وعند تعريف المفتاح الثانوي فإننا نخبر أورا

.section والجدول studentفي الجدول ) sec_no(رقم القسم ، من احتـواء قيمـة غيـر موجـودة فـي العمـود student :وهذا األمر يمنع الحقل في جدول اإلبن

..section : المرتبط به في الجدول األب

تمــد عليــه الجــدوال والــذي تع ، أبأي ) Mister( ينا جــدولين أحــدهما رئيســي عنــدما يكــون لــد

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

..)Mister( الموجودة في الجدول األب الـ : شكلة طريقتان لحلها وتوجد لهذه الم

ثــم ) Detail(حــذف البيانــات فــي الجــدول األبــن الـــ : األســهل واألضــعفالطريقــة األولــى • ..)Mister(حذف البيانات في الجدول األب الـ

SQL> delete from student ; SQL> delete from section ;

فإننـا ) Detail(الــ ل اإلبـن وهـي أنـه عنـد تصـميم الجـدو :الطريقة الثانية األقوى واألمثل •

..نضيف بعد تعريف المفتاح األجنبي العبارة التالية On delete cascade

..وهو جدول الطالب لدينا كما يلي ) Detail(الـ اإلبن إذا نكتب الجدول

SQL> create table student ( 2 std_no number(7)primary key, 3 std_name varchar2 (30) not null, 4 sec_no number(2), 5 std_age number(2), 6 constraint fk_std_01 7 foreign key (sec_no) 8 references section (sec_no) on delete cascade 9 );

حـذف وعند كتابتنا لهذه العبارة بعد تعريف الحقل الثـانوي ، فـإن أوراكـل لـن يسـمح فقـط ب ، وإنمــا ســيتتالى الحــذف فــي ) section(الســجل المســار إليــه مــن الجــدول األب وهــو األقســام

) .student(الجدول اإلبن أيضا وهو جدول الطالب

Page 36: Learn Oracle

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

، وبالتفصيل ملخص هذا الدرس هو زبدة الدرس .فاحرص على فهمه جيدا الممل

أي المفتاح الرئيسيPrimary Key( (لقيــــــد ا *، صفة المفتاح الرئيسي في هذا الجـدول في جدول ما من عدة حقول إعطاء حقل معين هتوظيف - .. ، وأجنبيا في الجدوال األخرى ما في جدولرئيسيالالمفتاح يكون وونسـتطيع عمـل ، نظطـر إلـى إنشـاء أكثـر مـن حقـل رئيسـي فـي جـدول واحـد تبعض الحاال في -

. فقط) lineOut (ذلك بالطريقة الغير خطية

Foreign Key((لقيــــــد ا*

في هذا الجدولجنبي صفة المفتاح األجدول ما ؛ معين من عدة حقول في إعطاء حقل تهوظيف -، مـع االلتـزام بوجـود دول لربطه مع جدول آخـر أو أكثر تضاف لج) صفة( هو عبارة عن حقل و ،

.مفتاح رئيسي مقابل ..المفتاح الرئيسي) Data Type(أن المفتاح األجنبي يجب أن يكون من نفس نوع بيانات يجب - : الصيغة العامة لتعريف حقل أجنبي في جدول بالطريقة الغير خطية هي -

constraint القيداسم foreign key األبنالحالي وهو جدول اسم الحقل كما عرفناه في الجدول references (الحقل المرجع إليه وهو الرئيسي في األب) الجدول األب on delete cascade

...وهذا شرح الصيغة بالتفصيل الممل • constraint وهـي علـى حقـل معـين ، قيـد معـين اسـما ل تعني أن ما بعـدها سـيكون كلمة

..محجوزة كما عرفناها سايقا وتكتب في الطريقة الغيرخطية فقط • foreign key األجنبي (المفتاح الثانوي قيداسما لتعني أن ما بعدها سيكون كلمة. ( ، وهنا نكتـب اسـم القيـد ، وكلمـا كـان اسـم القيـد معبـرا وسـهال كـان أفضـل القيداسم •

fkفالجزء األولfk_std_01فمثال أعاله في مثال الطريقة الثانية ، كان اسم القيد هو

Page 37: Learn Oracle

ي تعنـي اسـم الجـدول ومكـان القيـد هف std على أن القيد هو قيد المفتاح الثانوي ، أما ليد

القيد ، أي رقم تعني ف01أخيرا فـــــ و ، وهنا جدول الطالب مكان هذا المفتاح الذي وضعناه فـإذا كـان لـدينا أكثـر مـن ..القيد األول من نوع المفتاح الثـانوي فـي جـدول الطـالب أنه هنا

هـذا ولكـن لمـاذ ا ..أي بعـد األول مباشـرة 02 مفتاح ثانوي فسيكون الترتيب يبدأ من الـرقم ! بهذه الطريقة ؟نكتبه الحرص الشديد على اسم القيد ، ولماذا

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

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

، حيـث نقـوم بكتابـة اسـم األبـن الحالي وهـو جـدول اسم الحقل كما عرفناه في الجدول •هذا المفتاح كما عرفناه في الجدول الحالي الـذي نعـرف فيـه هـذا المفتـاح األجنبـي وهـو

ويجـب أن يكـون تعريـف هـذا الحقـل مـن نفـس نـوع بيانـات وحجـم المفتـاح ..جدول االبـن .الرئيسي الذي يؤشر إليه في الجدول األب

.. ؤشر إلى المفتاح الرئيسي في الجدول األبيتعني أن هذا الحقل Referencesأما فـي المفتـاح األجنبـي إنشـاء تكامـل مرجعـي بـين الحقـل )إن جاز التعبير (وهو يخبر أوراكل

..)راجع المثال األخير (والحقل المفتاح الرئيسي في الجدول األب ..الجدول االبن (..).. أي أن المفتاح األجنبي يؤشر للمفتاح الرئيسي في الجدول األب المسمى الجدول األب •الرئيسـي فـي الجـدول األب ) الحقل( ، أي المفتاح الحقل المرجع إليه وهو الرئيسي في األب •

..الذي يؤشر إليه األجنبي الذي أنشناه أنه عندما نريد حذف البيانـات مـن الجـدول ففائدتها on delete cascadeعبارة وأخيرا •

لهـا كتابتنـا عنـد فلن نستطيع الحذف لوجود العالقة بين الجـدولين األب واالبـن ، ، باالحــذف فقــط ب أوراكــللــن يســمح و نســتطيع حــف البيانــات ، بعــد تعريــف الحقــل الثــانوي ،

.، وإنما سيتتالى الحذف في الجدول اإلبن أيضا السجل المسار إليه من الجدول األب ****************************************************************************************************

..رضاه وسامحونا على التقصير ، وفق اهللا الجميع لما يحبه وي ..اهللا الذي الترد ودائعه واستودعكم

..إلى لقاء قريب بإذن اهللا تعالى و ـــــــــفـــــــــــــــــــــــــــــاألسيـــــــــ

Email:[email protected]

Page 38: Learn Oracle

بسم اهللا الرحمن الرحيم

وعرفنا كيفية إنشاء الجداول بحقولهـا ( CREATE TABLE ) ل اوبعد أن أخذنا أمر إنشاء الجد

أخيـرا كيفيـة تبقى لنا ، ( DROP TABLE ) حذفها ثم تعلمنا كيفية ، وبقيودها المختلفة لتعديل هو في صميم بنية الجدول ، ، وهذا ا ( ALTER TABLE ) اإلضافة إليها والتعديل فيها

SQLوليس في بيانات الجدول ، ألن التعديل في البيانات يتم عن طريق اللغة الفرعية الثانية من . DML يوه

• TABLEALTER :

.اإضافة حقل جديد إلى جدول منشأ سابق - . حقل ما فة التعديل في ص- .ا ق التعديل في قيود منشأة على عدة حقول مسبواإلضافة -

.القيود وإعادة تأهيليهاتأهيل - ..القيود من الجدوال حذف -

• البيانات إليها ، نحتاج في بعض األحيـان إلضـافة حقـل أو ل عندما ننشئ الجدوال ونقوم بإدخا

:الجدوال ، وألجل ذلك نستخدم الصيغة التالية عدة حقول لهذا

ALTER TABLE اسم الجدول ADD )طولها( نوع البيانات اسم الحقل [ فارغ أو غير فارغ أو قـيود ] ) ;

.ADD ستخدم إلضافة حقل أو حقول جديدة بناء على الكلمةه الصيغة توهذ

ــمسلسلــة تعلـ

ةــــــبسهول

Page 39: Learn Oracle

وحتى نفهم هـذه الصـيغة جيـدا ، سـنقوم بإضـافة حقـل جـنس الطـالب الـذين يدرسـون فـي هـذه

نقوم أوال وســ ..SCHOOL ألول جــدول أنشــأناه ســويا وهــو ) ذكــر أم أنثــى ( S_SEX المدرســة ..ل األمر التالي من خال SCHOOL باستعراض خصائص الجدول

SQL> desc school;

..إذا لم يكن الجدول موجودا لديك ستظهر لك العبارة التالية

Object does not exist.

.. إلنشاء الجدول كما تعلمنا سابقا وامروقم بكتابة هذه األCREATE TABLE SCHOOL ( S_NO NUMBER (10) , S_NAME VARCHAR2 (30) , S_TYPE CHAR (15) , S_LOC VARCHAR2 (30) , S_DATE DATE ) ;

..وبعد أن قمت بإنشاء هذا الجدول استعرض خصائصه

SQL> DESC SCHOOL;

..وستظهر لنا مواصفات جدول المدرسة كمايلي

Name Null? Type ------------------------------- -------- ---- S_NO NUMBER(10) S_NAME CHAR2(30) S_TYPE CHAR(15) S_LOC CHAR2(30) S_DATE DATE

Page 40: Learn Oracle

)ذكر أم أنثى ( S_SEX جنس الطالب الذين يدرسون في هذه المدرسةواآلن نريد إضافة حقل

..لهذا الجدول فنكتب األمر التالي alter table school add ( s_sex varchar2(10) ) ;

..والدالة على أن الحقل الجديد تمت إضافته للجدول ..فتظهر لنا العبارة التالية

Table altered.

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

SQL> DESC SCHOOL; ..وستظهر لنا مواصفات جدول المدرسة كمايلي

Name Null? Type ------------------------------- -------- ---- S_NO NUMBER(10) S_NAME VARCHAR2(30) S_TYPE CHAR(15) S_LOC VARCHAR2(30) S_DATE DATE S_SEX VARCHAR2(10)

.. قد تمت إضافته للجدو ل S_SEXوالحظ الحقل الجديد وهو

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

****************** )الزيادات مقبولة دوما أما اإلنقاص فيؤدي إلى مشاكل( ******************

. CHAR أو النوع VARCHAR2زيادة حجم حقل من النوع • . NUMBERزيادة حجم حقل من النوع • .زيادة عدد الحقول في جدول •

Page 41: Learn Oracle

. NUMBERإنقاص حجم حقل • . CHAR أو VARCHAR2إنقاص حجم عمو د •

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

..وصيغة تعديل مواصفات حقل ما في جدول هي كالتالي

ALTER TABLE اسم الجدول MODIFY ( أو الخواص الخاصية اسم الحقل ) ;

ــد ــل الجديـ ــية الحقـ ــديل خاصـ ــثال تعـ ــد مـ ــوع S_SEX واآلن نريـ ــن النـ ــؤخرا مـ ــأناه مـ ــذي أنشـ الـVARCHAR2 إلى النوع CHAR .. فنقوم بكتابة األمر التالي:

Alter table school modify ( s_sex char(10) );

..م التعديل فتظهر لنا العبارة التالية ، والتي تفيد أنه تTable altered.

ــ ــتعرض خصـــائص الجـــدول لـــنالحظ تغيـــر صـــفة الحقـــل ن المومـ ــوع SEX مكـــن أن نسـ مـــن النـVARCHAR2 إلى النوع CHAR ..

إذا كـان الجـدول بـه بيانـات وتـم تغييـر نـوع بيانـات الحقـل مـن النـوع أنـه :ملحوظة هامة جدا تعنـي أن الحقـل يجـب أن ) رسـالة خطـأ ( ة تعطي و العكس ، فإن اللغإلى النوع الرقمي أ الحرفي

يكون خاليا من البيانات أو فـي حالـة أن البيانـات المخزنـة فـي الجـدول ال تتناسـب مـع مواصـفات الحقل بعد التعديل

• TABLEALTER : .اإضافة حقل جديد إلى جدول منشأ سابق - . حقل ما فة التعديل في ص- .ا ق التعديل في قيود منشأة على عدة حقول مسبواإلضافة -

.القيود وإعادة تأهيليهاتأهيل - ..القيود من الجدوال حذف -

Page 42: Learn Oracle

ALTER TABLE اسم الجدول ADD )طولها( نوع البيانات اسم الحقل [ فارغ أو غير فارغ أو قـيود ] ) ;

. ADD ستخدم إلضافة حقل أو حقول جديدة بناء على الكلمةه الصيغة توهذ

ALTER TABLE لوجدالسم ا MODIFY ( أو الخواص الخاصية اسم الحقل ) ;

:وقاعدة التعديل في مواصفات حق هي )...الزيادات مقبولة دوما أما اإلنقاص فيؤدي إلى مشاكل...(

**************************************************************************************************** فإلى لقاء ..ALTERالدرس القادم بإذن اهللا سنستكمل العمليات الثالث األخرى لألمر وفي

. .وسامحونا على التقصير ، وفق اهللا الجميع لما يحبه ويرضاه.قريب بإذن اهللا تعالى ـــــــــفـــــــــــــــــــــــــــــاألسيـــــــــ

Email:[email protected]