الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

من الصفر الى النهاية Oracle 10g /sql

رائج
بدأه saf aldeen في 11 مايو 2009 · 102 رد · 48,226 مشاهدة · في قسم لغة الاستفسارات SQL
مشاركة: واتساب X فيسبوك تيليجرام
#51

السلام عليكم

اقتباس
هل من الممكن تعديل أو إضافة أكثر من حقل في أمر واحد فقط؟؟؟

نعم يمكنك ذلك وذلك كالتالي

SQL> ALTER Table A add(spec varcha2(15),address varchar2(40));

تم تعديل هذه المشاركة بواسطة saf aldeen في 20 مايو 2009 في 00:57

لا اله الا الله العلي العظيم لا اله الا الله الحليم الكريم

لا اله الا الله وحده لا شريك له له الملك وله الحمد وهو على كل شي قدير

#52

عليكم السلام,,,

شكراً أخي الكريم على الإجابة...

وبإذن الله سنطبق لدرس اليوم ,,,

#53

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

تابع لدرس انواع الربط بين الجداول

الربط الغير متساوي Non-Equijoin

يستخدم لربط جدولين اوكثر لا توجد علاقة مباشرة بينهما حيث لا نستخدم اشارة = ولكن يوجد شرط معين ينطبق عليهما

مثال : جدول SALGRADE,EMP

SQL>SELECT EMP.ename , EMP.sal , SALGRADE.grade
FROM EMP , SALGRADE
WHERE EMP.sal Between SALGRADE.losal AND SALGRADE.hisal ;

حيث ان :

امر استعلام : SELECT

حقل اسم الموظف والراتب : EMP.ename , EMP.sal من جدول EMP

SALGRADE.grade : حقل الدرجة من جدول SALGRADE

WHERE : الشرط لحقل الراتب

Between SALGRADE.losal AND SALGRADE.hisal : بحيث يكون الراتب من جدول الموظفين بين اقل راتب واعلى راتب : من جدول SALGRADE

Outer joine الربط الخارجي

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

حيث نضيف اشارة (+) بجانب الحقل اللذي لاتظهر بياناته كاملة

طريق حلها : نقوم بربط الجدولين بالتساوي Equijoin

مثال

SQL> SELECT EMP.empno , EMP.ename , DEPT.deptno , DEPT.dname
FROM EMP , DEPT
WHERE EMP.deptno(+)= DEPT.deptno ;

حيث تظهر جميع ارقام القسم ما عدا القسم رقم 40 ولذلك وضعنا اشارة(+) عند الحقل الذي لايظهر فيه رقم القسم 40

Self join الربط الداخلي لنفس الجدول

هي علاقة بين حقلين في نفس الجدول مثل جدول EMP حيث هنالك علاقة بين حقل Empno و حقل Mgr

حتى ننشىء علاقة بين هذا النوع من الربط لابد من تقسيم الجدول

ونسمي الجدولين باسماء وهمية (مستعارة) لحظية وليست دائمة ويكون الشرط بالربط بالتساوي

/مثال

SQL> SELECT E.empno , E.ename , M.ename 
FROM EMP AS E , EMP AS M
WHERE E.mgr = M.empno ;

هنا تم تسمية الجدولين E , M ثم ربط الحقلين E.mgr = M.empno

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

ملاحظة :عملية الربط بين اكثر من جدولين تكون القاعدة كالتالي

جمل الشرط المستخدمة لربط الجداول بينهما معامل AND = عدد الجداول -1

تم بحمد الله الانتهاء من اوامر قسم DATA Definition Language (DDL)

ربنا تقبل منا انك انت السميع العليم

تم تعديل هذه المشاركة بواسطة saf aldeen في 22 مايو 2009 في 02:36

لا اله الا الله العلي العظيم لا اله الا الله الحليم الكريم

لا اله الا الله وحده لا شريك له له الملك وله الحمد وهو على كل شي قدير

#54

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

درس جديد

Data Manipulation Language (DML) اوامر قسم

وهي مختصة بجميع العمليات على البيانات فقط

INSERT INTO امر اضافة البيانات

وهي امر اضافة بيانات سجل اوعدة سجلات

الصيغة العامة

SQL> INSERT INTO اسم الجدول
(حقل2، حقل1.........)
VALUES(قيمة2، قيمة1........)
WHERE الشرط ;

شروط يجب التقيد بها

- يجب ان يكون عدد القيم التي سيتم ادخالها مساوية لعدد الحقول في الامر ومرتبة حسب الحقول

-عند ادخال قيم من نوع نص او تاريخ يجب وضعها بين علامة التنصيص

- NULLيجب ادخال قيم للحقول التي لا تقبل قيم فارغة

- يجوز عدم ذكرة الحقول في الامر ولكن يجب ادخال القيم مرتبة حسب حقول الجدول

1مثال

SQL> INSERT INTO DEPT (deptno,dname,loc)
VALUES(50,'Computer','Jordan') ;

مثال2

SQL> INSERT INTO DEPT (deptno,dname)
VALUES(50,'Computer');
ولم ندخل له قيمة وذلك لانه يقبل قيمة فارغة اي ليس له قيود حيث تلقائيا تصبح قيمة فارغةLOC هنا لم نذكر حقل

ومثال3 اضفة بيانات دون ذكر اسماء الحقول ولكن بشرط ادخال القيم مرتبة حسب ترتيب الحقول في الجدول

SQL>INSERT INTO DEPT VALUES(50,'Computer','Jordan') ;

SELECTمثال4 اضافة بيانات لجدول من جدول اخر باستخدام امر الاستعلام

SQL>INSERT INTO A(id,name,salary) SELECT empno,ename,sal
FROM EMP WHERE job='CLERK' ;

لاحظ ترتيب الحقول بين الجدول وامر الاستعلام وبنفس نوع البيانات

ملاحظة : يجب تطبيق الاوامر

بالتوفيق للجميع

ربنا تقبل منا انك انت السميع العليم

تم تعديل هذه المشاركة بواسطة saf aldeen في 22 مايو 2009 في 03:15

لا اله الا الله العلي العظيم لا اله الا الله الحليم الكريم

لا اله الا الله وحده لا شريك له له الملك وله الحمد وهو على كل شي قدير

#55

السلام عليكم استاذ

بارك الله فيك

#56

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

ماهي طريقة إنشاء قاعدة جديدة و كيفية التعامل معها من ناحية المستخدمين ؟

===

صورة
صورة

حسابي في الفيس بوك
http://goo.gl/XIzwL

حسابي في تويتر
http://goo.gl/6p4e3

 

 
 
#57

السلام عليكم

اقتباس
ماهي طريقة إنشاء قاعدة جديدة و كيفية التعامل معها من ناحية المستخدمين ؟

اخي فيصل هذا الموضوع لم نتطرق اليه بعد وله نصيب جيد من الدروس القادمة ان شاء الله

اما اذا كنت مضطر اليه كثيرا فارجو الرد

مع الاحترام

لا اله الا الله العلي العظيم لا اله الا الله الحليم الكريم

لا اله الا الله وحده لا شريك له له الملك وله الحمد وهو على كل شي قدير

#58

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

فقط من باب العلم بالشيء

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

===

صورة
صورة

حسابي في الفيس بوك
http://goo.gl/XIzwL

حسابي في تويتر
http://goo.gl/6p4e3

 

 
 
#59

السلام عليكم

ما تراه مناسباً فهو من وجهة نظرك انت واحترمها وكلامك منطقي اخي الكريم

اما انا فاني ارى غير ذلك لماذا لم ابدأ بانشاء المستخدمين والصلاحيات لدخول لانشاء قواعد البيانات

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

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

ولذلك نحن نتدرب على جداول اوراكل الافتراضية ولهذا الغرض انشأتها اوراكل للتدريب.

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

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

اشكرك على ملاحظاتك

تم تعديل هذه المشاركة بواسطة saf aldeen في 23 مايو 2009 في 14:30

لا اله الا الله العلي العظيم لا اله الا الله الحليم الكريم

لا اله الا الله وحده لا شريك له له الملك وله الحمد وهو على كل شي قدير

#60

السلام عليكم

كيف الحال استاذ

اريد ان اطرح سؤال عن الربط

قلت ان هناك اربعة انواع من الربط لكن انا درست احد الكتب في sql فوجدت ان هناك انواع اخرى مثل inner join فهل هذه غير مستعملة في الاوراكل ام لها استعمالات اخرى

#61

السلام عليكم

اقتباس
اريد ان اطرح سؤال عن الربط

قلت ان هناك اربعة انواع من الربط لكن انا درست احد الكتب في sql فوجدت ان هناك انواع اخرى مثل inner join فهل هذه غير مستعملة في الاوراكل ام لها استعمالات اخرى

اخي الربط بالتساوي Equijoin

هو نفسه inner join

ويسمى ايضاsimple join

تم تعديل هذه المشاركة بواسطة saf aldeen في 23 مايو 2009 في 14:53

لا اله الا الله العلي العظيم لا اله الا الله الحليم الكريم

لا اله الا الله وحده لا شريك له له الملك وله الحمد وهو على كل شي قدير

#62

بعد السلام

الله يعطيك العافية أخي الكريم على مجهودك و جزاك الله خيراً ...

وجب الملاحظات التالية :

saf aldeen كتب:
Truncate بتر الجدول

تقوم بحذف كافة الجدول ومساحة التخزين المستخدمه له ولا يمكن استعادته

SQL>Truncate Table A ;

ملاحظة

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

1- تعليمة Truncate لا تحذف الجدول أو المساحة المخصصة له ، و إنما تحذف السجلات جميعها بعدون إستدعاء Triggers و هي تعليمة DDL ولا يمكن التراجع عنها بواسطة flashback و لكن يمكنك إعادة البيانات الخاصة بالجدول عن طريق Log Miner ... ( مع مراعاة بعض الأمور الخاصة بـOnline Redo Log و archived logs ) ...

2- لأخي فيصل الحربي :

إذا كنت مستعجلاً لمعرفة إنشاء قواعد بيانات جديدة و المستخدمين يمكنك مراجعة الرابط : /index.ph...st&p=538789

.......................

بإنتظار المزيد منك أخي الكريم saf aldeen ...

تم تعديل هذه المشاركة بواسطة م. حسام فيصل في 24 مايو 2009 في 13:16

#63

السلام عليكم

بارك الله بك اخي حسام

ومشكور على متابعتك وتزويدنا بملاحظاتك

لا اله الا الله العلي العظيم لا اله الا الله الحليم الكريم

لا اله الا الله وحده لا شريك له له الملك وله الحمد وهو على كل شي قدير

#64

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

بارك الله فيكم

فعلا أخي

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

واصل بارك الله بك

وأشكرك أخي حسام فيصل على الرابط

===

صورة
صورة

حسابي في الفيس بوك
http://goo.gl/XIzwL

حسابي في تويتر
http://goo.gl/6p4e3

 

 
 
#65
م. حسام فيصل كتب:
1- تعليمة Truncate لا تحذف الجدول أو المساحة المخصصة له ، و إنما تحذف السجلات جميعها بعدون إستدعاء Triggers و هي تعليمة DDL ولا يمكن التراجع عنها بواسطة flashback و لكن يمكنك إعادة البيانات الخاصة بالجدول عن طريق Log Miner ... ( مع مراعاة بعض الأمور الخاصة بـOnline Redo Log و archived logs ) ...

هل هناك فرق بين ال flashback وRollback أم ان التعليمتين لهما نفس العمل ؟؟

من الواضح من كلام الاخ حسام ان تعليمة Truncate لايمكن التراجع عنها وأن تعليمات ال DML هي التي يمكن التراجع عنها من خلال تعليمة Flashback ولكن سؤالي هو كالاتي

ان قمت بادخال اكثر من تعليمة DML كاضافة ومن ثم تعديل ومن ثم حذف علي تيبل معين ومن ثم رغبت بعمل Flashback لاخر عملية وهي الحذف هل يمكن فعل ذلك مع الحفاظ علي اول عمليتين وهما الاضافة والتعديل ؟؟؟ علما بأنني جربت التعليمة بعد هذه العمليات واعطتني نتائج بالتراجع عن كل العمليات التي قمت بها !!! ارجو ان يكون واضح ما اقول

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

#67
أبوأمل كتب:
هل هناك فرق بين ال flashback وRollback أم ان التعليمتين لهما نفس العمل ؟؟

الفرق شاسع : Rollback للتراجع عن مناقلة Transaction لم تقم بتبيتها ( Commit ) ( المناقلة هي مجموعة تعليمات DML ) أما Falshback فهي مفهوم لإعادة جدول ما إلى حالة سابقة مثلاً : قبل حذف أو تعديل أو إدخال بيانات (مع التثبيت Commit ) أو حذف الجدول كاملاً ....... إلخ .

#68

مشكور يا اخ حسام علي ردك علي السؤال الاول

ولكن ماذا عن سؤالي الثاني ؟؟

ان قمت بادخال اكثر من تعليمة DML كاضافة ومن ثم تعديل ومن ثم حذف علي تيبل معين ومن ثم رغبت بعمل Flashback لاخر عملية وهي الحذف هل يمكن فعل ذلك مع الحفاظ علي اول عمليتين وهما الاضافة والتعديل ؟؟؟ علما بأنني جربت التعليمة بعد هذه العمليات واعطتني نتائج بالتراجع عن كل العمليات التي قمت بها !!! ؟؟

#69

السلام عليكم

اسعدني حقيقةً وجود متابعين جدد كالاخ ابو امل والاخ Wise والاستفسارات بين الاخوة الكرام ومشكور اخ حسام فيصل على ردودك.

بس اود ان اتكلم ببعض الملاحظات:

اخواني الدروس التي طرحت من قبلي متسلسلة حسب المواضيع وتعليمة ROLLBACK لم نشرحها بعد ورأيت نقاش حول هذه التعليمة

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

واكرر انني سعيد جدا لرؤيتي للمشاركات الجديدة والحوارات الجديدة وتفاعلكم.

عذراً اخواني على تأخري في طرح الدروس ولكن كنت مشغول قليلا فانتظروا المزيد قريبا.

مع خالص احترامي للجميع

لا اله الا الله العلي العظيم لا اله الا الله الحليم الكريم

لا اله الا الله وحده لا شريك له له الملك وله الحمد وهو على كل شي قدير

#70

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

بارك الله فيك أخي saf aldeen

ومنتظرين منك المزيد,,,

لك خالص الشكر والإحترام

#71

السلام عليكم

تابع للدرس الماضي

اضافة بيانات باستخدام المتغيرات البديلة Substitution Variables

حيث تقوم بتخزين القيم تخزينا مؤقتا ويتم تعريفها قبل المتغير ونعبر عنها بالاشارة التالية &

وعند التنفيذ تظهر رسالة تطلب منك ادخال القيمة

مثال

SQL> INSERT INTO dept VALUES (&deptno,&dname,&loc);

التنفيذ

Enter value for deptno: 50 قيمة الادخال
Enter value for dname: 'Computer' قيمة الادخال
Enter value for loc: 'Jordan' قيمة الادخال

وعند اعادة التنفيذ من جديد تظهر الرسالة السابقة تطلب منك ادخال قيم من جديد

ملاحظة : الادخال للنصوص والتاريخ يكون بين علامة التنصيص

تم تعديل هذه المشاركة بواسطة saf aldeen في 28 مايو 2009 في 23:19

لا اله الا الله العلي العظيم لا اله الا الله الحليم الكريم

لا اله الا الله وحده لا شريك له له الملك وله الحمد وهو على كل شي قدير

#72

السلام عليكم

درس جديد

UPDATE التعديل على البيانات

الصيغة العامة

SQL> UPDATE اسم الجدول
SET القيمة = الحقل1,
القيمة = الحقل2,
.............
............

WHERE الشرط;

ملاحظات يجب التقيد بها عند كتابة امر التعديل على البيانات

-يجب ان يكون نوع البيانات للقيمة الجديدة من نفس نوع بيانات الحقل المراد التعديل فيه

- الحذر عند كتابة الشرط لتحديد السجلات التي سيتم التعديل عليها

- اذا لم يتم وضع جملة الشرط سوف يتم التعديل على كافة السجلات

مثال : التعديل على حقل واحد فقط

SQL> UPDATE dept
		SET dname= 'Networks'
		WHERE deptno=50;

حيث ان

UPDATE dept : امر التعديل على جدول الاقسام

SET dname= 'Networks' :اسناد قية التعديل الجديدة على حقل اسم القسم

WHERE deptno=50 : الشرط فقط على القسم رقم 50

مثال التعديل على اكثر من حقل في نفس الجدول

SQL> UPDATE emp
SET ename='your name' ,
	  job = 'Glo Manager' ,
	  hiredate='02-MAY-09'
WHERE deptno = 1111;

مثال

التعديل على البيانات باستخدام امر الاستعلام SELECT

SQL> UPDATE emp
SET (job,deptno)= (SELECT job,deptno FROM emp WHERE ename='WARD')
WHERE ename='BLAKE';

اولا يتم الاستعلام عن حقل الوظيفة ورقم القسم من جدول الموظفين للموظف الي اسمه WARD

النتيجة تكون مسندة للجملة التالية = SET (job,deptno)

لاحظ الحقول في جملة الاستعلام مرنبة بترتيب حقول امر الاسناد

الشرط في نهاية الامر التعديل فقط على الموظف الذي اسمه BLAKE

ملاحظة : لايمكن التعديل على حقل مفتاح رئيسي مباشرة له علاقة مع حقل مفتاح اجنبي في جدول اخر

طريقة الحل بين جدول EMP , DEPT

نعدل على حقل المفتاح الاجنبي في جدول الموظفين بجعل قيمته NULL

للقسم رقم 30 مثلاً

نجري عملية التعديل على المتاح الرئيسي للقسم رقم 30 في جدول الاقسام برقم قسم جديد

نجري عملية التعديل على حقل المفتاح الاجنبي قي جدول الموظفين للقيمة NULL

برقم القسم الجديد

وهذا نشاط (واجب) مطلوب الحل منكم اخواني وانتظر الردود منكم

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

درس جديد

حذف البيانات (السجلات) : DELETE FROM

الصيغة العامة

SQL> DELETE FROM اسم الجدول
WHERE الشرط ;
يجب الحذر عند كتابة جملة الشرط اذا لم نضع جملة الشرط سوف يتم حذف كافة السجلات

مثال1

SQL> DELETE FROM emp WHERE deptno=10;
WHERE ename='SMITH';
WHERE hiredate='02-JAN-81';
WHERE comm is NULL; لاحظ انه لايتم المساواه بين العمولة والقيمة لانه لايجوز ذلك في الشرط 
WHERE comm = NULL لا يجوز ان نضع مساواه في حالة 
هنا استخدمت اكثر من شرط فقط للتوضيح

مثال2:حذف بيانات باستخدام جملة الاستعلام

SQL> DELETE FROM emp WHERE deptno=(SELECT deptno FROM dept WHERE dname='SALES');

مثال3

SQL> DELETE FROM dept WHERE deptno = 10 ;
هنا لايتم الحذف لان الحقل مفتاح رئيسي وله ارتباط مع جدول الموظفين وسوف تظهر رسالة خطأ تخبرك بأنه تم انتهاك قيد والسبب يعود لوجود بيانات في جدول الموظفين لرقم القسم 10 فما هو الحل كالتالي
نحذف رقم القسم 10 من جدول الموظفين كونه مفتاح اجنبي
ثم نحذف رقم القسم 10 من جدول الاقسام

SQL> DELETE FROM dept WHERE deptno=40;
الجملة صحيحة 100 % رغم ان الحقل مفتاح رئيسي وله ارتباط مع جدول الموظفين لماذا اخواني ؟؟

الجواب مطلوب منكم اخواني اصبح لديكم انشطه عدد 2 وبانتظار الردود

بحمد الله

تم الانتهاء من قسم DML

ربنا تقبل منا انك انت السميع العليم

تم تعديل هذه المشاركة بواسطة saf aldeen في 29 مايو 2009 في 03:17

لا اله الا الله العلي العظيم لا اله الا الله الحليم الكريم

لا اله الا الله وحده لا شريك له له الملك وله الحمد وهو على كل شي قدير

#73

ماشاء الله تبارك الله ،،

ترتيب جميل وعرض رائع اخي سيف الدين

اكمل بارك الله فيك

وبالنسبة لأسئلة الشباب لموضوع Roolback & Savepoints اتركك معها لإجابتهم عليها

بالتوفيق ،،

#74

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

بارك الله فيك أخي على هذا المجهود الكبير,,,

جعلة الله في ميزان حسناتك

منتظرين المزيد من شرحك المميز,,,

لك خالص التحية والإحترام

#75

اجابة السؤال الاول

update emp set deptno = null where deptno = 30;

update dept set deptno = 50 where deptno = 30;

update emp set deptno = 50 where deptno is null;

اجابة السؤال الثاني

يتم حذف هذا القسم لانه لا يوجد اي موظف يعمل في هذا القسم و الله اعلم

و شكرا استاذ نحن متابعين للدروس ان شاء الله

مواضيع مشابهة