oracle ara
DESCRIPTION
كتاب اوراكل بالعربيTRANSCRIPT
أوراكل
البيانات قواعد ادارة في مقدمة الى الفصل هذا في بيانات Databaseننعرض قواعد وخاصةالبيانات قواعد في القوية النظم أحد يعتبر والذي Data Base Management Systemاألوراكل
(DBMS) االخرى البيانات بقواعد مقارنة مميزات له .لما
البيانات قواعد مفاهيمالبيانات Databaseقاعدة
نريداستردادها عندمت إليها الوصول يسهل بحيث المنظمة الملفات من مجموعه هي
البيانات Data Dictionaryقاموس ، القاموس هذا داخل تحقظ البيانات وفهارس جداول عن المعلومات من مجموعة هو
البيانات قواعد إدارة نظام يستخدمها
Queryاالستعالم البيانات قاعدة في االستعالم يغير ال وغاليا معينة بيانات عن لالستعالم استفساري نظام هو
للبيانات فقط قراءة عن عبارة االستعالم نظم غالبية إن حيث
Functionدوال محددة عملية الداء وظيفي مسمى ضمن تستخدم أوامر أو ت تعليما من مجموعة عن عبارة
تنفيذها بعد معينه قيمة الدالة تعيد وغالبا
Procedureاالجراء يعيد ال االجراء لكن محددة مهمة تنفيذ بهدف الدالة تعليمات مثل التعليمات من مجموعة
الدالة مثل قيمة
Schemaمخطط الكائنات من مجموعة عن من Objectsعبارة الكائن مخطط ويتألف البيانات بقواعد مرتبطة
الجداول مثل والفهارس Viewsوالعروض Procedureواالجراءات TablesكائناتDirectories... الخ
البيانات قواعد Database Administrator (DBA)مديريتم وكيف القواعد هذه أداء ونظم البيانات قواعد إدارة عمليات عن المسؤؤل الشخص هو
النسخ عمليات إجراء وكذلك ، القواعد هذه أداء مراقبة عن أيضا مسوؤل وهو تكوينهاأو , جدد مستخدمين وإذافة المعلومات أمن على والمحافظة ، البرامج وتثبيت االحتياطي
مستخدمين صالحيات إلفاء
الحاجو وتحديد ، المطبق النظام وتنمية لتطير بالتخطيط البيانات قواعد مدير يقوم ان ويمكنالمستقبلية . التطورات لهذه
البيانات قواعد مديري من يتكون الذي العمل فريق العمل DBAويسعى سير على للحفاظالمديرين . . هؤالء بين المهام تجزئة وتتم متجانس بشكل الشركة داخل
البيانات قواعد مدير (DBA)مهام
1
لفريق وتبعا المؤسسة أو الشركة لحجم تبعا البيانات قاعدة مدير مهام تتباينالتالية : النقاط المهام هذه وتشمل المساعد العمل
الجديدة -1 البرمجيا تثبيتالبيانات -2 قواعد لنظام الحماية إدارةالبيانات -3 قواعد ونظام للبيانات والدوري االحتياطي النسخ
ومعالجتها - 4 األخطاء استكشافبياناتهم- 5 إلى للوصول المساخدمين إخفاقات وإصالح تسويةالعمل -6 أداء ضبط متابعة
الجديدة -4 والنطم األجهزة تقسسمبالشركة -5 النظام تطوير على العمل
البيانات قاعد إدارة )Data Base Management System )DBMSنظام
وتوجد ( ) البيانات قاعدة وتنظم تدير التي البرامج البرمجيه األدوات مجموعة عن عبارة هوعالقة تسمى البيانات هذه بين ارتباط عليها )Relation(عالقة يطلق احبانا أي RDBMSلذا
االرتباطية ( ) العالئقية البيانات قواعد إدارة نظام
أوراكل البيانات قاعدة إدارة نظام مميزات
: باآلتي األخرى البيانات قواعد إدارة نظم من غيره عن أوراكل البيانات قاعدة نظام يتميزإلى -1 السجالت عدد يصل قد البيانات من كبيرة كميات استيعاب على الفائقة القدرة
والتخزين استرجاع عند والسرعة األداء في العالي المستوى على الحفاظ مع الماليينوالحذف
تطبيق -2 يضمن الذي والحقوق الصالحيات نظام على حتوائه ال واألمن التامة السريةالبيانات قاعدة على للحفاظ واألمنية القياسية الشروط
يضمن :-3 الذي بالبيانات المركزي التحكم فعالية الدخلة البيانات في الالزمة عير التكررات ) No Repetition(تقليل البيانات بين التناقض )No Contradiction(تجنب البيانات في التشارك )Data Sharing(إمكانية بينها فيما البيانات تكامل على )Data Integrity(الحفاظ
أو -4 الفقدان من وحمايتها البيانات لقاعدة االحتياطي النسخ عملية على التامة السيطرةلحظة أي في استرجاعها امكانية مع التلف
2
البيانات قاعدة إدارة نظام عمليات
التالية العمليات على اوراكل البيانات قاعدة إدارة نظام يشتمل
البيانات -1 تعريف لغة )Data Definition Language )DDLأوامر
الكائن وإنشاء تعريف في اللغة هذه ملفات Objectتستخدم الكائن يكون أن ويمكن ، لمستخدم امتياز إنشاء ويمكننا الكائن وحذف وتعديل إنشاء فيمكننا ، بيانات وجداول
هذه ومن البيانات قاموس إلى تعليقات وإضافة لفحص خيارات كائن انشاء أو ، معينCREAT , DROP and ALTERاألوامر :
البيانات -2 معاملة لغة )Data Manipulation Language )DMLأوامر
الموجود الكائن ضمن وتعديلها البيانات مع التعامل األوامر هذه هذه Objectتتيح ومنSELECT, DELETE,UPDATE and INSERTاألوامر :
البيانات -3 في التحكم لغة )Data Control Language )DCLأوامر
والمستخدمين كالصالحيات وأدائها البيانات قاعدة في التحكم األوامر هذه تتيحالبيانات قاعدة مدير قبل من لالستخدام مخصصة األوامر هذه ماتكون وغالبا والحقوق
)DBA( : االوامر هذه GRANT and REVOKEومن
أوراكل لنظام الداخلي التركيب
الفصل أهداف
هذا نهاية وفي أوراكل البيانات قتعدة لنظام الداخلي التركيب الفصل هذا يتناولعلى : الله بمشيئة قادرا ستكون الفصل
الجداول -1 بين العالقات فهمالعالقة -2 نمذجة تعريفالعالئقية -3 البيانات قاعدة مكونات فهموالمستفبد -4 الخادم بين العالقة فهمالخادم -5 SERVERقهمالمستفيد -6 Client فهم
العالئقية البيانات قواعد في مقدمة
على فيحتوي ، أوراكل البيانات قواعد إدارة لنظام الداخلي والبناء التركيب الفصل هذا يقدمأحد على بنائها في البيانات قواعد نظم تطبيقات غالبية وتعتمد أوراكل لمكونات سريع وصف
: التالية البيانات قاعد نماذج
هرمي ( ) -1 هيكلي Hierarchical Modelنموذجشبكي -2 Network Modelنموذجعالئقي -3 Relational Modelنموذج3
شيئي -4 Object Modelنموذج
الكبيرة ( ) الكمبيوتر أجهزة مع انتشارا األكثر الهرمي األول النموذج كان الماضي MainفيFrame ( ) وتركيب بناء في التوسع مع وخاصة االنتشار في الشبكي الثاني النظام بدا ثم
الهرمي ( والثاني الول النظامين استخدام في صعوبات هناك وكانت الحاسب شبكاتالبرمجة ) مؤشرات الستخدام نتيجة مع )Pointers( والشبكي بعضها البيانات سجالت لربط
وعمل طبيعة قهم من المزيد إلى يحتاج السجالت حذف أو تعديل أو إضافة أن نجد لذا ، بعضالكوبول بلغة تكتب المؤشرات برمجة طرق الماضية الفترة هذه وفي .)COBOL(المؤشرات
العالئقي النموذج تطبيقات )Relational(أما برمجة وفي االستخدام في سهولة األكثر فهواألساسية المفاهيم دراسة فيلزمك األكاديمية النظرية الناحية ومن البيانات قواعد نظم
على هنا سنركز لهذا العالئقي النموذج لهذا والضروربة
العالئقية -1 البيانات Relational Data Structureهيكلالعالئقية -2 للبيانات الحاكمة Constraint that govern organization of dataالضوابط
structure البيانات -3 هذه على تجرى التي Operations that are performance dataالعمليات
structure
العالئقبة البيانات هياكل نام ويطلق )Relational Database(ويعتمد منطقي هيكل علىعالقة األبعاد ) Relational(عليه ثنائي شكل )Tow dimensional data structure(وعلى
جدول ويسمى وأعمدة صفوف من البيانات )Table(يتكون عناصر إلى باإلضافة (هذاData elements ( الحالة هذه في هذه attributesتسمى تنظيم يتم هذا على عالوة
تسمى وحدات أو وحدة في الفعلية صفوف Tuplesالبيانات إلى أو Rowsتقسمالعناصر ) Fieldsحقول ( Columnsوأعمدة ) Recordsسجالت ) يبين التالي والشكل
الموظقين لجدول Employeesاألساسية
4
الجداول بين العالقة
حقال . تستخدم الطريقة وهذه لالرتباط طريقة إلى تتحتاج بأخرى عالقة يكون Fieldلربطالرئيسي بالمفتاح األول الجدول في يسمى االرتباط وحقل الجدولين فب Primary(موجودا
Key( ال يالمفتاح ويسمى األل الثاني ) ) Foreign Keyللجدول الجدول في
5
العالفة Relational Model Algebraنمذجةمحددة لعالقة تبعا الجداول من مجموعة أو جدول على اجراؤها يتم التي العمليات بانها تعرف
معامالن لهذه Binary والثاني Unaryهما Operatorsويوجد انواع سبعة يعدد التالي والجدولالعمليات
العملية العملية وصف العمليةTypeنوعOperation
من السجالت الصفوف تجميعبنكرار السماح عدم مع جدولين
سجالت
BinaryUnion
( الصفوف ( السجالت تحديدجدولين بين المشتركة
BinaryIntersection
في الموجودة السجالت اظهارالجدول في توجد وال االول الجدول
الثاني
BinaryDifference
األعمدة بعض مع السجالت إظهار( البيانات( مصدر
UnaryProjection
مصدر جدول من السجالت إظهارالبحث لمعيار تبعا Criteriaالبيانات
UnarySelection
البيانات جدول من سجل كل وصلالثاني الجدول في سجل كل مع الول
UnaryProduct
الجدول من السجالت وتمديد وصلفي سجالت من مايقابله مع األل
الثاني الجدول
UnaryJoin
6
العالئقية البيانات قاعدة RDBMS Componentsمكونات
من : العالئقية البيانات قاعدة تتكون
عليه -1 ويطلق البيانات ثاعدة تشغيل Kernelنظامالبيانات -2 Data Dictionaryقاموس
البيانات ( قاعدة وتنظيم تشغيل نظام البرمجية) Kernelويتكون الوحدان من مجموعة منSoftware وطباعة واسترجاع حفظ مابين البيانات مع وينعامل وينظم بيحكم صمم والذي
البيانات وحماية األمان نظم وعمل المسؤليات تحديد وكذلكمع للتعمل صالحية لهم الذين المستخدمين من بقائمة البيانات قاعدة نظام يحتفظ وعادة
الـ مكونات من بعضا يوضح التالي والشكل البيانات قاعدة أوراكل Kernelتطبيق نظام في
الـ البيانات Kernelمكونات قاعدة نظم في
البيانات قاموس الوصف Data Dictionaryويحوي هذا على ويطلق البيانات لشكل وصفاMeta Description أوMeta Data ت الكائنا بكافة يرتبط الوصف قاعدة Objectsوهذا ضمن
البيانات عن المخزنة البيانات صاعدة جداول مجوعة على يحتوي أوراكل بيانات وقاموس
الـ الفهارس Kernelطريق كائنات على العرض Indexesوأيضا كائنات Viewsكائناتواالستقسار اإلجراء SQL and Queryاالستعالم إلخ ...Functionوالدوال Procedureكائنات
7
أوراكل باستخدام بيانات قاعدة تعديل أو قراءة كيفية يوضح التالي الشكل
بين العالقة البيانات SQLو Kernelشكل قاموس و
8
) ( العميل والمستفيد الخادم بين Client/Serverالعالقة
مكونين من أوراكل نظام يتكون Serverالخادم -1العميل ( -2 ) –المستفيد Clientالمزود
Serverالخادم
هذه لحفظ الخلفية العمليات كافة وكذلك ، ووظائفها المركزية البيانات قاعدة الخادم يحويوإيقاف تشغيل أدوات ايضا وبحوي البيانات الفاعدة فاعدة
الخادم لنظام الداخلي البناء يوضح التالي والشكل
Clientالمستفيد
المستفيد تشغيلها Clientأما بمكننا والتي المساعده والبرامج الخدمات برامج على فيحتويالرسومي الوسيط المستفيد نظام يتضمن كما الشبكة باستخدام بعد Graphicalعن
Interface وهي والمستقيد الخادم بين االتصال أداة وتوجد استخدامه علينا يسهل Net 8الذيالشبكة عبر واالتصال الربط بعمليات لتقوم
على المستفيد لنظام البرامج حزمة تشمل والمشروع -1 Enterprise Managerمدير
التالية المكونات داخله ويحوي المشروع مدير Enterprise Managerمتحكم البيانات قاعدة مخطط Schema Managerمدير السرية Security Managerمدير الطبعة Instance Managerمدير
9
Serverالخادم
الخادم مدير revreS
reganaM
االستعالم نظمSULP * LQS
بروتكول اتصال
8teNالشبكة
نظام االستيراد والتصدير
&08PXE08PMI
المترجمات erP
sreilpmoc
نظام التحميل
REDAOL
التخزين Storage Managerمدير البيانات Data Managerمدير للبيانات االحتياطي النسخ Backup and Recovery Managerمدير االستعالم عمل SQL Worksheetورقة المسؤول أدوات Administrator Toolbarشريط
Assistantsالمساعدون -2االستعالم -3 SQL*PLUSنظام
للمستفيد البرامج حزمة مكونات يوضج التالي Clientوالشكل
االستعالم SQL*PLUSنظامAssistantsالمساعدون
المشروع Enterprise Managerمديراالستعالم عمل ورقة
SQL Worksheetقاعدة مخطط مدير
Schemaالبيانات Manager
مدير متحكم Enterpriseالمشروع
Manager
الطبعة InstanceمديرManager
االحتياطي النسخ مدير Backup andللبيانات
Recovery Manager
السرية مديرSecurity Manager
أدوات شريط المسؤول
Administrator Toolbar
التخزين StorageمديرManager
البيانات DataمديرManager
الوحدة ملخص
بين والعالقة مكوناته وأهم أوراكل لنظام الداخلي التركيب نعريف الفصل هذا في تناوبناوالعالقة , والمستفيد الخادم تعريف وتم الجداول على العالقة نمذجة عكلية وكذلك الجداول
بينهما .
البسيطة SQLجمل
الفصل أهداف
جملة ذلك في مشتخدمين مختلفة حاالت في البيانات استرجاع عملية وفي SELECTنتااولعلى : قادر الله شاء إن ستكون الفصل هذا نهاية
جملة بواسطة البيانات البسيطة SELECTاسترجاع جمل كتابة وإرشادات متطلبات SQLفهم جمل مع تنفيذها وأولويات الحسابية العمليات SQLاستخدام
10
بروتكول الشبكة اتصال
(Net8)
البيانات على اإللحاقية الجمل استخدام عبارة البيانات DISTINCTاستخدام عرض تكرار لمنع الجدول مواصفات عرض
جملة SELECTأساسيات
SELECTجملة جملة عملية SELECTتستخدم أن حيث جداول عدة أو جدول في المخزنة البيانات السترجاع
جملة خالل من ويمكننا البيانات هذه في تعدل ال :SELECTاالسترجاع بالتالي نقوم أن
الجدول -1 في المخزنة السجالت من معينة مجموعة وعرض اختيارالجدول -2 حقول بعض بيانات استرجاعمختلفة -3 جداول في مخزنة بيانات استرجاع
مالحظة واحدة استفسار جملة في المزايا هذه بعض أو كل نستخدم أن يمكن
مالحظة
محرر SQL*PLUsأوامرمحرر على األوامر وتنفيذ وتحرير كتابة في ستساعدك التي البسيطة الوامر بعض SQLهنالك
ومنهاكتابته EDITاالمر -1 مرر : EDويمكن على كتابته تم امر آخر لتحرير األمر هذا يستخدم
SQL ( خاللها ( يمكنك التي المفكرة المحرر شاشة لك ستفتح األمر هذا تنفيذ وعندولكن المفكرة شاشة اغلق ثم المر احفظ ذلك من االنتهاء وعند األمر تحرير اعادة
المنقوطة ( الفاصلة تكتب ال فقط) ;الحظ الحالة هذه في األمر نهاية بعدامر (/) Rاألمر -2 اخر تنفيذ العادة ويستخدم كتابته محفوظ SQLوطريقة
لجملة العام SELECTالشكل
SELECT { * , COLUMN [alies], …}FROM table_name ;
أن حيثCOLUMN الحقل اسم
table_name الجدول اسمalies العمود تسمية
الجدول * حقول جميع استرجاع على للداللة الرمز نضع أن يمكن
جمل SQLكتابةجمل كتابة غند االعتبار بعين توضع أن يجب التي اإلرشادية القواعد بعض يلي فيما SQLنوضح
جمل -1 كتابة الصغيرة SQLيمكن أو الكبيرة بالحروفجمل -2 كتابة أسطر SQLيمكن عذة في
11
مثل -3 السطور عبر المحجوزة الكلمات فصل يمكن FROMالالقراءة -4 عملية لتسهيل الجملة مكونات بين مساقات اتركبرنامج -5 مؤشر SQL *PLUSفي مع األوامر مباشرة SQLتكتب المر هذا تخزين ويتم
الذاكرة في
مثالSELECT * FROMSELECT * FROM s_dept;s_dept;
IDID NAMENAME REGION_IDREGION_ID---------------- -------------------------- --------------------
1010 FinanceFinance 113131 SalesSales 113232 SalesSales 223333 SalesSales 333434 SalesSales 443535 SalesSales 554141 OperationsOperations 114242 OperationsOperations 224343 OperationsOperations 334444 OperationsOperations 444545 OperationsOperations 555050 AdministrationAdministration 11
12 rows selected.12 rows selected.
جمل SQLلتنفيذمؤشر -1 في الجملة نهاية في منقوطة فاصلة SQLنضعمؤشر / -2 في الجملة نهاية في عالمة SQLنضعالذاكرة / (-3 في األمر في الجملة نهاية في عالمة )BUFFERنضععبارة -4 مؤشر RUNكتابة في الجملة نهاية SQLفي
الحسابية العملياتعلى المعالجة هذه تؤثر أن دون البيانات عرض عند الحسابية العمليات نستخدم أن يمكن
ثابتة قيمة الحقل اسم على الحسابي التعبير يحتوي أن ويمكن ، الجدول في المخزنة البيااناتالحسابية العملية و
الحسابية العمليات: هي تستخدم أن يمكن التي العمليات
+الجمع- 1-الطرح- 2÷القسمة- 3*الضرب- 4
جملة أجزاء حميع في العمليات هذه استخدام بـ SELECT ويمكن الخاص الجزء FROMعدا
العمليات أولوياتاالسس -1 ثم الخارجية ثم الداخلية االفواس
12
والقسمة -2 الضربوالطرح -3 الجمع
مالحظة اليمين الى اليسار من تنفذ والطرح كالجمع االولية نفس لها التي العمليات
اإللحاقية العملية
حقول إلى نصية حرفية مجموعة أو للجدول األعمدة من عدد إلحاق عملية نجري أن يمكناإللحاقية || العملية باستخدام العرض عند أخرى
مثالSELECTSELECT first_name||last_namefirst_name||last_nameFROM FROM s_emp;s_emp;
EmployeesEmployees--------------------------------------------------------------------------------------------------CarmenVelasquezCarmenVelasquezLaDorisNgaoLaDorisNgaoMidoriNagayamaMidoriNagayamaMarkQuick-To-SeeMarkQuick-To-SeeAudryRopeburnAudryRopeburnMollyUrguhartMollyUrguhart......
واحد اسم كانه فظهر مسافات وجود بدون االخير باالسم اتصل االول االسم ان نالحظنكتب مسافات توجد ولكي
SELECT first_name ||' '|| last_name FROM s_emp;SELECT first_name ||' '|| last_name FROM s_emp;
عبارة DISTINCTاستخدام
عبارة أن DISTINCTتستخدم أردنا إذا فمثال المسترجع السجل بيانات ظهور تكرار لمنعأن نجد الموظفين جدول في والمخزنة الموظفون إليها ينتسب التي الوائف على نعرف
عبارة نستخدم تكرار لمنع إليها ينتمون الذين الموظفين عدد حسب تتكرر وظائف هنالكDISTINCT
األمر :SELECTويأخذ التالي الشكلSELECT [DITINCT] { * , COLUMN [alies], …}FROM table_name ;
أن حيثCOLUMN الحقل اسم
table_name الجدول اسمalies العمود تسمية
DITINCT التكرار لمنع
13
الفصل ملخصجمل كتابة الفصل هذا في جملة ( SQLتناولنا استرجاع) SELECTالبسيطو في تستخدم التي
الـ جمل وتنفيذ كتابة عند اتباعها يجب التي اإلرشادية القواعد بعض وكذلك SQLالبياناتجملة مع الحسابية العمليات استخدام تناولنا وكذلك SELECTكما اإللحاقية والعملية
السجالت DISTINCTعبارة ظهور تكرار لمنع تستخدم التي
14
ترتيبها بشروط البيانات استرجاع
الفصل اهدافالبيانات -1 وانواع وخصائصها الحقول وأسماء الجداول ألسماء التامة المعرفةجملة -2 مع )SELECT Statement(البسيطة SQLالتعاملمحرر -3 أوامر SQLاستخدام
الشرط جملة WHERE CLAUSEاستخدام
مقدمة
البسيط االستعالم جملة الى بالتعرف السابقة الوحدة في قمنا )SELECT Statement(لقدهذه . عن الحديث سنتابع الفصل هذا وفي الجداول من البيانات استرجاع تم خاللها من التيمرتبة أو ، معينة شروط على بناء الجداول من البيانات سنسترجع حيث ، أوسع يشكل الجملة
، االسترجاع جملة في الشرط بجملة المتعلقة المور سندرس أي ، معينة حقول بيانات حسبوالترتيب التصاعدي والترتيب الشرط عن التعبير وطريقة الشرطية المعامالت حيث من
للبيانات التنازلي والترتيب التصاعدي
الشرط لجملة العامة الصيغة
SELECT {Field1, Field2, ...,...|*}FROM Table1WHERE Condition;
أن حيث
Field1.Field2 بياناتها استرجاع سيام التي الحقول أسماءTable1 منه البيانات استرجاع سيتم الذي الجدول أسم
Condition إما نتيجتها تكون أكثر أو شرطية أسماء Falseاو Trueجملة من وتتكونومعامالت وتعبيرات حقول
الشرح
جملة على WHEREتستخدم تتوي وهي الجداول من استرجاعها سيتم التي البيانات لحصرالمقطع بعد مباشرة وتقع الحقول FROMشرط بيانات استرجاعها سيتم الجملة تنفيذ وعند
جملة في المذكور الشرط تحقق التي الشرطية WHEREالمذكورة الجملة تقارن أن ويمكنجملة أن أي حسابية تعبيرات أو الجدول في حقول أو قيم :WHEREبين مايلي على تحتوي
الحقول أسماء المقارنة معامالت ثابتة قيم حسابية وتغبيرات متغيرات
15
االعتبار بعين أخذها يجب التي األمور
عالمتي- 1 بين القيم وضع يجب الشرط جملة في التاريخ وحقول النص حقول استخدام عندمفردتين ( (‘ ‘تنصيص
صغيرة- 2 أو كبيرة األحرف حالة مراعاة يجب النصية الحقول حالة فيالتاريخ- 3 صيغة مراعاة يجب التاريخ حقول الة للتاريخ )FORMAT(في األسلسية والصيغة
يلي كما DD-MON-YYهي
المقارنة COMPARISON OPERATORSمعامالت
: التالية الرموز المقارنة معامالت تشمل
المعنىالمعامليساوي=من > أكبرمن < أقل
يساوي => أو من أكبريساوي =< أو من اقليساوي >< ال
جملة في بآخر تعبير لمقارنة الشرط جملة في المقارنة معامالت في WHEREتستخدم كماالتالية : الصيغة
WHERE تعبير OPERATOR تعبير
مثال
WHERE hiredate=’01-SEP-96’WHERE sal<=1500WHERE name=’Ahmed’WHERE sal>< other
أخرى تمعامال مقارنة
المعامل المعامل المعنىنفىBETWEENNOT BETWEEN قيمتين بين
INNOT IN القيم من قائمة ضمنLIKENOT LIKE النص نمط مطابقة
IS NULLIS NOT NULL فارغة قسمة هي هل
16
BETWEENالمعامل البيانات أي القيم من مدى على تعتمد التي الصفوف بيانات السترجاع المعامل هذا يستخدم
قيمتين بين تقع التي
مثال
SELECT * FROM S_EMP WHERE sal BETWEEN 1500 AND 2500;
بين رواتبهم اقع الذين الموظفين بيانات جميع استرجاع سيتم أنه 2500و 1500أي
مالحظةتماما راتبه يببلغ الذي الموظف بيانات استرجاع جملة 2500أو 1500ستم أن أي
BETWEEN استرجاعها سيتم التي للقيم األدنى والحد األعلى الحد تتضمن
INالمعامل -1
ثابتة قيما القائمة هذه فتحتوي القيم من قائمة داخل قيمة عن للبحث المعامل هذا يستخدمفرعي استعالم جملة عن عبارة القائمة هذه تكون قد أو
مثال
SELECT name, sal , deptno FROM S_EMPWHERE detno IN (10,30);
الذين للموظفين به يعمل الذي القسم ورقم وراتبه الموظف اسم استرجاع سيتم أنه أيرقم قسم في رقم أو 10يعملون 30قسم
.LIKEالمعامل -2
حروف مطابقة سيتم حيث ، نصي حقل داخل معين نص عن للبحث المعامل هذا يستخدمالشرط جملة في المذكرة النص
مثال SELECT * FROM S_EMP WHERE name LIKE ‘S%’;
بحرف أسماؤهم تبدأ الذين الموظفين بيانات جميع استرجاع سيتم أنه Sأي
مالحظةاالشارة الحروف %تستخدم من عدد أي أو شيء ال تكون قد ، نصية قيمة أي عن عوضا
بحرف ينتهي معين اسم عن مثال حرف ’A%‘نكتب Aللبحث يحتوي نص عن Aوللبحثمعين ’%A%‘نكتب نصي حقل داخل مقطع أي عن نبحث أن بإمكاننا وهكذا
17
مثال
SELECT * FROM S_EMP WHERE name LIKE ‘_A%’;
هو أسمائهم في الثاني الحرف يكون الذين الموظفين بيانات جمبع استرجاع سيتم أنه Aأي
مالحظةفقط _ واحد حرف عن عوضا اإلشارة تستخدم
IS NULLالمعامل -3
( بيانات ( على تحتوي ال التي القول قيم أي شيء ال القيمة لفحص المعامل هذا يستخدم
مثالSELECT name, sal FROM S_EMP WHERE comm. IS NULL;
يتم لم أو عمولة لهم ليس الذين للموظفين وراتبه الموظف اسم استرجاع سيتم أنه أيعمولتهم ادخال
المنطقية LOGICAL OPERATORSالمعامالت
المعنىالمعاملAND يرجع TRUE القيمتين كلتا كانت TRUEاذا
OR يرجع TRUE القيمتين احدى كانت TRUEاذاNOT يرجعTRUE الفيمة كانت FALSEإذا
واحدة قيمة لترجع المنطقية المعامالت قيمتين FALSEأو TRUEتستخدم بين كنتيجةمن منطقية قيمة لعكس او والعكس FALSEالى TRUEمنطقيتين
جملة داخل شرط من أكثر تكوين يمكننا المنطقية المعامالت خالل باستخدام WHEREمنالمعامل ANDالمعامل ORاو
ANDالمعامل -1
القيمتين كال تكون أن المعامل هذا TRUEيتطلب
مثال SELECT name, sal FROM S_EMP WHERE sal>=2600 AND comm<200;
عن راتبهم يزيد الذين للموظفين وراتبه الموظف اسم استرجاع سيتم أنه وتقل 2600أيعن الوقت نفس في البيانات 200عمولتهم السترجاع الشرطين يتحقق يجب انه أي
18
ORالمعامل -2
القيمتين من أي تكون أن المعامل هذا TRUEيتطلب
مثالSELECT name, sal FROM S_EMP WHERE sal <2000 OR deptno=30;
عن راتبهم يزيد الذين للموفين وراتبه الموظف اسم استرجاع سيتم أنه يعملون 2000أي أورقم قسم البيانات 30في السترجاع الشرطين من أي يتحقق يجب أنه أي
NOTالمعامل -3
من منطقية قيمة بعكس المعامل هذا والعكس FALSEإلى TRUEيقوممثال
SELECT name, sal FROM S_EMP WHERE deptno NOT IN (20,40);
رقم القسمين في يعملون ال الذين للموظفين وراتبه الموظف اسم استرجاع سيتم أنه 20أيرقم المعامل 40و نتيجة عكس تم الحالة هذه INوفي
المقارنة ومعامالت المنطقية المعامالت أولويات
من المعامالت هذه تنفيذ أولوية فإن الشرط ملة نفس في منطقي معامل من أكثر ورد إذاكالتالي غي األدتى إلى األعلى
1-األقواس-23-(>< = > <) ، ، ، المقارنة معامالت4-NOT 5-AND 6-OR
الترتيب جملة ORDER BYاستخدام
العامة الصيغةSELECT {Field1, Field2,…,…|*}FROM Table1WHERE ConditionORDER BY Field3 [ASC|DESC];
أن حيثTable1 منه البيانات استرجاع سيتم الذي الجدول اسم
Field1, Field2 بياناتها استرجاع سبتم التي الحقول اسماءCondition إما نتيجتها تكون اكثر أو شرطية من Falseأو Trueجملة وتتكون
منطقية ومعامالت وتعبيرات حقول اسماءField3 عليه بناء الترتيب سيتم الذي الحقل اسم
19
ASC ذكرها عدم ويجوز تصاعديا مرتبة البيانات استرجاعDESC تنازليا مرتبة البيانات استرجاع
الشرح
جملة تستخدم البيانات استرجاع عدة ORDER BYعند أو معين حقل حسب البيانات لترتيباالسترجاع جملة نهاية في الجملة هذه وتأتي تصاعديا SELECTحقول الترتيب هذا يكون وقد
المقطع( ) استخدام عند الكبيرة القيمة إلى الصغيرة القيمة من (ASCمن تنازليا يكون وقد ( المقطع استخدتم عند الصغيرة القيمة إلى الكبيرة DESCالفيمة
مثالSELECT * FROM S_EMPWHERE deptno NOT IN (20,40)ORDER BY empno ASC;
رقم القسمين في يعملون ال الذين الموظفين بيانات جميع استرجاع سيتم أنه ورقم 20أيمرتبة 40 البيانات الموظف تصاعدياوستكون رقم حسب
المقطع دون السابقة الجملة كتابة :ASCويجوز كمايلي
SELECT * FROM S_EMPWHERE deptno NOT IN (20,40)ORDER BY empno;
مثال SELECT * FROM S_EMPWHERE deptno NOT IN (20,40)ORDER BY empno DESC;
رقم القسمين في يعملون ال الذين الموظفين بيانات جميع استرجاع سيتم أنه ورقم 20أيمرتبة 40 البيانات الموظف تنازلياوستكون رقم حسب
الفصل ملخص
ترتيب وموضوع منالداول بشروط البيانات استرجاع موضوع الفصل هذا خالل من تناولناالمقارنة معامالت إلى الشرط جملة دراسة خالل من وتطرقنا كما وتنازليا تصاعديا البيانات
مثل أخرى ومعامالت المنطقية من IS NULLو INو BETWEENوالمعامالت بها ومايتعلقوالمعامالت المقارنة معامالت وأولويات الشرط جملة وتركيب االستخدام طريقة حيثالمنطقية.
20
الحرفية الدوال
الفصل اهداف
على : قادر ستكون الله شاء إن الفصل هذا نهاية فيخالل -1 من وبالعكس كبيرة إلى صغيرة من الحروف SQLتحويلفي -2 الموجود النص داخل الحروف ومحاذاة SQLضبطالجداول -3 من البيانات بحذف القيامللبيانات -4 الصوتي اللفظ مع التعاملالجدول -5 بيانات بتعديل القيام
والمحاذاة والضبط الحرفية الدال
صغيرة حروف إلى البيانات تحويل LOWER Functionدالة
هذه استخدام ويتم صغيرة حروف إلى كبيرة حروف من البيانات لتحويل الدالة هذه تسنخدمأخرى جمل مع غاليا الدالة
العام التالي الشكل المثال انظر
مثال .SELECT LOWER (name), LOWER (job) FROM S_EMP;
صغيرة بحروف ولكن ووظبقته الموظف اسم عرض سيتم
LOWER name name LOWER jobjob-------------------- ---------------------------------------- --------------------ali salesmanali salesmanahmed analystahmed analystsamisami manager managerkhaledkhaled manager manager
كبيرة حروف إلى البيانات تحويل UPPER Functionدالة
هذه استخدام ويتم كبيرة حروف إلى صغيرة حروف من البيانات لتحويل الدالة هذه تسنخدمأخرى جمل مع غاليا الدالة
مثالSELECT UPPER (name), UPPER (job) FROM S_EMP;
21
كبير حرف إلى البيانات من األول الحرف تحويل INITCAPدالة
استخدام ويتم كبير حرف إلى المحدد القل بيانات من حرف أول لتويل الدالة هذه تستخدمأخرى الجمل مع غالبا الدالة هذه
مثالSELECT INITCAP (name), INITCAP (job) FROM S_EMP;
كبير سيكون كالهما في حرف اول ولكن ووظبقته الموظف اسم عرض سيتم
INITCAP name name INITCAP jobjob-------------------- ---------------------------------------- --------------------Ali SalesmanAli SalesmanAhmed AnalystAhmed AnalystSamiSami Manager ManagerKhaledKhaled Manager Manager
) الحقل ) بيانات من جزء قص اقتطاع SUBSTRدالة
الحقل او العمود بيانات من معين جزء قص أو لعرض تستخدم
العامة الصيغة
SUBSTR(Field1,N,M)SUBSTR(Field1,N,M)أن حيث
String منه االقتطاع المراد الحقلN االقتطاع عنده يبدأ حرف اولM اقتطاعها المراد الحروف عدد
مثال SUBSTRSUBSTR('Ahmed',1,3) ('Ahmed',1,3)
الناتج قيكونAhm
مثال SELECT SUBSTR (name, 1,2) FROM S_EMP;S_EMP;
وعرضها الموظف اسم من والثاني األول الحرف اقتطاع سيتم
22
حقل بيانات في حرف موقع نحديد INSTR Functionدالة
الحقل أو العمود بيانات في حرف موقع أو مكان لتحديد الدالة هذه تستخدم
العامة الصيغةINSTR )Field, ‘C’(
أن حيث
Field منه التحديد سيتم الذي الحقلC استخراج المراد موقعه الحرف
مثال SELECT INSTR (name, ‘l’) FROM S_EMP;S_EMP;
الحرف موقع استخراج الموظف lسيتم اسم حقل من
INSTR name name -------------------- -------------------- 2 2 0 0 004 4
للبيانات اليمين ناحية ومحاذاة ضبط RPAD Functionدالة
حروف ( ) أو معين حرف ملء يتم حيث اليمين ناحية البيانات لمحاذاة الدالة هذه تستخدمالبيانات يمين
العام الشكل
RPAD (COL | VALUE, N, ‘ String’)
أن حيث
COL ( يمينه ( حروف حرف ووضع ، بياناته محاذاة المطلوب الحقل اسمVALUE(" ") تنصيص عالمتي بين حرفي متغير أو قيمة وضع يمكن
N الجديد الف ظهور مرات عددString به الفراغات ملء سيتم الذي المتغير أو الحرف
23
مثالSELECT name, RPAD (sal, 7,’$’)FROM S_EMP;
NAME NAME RPAD SAL-------------------- ---------------------------------------- --------------------Ali 968$$$$Ali 968$$$$Ahmed 1936$$$Ahmed 1936$$$SAMISAMI 1512.5$1512.5$KHALEDKHALED 3599.753599.75
للبيانات اليسار ناحية ومحاذاة ضبط LPAD Functionدالة
حروف ( ) أو معين حرف ملء يتم حيث اليمين ناحية البيانات لمحاذاة الدالة هذه تستخدمالبيانات يسار
العام الشكل
LPAD (COL | VALUE, N, ‘ String’)
أن حيث
COL ( يمينه ( حروف حرف ووضع ، بياناته محاذاة المطلوب الحقل اسمVALUE(" ") تنصيص عالمتي بين حرفي متغير أو قيمة وضع يمكن
N الجديد الف ظهور مرات عددString به الفراغات ملء سيتم الذي المتغير أو الحرف
مثالSELECT name, LPAD (sal, 7,’#’)FROM S_EMP;
NAME NAME LPAD SAL-------------------- ---------------------------------------- --------------------Ali ####968Ali ####968Ahmed ###1936Ahmed ###1936SAMISAMI #1512.5 #1512.5KHALEDKHALED 3599.753599.75
24
البيانات تعديل و حذف
الحقل يمين ناحية بيانات حذف RTRIM Functionدالة
المحدد الحقل او العمود يمين ناية من بيانات لحذف الدالة هذه تستنخدم
العامة الصيغةRTRIM (COL | VALUE,‘ String’)
أن حيث
COL العمود أو القل اسمVALUE للعمود البديلة القيمة
String عنه البحث سيتم الذي المتغير أو الحرف قيمة
مثال
SELECT name, RTRIM (job,’man’)FROM S_EMP;
حذف العمود manسيتم يمين jobمن
name name RTRIM jobjob-------------------- ---------------------------------------- --------------------ALI SalesALI SalesAHMED AnalystAHMED AnalystSAMI SAMI Manager ManagerKhaledKhaled Manager Manager
الحقل يسار بيانات حذف LTRIM Functionدالة
المحدد الحقل أو العمود يسار ناحية من بيانات لحذف الدالة هذه تستخدم
العام الشكلLTRIM (COL | VALUE,‘ String’)
أن حيث
COL العمود أو القل اسمVALUE للعمود البديلة القيمة
String عنه البحث سيتم الذي المتغير أو الحرف قيمة
25
مثال
SELECT name, LTRIM (job,’man’)FROM S_EMP;
حذف العمود manسيتم يسار jobمن
name name LTRIM jobjob-------------------- ---------------------------------------- --------------------ALI SalesmanALI SalesmanAHMED AnalystAHMED AnalystSAMI SAMI ager agerKhaledKhaled ager ager
الحقل بيانات طول قياس LENGTH Function دالة
المحدد الحقل أو متغير بيانات طول إليجاد الدالة هذه تستخدم
العام الشكلLENGTH (COL | VALUE)
مثال SELECT LENGTH (name), LENGTH (‘WELCOME’)FROM S_EMP;
كلمة وطول الموظف اسم طول حساب .WELCOMEسيتم
LENGTH name name LENGTH ‘WELCOME’‘WELCOME’-------------------- ---------------------------------------- --------------------3 73 75 75 74 4 7 766 7 7
جدول في بيانات تعديل TRANSLATE Functionدالة
معين جدول في موجودة بيانات لتبديل أو لنعديل الدالة هذه تستخدم
: العام الشكلTRANSLATE (COL|VALUE, FROM, TO)
26
أن حيث
COL العمود أو القل اسمVALUE للعمود البديلة ) القيمة البيانات(
FROM ( المطلو ( الحروف تغييره بالحرفTO ( المطلو ( الحروف احالله بالحرف
مثالSELECT name, TRANSLATE (name,’MI’,’WY’)FROM S_EMP WHERE sal=1512.5;1512.5;
الرفين استبدال WYبالحرفين MIسيتم
name name TRANSLATE(name)-------------------- ---------------------------------------- --------------------SAMI SAMI SAWY SAWY
الصوتي اللفظ عرض Function SOUNDEX دالة
( معين ( جدول في الموجودة المتغيرات للبيانات الصوتي اللفظ إليجاد الدالة هذه تستخدمالهجائية األحرف بعض في اختالف هناك كان ولو حتى
: العام الشكلSOUNDEX (COL|VALUE)
أن حيث
COL العمود أو القل اسمVALUE للعمود البديلة ) القيمة البيانات(مثال
SELECT name, SOUNDEX (name)FROM S_EMP WHERE sal=1512.5;1512.5;
الفصل ملخص
صغيرة حروف إلى كبيرة حروف من الحروف حالة بتحويل الخاصة الحرفية الدوال تناولناايضا تناولناها الني الهامة الدوال ومن النص داخل الحروف محاذاة ضبط وكذلك والعكس
الجداول . بيانات وتعديل الصوتي اللفظ عرض ودوال البيانات حذف دوال
27
والتحويل التاريخ دوال
الفصل أهداف
على : قادر تكون الله شاء إن الفصل هذا نهاية فيفي -1 التاريخ دوال مع SQLالتعاملفي -2 التحويل أدوات مع SQLالتعامل
التاريخ دوال
التاريخ دوال استخدام كيفية في لنتعمق لتا لذا االمم أصل هو والتاريخ الحياة هو الوفت
Sysdateالدالة
ينفذ الذي الكمبيوتر جهاز في المخزن التاريخ أي الحالي اليوم تاريخ بإعطاء تقوم الدالة هذهيسمى وهمي التاريخ تخزين ويتم األمر هذا أوراكل Dualعليه لغة داخل أصال موجود وهو
الجدول هذا من التاريخ استدعاء عملية تتم أن يجب لذلكمثال
باآلتي : نقوم الحالي اليوم تاريخ الستدعاء
SELECT SYSDATE FROM DUAL;
NEXT_DAYالدالة
المعطى للتاريخ التالي التاريخ يوافق الذي التاريخ لعرض الدالة هذه تستخدمهو الموجود التاريخ كان إذا المثال سبيل الذي 7/7/2003فعلى اليوم تحديد الجهاز من وطلب
يعطي فإنه الشهر نفس من الجمعة يوم 11/7/2003يصادف
العام الشكلNEXT_DAY (DATE,CHAR)
إن اسم DATEحيث وضع خالل من يليه الذي لليوم التاريخ إيجاد والمراد المعطى التاريخ هوالمتغير داخل CHARاليوم
مثال
SELECT NEXT_DAY (‘7/7/2003’,’MONDAY’) FROM DUAL;
التنفيذ نتيجة
NEXT_DAY-------------------
11/7/200328
شهر كل من األخير اليوم تحديد LAST_DAYدالة
معطى شهر كل من يم آخر بتحديد الدالة هذه تقوم
العام الشكلLAST_DAY (DATE)
أن بإدخاله DATEحيث تقوم تاريخ أو الجهاز تاريخ هو
مثال
SELECT LAST_DAY (SYSDATE) FROM DUAL;
الهاز تاريخ أن يلي : 2/2/2003هو SYSDATEبفرض كما هي السابقة للجملة نتيجة فإن
LAST_DAY(SYSDATE)--------------------------------
28/2/2003
مالحظة التالي كالمثال آخر تاريخ من تاريخ بطرح تقوم أن يمكنك
SELECT SYSDATE – HIRDATE FROM S_EMP
تاريخ .HIRDATEحيث حفل
MONTHES_BETWEENالدالة
شهرين بين الفرق مدة لعرض الدالة هذه تستخدم
العام الشكلMONTHES_BETWEEN (DATE1,DATE2)
مثال
MONTHES_BETWEEN (’01-SEP-95’,’11-JAN-94’)
الناتج سيكون1.9774194
29
_MONTHES ADDالدالة
معطى التاريخ إلى األشهر من عدد إلضافة الدالة هذه تستخدم
ADD_MONTHES (DATE,M)
أن حيث
DATE المعطى التاريخM االشهر عدد
مثال
ADD_MONTHES (‘7-JAN-99’,6)
الناتج سيكون التنفيذ عند
7-JUL-99
ROUND الدالة
تحدده معين لتاريخ سنه أو شهر بداية اقرب لعرض الدالة هذه تستخدم
الدوال : باب في شرحها وسيتم للتقريب الرقمية للبيانات أيضا الدالة هذه تستخدم مالحظةالرقمية
العامة الصيغة
ROUND (DATE, M|Y)
أن حيث
DATE المعطى التاريخM نكتبMONTH شهر باقرب يعود ان اردنا اذاY نكتبYEAR سنة باقرب يعود ان اردنا اذا
مثالROUND (’07-MAY-96’, ‘MONTH’)
الناتج سيكون التنفيذ عند
01-JUN-96
30
مثالROUND (’07-MAY-96’, ‘YEAR’)
الناتج سيكون التنفيذ عند01-JAN-96
TRANCATE Function الدالة
تحدده معين لتاريخ سنه أو شهر في يوم اول تاريخ لعرض الدالة هذه تستخدم
الدوال : باب في شرحها وسيتم للتقريب الرقمية للبيانات أيضا الدالة هذه تستخدم مالحظةالرقمية
العامة الصيغة
TRUNC (DATE, M|Y)أن حيث
DATE المعطى التاريخM نكتبMONTH التاريخ شهر في يوم اول تاريخ يعرض ان اردنا اذا
المحدد Y نكتبYEAR التاريخ سنة لنفس يوم ألول يعود ان اردنا اذا
مثال
TRUNC (’07-MAY-96’, ‘MONTH’)
الناتج سيكون التنفيذ عند01-MAY-96
مثال
TRUNC (’07-MAY-96’, ‘YEAR’)
الناتج سيكون التنفيذ عند
01-JAN-96
31
التحويل دوال
ومنها بالتويل خاصة دوال وتوجد اخر إلى شكل من البيانات تحويل يتم
حروف -1 الى TO_CHARالتحويلأرقام -2 إلى TO_NUMBERالتحويلتاريخ -3 إلى TO_DATEالتحويل
TO_CHARالدالة -1
حرفية جملة الى األرقام او التاريخ لتحويل الدالة هذه شكل تستخدم تغيير يتم حيثاخرى إلى صورة من االرقام او التاريخ
حرفية جملة الى تاريخ من اوال
العام الشكلTO_CHAR (DATE,’FMT’)
أن حيث
DATE التاريخ قيمةFMT الجديدة الصورة
مثال SELECT TO_CHAR (SYSDATE,’DAY, DD MON YY’) FROM DUAL;
الجهاز تاريخ أن هي 7/7/2003هو )SYSDATE(لنفرض السايقة للجملة التنفيذ نتيجة فإنكمايلي:
TO_CHAR (SYSDATE,’DAY, DD MON YY’)-----------------------------------
MONDAY 7 JUL 03
مالحظةكتبنا -1 متال YYYYاذا كاملة السنة عرض يتم سوف 2003فانهكتبنا -2 مثال MMاذا الشهر رقم عرض يتم سوف 06فإنهكتبنا -3 مثل MONTHاذا كامال الشهر اسم عرض يتم سوف Julyفانهكتبنا -4 اليوم DYاذا من حروف ثالثة أول عرض سيتمكتبنا -5 كامال DAYاذا اليوم اسم عرض سيتم
نكتب- 6 الساعة عرض اردنا PM 15:45:32مثل HH24:MI:SS AMاذا
32
حرفية جملة الى أرقام من التحويل ثانياالعام الشكل
TO_CHAR (NUMBER,’FMT’)أن حيث
NUMBER الرقمFMT الجديدة الصورة
مثال
SELECT TO_CHAR (6500500,’$9,999,999)FROM S_EMP;
الناتج سيكون التنفيذ عند
TO_CHAR (6500500,’$9,999,999)-----------------------------------
6,500,500
مالحظة نكتب -1 رقم 9عندما خاتة يها نعني فإننانكتب (-2 الفاصلة ) , عندما طباعة يتم3- ( . ) العشرية الفاصلة طباعة يتم نكتب عندما
TO_NUMBERالدالة
حرف شكل عى المخزنة الرقمية القيمة بتحويل الدالة هذه رقمية CHARتقوم قيمة إلىNUMBERفعليه
العام الشكل
TO_NUMBER (VALUE)حيث
VALUE رقمية قيم شكل على عرضها سيتم حرفية أرقام شكل على مخزنة قيمة
مثال
اسمه حقل لدينا أن جدول NUMلنفرض انها DATAفي أي رفيه ارقام ولكنها ارقام بهتحويل ستم الدالة هذه تنفيذ فعند الحسابية العمليات في تدخل فال الحروف معاملة تعامل
الحسابية العمليات في تدخل ان يمكن رقمية فيم إلى القيم
SELECT NUM, TO_ NUMBER (NUM)FROM DATA;
33
الناتج سيكون التنفيذ عند
NUM TO_NUMBER(NUM)----------------------------------------------------------------------------------------
9236 92367526 7526
مالحظةالنوع في اختالف يوجد ولكن القيم نفس بهما العمودان
TO_DATEالدالة
المثال تاريخ بشكل متعير الى النص اشاؤة داخل الحرفي المتغير بتحويل الدالة هذه تقومذلك : يوضح التالي
SELECT TO_DATE (‘JULY 7,2003’,’MONTH DD, YY’) FROM DUAL;
الناتج سيكون التنفيذ عند
TO_DATE (‘JULY 7,2003’,’MONTH DD, YY’)--------------------------------------------------------------
07-JUL-03
الفصل ملخصوالوقت للتاريخ الصيغ كامل مع بالتعامل الخاصة التاريخ دوال الفصل هذا في تناولنا
نص من الكتابة حاالت تحويل تعمل التي التحويل دوال تطرقنا ثم أشكالها بعدة واستعراضهانص الى أرقام من كذلك بالعكس و تاريخ إلى
34
الرقمية الدوال
الفصل أهداف
على قادر ستكن الله شاء ان الفصل هذا نهاية فيالمطلقة -1 القيمة دالة مع التعامللألعداد -2 التربيعي الجذر إيجادلألعداد -3 األسية الدالة مع التعاملخالل -4 من العشرية األعداد SQLتقريبالعشرية -5 المنزلة حذف خالل من األعداد تقريبلألعداد -6 القسمة باقي إيجادالسالبة -7 األعداد اشارة ايجاد
التربيعي والجذر واألسية واألسية المطلقة الدوال
المطلقة القيمة ABS Functionدالة
مع الدالة هذه استخدان يتم وغالبا معين لرقم المطلقة القيمة إليجاد الدالة هذه تستخدمأخرى جمل
العام الشكل
ABS )COL|VALUE(
أن حيث
COL العمود أو الحقل اسمVALUE) البيانات ) للعمود البديلة القيمة
مثال
SELECT name,job,hiredate-sysdate FROM S_EMP;
: طباعة سيتم التنفيذ عند
name jobname job hierdate-sysdate hierdate-sysdate-------------------- ------------------------------------------------ ----------------------------ALI SalesmanALI Salesman -6906.3252-6906.3252AHMED AnalystAHMED Analyst -6841.3252-6841.3252SAMI SAMI ManagerManager -4592.3252-4592.3252KhaledKhaled ManagerManager -6555.3252-6555.3252
35
العمود قم أن القيمة hierdate-sysdateنالحظ نأخذ موجبة دائما نجعلها ولكي سالبة قيونكتب العمود لهذا المطلقة
SELECT name,job,ABS(hiredate-sysdate) FROM S_EMP;
: طباعة سيتم التنفيذ عندname jobname job hierdate-sysdate hierdate-sysdate------------------------------------------------------------------------------------------------ALI SalesmanALI Salesman 6906.32526906.3252AHMED AnalystAHMED Analyst 6841.32526841.3252SAMI SAMI ManagerManager 4592.32524592.3252KhaledKhaled ManagerManager 6555.32526555.3252
األسية -2 POWER Functionالدالة
ألس مرفوع رقم قيمة إليجاد الدالة هذه تستخدم
العام الشكل
POWER (COL|VALUE,P)
أن حيث
COL العمود أو الحقل اسمVALUE( البيانات ( للعمود البديلة القيمة
P األس قيمة
مثال
SELECT DIGIT, POWER (DIGIT1, 2) FROM DIGIT;
: طباعة سيتم التنفيذ عند
DIGIT1 DIGIT1 POWER (DIGIT1, 2)-------------------- ---------------------------------------- --------------------2020 4004002525 62562525.525.5 650.25650.2530.5 30.5 930.25930.25
36
التربيعي -3 الجذر SQRT Functionدالة
معين لرقم التربيعي الجذر إلياد الدالة هذه تستخدم
العام الشكل
SQRT (COL|VALUE)
أن حيث
COL العمود أو الحقل اسمVALUE( البيانات ( للعمود البديلة القيمة
مثال
SELECT name,sal, SQRT (sal) FROM S_EMP;
: طباعة سيتم التنفيذ عند
NAME NAME SAL SQRT (SAL)------------------------------------------------------------------------------------------------Ali 968Ali 968 31.11331.113Ahmed 1936Ahmed 1936 4444SAMISAMI 1512.5 1512.5 38.980538.9805KHALEDKHALED 3599.75 3599.75 59.98859.988
واإلشارة القسمة وباقي التقريب دوال
العشري التقريب ROUND Functionدالة
صحيح أو عشري رقم اقرب إلى العدد لتقريب الدالة هذه تستخدم
العام الشكلROUND (COL|VALUE, N)
أن حيث
COL العمود أو الحقل اسمVALUE عددية قيمة
N العشرية المواقع عدد
37
مثال
SELECT SQRT (sal), ROUND (SQRT (sal), 2) FROM S_EMP;
: طباعة سيتم التنفيذ عند
SQRT (SAL) ROUND )SQRT )sal(, 1(------------------------------------------------------------------------------------------------31.11331.113 31.1131.114444 444438.980538.9805 38.9838.9859.98859.988 59.9959.99
بالحذف التقريب TRANCATE Functionدالة
العشرية المواقع بعض بحذف الرقم لتقريب الدالة هذه تستخدم
العام الشكل
TRUNC )COL|VALUE,N(
أن حيث
COL العمود أو الحقل اسمVALUE عددية قيمة
N العشرية المواقع عددمثال
SELECT DIGIT1, TRUNC (DIGIT1,-1), TRUNC(POWER(DIGIT1,2),1) FROM DIGITS;
: طباعة سيتم التنفيذ عند
DIGIT1 DIGIT1 TRUNC (DIGIT1, -1) TRUNC (POWER(DIGIT1, 2), 1)
------------------------------------------------------------------------------------------------2020 20 20 400 4002525 20 20 62562525.525.5 20 20 650.2650.230.5 3030.5 30 930.2930.2
38
القسمة باقي MOD Functionدالة
عددين قسمة باقي إليجاد الدالة هذه تستخدم
العامة الصيغةMOD )VALUE1, VALUE2(
أن حيثVALUE1 بة عدد قيمةVALUE2 عددية قيمة
مثالSELECT DIGIT1, MOD (DIGIT1, 7) FROM DIGITS
: طباعة سيتم التنفيذ عند
DIGIT1 DIGIT1 MOD (DIGI1, 7)------------------------------------------------------------------------------------------------2020 6 62525 4 425.525.5 4.5 4.530.5 30.5 2.5 2.5
اإلشارة SIGN Functionدالة
بالقيمة ( تعود موجبة اإلشاؤة كانت فإذا الرقم إشارة بفحص الدااة هذه اذا) 1تستخدم أمابالقيمة ( فتعود سالبة اإلشارة -)1كانت
التالي : المثال انظر العام الشكل
مثال
SELECT DIGIT1, SIGN (DIGIT1) FROM DIGITS
DIGIT1 DIGIT1 MOD (DIGI1, 7)------------------------------------------------------------------------------------------------2020 1 12525 1 125.525.5 1 130.530.5 11-50-50 -1-1-30.5-30.5 -1 -1
الفصل ملخص
39
البيانات قواعد نظام في واالستفهام االستعالم لغة في الرقمية الدوال الفصل هذا في تناولناالبيانات من صف أو سجل مع مايتعامل فمنها وظائفها حسب الدوال هذه قسمنا وقد اوراكل
السجالت من مجموعة مع مايتعامل األعمدة RECORDSومنها ) COLUMNSاو الحقول( التقريب دوال وكذلك التربيعي والجذر االسية والدالة المطلقة القيمة دالة الى تطرقنا حيث
واالشارة القسمة باقس ودالة
البيانات استرجاع
اافصل أهداف
على قادر ستكون الفصل هذا دراسة بعد الله شاء ان
أكثر- 1 من البيانات استرجاعمستعارة- 2 بأسماء البيانات استراع
جدول من أكثر من البيانات استرجاع
عالقة بينهم كان اذا جدول من أكثر من بيانات استرجاع من Relationنستطيع صف كل حيثمشترك حقل طريق عن االخر من صف مع يرتبط احدهما
للربط أنواع عدة وتوجد:
1-EQUAI JOINالعامة الصيغة
SELECT table.column, table.columnFROM table1, table2 WHERE table1.column1 = table2.column2;
40
بعد نكتب كتابة SELESTحيث الضروري من أنه كذلك والحظ ظهروها نريد التي االعمدة ( ) كلمة بعد ونكتب الجدولين في الحقول فيها يتساوى التي الربط تم طريقها عن التي االعمدة
WHERE طريقهما عن الجدولين ربط تم اللذان العمودان
مالحظة نقطه وبينهما العمود اسم ثم اوال الجدول اسم table.columntable.columnنكتب
مثال
SELECT S_EMP.DEPT_ID, S_EMP.LAST_NAME,S_DEPT.NAMEFROM S_EMP, S_DEPTWHERE S_EMP.DEPT_ID = S_DEPT.ID;
ينتج التفيذ : عند
DEPT_IDDEPT_ID LASTLAST__NAMENAME NAME NAME ------------------------------------------------------------------------------------------------5050 VELASQUEA VELASQUEA ADMINISTRATION ADMINISTRATION4141 NGAO NGAO OPERATOPNSOPERATOPNS3131 NAGAYAMA NAGAYAMA SALESSALES50 ROPEBURN50 ROPEBURN ADMINISTRATIONADMINISTRATION4141 URGIHARTURGIHART OPERATOPNSOPERATOPNS4242 MENCHU MENCHU OPERATOPNSOPERATOPNS4343 BIRI BIRI OPERATOPNSOPERATOPNS4545 HAVEL HAVEL OPERATOPNSOPERATOPNS
41
بعد اخر شرط اضافة باستخدام WHEREويمكن فنكتب ANDوذلك
SELECT S_EMP.DEPT_ID, S_EMP.LAST_NAME,S_DEPT.NAMEFROM S_EMP, S_DEPTWHERE S_EMP.DEPT_ID = S_DEPT.ID AND S_DEPT = 41;
ينتج التفيذ : عند
DEPT_IDDEPT_ID LASTLAST__NAMENAME NAME NAME ------------------------------------------------------------------------------------------------4141 NGAO NGAO OPERATOPNSOPERATOPNS4141 URGIHARTURGIHART OPERATOPNSOPERATOPNS
2-NON- EQUAI JOIN
الجدولين بين مشتركة اعمدة يوجد ال عندما النوع هذه يستخدم
مثالSELECT S_EMP.ename, S_EMP.job, S_EMP.sal, salgrade.gradeFROM S_EMP, salgradeWHERE S_EMP.sal BETWEEN salgrade.losal AND salgrade.hisal;
3-OUTER JOIN
الجدول في سجالت يقابلها ال التي الثاني الجدول في السجالت لرؤية النوع هذا يستخدماألول
العامة الصيغة
SELECT table.column, table.columnFROMtable1, table2WHERE table1.column(+) = table2.column;
مالحظةيحتوي (+) ال الذي الحقل االسم بجوار نكتبه حيث الربط من النوع هذا في المعامل نسنخدم
قيمة هلى
42
مثال
نكتب موظف به يتواجد ال الذي الجزء عن االستعالم اردنا اذا
SELECT s_emp.last_name, s_emp.id, , s_customer.nameFROMs_emp, s_customer WHERE s_emp.id (+) = s_customer.sales_rep_idORDER BY s_emp.id;
4-SELF JOINالجدول نفس من اخر بصف جدول من صف لربط تستخدم
43
مثال :SELECT worker.last_name||' works for '||manager.last_nameFROMs_emp worker, s_emp managerWHERE worker.manager_id = manager.id;
طباعة سيتم التنفيذ عند
worker.last_name||' works for '||manager.last_name
------------------------------------------------------------------------------------------------Nago works for Velasquez
Nagayama works for VelasquezRopeburn works for Velasquez
Urguhart Urguhart works for NagoBiri Biri works for Nago
Magee works for NagayamaGiljum Giljum Nagayama
مستعارة بأسماء البيانات استرجاع
الجدول باستدعاء قمنا مثال اخر مستعار s_emp في ياسم workerباسم أخرى ومرةmanager للتسهيل استخدمناه وقد الجدول اسم محل يقوم االسم وهذا
مثال
SELECT e.ename, e.job, e.sal, s.gradeFROM S_EMP e, salgrade sWHERE e.sal BETWEEN s.losal AND s.hisal;
مثال
SELECT e.last_name, e.id, c.nameFROMs_S_EMP e, s_customer cWHERE e.id (+) = c.sales_rep_idORDER By e.id;
. الفصل ملخص
جمل الفصل هذا في رقم SQLتناولنا كغرض جدول من اكثر من بيانات باسترجاع الخاصةخالل من البيانات استرجاع عملية إلى كذلك وتطرقنا الموطفين جدول من الموظفين اقسم
مستعار اسم
44
المجموعات ودوال واإلحصائية الرياضية الدوال
الفصل أهداف
على : قادر ستكون الله شاء ان الفصل هذا نهاية فيواالحصائية -1 الرياضية الدوال مع التعاملالمجموعات -2 دوال مع التعامل
واإلحصائية الرياضية الدوال
السجالت من مجموعة مع تتعامل التي واالحصائية الرياضية االقترانات من مجموعة هناللك: مايلي االقترانات هذه ومن محدودة واحدة قيمة إلخراج
العد -1 COUNTدالةقيمة -2 أكبر MAXدالةقيمة -3 أصغر MINدالةالمجموع -4 SUMدالةالحسابي -5 المتوسط AVGدالةالمعياري -6 االنحراف STDDEVدالةالمعيار -7 VARIANCEدالة
العد -1 COUNTدالة
القيمة تحمل ال والتي معين عمود في الحقول حصر بعملية الدالة هذه NULLتقوم
العام الشكلCOUNT (DISTINCT|ALL|EXP)
أن حيثDISTINCT القيمة تحمل التي الحقول احتساب لمنع NULLتستخدم
ALL المكررة حتى الحقول جميع هنا المدى يكونEXP العمود اسم استخدام يمكن
مثال SELECT COUNT (DISTINCT NAME) FROM S_EMP;
للحقل الصفوف عدد بتحديد السايقة الجملة الجدول NAMEتقوم S_EMPمن
مثال الجدول في السجالت عدد حساب
SELECT COUNT (*) ”TOTAL” FROM S_EMP;
45
قيمة -2 أكبر MAXدالة
معين عمود في موجودة قيمة أكبر بعرض الدالة هذه تقوم
العام الشكل
MAX (DISTINCT|ALL|EXP)
مثالSELECT MAX (DISTINCT salary) FROM S_EMP;
الموظفين جدول في راتب أكبر بعرض الجملة هذه S_EMPتقوم
قيمة -3 أكبر MINدالةمعين عمود في موجودة قيمة أكبر بعرض الدالة هذه تقوم
العام الشكل
MIN (DISTINCT|ALL|EXP)مثال
SELECT MIN (DISTINCT salary) FROM S_EMP;
الموظفين جدول في راتب أصغر بعرض الجملة هذه S_EMPتقوم
المجموع -4 SUMدالةمعين عمود او حقل في الموجودة القيم مجموع بعرض الدالة هذه تقوم
SUM (DISTINCT|ALL|EXP)
مثالSELECT SUM (salary) FROM S_EMP;
الموظفين جدول في الموظفين رواتب مجموع بعرض الجملة هذه S_EMPتقوم
الحسابي -5 المتوسط AVGدالةمعين جدول في موجودة تكون قد قراءات لمجموعة المعدل بعرض الدالة هذه تقوم
العام الشكلAVG )COLUMN(
COLUMN معين جدول في الموجود العمود اسم هومثال
SELECT AVG (SALARY) FROM S_EMP;
الموظفين لمرتبات الحسابي المتوسط بحساب الجملة هذه تقوم46
المعياري -6 االنراف STDDEVدالة
قراءات أو مشاهدات لمجموعة المعياري االنحراف بإيجاد الدالة هذه تقوم
العام الشكلSTDDEV )DISTINCT|ALL(
مثال الموظفين جدول في الرواتب حقل في الواردة لألرقام المعياري االنحراف S_EMPإلبجاد
SELECT STDDEV (SALARY) FROM S_EMP;
المعيار -7 VARIANCEدالة
قراءات أو مشاهدات لمجموعة المعيار بإيجاد الدالة هذه تقوم
مثال SELECT VARIANCE (SALARY) FROM S_EMP;
المجموعات دوالالدالة مع باستخداماها ولكن اخرى دوال أي او السابقة الدوال جميع عن عبارة هي
BY GROUP شرط حسب منه اصغر مجموعات إلى الرئيسي الجدول تجزئة إلة ممايؤديمغين
العام الشكلGROUP BY COL_NAME
COL_NAME تقسيم سيتم والذي الجدول في العمود اسم هوغليه بناء صغيرة مجموعات إلى الجدول
التالي المثال الى ننظر الدالة هذه ولفهم
التالية الجملة كتبنا اذاSELECT id, last_name, dept_id DEPARTMENTFROM s_empWHERE dept_id = 41;
هي المخرجات فان
ID LAST_NAME DEPARTMENT-- --------- ----------2 Ngao 416 Urguhart 41
16 Maduro 4117 Smith 41
القسم في موظفين اريع وجود المجموعات 41نالحظ دالة تطبق عند ولكن
47
SELECT dept_id, COUNT (*) ”Number” FROM s_empWHERE dept_id = 41GROUP BY dept_id;
هي المخرجات فانDEPT_ID Number ------- ------ 41 4
للقسم البيانات من واحد سطر ظهور القسم GROUP BYفالدالة 41نالحظ بتجميع قامت41 ( دالة ( استخدمنا عندما واضح وهذه بها خاص جدول عملت وكأنها بعضه COUNTمع
السجالت عدد ان واحد 4اظهرت هو االسطر عدد أن رغم
االمر نكتب المجموعات دالة مع شرط HAVINGالستخدامكاالتي االستعالم جملة شكل قبكون
SELECT column, group_functionFROMtable[WHERE condition][GROUP BY group_by_expression][HAVING group_condition][ORDER BY column];
مثالالموظفين جدول من بيانات اظهر اردنا الوظيفة EMPاذا تكون أن بشرط مجموعات وعمل
MANAGER SELECT DEPTNO, JOB, COUNT (*), SUM (SAL)FROM S_EMPGROUP BY DEPARTNO, JOBHAVING JOB=’MANAGER’;
مثال الموظفين جدول من بيانات اظهر اردنا الوظيفة EMPاذا تكون أن بشرط مجموعات وعمل
MANAGER أوANALYST اوSALESMAN
SELECT DEPTNO, JOB, COUNT (*), SUM (SAL)FROM S_EMPGROUP BY DEPARTNO, JOBHAVING JOB IN (’MANAGER’,’ ANALYST’,’ SALESMAN’);
الفصل ملخص
48
جمل على الفصل هذا في بغرض SQLركزنا تقوم التي واالحصائية الرياضية بالدوال الخاصةمثل البيانات من واحدة تكون MAX,MIN,AVGقيمة التي المجموعات دوال ثم ومن وغيرها
االمر مع يساويه GROUP BYغالبا أو منه اصغر جدول الى الجدول بفرز تقوم والتي
49
الفرعية االستعالمات
الفصل أهدافقادرعلى ستكون الله شاء ان الفصل هذا نهاية في
الفرعية -1 االستعالمات فيها يستخدم ان يمكن التي الحاالت تحديدوالمتداخلة -2 الفرعية االستعالمات تعريفالفرعية -3 االستعالمات أنواع معرفةالصفوف -4 متعدد وآخر الصف احادي فردي استعالم كتابة
الفرعي االستعالم
مقدمة
راتب عن رواتبهم تزيد الذين الموظفين بيانات إليجاد استعالم كتابة في ترغب أنك لنفترضالموظفين أحد
استعالمين الى تحتاج الحالة هذه فيالمعني -1 الموظف راتب اليجاد استعالماالستعالم -2 في المحسوب المبلغ عن رواتبهم تزيد الذين الموظفين اليجاد استعالم
األول
سوف الداخلي االستعالم ، االخر في االستعالمين احد برتكيب وذلك االستعالمين دمج ويمكنك( ) ( الرئيسي ( الخارجي االستعالم يستخدمها والتي قيم بقيمة يعود
واستالعم متتال بشكل االستعالمين تنفيذ تماما يشبه الفرعية االستعالمات استخدام إنالثاني االستعالم في بحث كنتيجة االول االستعالم نتيجة
الفرعي االستعالم نعريف
استفسار جملة أو SELECTهو قيمة السترجاع رئيسية استفسار جملة داخل مضمنةالتالي الشكل انظر الرئيسي االستعالم في استخدامها ليتم القيم من مجموعة
50
العام الشكل
SELECT select_listFROM tableWHERE expr operator (SELECT select_list FROM table);
51
مالحظة1- ( ) اوال ينفذ الفرعي الداخلي االستعالم2- ( ) الرئيسي االستعالم في يستخدم الفرعي الداخلي االستعالم ناتج
الفرعي االستعالم متطلبات
قوسين (.......)-1 بين الفرعي االستعالم وضعالمقارنة. -2 عملية يمين الفرعي االستعالم وضعاستخدام -3 يمكن الفرعي ORDER BYال االستعالم داخلالصف -4 األحادية الفرعية االستعالمات مع الصف أحادية المعامالت استخدامالصف -5 المتعددة الفرعية االستعالمات مع الصف متعددة المعامالت استخدام
52
الفرعية االستعالمات أنواع
حسب الفرعي االستعالم تصنيف يمكنواحدا -1 صفا يسترجع الصف أحادي فرعي استعالمواحد -2 صف من أكثر يسترجع الصفوف متعدد فرعي استعالمعمود -3 من اكثر يسترجع األعمدة متعدد فرعي استعالم
واحدا -1 صفا يسترجع الصف أحادي فرعي استعالم
المثال الى انظر واحد بسطر اال يعود ال الفرعي االستعالم ان حالة في االستعالم هذا نستخدمالتالي
SELECT last_name, title, salaryFROMs_empWHEREsalary <
(SELECT AVG(salary) FROM s_emp);
ويأخذ الحسابي المتوسط وهي واحدة قيمة باخراج المثال هذا في الفرعي االستعالم يقوماعلى راتبهم يعتبر الذين الموظفين وورواتب اسماء ويستخرج القيمة هذه الرئيسي االستعالم
الحسابي المتوسط منمالحظة
هي- 1 النوع بهذا الخاصة المقارتة معامالت أنواع>< .=> ,=< ,< ,>
واحد -2 صف من أكثر يسترجع الصفوف متعدد فرعي استعالمالتالي المثال انظر اسطر بعدة يعود الفرعي االستعالم ان حالة في االستعالم هذا نستخدم
SELECT last_name, first_name, titleFROM s_empWHERE dept_in IN (SELECT ID FROM s_dept
WHERE name = 'Finance' OR region_id = 2);
اسمهم الذين الموظفين أرقام ياستخراج المثال هذا في الفرعي االستعالم 'يقومFinance' منطقتهم رقم يأخذها 2او فيم بعدة سيعود الستعالم فهذا االقسام جدول من
اساسها على الموظفين اسماء ويستخرج الرئيسي االستعالممالحظة
هي -1 النوع بهذا الخاصة المقارتة معامالت أنواعIN, ALL, ANY
يعطيك -2 االبرنامج فان متعدد استعالم مع الصف احادي االستعالم معامالت استخدمنا اذاخطأ رسالة
ORA-01427:single-row sub query returns more than one row
53
الفصل ملخص
األحادية وانواعها وشروطها واهميتها الفرعية االستعالمات على تعرفنا الفصل هذا فيوالمتعددة
54
الجداول إنشاء
الفصل أهداف
: مايلي على الله انشاء قادر ستكون الفصل هذا نهابة قستسميتها -1 وشروط الجداول على التعرفالبيانات -2 أنواع على التعرفاألمر -3 بواسطة الجداول CREATإنشاءالجدول -4 في أساسي مفتاح إنشاءاخر -5 جدول بواسطة جدول إنشاءالجدول -6 مواسفات عرض
الجدول تعريف
السجالت من مجموعة من يتكون الملف أو الجدول أن سايقا سجل RECORDSقلنا وكلالحقول من مجموعة من وهذه FIELDSيتكون االرقام او الحروف من مجموعة به حقل كل
عرض أو طول لها الحقول
ولكل الحقول من بحقل عمود كل ويمثل األعمدة من مجموعة بأنه الجدول أو الملف ويعرففيه لبياناته نوع حقل
/ ملف الجدول TABLE/FILE NAMESتسمية
عن -1 الملف أو الجدول اسم طول يتجاوز حرف 30الصغيرة -2 أو كبيرة حروفا يكون ان يمكنبرقم -3 يبدأ أن يمكن وال بحرف يبدأ االسممثل -4 خاصة رموز على االسم يحتوي أن الخ .... #,$,%يمكن
الحقول Fields Typesأنواع
الحرفي -1 CHARالمتغير
هذا , , . عرض أو وطول الخاصة والرموز األرقام األبجدية الحروف من الحقل هذا يتكونالى يصل يتم 240الحقل لم واذا اجباري وهو الحقل عرض أو طول تحديد من بد وال حرف
انه البرنامج سيفتض 1التحديد
العام الشكلvar CHAR (size)
مثال FirstName CHAR (20)
55
الحرفي -2 VARCHAR2المتغير
هذا , , . عرض أو وطول الخاصة والرموز األرقام األبجدية الحروف من الحقل هذا يتكونالى يصل للحقل 240الحقل افتراضي طول يوجد ال حرف
مثال FirstName VARCHAR2 (20)
صحيح- 3 رقمي Integer Numberمتغير
األرقام ( من أو) + _ 9-0,1,2ويتكون العشرية العالمة على يحتوي أن ويمكن أو واالشارةالعشرية ( إلى) .الفاصلة يصل الرقم خانات لعدد األقصى طول 40والحد وتحديد خانة
العشرية الفاصلة أو االشارة وكذلك اختياري الحقل أوعرض
مثالSerial_No NUMBER (10)
العشرية- 4 العالمة ذو الرفمي المتغير
األرقام ( من ) 9-0,1,2ويتكون
مثالMark NUMBER (10,3)
طويل -5 LONGمتغيرالى مساحتها تصل بيانات على تحتوي التي للحقول جيجا 2يستخدم
مثال Detail LONG
التاريخ )-6 على الدال (Dateالمتغير
الحقل هذا وطول والسنة والشهر اليوم على للداللة األرقام مجموعة من الحقل هذا 8يتكونالشهر اسم بذكر التاريخ كتابة شكل يتغير أن ويمكن األقل على خانات
مثال HireDate DATE
56
جدول إنشاء
أمر باستخدام جدول CREATEإنشاء
العام الشكل
CREATE TABLE table-name (field type [(size [, field2 type [(size]);
ان حيث
table-name المطلوب الجدول أو الملف اسمfield1,field2 األقل على حقل اسم وجود مع تصميمها المطلوب الحقول أو الحثل اسم
type البيانات حقل نوعSize الحقل عرض او طول
مثال CREATE TABLE SCHOOL (S_no NUMBER (5) NOT NULL,S_NAME CHAR (20).S_LOC CHAR(15),S_DATE DATE);
CONSTRAINTالتقييد مفتاح حقل جعل مثال الحقول على القواعد بعض فرض التقييد طريق عن يتم
أنواعه ومن فارغ حقل ترك منع أساسيNOT NULLUNIQUEPRIMARY KEYFORIGN KEY
العام الشكل
column [CONSTRAINT constraint_name] constraint_type,أن حيث
constraint_name التقييد اسمconstraint_type التقييد نوع
1
57
فارغ- NOT NULLغير
فارغ حقل بترك يسمح ال األمر هذا
مثالCREATE TABLE friend... phone VARCHAR2(15) NOT NULL,... last_name VARCHAR2(25) CONSTRAINT friend_last_name_nn NOT NULL,...
UNIQUEفريد- 2
األمر ) هذا فريد ( العمود الحقل يوجد بجعل ال صف فكل الصفوف من صف بتكرار يسمح فالواحدة مرة اال
مالحظةالفريد- 1 الحقل يحتوي أن واحد UNIQUEيمكن حقل يكون أن بشرط فارغة قيمة على
فريد UNIQUEفقطفريد- 2 حقل أكثر الجدول في يوجد أن وبمكن
مثال
... phone VARCHAR2(10) CONSTRAINT s_emp_phone_uk UNIQUE,...
أساسي- 3 Primary Keyمفتاح
مفتاح الى حقل بتحويل قمنا وإذا واحد أساسي مفتاح على اال يحتوي أن جدول ألي يمكن الفارغة قيم على يحتوي أن يمكن ال ولكن فريد حقل يعتبر الحقل فهذا أساسي
مثال
... id NUMBER(7) CONSTRAINT s_emp_id_pk PRIMARY KEY,...
خارجي- 4 Foreign Keyمفتاح
( مرتبط ( العمود هذا يكون حيث خارجي مفتاح ليكون أكثر أو واحد عمود حفل تعيين يمكنيكون أن الضروري ومن اخر جدول أو الجدول نفس من فريد او اساسي مفتاح به اخر بعمود
فارغ يكون او اخر عمود من اخرى بقيمة مرتبطالتالي المثال انظر
... dept_id NUMBER(7) CONSTRAINT s_emp_dept_id_fk
FOREIGN KEY (department_id) REFERENCES s_dept(id)
ON DELETE CASCADE;
58
1 -Foreign Keyاالبن الجدول في خارجي مفتاح يكون أن المراد الحقل اسم بجوارها تكتب
2 -REFERENCESاالخر الجدول من به الربط سيتم الذي الحقل بجوارها نكتب
3 -ON DELETE CASCADEاالبن الجدول في له المقابل الصف سيمسح االب الجدول في الصفوف احد مسح تم اذا
آخر جدول بواسطة جدول انشاء
األمر نكتب ثم مسبقا منشأ اآلخر الجدول يكون أن يجب آخر جدول بواسطة جدول إلنشاءكالتالي
العام الشكل
CREATE TABLE tablename [column(, column...)]AS Select statement;
مثال
CREATE TABLE EMPLOYEEASSELECT NAME, SAL, JOB FROM S_EMP
الجدول بيانات نقلنا ثم جديد جدول بعمل الجملة هذه في اليه S_EMPقمنا
فرعي استعالم بواسطة جدول انشاءاالستعالم على قائم الفرعي االستعالم يكون أن يجب فرعي استعالم بواسطة جدول إلنشاء
كالتالي األمر نكتب ثم مسبقا منشأ جدول من
العام الشكل
CREATE TABLE tablename [column(, column...)]AS subquery;
مثال
CREATE TABLE emp_41AS SELECT id, last_name, userid, start_date
59
FROM s_empWHERE dept_id = 41;
جدول مواصفات عرض DESCIRBEجملة
مختصرة أو كاملة كلمة كتابتها ويمكن الجدول مواصفات لغؤض الجملة هذه DESCتستخدم
العام الشكلDESCRIBE tablename;
مثال DESCRIBE S_EMP;
الفصل ملخص
المفتا وإدراج إنشائها وكيفية التقييد وأنواع الجداول على بالتعرف قمنا الفصل هذا فياستعالم من وكذلك اخر جدول من جدول انشاء وكيفية الجدول في والخارجي األساسي
الجدول معلومات عرض كيفية ومعرفة فرعي
60
وحذفه الجدول بنية تعديل
الفصل أهداف
: على الله شاء ان قادر ستكون الفصل هذا نهاية في
الجدول -1 على التغديل عمليات جميع على التعرفالجدول -2 إلى جديدة حقول إضافةالجدول -3 حقول مواصفات تعديلالجدول -4 من األساسي المفتاح حذفالجدول -5 حذف
الجداول تعديل
الـ لك التالية SQLتتيح الحالة في إنشائها بعد الجدول تعديل غمليةجديد -1 حفل اضافةحقل -2 مواصغات تعديلالجدول -3 من األساسي المفتاح حذف
الجدول من حفل حذف إمكانية عدم الى االنتباه ويجب
الحقول تعديل ALTER Commandجملة
هذا ويشمل الجدول في الحقول لتعديل أو قول إلضافة الجملة هذه تستخدمغير أو فارغ عبارة الحاق أو بياناته وحجم الحقل ونوعه الحقل اسم التعديل
الحقل الى فارغ
جديد حقل New Fieldاضافةالعام الشكل
ALERT TABLE tablename ADD (field Type (size) [NOT NULL] | [NULL])
أن حيثtablename تعديله المراد الجدول اسم
field الحقل اسمType البيانات نوعsize الحقل حجم أو طول
حقل مواصفات تعديل
جملة طريق عن حقل ALTERيمكن مواصفات تعديلالعام الشكل
61
ALERT TABLE tablename MODIFY Type (size) [NOT NULL] | [NULL])
الجداول حذف
األمر بواسطة البيانات قاعدة من الجدول نحذف أن تكون DROP TABLEيمكن أن بشرطللحذف صالحية لك أو الجدول مالك
العام : الشكلDROP TABLE tablename;
حيث tablename; حذفه المراد الجدول اسم
األساسي المفتاح حذف
التالي األمر نكتبALTER TABLE tablenameDROP PRIMARY KEY CASCADE;
األساسي CASCADEعبارة المفتاح على تعتمد عالقة أي اللغاء هنا
الفصل ملخص
امكانية عدم مع الجدول قول وتعديل إضافة من الجداول تعدبل عملية تناولنا الفصل هذا فيوحذف الجدول من األساسي المفتاح حذف كيفية وكذلك الجدول في موجود حقل حذف
االمر بواسطة البيانات قاعدة من DROPالجدول
62
الجداول إلى البيانات إدخال
الفصل أهداف
على قادر ستكون الفصل هذا نهاية في الله شاء إن
الجدول -1 إلى البيانات إلدخال المختلفة بالطرق اإللمامالبيانات -2 جدول إلى واحد سجل إدخالالسجل -3 الى سجالت عدة إضافة
بيانات إضافة
مقدمة
مواصفان وتعديل البيانات أنواع على والتعرف الجداول بإنشاء السابقة القصول في قمنا لقدالبيانات نوع حيث من الحقول خصائص وخددنا البيانات جدول أنشأنا قد نكون وبهذا الحقولالله بمشيئة سنتعلم الفصل هذا وفي البيانات سيحوي الذي الوعاء أعددنا أننا أي والحجم
أن كما ، وأنواعها اإلضافة بعمليات المتعلقة واألمور الجداول هذه إلى البيانات إضافة كيفيةالبيانات ( تناول للغة أساسيا وجزأ مدخال يشكل الفصل بيانات) DMLهذا قواعد نظام في
البيانات ( قواعد إدارة نظم في القوية النظم إحدى تعتبر التي أثر) DBMSأوراكل من لها لماالبيانات ( تناول لغة تشمل حيث الجدول داخل البيانات معالجة في األجزاء DML (فعال على
التالية :
الجداول -1 إلى البيانات INSERTإدخالالجداول -2 في البيانات UPDATEتعديلالجداول -3 من البيانات DELETEحذف
البيانات ادخال سنتاناول الفصل هذا في
الجداول إلى البيانات INSERTإدخال
جملة / خالل من البيانات جدول إلى سجالت سجل إدخال بها يتم التي العملية INSERTهيطرق بعدة اغلملية هذه وتتنم
البيانات : جدول إلى واحد سجل إضافة أوال
: العامة الصيغة
INSERT INTO table [(column1 [, column2...])]VALUES (value1 [, value2...]);
أن حيثTable به السجل إلحاق المراد الجدول اسم
Column1,Column2 ( ) إليها البيانات إدخال المطلوب الحقول األعمدة اسماء
63
Value1, value2 حقول في إضافتها المطلوب القيمإدراجها يتم قيمة وكل الجديد السجل
وبالتالي القائمة في المناسب الحقل فيالقيمة إضلفة الحقل 1سيتم وهكذا 1في
الشرح
الجدول في فقط واحد سجل بيانات إضافة يتم سوف الطريقة بهذه اإلدخال جملة تنفيذ بعدفقط المذكورة وللحقول اإلدخال جملة في دراجها إ تم قيم على يتوي المذكور
الطريقة هذه في بها التقيد يجب التي القواعد
جملة -1 في المذكور الحقول عدد نفس هو إدخالها سيتم التي القيم عدد يكون أن يجبINSERT
وأن -2 الحقول بيانات نوع نفس من إدخالها سيتم التي القيم بيانات نوع يكون أن يجبجملة في الحقول ترتيب حسب مرتبة القيم هذه INSERTتكون
مثال
INSERT INTO s_deptVALUES (11, 'Finance', 2);
تنصيص -3 عالمتي بين المخلة القيم وضع يجب والنصوص التاريخ حقول إدخال عندمفردتين
ال -4 أنها على تعريفعا تم التي اإلجبارية الحقول في قيم إدخال وجوب مراعاة يجبفراغ ادخال NOT NULLتحتوي فراغ NULLويتم بها التي الحقول في
مثالINSERT INTO s_deptVALUES (13, 'Administration', NULL);
جملة -5 في الحقول أسماء ذكر عدم جميع INSERTيجوز بيانات إدخال حالة فيللحفول االفتراضي الترتيب حسب مرتبة المخلة القيم تكون أن على السجل لهذا الحقول
بنائه عند الجدول في
مالحظة األمر نستخدم الجدول في للحقول االفتراضي الترتيب DESCلمعرفة
مثال
البيانات : جدول إلى سجالت عدة اضافة ثانيا
طريق عن البيانات جدول إلى واحد سجل من أكثر ادخال يمكن الطريقة هذه خالل منالقيم من بدال االدخال جملة في توضع متغيرات عن عبارة وهي االدخال متغيرات استخدام
السجالت متعددة االدخال جملة الطريقة هذه على نطلق أن ةيمكن نفسها
INSERT INTO table [(column1 [, column2...])]
64
VALUES (&variable1 [,&variable1 ...]);ان حيثTable به السجل إلحاق المراد الجدول اسم
Column1,Column2 ( ) إليها البيانات إدخال المطلوب الحقول األعمدة اسماءVariable1, Variable 2 التي اإلدخال متغيرات
بقيم استبدالها يتم سوفجملة تنقيذ بعد حقيقية
االدخال
الشرح
جملة في المذكورة للمتغيرات القيم إدخال منك يطلب سوف الطريقة يهذه جملة تنفيذ بعدمفتاح تضغط القيمة ادخال من االنتهاء وبعد حتى ENTERاإلدخال وهكذا المفاتيح لوحة من
حرف ( على الضغط يمكنك آخر سجل وإلدحال األول السجل حقول إدخال من ثم) Rتنتهياخرى ENTERمفتاح لسجالت اإلدخال تكرار يعني وهو المفاتيح لوحة من
مثال
INSERT INTO s_dept (id, name,region_id)
VALUES (&department_id, ‘&department_name’,®ion_id);
Enter value for department_id: 61Enter value for department_name: AccountingEnter value for region_id: 2
الطريقة هذه في بها التقيد يجب التي القواعد
مايلي : إليها ويضاف األولى الطريقة في المذكورة القواعد جميع الطريقة هذه على تنطبقبمتغيرات -1 اإلدخال جملة في القيم تستبدلالمتغيرات -2 تسمية شروط مراعاة مع المستخدم إلى المتغيرات أسماء اختيار يعودعالمة -3 توضع أن االدخال &يجب متغير قبلالخاص -4 االدخال متغير حول مفردتين تنصيص عالمتى وضع يمكن اإلدخال جملة في
النصبة بالحقول
65
آخر جدول من نسخها طريق عن سجالت إضافة
نسخ طريق عن البيانات جدول إلى واحد يجل أكثرمن إدخال يمكن الطريقة هذه خالل مناالستفسار / جملة بوتسطة آخر جدول من السجالت السجل نستخدم SELECTهذا يث
التالي INSERTجملة المثال الى انظر فرعي استعالم مع
INSERT INTO history(id, last_name, salary, title, start_date)SELECT id, last_name, salary,title, start_dateFROM s_empWHERE start_date < '01-JAN-94';
الشرح
الجدوال من الشرط تحقق التي السجالت نسخ ينم الطريقة بهذه اإلدخال جملة تنفيذ بعداإلدخال جملة في االمذكورة وللحقول الهدف الجدول إلى لمصدر
66
الطريقة هذه في بها التقيد يجب التي القواعداإلدخال -1 جملة استفسار INSERTكتابة جملة على SELECTمحتويةالمصدر -2 الجدول حقول بأسماء اإلدخال جملة في القيم تستبدلالعبارة -3 استخدم VALUESعدمتحتوي -4 ال أنها على نعريفها تم التي االجبارية القول في قيم إدخال وجوب مراعاة يجب
NOT NULLفراغ الحقول -5 وعدد البيانات ونوع الحقول ترتيب حيث من الجدولين بين الحقول مطابقة
الفصل ملخص
جملة بواسطة الجداول إلى البيانات اضافة موضوع الفصل هذا خالل من INSERTتناولنااإلضافة عملية إلجراء طرق ثالثة وهنالك
البيانات: ل جدو إلى واحد سجل إضافة أوال
التي القيم على يحتوي جدول إلى فقط واحد سجل بيانات إضافة يتم سوف الضريفة بهذهاإلدخال جملة في ستذكر
البيانات : جدول إلى سجالت عدة إضتفة ثانيا
استخدام طريق عن البيانات جدول إلى واحد سجل من أكثر إدخال يمكن الطريقة بهذهنفسها القيم من بدال اإلدخال جملة في توضع متغيرات عن عبارة وهي االدخال متغيرات
السجالت متعددة االدخال جملة الطريقة هذه على نطلق أن ويمكن
آخر: جدول من نسخها طريق عن جدول في سجالت إضافة ثالثا
هذا نسخ طريق عن البيانات جدول إلى واحد سجل من أكثر إدخال يمكن الطريقة بهذهجملة / بواسطة آخر جدول من السجالت جملة SELECTالسجل بداخل INSERTالموجودة
67
الجداول بيانات وحذف تعديل
الفصل أهداف
على قادر الله شاء ان ستكون الفصل هذا نهاية بعد
الجدول -1 في البيانات لتعديل المختلفة بالطرق اإللمامالبيانات -2 جدول في أكثر أو واحد سجل بيانات تعديل إتقانالبيانات -3 جدول في السجالت جميع بيانات تعديل إتقانالبيانات -4 جدول من أكثر أو سجل حذف إتقانالبيانات -5 جدول من السجالت جميع حذف إتقان
الجدول بيانات تعديل
جزأ يشكل الفصل هذا أن كما السجالت وحذف البيانات تعديل كيفية سنتعلم الفصل هذا فيالبيانات تناول للغة مكمال في DMLأساسيا القوية النظم احدى يعتبر التي أوراكل نظام فس
البيانات قواعد إدارة الجدول DBMDنظم داخل البيانات معالجة في فعال أثر من لها لماالبيانات تناول لغة تشتمل التالية DMLحيث االجزاء على
الجداول -1 إلى البيانات INSERTإدخالالجداول -2 في البيانات UPDATEتعديلالجداول -3 من البيانات DELETEحذف
هذا في وخذفها البيانات تعديل وسندرس السابق الفصل في البيانات ادخال تناولنا ولقدالفصل
الجدول في البيانات تعديل
البيانات / جدول في اكثر أو واد سجل في حقول قل بيانات تعديل بها يتم التي العملية هيجملة خالل :UPDATEمن بطريقتين العملية هذه وتتم
أوال: تعديل بيانات حقل / حقول لسجل واحد أو اكثر
العامة الصيغة
UPDATE tableSET column1 = value [, column2 = value][WHERE condition];
أن حيثTable فيه البيانات تعديل المراد الجدول اسم
Column1,column2 ( ) بياناتها تعديل المراد االعمده الحقول اسماءValue1, value2 إعطاؤها سيتم التي الجديدة القيم
( حقل ( االعمدة 2وحقل 1للحقول
68
قيمة فإن الحقل 1وبالتالي الى ستؤولوهكذا 1
Condition سيتم التي السجالت تحدد شرط جملةتحقق التي السجالت هي بياناتها تعديل
الشرط
الشرحالمذكورة / الحقول الحقل بيانات تعديل يتم سوف الطريقة بهذه التعديل جملة تنفيذ بعد
علما التعديل جملة في المذكورة الجديدة القيم لتتوي قيها الموجودة القيم إلغاء يتم بحيثالجملة في الشرط تحقق التي السجالت فقط هي بياناتها تعديل سيتم التي السجالت بأن
الشرطية
الطريقة هذه في بها التقيد يجب التي القواعدالجدول -1 في الحقول قيم على يعتمد حسابي تعبير عن عبارة الجديدة القيمة تكون قدفرعي -2 استعالم جملة عن ناتجة الجديدة القيمة تكون SELECTقدسيتم -3 التي الحقول بيانات نوع نفس من الجديدة القيم بيانات نوع يكون أن يجب
تعديلهاتنصيص -4 عالمتي بين الجديدة القيم وضع يجب والنصوص التاريخ حقول تعديل عند
مفردتين أنها -5 على تعريفها تم والتي تعديلها سيتم التي للحقول قيم إعطاء وجوب مراعاة يجب
فراغ تحتوي ال أي إجبارية NOT NULLحقول
مثال
UPDATE s_empSET dept_id = 10WHERE id = 2;
ثانيا : تعديل بيانات حقل / حقول لجميع السجالت في الجدول
العامة الصيغة
UPDATE tableSET column1 = value [, column2 = value]
الشرح المذكورة / الحقول الحقل بيانات تعديل بتم سوف الطريقة بهذه التعديل جملة تنفيذ بعد
علما التعديل جملة في المذكورة الجديدة القيم لتتوي فيها الموجودة القيم إلغاء يتم بحيثالجدول في السجالت حميع هي بياناتها تعديل سيتم التي السجالت بأن
مثالUPDATE s_empSET commission_pct = 10
69
70
الجداول من البيانات حذفجملة / خالل من البيانات جدول من سجالت سجل بيانات حذف بها يتم التي العملية هي
DELETE بطريقتين العملية هذه وتتم
أول:ا حذف سجل أو أكثر من الجدول
العامة الصيغةDELETE [FROM] table[WHERE condition];
الشرح في / الشرط تحقق التي السجالت السجل حذف يتم سوف الطريقة الحذف جملة تنفيذ بعد
الشرطية الجملة.
الطريقة : هذه في بها التقيد يجب التي القواعد
وكذلك -1 الحذف جملة تنفيذ قبل حذفها سيتم التي السجالت بيانات من التأكد يجبالشرط على تعتمد ستحذف التي السجالت ألن الشرطية الجملة في الشرط من التأكد
المذكور
ثانيا: حذف جميع سجالت الجدول العامة الصيغة
DELETE [FROM] table;الشرح
الجدول في السجالت جميع حذف يتم سوف الطريقة بهذه الحذف جملة تنفيذ بعد
الفصل ملخص
جملة بواسطة الجدول في البيانات تعديل موضوع الفصل هذا في وهنالك UPDATEتناولناوهما التعديل عملية الجراء طريقتان
/ اكثر أو واحد لسج حقول حقل بيانات تعديل أوال
التعديل جملة في المذكورة الجديدة القيم على لتحتوي بها الموجودة القيم الغاء يتم حيث. الشرط تحقق التي السجالن هي بها التعديل سيتتم التي السجالت بأن علما
الجدول: / في السجالت لجميع حقول حفل بيانات نعديل ثانيا
التعديل جملة في المذكورة الجديدة القيم على لتحتوي بها الموجودة القيم الغاء يتم حيثشرط وجود لعدم الحقول جميع بيانات تعديل سيتم انه علما
عن السجالت حذف موضوع تناولنا الحذف DELETE ثم عمليةا إلجراء طريقتان وهنالك
الجدول: من أكثر أو سجل حذف أوال
الشرط / جملة في الشرط تحقق التي السجالت السجل حذف يتم سوف الطريقة بهذه
71
الجدول : سجالت جميع حذف ثانياالجدول في السجالت جميع حذف يتم سوف الطريقة بهذه
72
والعروض والفهارس المتسلسالت
الفصل أهداف
على قادر الله شاء ان ستكون الفصل هذا نهاية في
المتسلسالت -1 مع التعاملمتسلسلة -2 تكوينمتسلسلة -3 في التعديلمتسلسله -4 حذفالعادية -5 والفهرسه التلقائية الفهرسه بين الفرق معرفةللبيانات -6 فهرسه عملالفهرسه -7 الغاءالعروض -8 مع Viewالتعاملعرض -9 تكوين
العرض -10 تعديلعرض -11 الغاء
73
المتسلسالت
مثل. تلقائيا تتولد المتتالية االرقام من مجموعه عن عبارة حيث ,,,3و2و1المتسلسلةأساسي كمفتاح الذاكره Primary Keyتستخدم معاها وتتعامل فريده قيم عن عبارة النها
وبكفائه بسهولة
العامة الصيغة
CREATE SEQUENCE name[INCREMENT BY n1][START WITH n2][{MAXVALUE n3 | NOMAXVALUE}][{MINVALUE n4 | NOMINVALUE}][{CYCLE | NOCYCLE}][{CACHE n5 | NOCACHE}]
أن حيث
Name المتسلسلة اسمN1 مرة كل الزيادة مقدارN2 المتسلسلة منه تبدأ رقم اولN3 للمتسلسلة قيمه اقصىN4 للمتسلسلة قيمة ادنىN5 الذاكره في الخانات عدد
الشرح
المتسلسلة اسم بتعريف قمنا االول السطر الزيادة مقدار تحديد يتم الثاني السطر المتسلسله هذه منه ستبدأ الذي الرقم الثالث السطر وجود عدم االفتراضي والوضع المتسلسلة اليها تصل قيمه اقصى نحدد الرابع السطر
قصوى ( NOMAXVALUE قيمة الى تصل ان للمتسلسلة يمكن )1027حيث
وللتنازليه (- التصاعديه ) 1للمتسلسلة قيمة وجود عدم االفتراضي والوضع للمتسلسله قيمه ادنى تحديد يتم الخامس السطر
NOMINVALUE) الى تصل للمتسلسلة يمكن التصاعدية) 1حيث المسلسلة حالة فيالى (- التنازليه )1026وحالة
السادس وصلت cycleالسطر اذا المتسلسلة بتكرارا يسمحعدم هو االفتراضي والوضع قيمه وأدنى قيمه أقصى الى
التكرار مع التعامل لسرعه وذلك للمتسلسلة الذاكره في اماكن حجز فيه يتم السادس السطر
في نكتب حيث اكون n5المتسلسلة أن االفتراضي والوضوع الخانات واذا 20عددالذاكره NOCACHEاخترنا في اماكن حجز اليتم فانه
مثال
CREATE SEQUENCE s_dept_id INCREMENT BY 1
74
START WITH 51 MAXVALUE 9999999 NOCACHE NOCYCLE;
من عدد ألكبر الذاكره في اماكن بحجز نقوم للمتسلسلة أداء أفضل على نحصل لكيمع التعامل ونبطئ الذاكؤه سنشغال فإننا كبير عدد ستخدمنا اذا ولكن نعرفه المصفوفات
للمتسلسله كافي يكون لن قليل عدد ستخدمنا واذا الجهاز
المتسلسالت مولد مايسمى نستخدم sequence generatorلذلك
المتسلسالت -7 استخدام
تستخدم متسلسلة الى جديدة قيمه اضافة اردنا اذا
6-Table_name.NEXTVAL
نستخدم الحاليه القيمة اردنا واذا
Table_name.CURRVAL
المثال هذا ولنأخذ
INSERT INTO s_dept(id, name, region_id)VALUES (s_dept_id.NEXTVAL, ‘Finance’, 2);
خانة في المتسلسلة الى جديدة قيمه بإضافة قمنا قمنا idحيث ثمخانة financeباضافة خانة 2و nameالى region_idفي
نستخدم الحالية القيمة اردنا واذا
SELECT s_dept_id.CURRVALFROM SYS.dual;
مالحظةالمتسلسالت في ثغرات توجد لكن
المتسلسلة- 1 في خلل يحدث فإانه اخر الى مكان من سجل نقل تم اذاجدول- 2 من اكثر في نتستخدم أن يمكن المتسلسلة
متسلسلة تعديلأو قيمه وادنى وقيمه اكبر ونحديد للمتسلسله االبتدائية القيمه أو الزياده مقدار تعديل يمكن
االمر طريق عن الذاكره التكراراو خيار ALTERتغيبر
العامه الصيغه
ALTER SEQUENCE sequence75
[INCREMENT BY n][{MAXVALUE n | NOMAXVALUE}][{MINVALUE n | NOMINVALUE}][{CYCLE | NOCYCLE}][{CACHE n | NOCACHE}]
التغيير لهذا قواعد توجد ولكن
المتسلسله -1 هذه لتعديل السماحية لك تكون أن يجبالجديده -2 القيم على الحادث التغيير تطبيق سيتمثم -3 اوال بمسحها نقوم أـن يجب المتسلسلة جميع على التغيير يتم ان اردت اذا
انشائها اعادة
متسلسلة حذف
األمر طريق عن متسلسلة حذف DROPيتم
مثال
DROP SEQUENCE s_dept_id;
الفهرسة
مثل الجداول من بسرعه البيانات على الحصول لتسهيل مصممه وسبلة عن عبارة الفهرسةاوال الفهرس الى ننظر بسرعة معلومة الى الوصول نريد فعندما كتاب بأي الموجود الفهرس
الى نستطيع فاننا البيانات من مجموعة بفهرسة نقوم فعندما األوراكل في الحال هو وكذلككذلك الفهرسه مميزات وم بسرعه الجداول بين اليحث كذلك ويتم بسرعه البيانات هذه احد
واالدخال االخراج وسائل خالل المنتقله البيانات عدد تقلل انهامن بدال السلع ارقام او المناطق ارقام مثل تلقائي ترقيم الحقول ترقيم احيانا الضروري من
العادي الترقيم
؟ الفهرسة تتم كيف
التلقائية الفهرسه
يفهرس تلقائيا فانه فريد حقل جعلناه اذا أو أساسي مفتاح انه على حقل بتعريف نقوم عندما
العادية الفهرسة
اليها الوصول لتسهيل فريدة غير بيانات بفهرسة نقوم أن يمكن
الفهرسة أنواع
( منها ( األعمدة من مجموعة او واحد عمود حقل فهرسة يمكن يث للفهرسه أنواع عدة توجد76
الفريدة unique indexالفهرسةواحدة مرة اال تتكرر ال قيمة كل ان حيث بتقييد ولكن مفهرسة قيم عن عبارة هي
فريدة الغير nonunique indexالفهرسةتقييد أي بدون ولكن مفهرسة قيم عن عبارة هي
المركبة composite indexالفهرسةمختلفة قيم له عمود كل أن حيث اعمدة عدة فهرسة يتم حيث
جملة تعود عندما المركبه الفهرسة طريق SELECTوتستخدم عن ترتيبها فيتم قيم بعدةالمركبة الفهرسة استخدام
الفهرسة مع بالتعامل االوراكل يقوم كيف
مايسمى بتكوين يقوم االوراكل فإن حقل بفهرسة نقوم فيها index segmentعندما بتمالمعلومات هذه أن حيث البيانات الى الوصول تسرع والتي بالفهرسة خاصة معلومات تخزين
االخرج وسائل طريق عن اليها للوصول الطرق أقصر وتوضح السجالت أماكن توضحواالدخال
يسمى الفهرسة عليه تعتمد الذي شجري B*-tree indexوالمصطلح محطط عن عبارة هيالقيم كتلة مع مقارنتها يتم تاليه قيمة الى ننتقل كلما حيث تنازليا مرتبة القيم من لمجموعة
الكتل هذه وتسمى تعلوها اخرى branch blocksالتي كتل مع مقارنته يتم المقارنه هذه وناتجويسمى الكتل هذه في درجة أدنى البيانات leaf blocksإلى كل على الكتلة هذه تحتوي حبث
يسمى ما ويوجد البيانات ROWIDالمفهرسه لهذه
يوجد فإنه فردية البيانات كانت ان ROWIDاذا يمكن فانه فردية تكن لمت اذا ولكن قيمة لكلمن أكثر حسب ROWIDيتواجد البيانات ترتيبها يتم الحالة هذه ثم وفي الفهرسه مفتاح
ROWIDحسب
77
العامة الصيغة
CREATE INDEX indexON table (column[, column]...);
أن حيث
Index الفهرس اسمTable الجدول اسم
Column فهرستة المراد الحقل اسنمثال
CREATE INDEX s_emp_last_name_idxON s_emp(last_name);
مايلي مراعاة يجب الفهرسة عند
نستخدم -1 يث الصفوف من كبير بعدد عنها استعلم التي الجداول نفهرس اليتجاوز ال االستعالم يكون عندما الجدول % 5الفهرسه من
باستمرار -2 قيها التعديل ينم التي الحقول نفهرس البكثرة -3 متكررة قيم على تحتوي التي الجداول نفهرس الالتي -4 الحقول مع نفهرس الفهرسه نستخدم فال عالبا سهل عنها االستعالم يكون
معقدة شروطها استعالماتفريدة -5 قيم على تحتوي ال التي الحقول غالبا نفهرس الواخر -6 جدول بين رابطه حقول تعتبر التي الحقول نفهرس
الفهرسة حذفاألمر نستخدم الفهرسة DROP INDEXلحذف
مثال
DROP INDEX s_emp_last_name_idx;
العروض
على يحتوي وهمي جدول يعتبر حيث اكثر أو واحد جدول من استعالم عن عبارة العرضجملة من يأخذها التي موجود SELECTالبيانات غير الجدول هذا ان حقيقة ولكن
منها : مهام عدة في العالض استخدم ويمكن االمان مستوي في التحكم على يحافظ المستخدم عن البيناتا تعقيد اخفاء األعمدة تسمية اعادة
العامة الصيغة
CREATE VIEW view-name
78
(column1,...,columnN)ASselect-statement
أن حيث
view-name العرض اسمColumn1 عرضها ستم التي الحقول اسم
مثال
CREATE VIEW empvu45AS SELECT id, last_name, titleFROM s_empWHERE dept_id = 45;
االمر طريق عن العرض بهذا الخاصة المعلومات مشاهدة فنكتب DESCRIBEويمكنك
DESC empvu45;
األمان مستوى في التحكمكمدراء معيني لمسنخدمين مسموحة العروض او الجداول بعض نجعل أن الى احيانا نحتاج
بـ ونفيده جديد حقل باضافة نقوم فلذلك مدير CHECKالشبكة المستخدم كان اذا حبثYيعطي
يعطي يكن لم خطوات Nواذا بعدة نقوم ذلك ولعمل
اوال
79
alter table S_EMPadd (Manager char(1) check (Manager in ('Y','N')));
ثانيا
update S_EMPset Manager = 'N'whereID != 1001;
ثالثا
update S_EMPset Manager = 'Y'whereID = 1001;
الموظف رقم اذاكان حالة في وهو شرط بتحديد قمنا خطوتين اخر المدير 1001في هو فانهحقل في يعطي Yيعطي Managerلذلك ذلك Nوغير
رابعا
المستخدم اسم حيث مستخدم السم حقل بإضافة سنقوم تليها والتي الخطوة هذه فياالخير اسمه الى باالضافة للموظف األول االسم من حرف اول عن عبارة سيكون
alter table S_EMPadd(username varchar2(31));
خامسا
update S_EMPset username = substr(first_name,1,1) || last_name;
سادسا اسمه عرض بعمل سنقوم بالجدول Re_SALARYاالن S_EMPمربوط
create view Re_SALARY asselect e.id, e.last_name, e.first_name,decode(s.manager,'Y',e.salary,null) salaryfrom S_EMP e, S_EMP swhereuser = s.username(+);
80
user على تعتمد المتغيسر هذا قيمة لذلك الحالي البيانات لقاعدة المستخدم باسم تعةدخارجي ربط عملية بعمل قمنا حيث للقاعدة الحالي كان outer-joinالمستخدم اذا أنه شرطها
جدول في المستخدمين اسماء حقل في موجود اسمه البيانات لقاعدة الحالي المستخدمحقل في بقيمة يعود فانه الموظف Nاو Yاما Managerالموظفين رقم حسب قلنا كما
قيمة Decodeوالدالة مشاهدة كانت Managerتقوم عرض Yاذا وبتم مدير المستخدم فإنكانت واذا المرتب المرتب Nحقل حقل عرض يتم ال
أن االستعالم Ahmedفلنفرض بكتابة قام فاذا المدير هو
select *from Re_Salary;
ستكون المخرجات فان
ID LAST_NAME FIRST_NAME SALARY----------- ------------------------------ ------1001 AHMED AHMED 15001002 HERNANDEZ RANDY 30001003 EASON PAUL 15001004 BARRETT SARAH 15001005 HIGGINS BEN 30001006 YEN CINDY 15001007 GILROY MAX 15001008 CARSON BETH 30001009 SWANSON HARRY 2500
قام اذا المخرجات : MAXولكن فإن باالستعالم
ID LAST_NAME FIRST_NAME SALARY----------- ------------------------------ ------1001 AHMED AHMED 1002 HERNANDEZ RANDY 1003 EASON PAUL 1004 BARRETT SARAH 1005 HIGGINS BEN 1006 YEN CINDY 1007 GILROY MAX 1008 CARSON BETH 1009 SWANSON HARRY
81
العرض تعديل
االمر طريق عن العرض في التعديل يتم
7-CREATE OR REPLACE
مثال
CREATE OR REPLACE VIEW empvu45 (id_number, employee, job)
AS SELECT id, last_name, titleFROM s_empWHERE dept_id = 45;
عرض من اخر العرض
اخر عرض من عرض بعمل نقوم أن يمكن
مثال
create view EMBVY45asselect ID, Last_Name, First_Name, Middle_Initial,HireDate,from S_EMP;
عرض حذف
االمر نستخدم عرض DROPاللغاء
DROP VIEW empvu45;
الفصل ملخص
الى تطرقنا ثم حذفها وطريقة ونعدبلها المتسلسالت تكوين كيفية الفصل هذا في تناولناالى تطرقنا الفصل اخر وفي الغائها وكذلك وتعديلها عملها وكيفية وانواعها وفوائدها الفهرسة
والغائها تعديلها وكيفية وافكارها وفوائدها مفهومها العروض
82
pl/sqlنبذه
. الفصل أهدافعلى -1 PL/SQLالتعرفقاعدة -2 .IFاستخدامالتكرار -3 استخدام4-
83
على PL/SQLالتعرف
لغة كتابتها طريقة في في تشيه برمجية كتل عن عبارة لدعمها Cهي وتحتوي SQLباإلضافةمثل واومر بها خاصة اجراءات على اللغة مجهولة IFهذه برمجية وكتل دوال وكذلك وغيرهابقيمة تعود ال و اومر على تحتوي ال التي وهي
في البرنامج بنية تمثيل التالي PL/SQLويمكن الشكل في
تحتوي تتم pl/sql برامج البرمجة اوامر من كتل في عن علىكتابتها لالعالن منفصلة مقاطع. ( ) االخطاء االستثناءت ومعالجة البرامج واوامر المتغيرات
البيانات ومن قاعدة في االجراء تخزبن كتابتها كبرنامجالممكن او محدد اسم له فرعيفي .ككتله sql * plusمباشرة مجهولة
:وكتلة كمايلي البرنامج
في سنبدا مباشرة االجراء كتابة :وهي sql * plusاوال كمايلي
DECLAREتوجد والموشرات تعريفاتهنا المتغيرات
BEGINالبرنامج جسم
EXCEPTIONاالخطاء رموز معالجة
END:
:مع مايلي مالحظة
وجودهما هما exception وقسم declareقسم ان اليشترط اي اختيارينمتغيرات اي تعريف لديك اليوجد كان االخطاء واذا declare التستخدماذا مع تتعامل الن كنت
exception التستخدم في المتغيرات لتعريف العامة declareوالصيغة
84
identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr];
سطر كل في واحد متغير تعريف يتم غالبامثال
v_gender CHAR(1);v_count BINARY_INTEGER := 0;v_total_sal NUMBER(9,2) := 0;v_order_date DATE := SYSDATE + 7;c_tax_rate CONSTANT NUMBER(3,2) := 8.25;v_valid BOOLEAN NOT NULL := TRUE;
تدعمها التي المتغيرات انواع توجد PL/SQLومن التي المتغيرات الى SQLباإلضافة
BINARY_INTEGERالمتغير -1
بين الصحيحة األرقام 2.147.483.647و 2.147.483.647–وتشمل
PLS_INTEGERالمتعير -2
بين الصحيحة األرقام مساحة 2.147.483.647و 2.147.483.647–وتشمل يشغل ال النوع وهذامن وأسرع ة الذاكر من Numberو BINARY_INTEGERكبيرة
3 -NATURAL
من االرقام 2.147.483.647الى 0وتشمل
4 -POSITIVEمن فقط الموجبة االرقام 2.147.483.647الى 1وتشمل
3-BOOLEAN
القيمة يحمل متغير NULLأو FALSE أو TRUEوهو
4-%TYPE
معين حقل يحملها التي البيانات توع نفس ليحمل المتغير هذا صمم
4-%ROWTYPE
معين صف يحملها التي البيانات توع نفس يحمل مركب متغير ليكون المتغير هذا صمم
النوع من المتغير تعريف TYPE%طريقة
العامة الصيغة
85
variable-name table-name.column-name%TYPE;
مثال
v_last_names_emp.last_name%TYPE;المتغير بتعريف نقوم السطر هذا الحقل v_last_nameفي نوع نفس من أنه
last_name جدول القيم S_EMPفي نفس على ويحتوي
النوع من المتغير تعريف ROWTYPE %طريقة
العامة الصيغة
variable-name table-name%ROWTYPE;
مثال
emp_record s_emp%ROWTYPE;المركب المتغير بتعريف الجدول emp_record قمنا صفوف من صف قيمة يحمل الذي
s_emp
االسناد طرق
قيمة مثل ان تقول ان اردت :فيتم i=5اذا كمايلي ذلك
i:=5;
قبل =يجب النقطتين وضع
ذلك سوف على مثال ناخذ
اوامر يوجد DBMS_OUTPUT.PUT_LINE االمر sqlضمنفي يستخدم النتيجة تعرض للحزمة sql * plusلكي تابع أمر DBMS_OUTPUTوهو
يعرض ان اردنا واذا واالرقام التواريخ كذلك يعرض أن ويمكن الجمل بعرض يقوم االمر فهذااالمر نستخدم اخرى بيانات TO_CHARانواع
له :والصيغة العامة
DBMS_OUTPUT.PUT_LINE(massege)
حيث
massageعرضة هي تريد الذي الشي او النص
لفهم تم ونستخدمه به نبدأ لكي االمر هذا سوف لكن pl/sqlال اوامرشرح المستقبل فياالمر هذا ان كثيرا اليهمكتعرف
86
مثال. :
:يتم sql * plusالشاشة على "hi all"طباعة نريد كمايلي ذلك
SET SERVEROUTPUT ON;BEGIN
DBMS_OUTPUT.PUT_LINE('hi all');End;
/ولعلك جرب النتائج والحظ االول تتسالهذا السطر وجود سبب عن
يخبر السطر الخ بأن sql * plusاالول به مايعود كل دم.ايكتبعندما ويكفي واحدة مرة sql * plus تدخلكتابته
المتغيرات مثال باستخدام اخرDeclare
i number(5);BEGINi:=5;
DBMS_OUTPUT.PUT_LINE('i = ' || i);END;
عملة || فائدة ضمن التعبيرين الطباعةالموجدة بين للوصل هي
87
IF THENعبارة الشرط
اي تستخدم مثل العبارة ++ العبارت هذه بيسك فيجوال او سي او سي لغة في الشرطيةعديدة , استخدمات ولها قواعد وسوفوغيرها حقول مع مقدما نستخدمها كيف نعرف
اخذ بعد وذلك المؤشراتالبيانات
لها الصيغة :كمايليالعامة
IF condition THEN statement; ... statement; [ELSIF condition THENstatement; ... statement;]... [ELSIF condition THENstatement; ... statement;] [ELSEstatement; ... statement;]END IF;
أن حيث
conditional الشرط هي
مالحظةELSE وELSIF اختيارية جملةIF عبارات عدة على عبارة ELSIFنحنوي على تحتوي واحدة ELSEولكن كتابة طريقة أن الى ELSEIFوليست ELSIFانتبه
ذلك : على مثال
Declare i number(5);BEGINi:=5;IF i=5 thenDBMS_OUTPUT.PUT_LINE('i = ' || i);ELSE DBMS_OUTPUT.PUT_LINE('i not eqal 5 '); END IF;END;
شرط الشرط من اكثر باستخدام
88
Declare i number(5);BEGINi:=5;IF i>1 thenDBMS_OUTPUT.PUT_LINE(i || ' > 1');ELSIF i<1 thenDBMS_OUTPUT.PUT_LINE(i || ' < 1');ELSIF i=1 thenDBMS_OUTPUT.PUT_LINE(i || ' = 1'); END IF;END;
الـــتكرار
للتكرار يوجد اوامر :وهيعدة
1 - loop-exit-end
أل وهنا شرط وضع من الحلقة نهاءالبدذلك نأخذ على بسيط مثال
Declare i number(5);BEGINi:=1;LOOPIF i>10 thenEXIT;END IF;DBMS_OUTPUT.PUT_LINE('i =' || i);i:=i+1;End loop;END;/
الشرح
نوع : السطر من متغير تعريف رقم الثانيالبداية :السطر الثالثابتدائية : السطر قيمة المتغير اعطاء i=1 وهيالرابعاالنهاء : السطر شرط الخامسكان : السطر اذا االنهاء يكمل وال i<10السادسانها : السطر ifالسابعطباعة : السطر iالثامنقيمة : السطر زيادة بواحد iالتاسع
89
الحلقة : السطر نهاية العاشرهذا وبعد :الكودكتابة كمايلي الناتج يكون
i =1i =2
3=i i =4i =5i =6i =7i =8i =9
i =10
2- LOOP- EXIT WHEN - END
Declare i number(5);BEGINi:=1;LOOPEXIT WHEN i>10;DBMS_OUTPUT.PUT_LINE('i =' || i);i:=i+1;End loop;END;/
االنهاء شرط استخدم الحظ لكن السابق نفس الناتج ويكون
EXIT WHEN i<10;
3- WHILE - LOOP - END
Declare i number(5);BEGINi:=1;WHILE i <= 10 LOOPDBMS_OUTPUT.PUT_LINE('i =' || i);i:=i+1;End loop;END;
90
/
السابق المثال نفس الناتج ويكون
4-FOR - IN - LOOP - END
حلقات اسلوب عمل نفس وهي التكرار حلقات الستخدام اخرى طريقة ايضا اي forوهذه فيبرمجة لغة
االتي على هي لها العامه والصيغة
LOOP ..البداية FOR i IN النهايةتكرارها المراد الجمل
END LOOP
مثـــال:Declare
i number(5);BEGIN
FOR i IN 1..10 LOOPDBMS_OUTPUT.PUT_LINE('i =' || i);
End loop;END;
/:( ) السابق نفس كمايلي الناتج يكون وسوف
i =1i =2i =3i =4i =5i =6i =7i =8i =9
i =10
GOTOجملة
فان البرمجة لغات باقي في اخرى GOTOكما الى نقطه من البرامج عمل تسلسل تنقل
العامة الصيغة
GOTO <<my_label>>
أن حيث91
my_label اليها االنتقال سيتم التي النقظة عنوان
مثال
declarei positive := 1;max_loops constant positive := 100;begini := 1;loopi := i + 1;if i > max_loops thengoto more_processing;end if;end loop;<<more_processing>>i := 1;end; /
التعليقات
في التعليقات كتابة طرق PL/SQLيمكن بعدة
التعليق (--) -1 ثم كتابة
مثال
-- DON’T FORGET MY NAME
أخرى (***) (***) -2 مرة ثم التعليق ثم كتابة
مثال *** DON’T FORGET MY NAME ***
اخرى) ( /*) /*كتابة (-3 مرة ثم التعليق ثن
مثال */ DON’T FORGET MY NAME /*
92
أوامر كتل SQLاستخدام PL/SQL في
جمل استعمال بـ SQLيمكنك الخاصة البرمجية الكتل وجود PL/SQLداخل مع ولكنجملة كل حيث منقوطة (SQLاختالفات بفاصلة ) ;تنتهي
مثال
DECLAREmax_records CONSTANT int := 100;i int := 1;BEGINFOR i IN 1..max_records LOOP if (mod(i,10) = 0) then INSERT INTO test_table (record_number, current_date) VALUES (i, SYSDATE); else NULL; end if;END LOOP;COMMIT;END;/
االمر باستخدام قمنا المثال هذا أوامر sysdateو INSERTفي من SQLوهي
93
CURSORS المؤشرات
الفصل اهداف
على قادر ستكون الله شاء إن الفصل هذا مهاية قيالصريحه -1 المؤشرات مع التعاملالضمنية -2 المؤشرات مع النعامل
CURSORS المؤشرات
التحديد cursorsالمؤشرات pl/sqlتستخدم عبارات لغة selectألدارة الحظنا sqlفي وكمامثل السابقة من ifاالوامر البد ذلك ولعمل المخزنه الجداول بيانات مع نستخدمها لم والتكرار
. المؤشرات هذه استخدامالمؤشرات من نوعين بالتفصيل وهناك واحد لك نتطرق وسوف والصريحة الضمنية هي
. الالزمة واالمثلة
الصريحه- :1 المؤشرات
االعالن من كجزء المؤشرات من النوع هذا تعريف عبارة declareيتم تشتمل ان sqlويجبالتحديد عبارة على االساسية selectالمعرفه الكلمات استخدام اليمكن حيث فقط
insert,update,delete: كمايلي مكونات اربعة ماستكتب دائما الصريحه المؤشرات استخدام وعند
الجزء- 1 في المؤشر تعريف declareيتمعبارة- 2 بعد المؤشر فتح beginيتم
: كمايلي الصريح المؤشر لتعريف العامة الصيغة
DECLARE IS المؤشر CURSOR اسماالستعالم
حقيقي مؤشر باسم المؤشر اسم باستبدال تقوماالستعالم جملة بوضع االستعالم selectوتقوم مكان في
االمر باستخدام بفتحه نقوم وتستخدمه المؤشر هذا بفتح تقوم :openولكي كمايلي
المؤشر OPEN اسم
( ) تم الذي المؤشر من واحد سجل سطر البيانات تحميل او باسترجاع تقوم المؤشر فتح وبعداالمر باستخدام :FETCHتعريفه كمايلي
94
المؤشر INTO 1متغير,2متغير......., FETCHاسم
وحملها اسمه المعطى المؤشر من البيانات باسترجاع قم اي هذا المتغيرات intoومعنى الى. المؤشر استعالم في الموجودة الحقول عدد يساوي المتغيرات عدد ان مالحظة كع
: كمايلي اغالقه ويتم اغالقه عليك يجب المؤشر على العمليات اجراء من االنتهاء وبعد
close cursor_name
مؤشر : تعريف طريقة على مثال
الجدول هذا لدينا انه افرض
age name no
23 mohammed 11122 talal 22224 majed 333
: كمايلي الجدول هذا بانشاء قم اوالcreate table stud)no number(4),name varchar2(40),
age number(2) ;(: كمايلي الجدول هذا في السابقة البيانات بادخال قم ثانيا
insert into stud values(111,'mohammed',23);insert into stud values(222,'talal',22);insert into stud values(333,'majed',24);
مايلي بنتفيذ قم ثم
set serveroutput on;DECLAREname_stu varchar2(40);CURSOR name_student ISselect name from studwhere no=111;BEGINOPEN name_student;FETCH name_student INTO name_stu;DBMS_OUTPUT.PUT_LINE(name_stu);CLOSE name_student;END;/
95
: التنفيذ بعد كمايلي الناتج لك يظهر سوف
mohammedصحيح الشي وهذا
صريح مؤشر مع نتعامل لكي ذكرناه التي الخطوات نفس اتبعنا اننا الحظ
في االستعالم ان السابق المثال في يحدث cursorالحظنا ماذا لكن واحد بسجل يعود سوف؟ السجالت كافة على المرور واردنا سجل من اكثر المؤشر اعاد لو
ام انتهت المؤشر سجالت هل هو وهذا شرط بها حلقة استخدام من البد السابق السؤال لحلخاصية ال خالل من ذلك :foundونعرف كمايلي للمؤشر
mycur%found
حيث :
mycur: . المؤشر اسم هي
% . خصائصه : احد هي المؤشر اسم مايلي انا توضح
found: ال ام السجالت جميع من االنتهاء تم هل نعرف خاللها من التي خاصية
مثال :
المقرر الدرجة النتيجة الطالب كود اسمRESULTMARKSUBJECTNO_STU
88216CS111 75225CS222 40225CS333
في ناجح كان اذا الطالب درجة الى وينظر الجدول على بالمرور يقوم اجراء انشاء نريدكان فاذا ال ام يساوي markالمقرر او قيمة 50اكبر حقل trueضع قيمة resultفي ضع واال
false حقل resultفي
الجدول : هذا بانشاء اوال نقوم
create table stu_study(NO_STU number(4),SUBJECT varchar2(8),MARK number(3),RESULT varchar2(20));
بادخال نقوم الجدول انشاء السابقة وبعد المدخالت
96
insert into stu_study (NO_STU,SUBJECT,MARK) values (111,'216CS',88);
insert into stu_study (NO_STU,SUBJECT,MARK) values (222,'225CS',75);
insert into stu_study (NO_STU,SUBJECT,MARK) values (333,'225CS',40);
: االجراء بانشاء نقوم ذلك بعد
declaremar number(3);no number(3);cursor res_stu isselect no_stu,markfrom stu_study;beginopen res_stu;loopfetch res_stu into no,mar;exit when res_stu%notfound;if mar>=50 thenupdate stu_study set result='TRUE' where no_stu=no;elseupdate stu_study set result='FALSE' where no_stu=no;end if;end loop;close res_stu;end;/
الجدول في النتائج تكون كمايلي : وبهذا
RESULTMARKSUBJECTNO_STUTRUE88216CS111TRUE75225CS222FALSE40225CS333
الحقل ان السابق الجدول في الحظ المتغيرات لتعريف اخرى طريقة تعريفه no_Stuهناك تمنوع من انه المتغير number على تعريف انه noوتم على االجراء يتم numberفي لكي ايضا
من الجدول في الحقل نوع تغير تم لو الحظ لكن فيه الطالب رقم varchar2الى numberوضعالمتغير نوع تغير عليك يجب االجراء noفانه التعدل تجعلك طريقه هناك لكن ايضا االجراء في
المتغير لتعريف التالي االمر استخدام وهي مرة االجراء noكل في
97
NO stu_study.no_stu%type
حيث :
NO المتغير اسم هي
stu_study : الجدول اسم
no_stu : الجدول في المطلوب الحقل
%type : الحقل نوع خاصية
اسمه متغير بتعريف قم ماسبق اسمه noومعنى الذي الحقل نوعية نفس NO_STUلهالجدول في .stu_studyالموجود
جميع مع وهكذا النوع تغير مرة كل في االجراء في العنصر نوع بتغير تقوم الن وبهذابالجداول صله لها التي المتغيرات
: كمايلي التعديل بعد االجراء يصبح وبذلك
declaremar stu_study.mark%type;no stu_study.no_stu%type;cursor res_stu isselect no_stu,markfrom stu_study;beginopen res_stu;loopfetch res_stu into no,mar;exit when res_stu%notfound;if mar>=50 thenupdate stu_study set result='TRUE' where no_stu=no;elseupdate stu_study set result='FALSE' where no_stu=no;end if;end loop;close res_stu;end;/
98
الضمنية المؤشرات
المؤشرات فائد على سابقا منها cursorsتعرفنا االول النوع الفصل ودرسنا هذا عندنا وفيالصريحه المؤشرات من اسهل وهي الضمنية المؤشرات وهو اخر نوع
التعامل عند هامتين نقطتين الضمنيه : وتوجد المؤشرات مع
االجراء* جسم في الضمني المؤشر في bodyيظهر كمافي declareوليس باالجراء الخاصالصريحه المؤشرات
مؤشر* يسترجع ان .selectالبد واحد سطر الضمني
: كمايلي الضمني للمؤشر العامه والصيغة
SELECT COLUM1,COLUM2,....... INTO VARIABLE1,VARIABLE2.....,
FROM table_name
هذا الحقل ومعنى باختيار الحقل 1قم منغير 2و المتغيرات في متغير 1وضعها الجدول 2و منtable_name
نستخدم وسوف ذلك على مثال نأخذ الثاني سوف الدرس في سابق انشئناه الذي الجدولالجدول اسم وكان الصريحة المؤشرات مع تعاملنا studعندما
agenameno
23mohammed11122talal22224majed333
ذلك ( اليحتاج انه البعض يقول قد الطالب اعمار متوسط بحساب يقوم اجراء كتابة مثال واردناجملة استخدام فمجرد اجراء احب selectالى لكن صحيح هذا نعم اقول انا ذلك عمل نستطيع
بعد نرى سوف ولكن الضمني المؤشر عمل طريقة نرى لكي المثال هذا في االجراء استخدامشامل مثال ) قليل واالن الوقت نفس في والضمنية الصريحه الموشرات استخدام فيه يتم
كمايلي : االجراء بكتابة نقوم
set serveroutput on;declareaveage number(4,2);beginselect avg(age)into aveage
99
from stud;DBMS_OUTPUT.PUT_LINE(aveage);end;/
الوقت*** : نفس في والضمنيه الصريحة الموشرات الستخدام شامل مثال
اسمه : االول الجدول التاليين الجدولين لدينا انه ):coursesلنفرض المقررات (
الساعات المقرر عدد المقرر اسم رقمhourscourse_namecode
3NETWORK216CS3ASSEMBLY225CS4DATABASE325CS
: كمايلي الجدول بانشاء وقم
create table courses(code varchar2(8),course_name varchar2(40),hours number(3),primary key(code));
: كمايلي بالجدول الموجود البيانات بادخال وقم
insert into courses values('216CS','NETWORK',3);
insert into courses values('225CS','ASSEMBLY',3);
insert into courses values('325CS','DATABASE',4);
وهو الثاني الجدول بتكوين نقوم :studysثم
اسمالمقرر كودالدرجةالنقاط عددالطالب
POINTMARKCOURSE_CODENO_STU
100
88216CS111 75225CS222 40225CS333 90225CS111 78216CS222 85216CS333
: كمايلي االنشاء ويتم
create table studys(NO_STU varchar2(6),COURSE_CODE varchar2(8),MARK number(3),point number(5,2),primary key(NO_STU,COURSE_CODE));
ادخال كمايلي ويتم بالجدول الموجودة بالبيانات :
insert into studys(NO_STU,COURSE_CODE,MARK)values ('111','216CS',88);insert into studys(NO_STU,COURSE_CODE,MARK)values ('222','225CS',75);insert into studys(NO_STU,COURSE_CODE,MARK)values ('333','225CS',40);insert into studys(NO_STU,COURSE_CODE,MARK)values ('111','225CS',90);insert into studys(NO_STU,COURSE_CODE,MARK)values ('222','216CS',75);insert into studys(NO_STU,COURSE_CODE,MARK)values ('333','216CS',85);
لكل النقاط عدد بحساب يقوم اجراء انشاء المطلوب البيانات وادخال انشاء من االنتهاء بعدالحقل وهو مادة كل وفي ويجب طالب شيء اي فيه ندخل لم الذي النقاط ان : عدد نعلم
averageMARK
101
595-1004.7590-944.585-89480-843.575-79370-742.565-69260-6411-59
كمايلي : النقاط حساب ويتم
* ( عدد = ( السابق الجدول كمافي الدرجة وليس المادة معدل مقرر اي في النقاط عددالمقرر ساعات
رقمه الذي الطالب معدل لحساب المقرر 111مثال 216CSفي
جدول من درجة studysنالحظ على تحصل قد الطالب الجدول 88ان من الدرجة ان ونالحظبين هي هو 89- 85السابق المقرر هذا في الطالب معدل فإن الطريقة ( 4.5وبالتالي وهي
, ( جدول ومن الجامعات اغلب في وبالتالي coursesالمتبعة للمقرر الساعات عدد على نحصلفان :
النقاط = .13.5 = 3 * 4.5عدد عمله االجراء من المطلوب هو وهذا الطالب جميع في وهكذا
: كمايلي يكون سوف االجراء فان وبالتالي
DECLAREno_Student studys.NO_STU%type;hou courses.hours%type;mark studys.mark%type;cou_code courses.code%type;poi studys.point%type;cursor st_point isselect NO_STU,COURSE_CODE,MARK from studys;BEGINopen st_point;loopexit when st_point%notfound;fetch st_point into no_Student,cou_code,mark;select hoursinto houfrom courseswhere code=cou_code ;if (mark>=95)and(mark<=100) then
102
poi:=5 * hou;elsif mark>=90 thenpoi:=4.75 * hou;elsif mark>=85 thenpoi:=4.5 * hou;elsif mark>=80 thenpoi:=4 * hou;elsif mark>=75 thenpoi:=3.5 * hou;elsif mark>=70 thenpoi:=3 * hou;elsif mark>=65 thenpoi:=2.5 * hou;elsif mark>=60 thenpoi:=2 * hou;elsepoi:=1 * hou;end if;update studys set POINT=poi where NO_STU=no_Student and COURSE_CODE=cou_code ;end loop;close st_point;end;
/
لكي استخدمناه والصريحة الضمنيه والمؤشرات الصريحة المؤشرات استخدمنا اننا هنا الحظالجدول سجالت بفتح في studysتقوم الساعات بعدد يعود لكي استخدمنا الضمنلي والمؤشر
. بالحلقة يدور مرة كل
االجراء : شرح
من , ~ ابتدأ البرنامج جسم اما لديكم مشكلة هناك التوجد انه اتوقع التعريفات فهو beginفيكمايلي :
الجدول سجالت جميع على يحتوي والذي الصريح المؤشر يفتح حلقة studysاوال يكون ثمشرط وطبعا الصريح المؤشر في الموجودة الطالب سجالت جميع على يمر لكي دورانية
الطالب . سجالت تحديث بعملية يقوم ثم سجل اخر الى الوصول هو الحلقة لهذه االنهاء: كمايلي المتغيرات في االولى
fetch st_point into no_Student,cou_code,mark;
االن نحن االن ولنفرض المقرر في والدرجة المقرر ورقم الطالب رقم هي المتغيرات وطبعارقمه الذي الطالب ووهو االول السجل المقرر 111عند هي 216CSورقم سوف 88ودرجته
103
, المادة ساعات عدد يحضر لكي ضمني مؤشر يستخدم ثم المتغيرات في البيانات هذه يضعالطالب درسها هو 216CSوهي 111التي المؤشر و
select hoursinto houfrom courseswhere code=cou_code ;
هو رقمه الذي المقرر ساعات عدد احضر هذا من cou_code ومعنى معروف هو المتغير وهذافي موجودة المقرر ساعات عدد ان هو المؤشر هذا استخدامنا وسبب االول الصريح المؤشر . عند اننا فرضنا اننا وبما الساعات عدد يحضر لكي المؤشر هذا استخدام من والبد اخر جدول
المقرر ساعات عدد يحضر فسوف االول الدرجة 3وهي 216CSالسجل يختبر بدأ ثم ساعاترقمه الذي الطالب درجة كانت حيث والمعدالت الدرجات للجدول طبقا المقرر 111وذلك في
216cCS النقاط 88هي عدد يكون من , 13.5 = 3 * 4.75كمايلي = وبالتالي االنتهاء وبعديقوم المعدل قيمة حساب وتحديث الجدول على , pointبنعديل يمر وهكذا الجديدة بقيمتها
. النتائج تكون وبالتالي السجالت نهاية الى يصل ان الى السابقة الطريقة بنفس طالب كلالجدول في :studysكمايلي
POINTMARKCOURSE_CODENO_STU13.588216CS11110.575225CS222340225CS33314.2590225CS11110.578216CS22213.585216CS333
واقعيه وبامثله تام بشكل بنوعيها المؤشرات انهينا نكون المثال هذا من االنتهاء بعد
104
و المخزنة المصفوفات الدوال و االجرائيات
الفصل اهداف
الله باذن القصل هذا في سنتعلممعها -1 والتعامل المصفوفات انشاءاجراء -2 انشاء كيفيةالمخزنة -3 الوظائف مع التعامل
)pl/sqlفي ـداولالج المصفوفات (
( هي ( في المصفوفات مثل المصفوفات الجداول هذه لو تستخدم مثل البرمجة لغات من لغةويتم للتخزين الجداول هذه تستخدم فانك تخزينها وتريد االرقام من سلسلة لديك كانت
كمايلي النوع هذا من متغير النوع : تعريف هذا تعريف يتم اوال
TYPE _النوع المتغير_ IS TABLE OF اسم INDEX BY نوعBINARY_INTEGER
ذلك : على مثال
DECLARETYPE num_array IS TABLE OF number(4) INDEX BY BINARY_INTEGER;num num_array;BEGIN................END;
واسماه نوع تعريف تم اوال متغير, num_arrayالحظ بتعريف قام نوع numثم واعطاهnum_array . بانشاءه قمنا الذي الجديد النوع وهو
عملي / مثال
set serveroutput on;DECLARETYPE num_array IS TABLE OF number(4) INDEX BY BINARY_INTEGER;i number(4);num num_array;BEGINFOR i IN 1..10 LOOPnum(i) := i * i ;END LOOP;
105
FOR i IN 1..10 LOOPDBMS_OUTPUT.PUT_LINE(i || '*' || i || '= ' || num(i) );END LOOP;END;/
العدد : بضرب تقوم االولى الحلقة كمايلي االجراء هذا عمل في iوويكون وتخزنه نفسه فيكمايلي :iبرتبه numالمتغير الناتج ويكون للطباعة الثانية والحلقة وهكذا
1*1= 12*2= 43*3= 94*4= 165*5= 256*6= 367*7= 498*8= 649*9= 8110*10= 100
المخزنة االجرائيات
مرة من اكثر استخدامة اردت اذا اني بكتابة نقوم اجراء اي ان الماضية الدروس في شاهدنافي مرة كل بكتابة اقوم نقوم sql * plusفاني لو رأيك ماهو لكن النتائج على احصل لكي
وهذا باسمه نستدعية نحتاجه وحينما اسم ونعطية البيانات قاعدة في االجراء هذا بتخزينلذلك الكثير الشيء علينا .فصلنا يوفر المخزنة االجرائيات هو
بمايلي : نقوم مخزن اجراء بانشاء نقوم ولكي
CREATE [OR REPLACE] PROCEDURE procedure-name [(argument1 ... [, argumentN) ] IS [local-variable-declarations]BEGINexecutable-section [exception-section]END [procedure-name];
أن حيث
procedure_name . المستخدم االجراء اسم
106
.OR REPLACEاما السابق من موجود االجراء ان تعلم حينما توضع فهي
حساب اجراء لديك كان اذا مثل مدخله متغيرات اما فهي القوسين بين التي المغيرات عن اماكمدخالت تعتبر هي فهذه معدله حساب تريد الذي الطالب رقم تمرير وتريد طالب معدل
كمايلي : يكون الشكل بهذا متغير ولتعريف
student_id in number(9)
هو المتغير اسم الكلمة student_idالحظ وضعنا بعده يعتبر inثم المتغير هذا ان ومعنىكمدخل
يتم الطالب بمعدل يرجع متغبر تعرف اردنا لو مثال االجراء من بقيمة يعود متغير لتعريف اماكمايلي : التعريف
ave out number(5,2)
. مثال رقمه تمرير تم الذي الطالب معدل على يحتوي المتغير هذا يكون االجراء تنفيذ بعد
تنفيذ وبعد اوال القيمه به تمرر حيث والمخرجات للمدخالت متغير تعريف يمكن انه العلم معكمايلي : وتتم المتغير نفس في القيمه وضع يتم االجراء
ave in out number(5,2)
الوقت . نفس في ومخرج مدخل اي هذا ومعنى
مــــثال :
في بدراسته قمنا الذي الجدول السابقة في بأسم الفصول studysوكان
كمايلي : وكان
POINTMARKCOURSE_CODENO_STU13.588216CS11110.575225CS222340225CS33314.2590225CS11110.578216CS22213.585216CS333
ورقم الطالب رقم تمرير بعد الطالب درجة بطباعة يقوم لكي مخزن اجراء تصميم اردنا لوالمقرر.
107
المخزن كمايلي : االجراء يكون سوف
create or replace procedure stu_mark(stu_id in studys.NO_STU%type,cou in studys.COURSE_CODE%type) asmar studys.mark%type;beginselect markinto marfrom studyswhere NO_STU=stu_idand COURSE_CODE=cou;DBMS_OUTPUT.PUT_LINE(mar);end;/
باستدعاءه نقوم ولكي البيانات قاعدة في مخزن االجراء يكون االجراء تنفيذ من االنتهاء بعدبمايلي نقوم
beginstu_mark(111,'216CS');end;/
على الناتج يكون سوف وبذلك االجراء اسم خالل من السابق االجراء استدعاء تم كيف الحظكمايلي الطالب 88الشاشة رقم تمرير بعد صحيحة 216CSومقرر 111وهي
ان مأرايك لكن اخراج متغيرات نستخدم لم اننا الحظ بنفس لكن يقوم اخر اجراء نصممبها يقوم التي نجعل الوظيفة لكي االستدعاء بعد تكون الطباعة عملية لكن السابق االجراء
بمتغير الطالب درجة بارجاع يقوم كمايلي : االجراء االجراء فان لذلك
create or replace procedure stu_mark22(stu_id in studys.NO_STU%type,cou in studys.COURSE_CODE%type,mara out studys.mark%type) asbeginselect markinto marafrom studyswhere NO_STU=stu_idand COURSE_CODE=cou;end;/
108
اليقوم االجراء الحظت لو الن الدرجة طباعة ثم ومن االجراء باستدعاء نقوم ذلك بعدالمتغير في وضعها تم الدرجة ان ايضا والحظ القيمة maraبالطباعة بهذه يعود سوف ولذلك
كمايلي : االستدعاء يكون وسوف
declarem studys.mark%type;beginstu_mark1(111,'225CS',m);DBMS_OUTPUT.PUT_Line(m);end;/ هو الناتج يكون الجدول 90وسوف على بناء صحيح وهذا .
المخزنة الوظائف
المخزنة الوظائف وهو له مشابه درس لدينا واليوم المخزنة االجراءات عن السابق درسا كانقيمة تعيد ان البد الوظائف ان الفرق لكن
: كمايلي وظيفة لتكوين العامة والصسغة
CREATE [OR REPLACE] FUNCTION function-name [(argument1 ... [, argumentN) ]RETURN function-datatype IS [local-variable-declarations]BEGINexecutable-section [exception-section]RETURN function-valueEND [function-name];
أنحيث
function_name . المستخدمه الوظيفة اسم
.OR REPLACEاما السابق من موجود االجراء ان تعلم حينما توضع فهي
حساب اجراء لديك كان اذا مثل مدخله متغيرات اما فهي القوسين بين التي المغيرات عن اماكمدخالت , تعتبر هي فهذه معدله حساب تريد الذي الطالب رقم تمرير وتريد طالب معدل
وطرق المتغيرات على التغير المخزنة االجراءت مع بها تعاملنا التي الطريقة بنفس وهياما. الوظيفة . فهي RETURN datatype تعريفها من المعادة القيمة نوع على تدل
الرابع : الدرس في بدراسته قمنا الذي الجدول في بأسم مثــــــــال وكان studysوكانكمايلي :
POINTMARKCOURSE_CODENO_STU13.588216CS111
109
10.575225CS222340225CS33314.2590225CS11110.578216CS22213.585216CS333
الوظيفة الى الطالب رقم تمرير يتم اي الفصل الطالب بمعدل ترجع وظيفة تصميم اردنا لوللطالب الفصلي المعدل حساب يتم ثم
الساعات = ÷ عدد مجموع النقاط مجموع كمايلي للطالب الفصل المعدل حساب ويتملمقررات
كمايلي : الوظيفة والنشاء
create or replace function stu_avea(stnum in studys.NO_STU%type) return real as hour courses.hours%type; avrage number(4,2); sum_hours courses.hours%type:=0; point studys.POINT%type; total_Point studys.POINT%type:=0; codem courses.CODE%type; cursor sumpoint is select COURSE_CODE,POINT from studys where NO_STU=stnum; begin open sumpoint; loop fetch sumpoint into codem,point; exit when sumpoint%notfound; select hours into hour from courses where code=codem; total_Point:=total_Point+point; sum_hours:=sum_hours+hour; end loop; close sumpoint;
12345678910111213141516171819202122232425262728
110
avrage:=total_Point/sum_hours; return avrage; end;
2930
الشرح :
رقم الوظيفة: 1السطر لتعريفرقم الوظيفة: 2السطر بها ترجع سوف التي القيمة نوعرقم الموجودة: 4السطر المقرر ساعات عدد حقل نفس وهو الساعات عدد متغير تعريف
جدول coursesفيرقم المعدل: 5السطر به نضع سوف الذي متغير تعريفرقم المواد: 6السطر كل في للطالب الساعات مجموعات به يوضع لكي متغير تعريفرقم مقرر: 7السطر اي في الطالب نقاط عدد به يوضع لكي متغير تعريفرقم المقرر: 8السطر كل في الطالب نقاط عدد مجموع به يوضع لكي متغير تعريفرقم المادة: 9السطر لكود متغير تعريفرقم الحصول: 10السطر في منه نستفيد لكي المادة كود على للحصول صريح مؤشر تعريف
النقاط مجموع الى نضيفها لكي المقرر ذلك في النقاط وعدد الساعات عدد علىرقم معه: 16السطر نتعامل لكي المؤشر هذا فتحرقم الجدول: 17السطر جميع على نمر لكي حلقة على الدخولرقم المتغيرات: 18السطر في الحالي للسجل المؤشر قيم codem,pointتحديثرقم المؤشر: 19السطر في سجل اي يجد لم اذا وهو الحلقة انهاء شرطرقم المقرر: 20السطر في الطالب ساعات عدد على بالحصول يقوم لكي ضمني مؤشر
المتغير في الساعات عدد ويضع الصريح المؤشر في حاليا hourالموجودرقم السابق: 24السطر النقاط مجموع الى الحالي للمقرر النقاط عدد اضافةرقم السابق: 25السطر الساعات مجموع الى الحالي للمقرر الساعات عدد اضافةرقم الحلقة: 26السطر من الخروجرقم الضمني: 27السطر المؤشر انهاءرقم الساعات: 28السطر عدد مجموع تقسيم النقاط مجموع وهو المعدل حسابرقم المعدل: 29السطر بقيمة الرجوعرقم االنهاء: 30السطر
االستدعاء : طريقة دور جاء الوظيفة تصميم طريقة شرح من االنتهاء بعد االن
رقمه الذي الطالب معدل يدويا لنحسب االستدعاء قبل بعد 111لكن بالنتائج نقارنه لكي مثلاالستعالم :
الطالب = نقاط 27.75= 14.25+13.5مجموع
المقرر = ( ساعات عدد الساعات عدد المقرر ) + ( 216CSمجموع ساعات )225CSعدد = 3 + 3 = 6
الطالب = معدل فان 4.63 = 6 ÷ 27.75وبالتالي
النتائج ونشاهد الدالة نستدعي دعنا االن لكن111
SELECT distinct(NO_STU),stu_avea(no_stu) from studyswhere no_stu=111;
الدالة استخدام والحظ االستعالم خالل من الدالة استدعاء تم كيف لعدم distinct الحظ وهيالنتائج : واليك السجل تكرار
NO_STU STU_AVEA(NO_STU)------ ; ----------------111 4.63
بدون االستعالم كان لو الدالة الحظ ظهوره distinctوجود عدد الطالب رقم يتكرر فسوفكمايلي : لوكان لذلك الجدول في
SELECT NO_STU,stu_avea(no_stu) from studyswhere no_stu=111;
هكذا ستصبح النتائج فان
NO_STU STU_AVEA(NO_STU)------ ; ----------------111 4.63111 4.63
الدالة ظهور سبب distinctوهذا
112
البرمجية الزنادات الحزم و
الفصل أهداف
الله : شاء ان الفصل هذا في سنتناول
البرمجية -1 الحزم ماهيةومكوناتها -2 البرمجية الحزم انشاء كيقية
الزنادات -3 ماهية
الزنادات -4 مع التعامل
الزنادات -5 قوائد
البرمجية الحزم
سابق . اتعلمنا قاعدة لدينا وجد لو مارأيك لكن المخزنة والوظائف االجراءت انشاء كيفيةعلى تحتوي انها مثال ولنضرب جدا كبيرة عمل 50بيانات لها اجراء او وظيفة وظيفة او اجراء
وبيانات العمالء بيانات على يحتوي ضخم تجاري لمحل هي القاعدة هذه ان ولنفرض خاصبعض , فان ولذلك بيانات من وغيرها المخزون وبيانات التجارية االصناف وبيانات الموظفينعميل اجمالي لحساب اجراء وجود مثال بالعمالء مختص المخزنة والوظائف االجرائيات هذه
بحساب , خاصة اجرائية مثال بالموظفين خاصة اجرئيات وجود ومثل االجرائيات من وغيرهاهذا , في وضعها لكن ايضا وغيرها العالوات واضافة الحسومات حذف بعد الموظف راتب
الوظائف كل تجمع بان مارأيك لذلك االرباك بعض لك يسسب قد البيانات قاعدة في الشكلالحزمه تدعي المجموعة وهذه لوحدها مجموعة في قسم بكل الخاصة packageواالجرائيات
خاصة حزمة في بالعمالء الخاصة والوظائف اجرائيات كل نجمع مثال
الحزمة استخدام فوائد
وحدات- 1 .pl/sqlتجميع المرتبطة 2. افضل- اداء3. افضل- السرية تكون4. الحزم- باستخدامم الصيانة عملية تسهل حيث الصيانه عملية في هو شيء اهم
الحزم مكونات
الوصف وهو االول جزءين من الحزمة مثل specificationتتكون التعاريف على ويحتوي . ومتحولتها االجراءت اسماء او مؤشرات او متغيرات
وغيرها والعمليات االجراءت تفاصيل على ويحتوي الحزمة جسم فهو الثاني الجز اماكمايلي : االول الجزء النشاء العامة والصيغة
CREATE OR REPLACE PACKAGE pack_name AS.........
113
.........
.........end;
114
كمايلي : الثاني الجزء النشاء العامة والصيغة
CREATE OR REPLACE PACKAGE BODY pack_name AS.........
الحزمة جسم.........end;
في الحزمة اسم يكون ان يجب . لكن الثاني الجزء في الحزمة اسم نفس هو االول الجزء
مــثال :
المعدل لطباعة واجراء طالب معدل لحساب وظيفة على تحتوي حزمة بانشاء لنقماسمها والتي السادس الدرس في انشناها التي الوظيفة نفس نستخدم سوف ولذلك
stu_avea . من االول الجزء الحزمة بانشاء نبداء واالن الطالب معدل بحساب تقوم والتيكمايلي :specificationالحزمة
CREATE OR REPLACE PACKAGE student ASfunction stu_avea(stnum in studys.NO_STU%type)return real;procedure print_ave(avrage in real);end;
. كمايلي التفاصيل على تحتوي والتي الحزمة جسم بانشاء نقوم االن
CREATE OR REPLACE PACKAGE BODY student ASfunction stu_avea(stnum in studys.NO_STU%type)return realas hour courses.hours%type;avrage number(4,2);sum_hours courses.hours%type:=0; point studys.POINT%type;total_Point studys.POINT%type:=0;codem courses.CODE%type;cursor sumpointisselect COURSE_CODE,POINTfrom studyswhere NO_STU=stnum;beginopen sumpoint;loop
115
fetch sumpoint into codem,point;exit when sumpoint%notfound;select hoursinto hourfrom courseswhere code=codem;total_Point:=total_Point+point;sum_hours:=sum_hours+hour;end loop;close sumpoint;avrage:=total_Point/sum_hours;return avrage;end;
procedure print_ave(avrage in real)asbeginDBMS_OUTPUT.PUT_LINE(avrage);end;end;
وصف في تعريفهما تم الذي واالجراء الوظيفة مكونات على كمانالحظ الحزمة جسم ويحتوي. المعدل لطباعة واالجراء المعدل لحساب الوظيفة ان حيث الحزمة
حزمة : داخل موجود وظيفة او اجراء استدعاء طريقة
كمايلي : االستدعاء عملية تتم
pack_name.func_proc_name
مـــــــثال : الوظيفة او االجراء اسم ثم نقطة ثم اوال الحزمة اسم اي
set serveroutput ondeclareaa real;beginaa:=student.stu_avea(111);student.print_ave(aa);end;/
رقمه الذي الطالب معدل هو الناتج يكون التفيذ داله 111وبعد استدعينا شي اول الحظالمتغير في ووضعناها المعدل .aaحساب الشاشة على طبعة ليتم الطباعة اجراء استدعينا ثم
116
الحزم فائدة على تعرفت ان بعد و كتابة واالن في الحزم تستخدم ان فصاعد االن من مارأيكوالوظائف االجرائيات
117
TRRIGERsالزنادات
التالية : الطرق في اال الفرعية البرامج مع الزنادات تتشابه
, التطبيقات* او المستخدم عمل من بالرغم الجدول يعدل عندما ضمنيا الزنادات تنفيذ يتمالجدول . على
البيانات* بقاعدة الخاص للجدول الزنادات تعريف يتم
المعامالت* الزنادات التقبل
باالنتاج . الخاصة الموجهة البيانات نظم تطوير في جدا هامة الزنادات تعد
الزناد : تركيب
create [or replace] Trigger >TRRIGER_NAME<>before|after] [instead of] trigger event on >table name<[for Each row [whene triggering restriction]]>trigger body<
استخدام امكانية المخزنة االجراءات مع كان replaceكماهو اذا الزناد على بالتعديل تقوم لكي. جديد من بانشاءه والتقوم موجود
الخيارين بواسطة الزناد اغالق بعد او قبل الزناد نفذ سواء بالزناد الخاص التوقيت beforeينفذخيار , afterو مرة afterلكن منطقيا تقراء ان يجب المؤثرة البيانات قطع الن كفاءة اكثر
لعبارة ومرة triggerللزنادجملة/ هو الزناد اطالق حدث ان اما sqlمالحظة االطالق وحدث الزناد تجعل او updateالتي
delete اوinsert.. بكليهما او: الزنادات من انواع اربعة ويوجد
.afterصف- 1.afterجملة- 2.beforeصف- 3.beforeجملة- 4
جملة اجل من زناد من (deleteاو insertاو updateوكل واحد نوع يعد زناد , instead ofكلafter,before.. الواحد) للجدول زنادات تسع تعريف ويمكن
الزناد * اطالق احداث : معالجةعملية على الزناد اطالق حدث هذه delete او update او insert يحتوي من توليفة على او
, دعائم تستخدم ان فيمكنك واحدة عملية من اكثر مع واحد زناد يتعامل عندما العملياتالزناد في بالرمز الخاص الجزء لتنفيذ تستخدم التي العبارة نوع على للتعرف شرطية
كمايلي هي :والدعائمIF inserting then .....end if;IF updating then .....end if;IF deleting then .....end if;
صف ** :لكلfor each row بالزناد تاثر صف لكل واحدة مرة ينطلق سوف الزناد كان اذا ما الخيار هذا يعد
118
السطر بزناد الخاص الزناد نص القديمة , for each row في القيم الى الوصول من يمكنكعمليتي في حيث الحالي للصف القديمة update و insert والحديثة القيم من الوصول يمكنك
لعملية بالنسبة اما فقط delete والحديثة القديمة القيم هو المتاح ان الطبيعي فمنزنادات في والحديثة القديمة القيم استخدام القيم before و after ويمكنك تكون وسوف
في فقط الموجودة هي والحديثة . before trigger القديمة كان اذا يقوم after trigger اما فانهالتحديث بعد القيمة .بالتقاط
الزناد قيد
. الزناد يطلق كي صحيح يكون ان يجب منطقي تعبير القيد هذا يحددالتالي الزناد المثال سبيل الطالب stduent_triggerعلى رقم كان اذا اال حدوثة يتم ال
student_id من 100اقل
create or replace trigger stduent_triggerbefore insert or update on studentfor each rowwhen(new.student_id>100)
: الزنادات انشاء على قيود
جمل- 1 على يحتوي ان للنص جمل dml sqlيمكن جمل selectلكن تكون ان select intoيجبالتحكم- 2 بجمل )commit,savepoint,rollback( اليسمحبواسطة- 3 استدعائه تم اذا السابقة التحكم جمل يتضمن ان مخزن فرعي لبرنامج اليمكن
الزناد.
مـــــــــــــــــثال :
: التالية جداول الثالث لدينا انه لنفرض
جدول : هو درجة playerاالول او شباب درجة سواء النادي في الالعبين جميع ممتاز : بيانات
levelsaddressphonedate_birthnameno_player1riyadh112345611/11/1973talal12riyadh26543211/1/1982mohammed22riyadh31237891/1/1988sami31riyadh412312312/3/1970yosif4
حيث levelحيث الالعب بها يلعب التي الدرجة و - 1تمثل الممتاز االولى الدرجة تمثل 2تمثلالشباب .
كمايلي : الجدول والنشاء
119
create table player(no_player varchar2(6) primary key,name varchar2(50),date_birth date,phone varchar2(9),address varchar2(20),levels number(2));
120
الجدول : واسم بالرواتب خاص وهو الممتاز درجة في الالعبين جدول هو larg_playerالثاني
salarylevel_nono_player 11 14
كمايلي : الجدول والنشاء
create table larg_player(no_player varchar2(6) primary key,level_no number(2),salary number(7,2));
الشباب : درجة في الالعبين جدول هو الجدول الثالث واسم بالرواتب خاص youthوهو
salarylevel_nono_player 22 23
كمايلي : الجدول والنشاء
create table youth(no_player varchar2(6) primary key,level_no number(2),salary number(7,2));
مستواه وتحديد جديد العب اسم بادخال المستخدم يقوم حينما بحيث زناد عمل نريد االن ( جدول( في الالعب رقم اضاف شباب كان فاذا المستوى باختبار الزناد يقوم ممتاز او شباب
جدول في الالعب رقم يضيف فانه الممتاز اولى درجة مستواه لوكان وكذلك الشبابlarg_player: كمايلي الزناد يكون وبذلك
create or replace trigger player_agebefore insert on playerfor each rowbeginif inserting thenif :new.levels=1 theninsert into larg_player(no_player,level_no) values (:new.no_player,:new.levels);elsif :new.levels=2 theninsert into larg_player(no_player,level_no) values (:new.no_player,:new.levels);end if;end if;end;
121
مايلي : بادخال قم ذلك بعد
insert into player values('1','talal','11/11/1973','123456','riyadh1',1);
جدول على تمت المدخالت ان جدول playerالحظ في باالستعالم وقما اذهب ذلك بعدlarg_player. هناك الالعب رقم اضاف انه تجد سوف
التجميعات
: البيانات قاعدة في التجميعات انواع
النوع نفس من العناصر من مجموعة هي التجميعة
: نوعين على هي والتجميعات
التجميعةvarray
مثل البرمجة لغات من لغة اي في للمصفوفات ومشابهة متغيرة كمصفوفة ++cو cوهيفي التخزين ويتم السفلية االرقام باستخدام التجميعة هذه في عنصر اي الى االشارة وتتم
خطية بصورة التجميعة inlineهذه
التجميعةnested table
ايضا التجميعة هذه في عنصر اي الى واالشارة البيانات قاعة في موجود كجدول تعتبر. منفصل تخزين جدول في البيانات تخزين ويتم السفلية االرقام باستخدام
في-- : التجميعات مع التعامل sql plus اوال
التجميعة - البسيط varrayأ النوع من
رقم/ على يحتوي سوف والذي مستشفى في االقسام جدول انشاء تريد انك نفرض مثالاسماء , , , . ان العلم مع القسم موظفين اسماء ثم ومن القسم واسم القسم اسم القسم
تجميعة في تكون سوف . varray الموظفين
: كمايلي التجميعة بانشاء اوال نقوم
Create type namev as varray(30) of varchar2(50);
/
هو للموظفين عدد اكبر ان فرضنا لو هو 30حيث لالسم طول .50واكبر
/ كمايلي بانشاءه ونقوم الجدول بأنشاء نقوم ثم
Create table deptv)nodept number(5) primary key,
namedept varchar2(50),
122
emp namev;(
اوامر بتنفيذبعض فيمايلي الجدول sqlونقوم على
:insertاالدراج -1
Insert into deptv values(10,'medical',namev('ali','sami','fahad','fady'));
:updateالتحديث- 2
استخدام يتطلب التجميعة في العناصر خالل pl/sqlلتحديث من ذلك تنفيذ sqlواليمكن: مثال القياسية
Declare Editname namev;
I number:=1;BeginSelect emp into editnameFrom deptv where nodept=10;LoopIf (i=editname.count+1) thenExit;Elsif (editname(i)='sami') thenEditname(i):='mohammed;'
End if;i:=i+1;end loop;update deptv set emp=editname where nodept=10;end ;
: السابق المثال شرح
الموظف اسم بتغير يقوم الى samiسوف وتبديلة بادخال قمنا وشرح mohammedالذيكمايلي الخطوات
متغير بتعريف قمنا التجميعة editnameاوال نوع نفس بتخزين namevمن نقوم لكي وذلكمتغير ايضا ونعرف فيه الموظفين اسماء على يحتوي والذي يستخدم Iالمؤشر من وهو
كعداد.
كمايلي وهي الموظفين اسماء الستخراج مؤشر بعمل نقوم ثم
Select emp into editname
From deptv where nodept=10;
للقسم الموظفين اسماء باستخراج هنا المتغير 10يقوم في االستعالم ناتج وتخزينeditname التجميعة نوع نفس من هو والذي
123
هل يختبر ثم ومن حلقة يبدأ االجراء Iثم بانهاء قام نعم كان اذا التجميعة نهاية الى وصلتيساوي هو هل الحالي التجميعة عنصر يختبر التجميعة نهاية الى يصل لم ال samiواذا ام
يساوي كان الى samiاذا القيمة هذه بتغير بواحد mohammedيقوم العداد يزيد ثم ومنالعناصر جميع من االنتهاء وبعد التجميعة نهاية الى يصل ان الى جديد من يعود ثم ومن
للجدول التحديث بعمل يقوم
update deptv set emp=editname where nodept=10;
. االجراء بانهاء يقوم ثم ومن
:)delete)Trimالحذف -2
اجراء عمل يتطلب التجميعة من عنصر pl/sqlحذف
التجميعات في واحد varrayوالحذف عنصر حذفنا لو اي التجميعة في عنصر اخر على يتماخر على يتم العنصر فانه تحديد يمكن وال عنصر
مثال:
DeclareNamedel namev;BeginSelect emp into namedelFrom deptv where nodept=10;Namedel.trim(1);update deptv set emp=namedel where nodept=10;end;/
باالضافة- 4 )update)appendالتحديث
لالضافة يستخدم االمر هذا
القسم الى الموظفين من مزيدا نضيف كيف ذهنك الى يتبادر نستخدم 10ألم تقول ان يمكناالمر insertاالمر نستخدم عندما الننا صحيح غير هذا القسم insertلكن رقم يظهر 10وندخل
رئسي مفتاح القسم رقم حقل الن خطاء لنا
توسع بعمل نقوم اوال الموظفين من المزيد اضافة اردنا اذا لكي extendلذلك للتجميعةلذلك . االجراء ونستخدم جديد عنصر باضافة لنا تسمح
: كمايلي االجراء ويكون
DeclareNewname namev;BeginSelect emp into newnameFrom deptv where nodept=10;Newname.extend;
124
Newname(newname.last):='khaled;'update deptv set emp=newname where nodept=10;end;/
125
التجميعة - : varrayب الشيء النوع من
المستخدم بواسطة معرفة تجميعة هي التجميعة هذه
ذلك : مثال
اسم على تحتوي تجميعة �ون نك اخر حقل وفي الوظيفة مسمى على يحتوي جدول انشاء اردنا لوالوظيفة هذه موظفين لجميع وراتبة الموظف
EMPLOYEEJOB_NAME)ali,5000),(sami,6000),(fahad,4000(manager
)laui,7500),(mohammed,7500(Analysis)fady,8000),(saed,6000(Programming
انشاء هي االولى الخطوة فإن كمايلي objectوبالتالي
Create type empobj
as object (nameemp varchar2(50),salary number(6));
/
التجميعة بانشاء نقوم ثم
Create type employeeobj as varray(20) of empobj;
/
استخدمنا اننا الفرق االسم objectالحظ بهذا النوع هذا سمي ولذلك انشئناه الذي
: كمايلي الجدول بإنشاء نقوم التجميعة انشاء وبعد
Create table jobobj)job_name varchar2(50),
employee employeeobj;(
خالل من الجدول هذا مع التعامل كيفية على االن نتعرف سوف الجدول انشاء * sqlوبعدplus
االضافة- :1
نقوم السابق الجدول إلى صف بمايلي : الضافة
Insert into jobobj values
')manager',employeeobj)
126
empobj('ali',5000),
empobj('sami',6000),
empobj('fahad',4000);((
السابق الجدول في االول الصف اضفنا قد نكون وبهذا
الى ذهبنا مايلي sql * plusولو منه وطلبنا
Select * from jobobj
JOB_NAME
---------------------------------------------------
EMPLOYEEobj(NAMEEMP, SALARY(
-------------------------------------------------------------
manager
EMPLOYEE1(EMPOBJ('ali', 5000), EMPOBJ('sami', 6000), EMPOBJ('fahad', 4000((
الجديد الصف اضافة تم لقد ونالحظ
التحديث- : 2قطعة تطبيق :pl/sqlيجب كمايلي
DeclareEditname employeeobj;Editobj empobj;i number:=1;BeginSelect employee into editname From jobobj where job_name='manager;'
LoopEditobj:=editname(i);If (i=editname.count) thenExit;
Elsif editobj.nameemp='sami' thenEditobj.salary:=10000;Editname(i):=editobj;End if;i:=i+1;End loop;Update jobobj set employee=editnameWhere job_name='manager;'
End;127
اسمه الذي الموظف راتب تعديل يتم قسم samiوبهذا في راتبه managerالموجود وجعل10000
3: الحذف-
DeclareEditemp employeeobj;begin
select Select employee into editemp From jobobj where job_name='manager;'
Editemp.trim(1);Update jobobj set employee=editempWhere job_name='manager;'
التجميعة من صف اخر وهو واحد سجل حذف يتم وبهذا
التجميعة- :NESTED TABLEج البسيط النوع من
التجميعة نفس التجميعة هذه بواسطة varrayتعتبر بتعريفها نقوم والتي البسيط النوع منمثل الموجودة البيانات انواع الذي varchar2و numberاحد المثال نفس هنا نستخدم وسوف
التجميعة في الشيئ . varrayاستخدمناه النوع من
رقم/ على يحتوي سوف والذي مستشفى في االقسام جدول انشاء تريد انك نفرض مثالاسماء , , , . ان العلم مع القسم موظفين اسماء ثم ومن القسم واسم القسم اسم القسم
تجميعة في تكون سوف nested table الموظفين
: كمايلي وتكون التجميعة بانشاء نقوم اوال
Create type namenested as table of varchar2(50);
/
: كمايلي الجدول بأنشاء نقوم ثم
Create table deptnested)nodept number(5) primary key,
namedept varchar2(50),emp namenested(nested table emp store as nestedtablesimple;
اضافنته تم الذي االخير السطر الحظ
استخدمنا اذا وضعه دائم يمثل nested tableفيجب والذي االحمر باللون المكتوب تغير معالنوع من هو الذي الحقل .nested tableاسم
128
لهذا كأسم يعتبر خط تحته nested tableوالذي
اوامر** خالل من السابق الجدول مع sql التعامل
االضافة- :1
Insert into deptnested values(1,'medical',namenested('ali','sami','fahad','fady'));
:updateالتحديث- 2
استخدام يتطلب التجميعة في العناصر خالل pl/sqlلتحديث من ذلك تنفيذ sqlواليمكن: مثال القياسية
Declare Editname namenested;
I number:=1;BeginSelect emp into editnameFrom deptnested where nodept=1;LoopIf (i=editname.count+1) thenExit;Elsif (editname(i)='sami') thenEditname(i):='mohammed;'
End if;i:=i+1;end loop;update deptnested set emp=editname where nodept=1;end ;
/
: السابق المثال شرح
الموظف اسم بتغير يقوم الى samiسوف وتبديلة بادخال قمنا وشرح mohammedالذيكمايلي الخطوات
متغير بتعريف قمنا التجميعة editnameاوال نوع نفس نقوم namenestedمن لكي وذلكمتغير ايضا ونعرف فيه الموظفين اسماء على يحتوي والذي المؤشر وهو Iبتخزين
. كعداد يستخدم
كمايلي وهي الموظفين اسماء الستخراج مؤشر بعمل نقوم ثم
129
Select emp into editname
From deptnested where nodept=1;
للقسم الموظفين اسماء باستخراج هنا المتغير 1يقوم في االستعالم ناتج وتخزينeditname التجميعة نوع نفس من هو والذي
هل يختبر ثم ومن حلقة يبدأ االجراء Iثم بانهاء قام نعم كان اذا التجميعة نهاية الى وصلتيساوي هو هل الحالي التجميعة عنصر يختبر التجميعة نهاية الى يصل لم ال samiواذا ام
يساوي كان الى samiاذا القيمة هذه بتغير بواحد mohammedيقوم العداد يزيد ثم ومنالعناصر جميع من االنتهاء وبعد التجميعة نهاية الى يصل ان الى جديد من يعود ثم ومن
للجدول التحديث بعمل يقوم
update deptnested set emp=editname where nodept=1;
. االجراء بانهاء يقوم ثم ومن
باالضافة- 3 :)update)appendالتحديث
توسع بعمل نقوم اوال الموظفين من المزيد اضافة اردنا لنا extendاذا تسمح لكي للتجميعةلذلك . االجراء ونستخدم جديد عنصر باضافة
: كمايلي االجراء ويكون
DeclareNewname namenested;BeginSelect emp into newnameFrom deptnested where nodept=1;Newname.extend;Newname(newname.last):='khaled;'
update deptnested set emp=newname where nodept=1;end;/
الحذف- :4
باستخدام االولى طريقتان التجميعة trimهناك في صف اخر تحذف الطريقة وهذه: التجميعة في عنصر اي اختيار واليمكن
130
DeclareNamedel namenested;BeginSelect emp into namedelFrom deptnested where nodept=1;Namedel.trim(1);update deptnested set emp=namedel where nodept=1;end;/
االمر باستخدام فهي الثانية الطريقة يتم delete(m)اما بل االخير من تحذف ال الطريقة وهذهوضعنا فلو حذف تريد الذي العناصر اي سابقا m=2اختيار فعال كما الجدول المدخالت وكانتالموظف هو والذي الثاني العنصر حذف samiسيتم
DeclareNamedel namenested;BeginSelect emp into namedelFrom deptnested where nodept=1;Namedel.delete(2);update deptnested set emp=namedel where nodept=1;end;/
) طريقة الطريقة بين) deleteوهذه الفوارق ابرز من varrayحيث nested tableو varrayهيبعكس االخير العنصر فقط تحذف ولكن عنصر اي حذف يمكنها nested tableال
التجميعة- :NESTED TABLEد الشيئ النوع من
التجميعة ان الحظنا فإن varrayكما الشيء النوع من انشاءها يتم NESTED TABLEيتم. المستخدم بواسطة المعرف الشيء النوع من ايضا إنشاءه
في استخدمناه الذي المثال نفس المثال هذا لشرح نستخدم النوع varrayسوف objectمن
ذلك : مثال
على تحتوي تجميعة �ون نك اخر حقل وفي الوظيفة مسمى على يحتوي جدول انشاء اردنا لوالوظيفة هذه موظفين لجميع وراتبة الموظف اسماء
الشيء انشاء هي خطوة بشرح empobjاول قمنا عندما سابق انشاءه تم vaarayوالذيالكود : فهذا بانشاءه تقم لم كنت واذا الشيء النوع من
Create type empobj
131
as object (nameemp varchar2(50),salary number(6));/
التجميعة إنشاء هي خطوة الشيء nested tableثاني كمايلي empobjباستخدام
Create type empnestedobj as table of empobj;
/
132
: كمايلي الجدول بإنشاء نقوم خطوة ثالث
Create table jobnested
)job_name varchar2(50),employee empnestedobj(nested table employee store as nestedtablesimple;
اوامر* خالل من السابق الجدول مع sqlالتعامل
االضافة- :1
: بمايلي نقوم السابق الجدول في بيانات بادراج تقوم لكي
Insert into jobnestedValues('manager', empnestedobj(empobj('ali',6000),empobj('sami',7000), empobj('fahad',6500)));
التحديث : -1
باستخدام التحديث كمايلي: pl/sqlيتم
الموظف راتب لتغير وظيفتها aliمثال مسمى في اي االداري 9000الى managerالموظف
DeclareEditsal empnestedobj;Editempobj empobj;i number:=1;BeginSelect employee into editsalFrom jobnested where job_name='manager';LoopEditempobj:=editsal(i);If (i=editsal.count) thenExit;Elsif (editempobj.nameemp='fahad') thenEditempobj.salary:=9900;Editsal(i):=editempobj;End if;i:=i+1;end loop;update jobnested set employee=editsal where job_name='manager';end;
133
/
باالضافة- 3 :-)update)appendالتحديث
DeclareEditemp empnestedobj;BeginSelect employee into editempFrom jobnested where job_name='manager';Editemp.extend;Editemp(editemp.last):=empobj('mohammed',7000);update jobnested set employee=editemp where job_name='manager';end;/
:)delete)trimالحذف- 4
باستخدام االولى طريقتان واليمكن trimهناك التجميعة في صف اخر تحذف الطريقة وهذه: التجميعة في عنصر اي اختيار
declareempdel empnestedobj;beginSelect employee into empdelFrom jobnested where job_name='manager';Empdel.trim(1);update jobnested set employee=empdel where job_name='manager';end;/
االمر باستخدام فهي الثانية الطريقة يتم delete(m)اما بل االخير من تحذف ال الطريقة وهذهوضعنا فلو حذف تريد الذي العناصر اي سابقا m=2اختيار فعال كما الجدول المدخالت وكانت
الموظف وهو الثاني العنصر حذف الكود samiسيتم وفيمايلي
134
الثانية الطريقة
declareempdel empnestedobj;beginSelect employee into empdelFrom jobnested where job_name='manager';Empdel.delete(2);update jobnested set employee=empdel where job_name='manager';end;/
المراجع
1-Oracle 8 Unleashed Second Edition – Sams2-Introduction to Oracle: SQL and PL/SQL Using
Procedure Builder (Electronic Presentation)19953-Oracle8 How-To4-Teach Yourself Oracle 8 In 21 Days
135