أوراكل ( Oracle )

الحالة
مغلق و غير مفتوح للمزيد من الردود.

المهندس المسلم.

مشرف سابق
إنضم
5 يوليو 2005
المشاركات
680
مجموع الإعجابات
10
النقاط
0
التعريف بأوراكل


أولاً : ما هى أوراكل :

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

مميزات أوراكل :-

1 - سرية المعلومات ، حيث يتوفر نظام لحماية المعلومات يتفوق من الناحية البنائية على الأنطمة الأخرى للشركات المنافسة .

2 - التعامل مع حجم كبير من البيانات يصل إلى ملايين من الميغا بايت .

3 - الدعم الممتاز الذي تقدمه الأوراكل للمستخدمين فى جميع أنحاء العالم عن طريق موقعها على الانترنت .

4 - تعد أقوى أداه في مجال التجارة الإلكترونية وذلك بسبب التكامل الكبير مع لغة الجافا .

وتعتمد أوراكل في برمجتها على :-

1 - لغة SQL - Structured Query Lanaguage في البرمجة لقواعد بيانات اوراكل . و هى لغة استفسار بنائية .

واللغة SQL هي لغة تدعمها جميع للغات البرمجة سواء C او VB او Java وغيرها ,ومن خلالها تستطيع الوصول إلى البيانات المخزنة وإجراء العمليات عليها ( إضافة – تعديل – حذف ) في جداول تم تصميمها من خلال احد التطبيقات التي نستخدمها .

2 – لغة PL/SQL فى كتابة البرامج والـ Functions الخاصة فهى لغة الاستفسار الإجرائية مثل ولها قواعد مثل اي لغة أخرى .

3 – يمكن استدعاء روتينيات Procedures مكتوبة بلغات أخرى مثل Java – C .

ما هى أهم أدوات أوراكل Oracle Developer ؟

- أداة لإنشاء النماذج Forms .

- أداة لإنشاء التقارير Reports .

- أداة لإنشاء الرسومات البيانية Graphics .

- أداة للبحث فى قواعد البيانات Query .

- أداة لعمل البرمجيات Procedure and function


وتطور أوراكل أدواتها بإستمرار لخدمة المستخدمين فهناك منتجات مساعده مثل Jdeveloper الذى يعمل مع مع ORACEL9i ويعتمد في برمجته على تقنية Object Oriented و الجافا كما صدر مؤخراً الإصدار Oracle 10g ليمثل ثورة حقيقية فى اسلوب ربط السيرفرات والعمل في بيئة أكثر سهولة من حيث متطلبات الـ Data Base Administrator

ماذا أفعل لتعلم الأوراكل ؟

1 – يجب أن تتقن لغة SQL

2 – تعلم لغة PL SQL

3 – تعلم كيفية استخدام أدوات أوراكل لعمل التطبيقات مثل إنشاء النماذج والتقارير والرسومات البيانية بواسطة Oracle Developer .

4 – لابد أن يتم ذلك عن طريق مدرس أو مركز متخصص ، حيث لايجدى التعليم الذاتى لاوراكل .

5 – لابد من الاعتماد على النفس فى إنشاء تطبيق ولو صغير بإستخدام أوراكل .

6 – متابعة مواقع الانترنت التى تهتم بشرح المشاكل التعى تواجه المستخدمين وتعرض Procedures مجانية .

7 – متابعة الأدوات والإصدارات المتلاحقة لشركة أوراكل .

.. وهذا الرابط لبعض الكتب التعليمية لأوراكل

http://download-west.oracle.com/docs/cd/A9.../q20102/toc.htm

وأتمنى من الله أن أكون قد وفقت فى إعطاء نبذه مختصره عن نظام قواعد البيانات أوراكل .
 

المهندس المسلم.

مشرف سابق
إنضم
5 يوليو 2005
المشاركات
680
مجموع الإعجابات
10
النقاط
0
جزاك الله كل خير أخي الكريم المهندس عبدالمنعم على هذا الكلام الطيب المبارك وجعلع الله أيضاً في ميزان حسناتك وحسنات أمة الحبيب محمد صلى الله عليه وسلم.
والسلام عليكم ورحمة الله تعالى وبركاته.
 

المهندس المسلم.

مشرف سابق
إنضم
5 يوليو 2005
المشاركات
680
مجموع الإعجابات
10
النقاط
0
......مقدمة قواعد بيانات......

مقدمة قواعد بيانات

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

وفي هذا الدرس سوف نتعلم كيفية التعامل مع oracle SQL وفي البداية سنتعلم كيفية فتح SQL Plus

وإليكم هذا الملف المرفق فيه الموضوع.
 

المرفقات

  • ظ…ظ‚ط¯ظ…ط© ظ‚ظˆط§ط¹ط¯ ط¨ظٹط§ظ†ط§طھ.doc
    115 KB · المشاهدات: 2,025

المهندس المسلم.

مشرف سابق
إنضم
5 يوليو 2005
المشاركات
680
مجموع الإعجابات
10
النقاط
0
بسم الله الرحمن الرحيم

إخواني الأعزاء/السلام عليكم ورحمة الله تعالى وبركاته.

سأقوم بطرح سلسلة تعلم الأوراكل من الصفر وتلك السلسة عباره عن ملفات pdf لأحد الأصدقاء لي وبعد إنهاء تلك الملفات سأبدأ معكم بأكمال شرح كل ما يتعلق بالأوراكل في موضوع (التعريف بأوراكل)والله المستعان إن شاء الله.

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

وجزاكم الله كل خير وعافيه
 

المهندس المسلم.

مشرف سابق
إنضم
5 يوليو 2005
المشاركات
680
مجموع الإعجابات
10
النقاط
0
بسم الله الرحمن الرحيم

الجزء الأول من سلسلة تعليم الأوراكل من الصفر
 

المرفقات

  • part1.pdf
    137.2 KB · المشاهدات: 4,148

المهندس المسلم.

مشرف سابق
إنضم
5 يوليو 2005
المشاركات
680
مجموع الإعجابات
10
النقاط
0
الجزء الثاني من سلسلة تعليم الأوراكل من الصفر.​
 

المرفقات

  • part2.pdf
    98.2 KB · المشاهدات: 2,981

المهندس المسلم.

مشرف سابق
إنضم
5 يوليو 2005
المشاركات
680
مجموع الإعجابات
10
النقاط
0
الجزء الثالث من سلسلة تعليم الأوراكل من الصفر.
 

المرفقات

  • part3.pdf
    105.3 KB · المشاهدات: 2,904

المهندس المسلم.

مشرف سابق
إنضم
5 يوليو 2005
المشاركات
680
مجموع الإعجابات
10
النقاط
0
الجزء الرابع من سلسلة تعليم الأوراكل من الصفر.
 

المرفقات

  • part4.pdf
    185.6 KB · المشاهدات: 3,012

المهندس المسلم.

مشرف سابق
إنضم
5 يوليو 2005
المشاركات
680
مجموع الإعجابات
10
النقاط
0
الجزء الخامس من سلسلة تعليم الأوراكل من الصفر.
 

المرفقات

  • part5.pdf
    131.7 KB · المشاهدات: 2,867

المهندس المسلم.

مشرف سابق
إنضم
5 يوليو 2005
المشاركات
680
مجموع الإعجابات
10
النقاط
0
السلام عليكم ورحمة الله تعالى وبركاته.
أخي الكريم بارك الله لك وجزاك الله كل خير وعافيه ولك أيضاً مادعيت.
 

المهندس المسلم.

مشرف سابق
إنضم
5 يوليو 2005
المشاركات
680
مجموع الإعجابات
10
النقاط
0
الجزءالسادس من سلسلة تعليم الأوراكل من الصفر.
 

المرفقات

  • part6.pdf
    100.3 KB · المشاهدات: 2,365

المهندس المسلم.

مشرف سابق
إنضم
5 يوليو 2005
المشاركات
680
مجموع الإعجابات
10
النقاط
0
الجزءالسابع من سلسلة تعليم الأوراكل من الصفر.
 

المرفقات

  • part7.pdf
    115.3 KB · المشاهدات: 2,492

المهندس المسلم.

مشرف سابق
إنضم
5 يوليو 2005
المشاركات
680
مجموع الإعجابات
10
النقاط
0
جزانا وإياكم كل خير وعافيه وجعل الله هذا العمل والدعاء في ميزان حسناتك وميزان حسنات أمة الحبيب محمد صلى الله عليه وسلم وأنا في الخدمة دائماً إن شاء الله.
والسلام عليكم ورحمة الله تعالى وبركاته.
 

المهندس المسلم.

مشرف سابق
إنضم
5 يوليو 2005
المشاركات
680
مجموع الإعجابات
10
النقاط
0
دورة Sql [الدرس الأول] : مقدمة في قواعد البيانات

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

الشيء الذي لن تستطيع تجاهله عند تعلم قواعد البيانات هو لغة الاستفسار او الاستعلام و التي يعبر عنها بـ SQL ، فما هي الـ SQL ؟

SQL اختصار لـ Structured Query Language
SQL لغة ANSI قياسية
SQL تسمح لك بالوصول إلى قواعد البيانات ومن ثم التعامل معها
SQL تسمح لك باستخراج معلومات من قواعد البيانات
SQL تمكنك من إضافة سجل جديد إلى قاعدة البيانات
SQL تمكنك من حذف سجل من قاعدة البيانات
SQL تمكنك من تحديث سجل في قاعدة البيانات
SQL سهلة التعلم جداً جداً جداً

ماذا يعني أن لغة SQL هي لغة ANSI قياسية ؟

ANSI هي اختصار لـ (American National Standards Institute) ، اعتمد هذا المعهد لغة الـSQL لجعلها قياسية في التعامل مع جميع قواعد البيانات .

SQL تعمل مع جميع برامج قواعد البيانات مثل : ( MS Access, DB2, Informix, MS SQL Server, Oracle, Sybase, وغيرها ) .

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

الجداول و قاعدة البيانات :

قاعدة البيانات دائماً تتكون من جدول أو أكثر ، لكل جدول اسم خاص به ، في كل جدول صفوف وأعمدة ، كل صف يمثل سجل في قاعدة البيانات وكل عمود يمثل حقل .
مثال : جدول الموظفين التالي - أحد الجداول التي سنعتمدها خلال الدورة إن شاء الله - :

10921_1145712128.bmp

الجدول السابق يحتوي أربع سجلات ( سجل لكل موظف ) وستة حقول وهي على الترتيب : ( الاسم الأول ، الاسم الأخير ، رقم الموظف ، عنوانه ، يوم ميلاده ، رقم القسم الذي يعمل فيه - DNO = Department_Number- ) .


لا بد أن يكون لكل جدول هام حقل مميز ، بحيث أن قيمة هذا الحقل في سجل ما داخل هذا الجدول يستحيل أن تتساوى مع قيمة نفس الحقل لسجل آخر في نفس الجدول .. هذا الحقل نطلق عليه المفتاح الرئيسي أو Primary Key ، ولعلك تتساءل الآن : ما فائدة المفتاح ؟

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

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

سيساعدك العرض الفلاشي التالي إن شاء الله في فهم الموضوع بطريقة أكثر تنظيماً وعمقاً ، يوضح هذا العرض الثلاث جداول التي سنعتمدها خلال الدورة إن شاء الله والعلاقات فيما بينها ، هذه الجداول تابعة لقاعدة بيانات إحدى الشركات ، هذه الشركة لها قسمين ( 5و 4 ) وفي كل قسم يوجد مشاريع خاصة يعمل فيها الموظفون :

والآن نأتي للجزء الاكثر متعة في درس اليوم" الجزء العملي " : سننشيء معاً في الآكسس الآن معاً الجداول والعلاقات التي سيتم عليها شرح الدورة وطلب تنفيذ الواجبات ، على مرحلتين :

وصف الجداول وبيانات كل جدول

إنشاء الجداول والعلاقات خطوة بخطوة على الآكسس


أولاً : وصف الجداول وبيانات كل جدول :

سندرس الإس كيو إل على هذه الثلاث جداول إن شاء الله :

الجدول الأول جدول الموظفين EMPLYEE ، وهو الجدول الذي تحدثنا عنه قبل قليل ، مع ملاحظة ان الحقل NUMBER يعتبر المفتاح Primary Key لهذا الجدول .

الجدول الثاني هو جدول المشروع PROJECT وحقوله كالتالي، مع ملاحظة ان الحقلان PNUMBER & DNUM كل منهما عبارة عن مفتاح Primary Key لهذا الجدول :

10921_1145712627.bmp

الجدول الثالث هو جدول العمال WORKS_ON وحقوله كالتالي :

10921_1145712756.bmp

ثانياً : إنشاء الجداول والعلاقات خطوة بخطوة على الآكسس :

افتح برنامج الآكسس التابع للأوفيس ، ثم اطلب قاعدة بيانات جديدة باتباع المسار التالي : File Blank DataBase

ثم سمّي قاعدة البيانات هذه SQLDB مثلاً .

الآن نأتي إلى إنشاء الجداول وحداً تلو الآخر وتحديد المفاتيح فيها وتكوين العلاقات بينها ، كما يوضح العرض الفلاشي التالي :

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

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


10921_1145713054.jpg
 

المهندس المسلم.

مشرف سابق
إنضم
5 يوليو 2005
المشاركات
680
مجموع الإعجابات
10
النقاط
0
دورة SQL [الدرس الثاني] : الأوامر Create, Delete & Alter

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

تعرفنا في الدرس الأول على لغة السيكيول وإمكانياتها ، وأنشأنا سوياً قاعدة البيانات التي سنطبق عليها دورتنا :) .

اليوم سنبدأ بالإبحار الفعلي في لغة الاستعلامات ( السيكيول SQL ) وسنتعلم كيف ننشئ قاعدة بياناتنا بأوامرSQL :

قواعد اللغة :

لغة SQL لاتفرق بين الحروف الكبيرة والصغيرة .
لغة SQL لاتهتم بالمسافات البيضاء .
تنتهي جميع الاستعلامات بالفاصلة المنقوطة (;) بعض البرامج لا تشترط وجود هذه الفاصلة وبعضها يوجب وجودها .


تدشين قاعدة بيانات وإنشاء الجداول في السيكيول SQL Create Database and Table :

لإنشاء قاعدة بيانات : نستخدم هذا الأمر :

كود:
CREATE DATABASE [COLOR="Magenta"]database_name[/COLOR];

ولإنشاء جداول فيها ، نستخدم هذا الأمر :

CREATE TABLE table_name OR CREATE TABLE database_name.table_name ( column_name1 data_type, column_name2 data_type, ....... );

نلاحظ أننا :

نستخدم الأقواس لتعريف حقول الجدول بداخلها .

نستخدم الفاصلة (،) للفصل بين الحقول .

ونستخدم الفاصلة المنقوطة (؛ ) بعد إغلاق أقواس تعريف الحقول ، أي بعد الانتهاء من الأمر تماماً ..

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


أما أنواع البيانات (data type) التي يمكن أن تحتويها حقول الجداول في السيكيول فهي كما موضحة في الجدول التالي :

كود:
[COLOR="Red"]Data Type [/COLOR]نوع البيان
 [COLOR="red"]Description[/COLOR] الوصف
 
[COLOR="DarkOrange"]integer(size)
int(size)
smallint(size)
tinyint(size) [/COLOR]
 
لتعريف أعداد صحيحة ، عدد خانات العدد يمكن أن نحدده بين القوسين ، نطاق الأعداد التي يمكن تعريفها هنا يبدأ من (-2147483648) إلى (2147483647) والنطاق المستخدم في الواقع من الصفر إلى 4294967295 . 

Hold integers only. The maximum number of digits are specified in parenthesis.
 
[COLOR="darkorange"]decimal(size,d)
numeric(size,d) [/COLOR]

 لتعريف الأعداد ذات الكسور العشرية ،داخل القوسين نحدد في المتغير الأول أكبر عدد لخانات الرقم الصحيح ، وفي المتغير الثاني نحدد عدد الخانات العشرية بعد الفاصلة .
  
Hold numbers with fractions. The maximum number of digits are specified in "size". The maximum number of digits to the right of the decimal is specified in "d".
 
[COLOR="darkorange"]char(size)[/COLOR] 

لتعريف نص ذو حجم محدد ، نحدد الحجم داخل القوسين .. هذه الجمل من الممكن أن تتكون من أحرف وأرقام وعلامات

Holds a fixed length string (can contain letters, numbers, and special characters). The fixed size is specified in parenthesis.
 
[COLOR="darkorange"]varchar(size) [/COLOR]

لتعريف نص ذو حجم متغير ، نحدد أكبر حجم ممكن لها داخل الأقواس .. هذه الجمل من الممكن أن تتكون من أحرف وأرقام وعلامات . 

Holds a variable length string (can contain letters, numbers, and special characters). The maximum size is specified in parenthesis.
 
[COLOR="darkorange"]text[/COLOR] 

لتعريف حقل نص يستقبل 65535 حرف كحد أقصى 
 
A field with a maximum lenght of 65535 ,(2^16-1), characters.
 
[COLOR="darkorange"]mediumtext [/COLOR]
لتعريف حقل نص يستقبل 16777215 حرف كحد أقصى 

A field with a maximum lenght of 16777215 ,(2^24-1), characters.
 
[COLOR="darkorange"]date(yyyymmdd)
date[/COLOR] 

 لتعريف تاريخ ، أكبر حجم نستطيع تحديده داخل القوسين هو عشرة خانات : أربع للعام واثنان للشهر واثنان لليوم وخانتان للفواصل بين البيانات ، والنطاق المسموح به هنا من 1000-01-01 إلى 9999-12-31 
Holds a date.

[COLOR="darkorange"]timestamp(yyyynnddhhmmss)[/COLOR] 
 
 يحتوي على التاريخ والتوقيت ، نطاقه يبدأ من "1970-01-01-00:00:00" وهي تقابل (January .1,1970 00:00:00) وينتهي النطاق بـ "2038-01-18-19:14:07" 

include both the Date & Time.

مثال :

في المثال التالي سنستعرض كيفية إنشاء جدولانا الثاني ( جدول المشاريع PROJECT) والثالث ( جدول العمل WORKS_ON ) كالتالي :

كود:
CREATE TABLE PROJECT ( [COLOR="magenta"]PNAME varchar(15) , PNUMPER int(2) NOT NULL, DNUM int NOT NULL[/COLOR] );

/* تذكر ان آخر سطر في تعريف حقول الجدول لا ينتهي بفاصلة ، لأن القوس سيغلق بعده */ 
 
 CREATE TABLE [COLOR="magenta"]WORKS_ON ([/COLOR] [COLOR="magenta"]ENUMBER int(2) NOT NULL, PNO int(2) NOT NULL, HOURS decimal[/COLOR](3,1) );

إذا كان الحقل مفتاحاً ، فمن الضروري أن لا يكون خالياً ، لذلك نشترط ونضع حدود عليه بكلمة NOT NULL ، وفي حالة لم يدخل له المستخدم قيمة حين إدخال البيانات إلى الجدول فإن رسالة خطأ ستظهر له ، أو ستعتمد القيمة الـDefault في هذا الحقل إذ لا يترك فارغاً دون قيمة .. تذكر دوماً ان تستخدم NOT NULL مع تعريف الحقل إذا كان مفتاحاً !!

حذف قاعدة بيانات أو جدول Delete a Database or Table :

لحذف قاعدة بيانات كامل نستخدم الأمر التالي " كن حذراً عند استخدامك له ، فقد تفقد الكثير من البيانات " :

كود:
DROP DATABASE [COLOR="magenta"]database_name[/COLOR];

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

كود:
DROP TABLE [COLOR="Magenta"]table_name[/COLOR];

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

كود:
DROP TABLE EMPLOYEE CASCADE;

إضافة أو حذف حقل لجدول موجود في قاعدة البيانات Alter Table Command:

لإضافة أو حذف حقل في أي جدول موجود لدينا في قاعدة البيانات ، نستخدم أحد الأمرين التاليين :

كود:
/* أمر إضافة حقل : */

ALTER TABLE [COLOR="magenta"]table_name [/COLOR]ADD [COLOR="magenta"]column_name data_type[/COLOR];

/* أمر حذف حقل : */
 
ALTER TABLE [COLOR="magenta"]table_name [/COLOR]DROP [COLOR="magenta"]COLUMN column_name [/COLOR]CASCADE;

[COLOR="magenta"]OR[/COLOR]  
 
ALTER TABLE [COLOR="magenta"]table_name [/COLOR]DROP [COLOR="magenta"]column_name[/COLOR] CASCADE;

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

مثال :

لإضافة حقل جديد إلى جدوال العمل ، وليكن اسم هذا الحقل Location ، نستخدم الأمر التالي :

كود:
ALTER TABLE [COLOR="Magenta"]WORKS_ON[/COLOR] ADD Location VARCHAR(12);
 

المهندس المسلم.

مشرف سابق
إنضم
5 يوليو 2005
المشاركات
680
مجموع الإعجابات
10
النقاط
0
دورة SQL [الدرس الثالث : الجزء الأول] : الأمر Select ... From ... Where

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

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

الأمر SELECT - SELECT Statement :

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

كود:
SELECT column_name(s)
FROM table_name;

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

كود:
SELECT FNAME , LNAME
FROM EMPLOYEE;

والنتيجة هي :

10921_1146187105.jpg

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

كود:
SELECT DISTINCT DNO
FROM EMPLOYEE;

والنتيجة هي :

10921_1146187154.jpg

أعطانا أرقام الأقسام بدون تكرار :)

إذن كلمة DISTINCT تستخدم مع الأمر SELECT لاسترجاع أو استخراج القيم المختلفة ، وعليه تكون صياغة الأمر كالتالي :

كود:
SELECT DISTINCT column-name(s) FROM table-name;

وأما إذا كنّا نريد استخراج جميع الحقول من جدول محدد أو من عدة جداول ، فليس علينا ان نكتب جميع أسماء الحقول أو الأعمدة ، بل يكفي فقط أن نضع النجمة (*) ليعطينا جميع الحقول ، مثال :

كود:
SELECT * FROM EMPLOYEE;

والنتيجة تكون :

10921_1146187187.jpg

وإذا كنّا نريد أن تظهر لنا النتائج مرتبة ترتيباً أبجدياً أو تصاعدياً أو أبجدي بطريقة عكسية أو تنازلي .. نستخدم كلمة ORDER BY في آخر أمر SELECT ،ونضع بعدها اسم السجل ( العمود ) الذي نريد أن تظهر لنا النتيجة مرتبة من خلاله ، الجدول التالي يوضح أوامر الترتيب الممكنة في SQL :

كود:
[COLOR="DarkRed"][COLOR="DarkOrange"]صيغة الأمر[/COLOR]   [COLOR="darkorange"]وظيفته[/COLOR] 

[COLOR="Red"]ORDER BY columnX[/COLOR]

 تكون الصفوف( السجلات) في جدول النتيجة مرتبة ترتيباً أبجدياً أو تصاعدياً بالنسبة لقيم العمود X . 

[COLOR="red"]ORDER BY columnX DESC[/COLOR]

 تكون الصفوف( السجلات) في جدول النتيجة مرتبة ترتيباً أبجدياً عكسياً أو تنازلياً بالنسبة لقيم العمود X . 

من الممكن ان نطلب الترتيب في اكثر من حقل (عمود) واحد ، فتأتينا النتيجة مرتبة على حسب قيم الحقل الأول ومن ثم تنتقل لترتيب قيم الحقل الثاني في ظل ترتيب الحقل الأول ،[COLOR="red"] مثال[/COLOR] :

[COLOR="red"] SELECT * FROM EMPLOYEE
ORDER BY FNAME, DNO DESC;[/COLOR][/COLOR]

والنتيجة ستكون عبارة عن جدول ترتبت فيه قيم حقل FNAME أبجدياً من ثم ترتبت فيه قيم حقل DNO تنازلياً في ظل الترتيب الأبجدي الأول !! كما توضح الصورة :

10921_1146187243.jpg

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

كود:
SELECT HOURS+2 AS New_Hours
FROM WORKS_ON;

والنتيجة هي :

10921_1146187300.jpg

استخدمنا AS لإعادة تسمية الحقل عند عرض النتيجة فقط ، ولا يؤدي ذلك إلى تغيير اسم الحقل الأساسي في الجدول !!

الشرط WHERE Clause :

الشرط هو أحد أجزاء الأمر SELECT ، نستخدمه حينما نريد استرجاع قيم معينة ومحددة من أي حقل ، لا جميع القيم الموجودة في الحقل وإنما القيم التي نريدها وفق المعايير التي نحددها في الشرط ، صيغته كالتالي :

كود:
  SELECT columnX FROM table
WHERE columnY operator value;

من الممكن أن يكون columnX هو نفسه columnY ومن الممكن ان يكون حقل مختلف تماماً ولكن في نفس الجدول ، والعمليات التي نستخدمها في الشرط هي :

كود:
[COLOR="DarkOrange"]Operator العملية[/COLOR]  Description [COLOR="darkorange"]وصفها[/COLOR]   

[COLOR="Red"]=[/COLOR]

 Equal يساوي 
 
[COLOR="red"]<>[/COLOR]

 Not equal لا يساوي   

[COLOR="red"]<[/COLOR]

 Greater than أكبر من 
 
[COLOR="red"]>[/COLOR]

 Less than أصغر من  

[COLOR="red"]=<[/COLOR]


 Greater than or equal أكبر من أو يساوي 
 
[COLOR="red"]=>[/COLOR]

 Less than or equal أصغر من أو يساوي 

[COLOR="red"]BETWEEN[/COLOR]

 Between an inclusive range بين قيمتين 

[COLOR="red"]LIKE[/COLOR]

 Search for a pattern للبحث عن تشابة

مثال :

كي نستخرج السجلات كاملة لجميع الموظفين الذين يشتركون في اسم " محمد " :

10921_1146187348.jpg

كود:
  SELECT *
FROM EMPLOYEE
WHERE FNAME = 'محمد';

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

وهكذا بالنسبة للعمليات الاعتيادية ذات اللون الاسود في الجدول ، أما طريقة استخدام كلمة BETWEEN & LIKE ففي الشرط فسنتعرف عليها إن شاء الله في الجظء الثاني من هذا الدرس . :)

ملاحظة مهمة جداً :

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

إذن تعلمنا في الجزء الأول من الدرس الثالث التالي :

الأمر SELECT ...... FROM.

استرجاع القيم المختلفة باستخدام كلمة DISTINCT .

عرض جميع الحقول باستخدام النجمة * .

ترتيب النتائج باستخدام ORDER BY .

تسمية الحقل في جدول النتائج باستخدام AS .

الشرط WHERE واستخدام العمليات المنطقية المعتادة فيه .


 

المهندس المسلم.

مشرف سابق
إنضم
5 يوليو 2005
المشاركات
680
مجموع الإعجابات
10
النقاط
0
دورة Sql [الدرس الثالث : الجزء الثاني] : التعمق في الشروط

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

نكمل معاً درسنا الثالث :) فبعد أن تعرفنا على ماهيّة الشرط في أمر Select في الجزء الأول من الدرس .. نتحدث عن الشروط بإسهاب في الجزء الثاني :

طريقة استخدام كلمة BETWEEN في الشرط فهي كالتالي :

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

كود:
SELECT column_name FROM table_name
WHERE column_name
BETWEEN value1 AND value2;

أمثلة :

كي نسترجع سجلات الموظفين الذين تتراوح أرقامهم ما بين الرقم 10 إلى الرقم 40 ، نكتب الأمر التالي :

كود:
SELECT * FROM EMPLOYEE
WHERE NUMBER BETWEEN 10 AND 40;

وفي النتيجة ستترتب السجلات تصاعدياً من حيث الحقل الذي ذكرناه في الشرط ، وهو في هذا المثال : NUMBER كالتالي :

10921_1146327945.jpg

عندما تكون القيمتين عبارة عن نص ، فإننا نسترجع القيم التي بينهما مرتبة أبجدياً ، وليس كما هي مرتبة أو مخزنة في الجدول ، مثال : لاسترجاع سجلات الموظفين الذين تقع أسماؤهم الأخيرة بين " حمد " و " علي " نكتب الأمر - تذكر أن البحث عن النصوص خاضع لحكم الترتيب الأبجدي -:

كود:
SELECT * FROM EMPLOYEE
WHERE LNAME BETWEEN 'حمد' AND 'علي';

والنتيجة هنا ستكون عبارة عن ثلاث سجلات فقط ومرتبة أبجدياً كما سنرى في الصورة حيث أن سجل حمد قبل سجلا علي ( في حقل LNAME ) :

10921_1146327986.jpg

ملاحظة مهمة :

تختلف برامج قواعد البيانات في طريقة تعاملها مع BETWEEN ... AND ، فبعض البرامج تعتبر القمتين المحددتين من ضمن نطاق البحث فتكون موجودة في النتائج ، وبعضها لا تعتبرها كذلك فلا تشملها النتائج ، وبعضها يعتبر القيمة الأولى داخل نطاق البحث والقيمة الثانية خارج النطاق وهكذا ، لذلك لابد من أن تتعرف على برنامجك بالتجربة !!والتجربة خير برهان .

هذا بالنسبة لكلمة BETWEEN ، أما طريقة استخدام كلمة LIKE في الشرط فهي كالتالي :

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

كود:
SELECT column FROM table
WHERE column LIKE pattern معيار ;

الحكمة في استخدام LIKE هي أنه يمكنك أن تبحث بها بواسطة جزء من البيان إن لم تكن تعرف البيان كاملاً ، فلو كنّا نعرفه كاملاً لاستخدمنا علامة المساواة ( = ) مباشرةً ،فمثلاً لو كنا نريد استرجاع سجلات الموظفين الذين تبدأ أسماؤهم بحرف الباء فقط لن نستطيع حصر جميع الأسماء التي تبدأ بحرف الباء لذلك نستخدم LIKE ، أو لو كنا نريد استرجاع سجلات الموظفين الذين يسكنون في مدينة الرياض مثلاً ، من المستحيل أن نحفظ عناوينهم كاملة ، ولكن نستطيع البحث عن سجلاتهم عن طريق استخدام كلمة " الرياض " في الشرط LIKE ، نستخدم مع LIKE علامة النسبة المئوية (%) في مكان الخانات التي لا نعرفها " المفقودة " في المعيار .

أمثلة:

1. للبحث عن سجلات الموظفين الذين تبدأ أسماؤهم بحرف الباء في جدول الموظفين نستخدم الأمر التالي :

كود:
SELECT * FROM EMPLOYEE
WHERE FNAME LIKE 'ب%'; [COLOR="DarkGreen"]/* وضعنا (%) بعد حرف الباء أي في مكان الخانات المفقودة */[/COLOR]

والنتيجة هي :

10921_1146328159.jpg

2. للبحث عن سجلات الموظفين الذين ينتهي اسمهم الأول بحرف الدال ، نستخدم الأمر التالي :

كود:
[COLOR="DarkRed"]SELECT * FROM EMPLOYEE
WHERE FNAME LIKE '%د';[/COLOR] [COLOR="DarkGreen"] /* وضعنا (%) قبل حرف الدال ، أي في مكان الخانات المفقودة */ [/COLOR]

والنتيجة هي :

10921_1146328187.jpg

3. للبحث عن سجلات الموظفين الذين يسكنون في مدينة الرياض ، نستخدم الأمر التالي :

كود:
SELECT * FROM EMPLOYEE
WHERE ADDRESS LIKE '%RYADE%';
[COLOR="DarkGreen"]/*استخدمنا (%) مرتين في البداية والنهاية لأن العنوان في جدول الموظفين يبدأ برقم المنزل، ثم المدينة ( الرياض )، ثم الدولة*/[/COLOR]

والنتيجة هي :

10921_1146328219.jpg

4. للبحث عن الموظفين الذين ولدوا في الثمانينات ، نستخدم الأمر التالي:

كود:
SELECT * FROM EMPLOYEE
WHERE BDATE Like '--8-------';
[COLOR="DarkGreen"]/* استخدمنا (-) مكان الخانات المفقودة لأننا نعلم أن حقل تاريخ الميلاد من نوع DATE 
وأن هذا النوع من البيانات يحجز له عشر خانات ،راجع انواع البيانات في الدرس الثاني */[/COLOR]

والنتيجة ستكون :

10921_1146328433.jpg

ملاحظة هامة :

في برنامج الآكسس استخدم علامة النجمة * بدلاً من علامة النسبة المئوية % في الشرط LIKE .

هذا كل شئ بالنسبة للشرط ، أما عندما يكون لدينا أكثر من شرط : في هذه الحالة فإننا نشملها جميعها في WHERE عن طريق وضع الروابط المنطقية بينها مثل : AND, OR كالتالي :

 

المهندس المسلم.

مشرف سابق
إنضم
5 يوليو 2005
المشاركات
680
مجموع الإعجابات
10
النقاط
0
عند استخدام AND بين الشروط :

النتيجة تكون عبارة عن جميع السجلات التي تحققت فيها جميع الشروط ، أي أن الشروط التي وضعنا بينها AND لا بد أن تكون جميعها محققة True كي يظهر السجل في النتيجة ، مثال :

لكي نطلب سجل الموظف المسمى بـ :"محمد علي" نكتب الأمر التالي:

كود:
SELECT * FROM EMPLOYEE
WHERE FNAME = 'محمد' OR LNAME = 'علي';

فإن النتيجة التي ستظهر لنا تحتوي فقط على سجلات الموظفين الذين اسمهم " محمد علي "، ولن تظهر سجلات الموظفين الآخرين الذين اسمهم " محمد فلان " أو " فلان علي " ، كالتالي :

10921_1146328485.jpg

عند استخدام OR بين الشروط :

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

لكي نطلب سجلات الموظفين الذين اسمهم الأول " محمد " أو اسمهم الأخير " علي " نكتب الأمر التالي :

كود:
SELECT * FROM EMPLOYEE
WHERE FNAME = 'محمد' OR LNAME = 'علي';

والنتيجة ستحوي سجلات الموظفين الذين اسمهم الأول " محمد " أو اسمهم الأخير " علي " أو اسمهم كاملاً : " محمد علي " ، ستشملهم النتيجة جميعاً إن شاء الله كالتالي :

10921_1146328528.jpg

يمكنك كذلك أن تستخدم AND + OR بين الشروط باختلاف اشكالها لاستعلام واحد ، كن حذراً واستخدم الأقواس في ذلك ، مثال :

كود:
SELECT * FROM EMPLOYEE
WHERE ( FNAME = 'محمد' OR LNAME = 'علي') AND NUMPER BETWEEN 30 AND 50;

والنتيجة ستكون :

10921_1146328567.jpg

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

استخدام BETWEEN ... AND في الشرط .

استخدام LIKE في الشرط .

الجمع بين الشروط باستخدام AND .

الجمع بين الشروط باستخدام OR .

الجمع بين الشروط باستخدام AND + OR واستخدام الأقواس في ذلك .

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

10921_1146328638.bmp



 
التعديل الأخير:

المهندس المسلم.

مشرف سابق
إنضم
5 يوليو 2005
المشاركات
680
مجموع الإعجابات
10
النقاط
0
دورة SQL [الدرس الرابع / الجزء الأول] : الدوال SQL Functions

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

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

دوال الإس كيو إل SQL Functions :

في لغة السيكيول عدد من الدوال الجاهزة والتي لكل منها وظيفة معينة ، الصيغة العامة لهذه الدوال يوضحها الأمر كالتالي :

كود:
SELECT function(column) FROM table WHERE condition;

سندرس معاً خمسة دوال بإذن الله ، وهي : ( AVG, SUM, MAX, MIN, COUNT ).

AVG(column) Function :

تعيد لنا متوسط قيم الحقل ( العمود ) الذي حددناه لها ، إذا صادفتها سجلات كان فيها هذا الحقل فارغ فإنها ستتجاهلها ، مثال :

كود:
SELECT AVG(HOURS) FROM WORKS_ON WHERE HOURS<20;

وستعطينا النتيجة = 12.5 .

SUM(column) Function :

تعطينا مجموع الكلي لقيم الحقل( العمود ) الذي حددناه لها ، إذا صادفتها سجلات كان فيها هذا الحقل فارغ فإنها ستتجاهلها ، مثال :

كود:
SELECT SUM(HOURS) FROM WORKS_ON;

وستعطينا النتيجة = 58 .

MAX(column) Function :

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

كود:
SELECT MAX(HOURS) FROM WORKS_ON;

ستكون النتيجة = 20.5 .

MIN(column) Function :

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

كود:
SELECT MIN(HOURS) FROM WORKS_ON;

ستكون النتيجة = 10 .

الدالة COUNT :

هذه الدالة تأخذ ثلاث أشكال :

1- الشكل الأول:

COUNT(column)


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

كود:
SELECT COUNT(PNO) FROM WORKS_ON;

ستكون النتيجة = 4 ..

2- الشكل الثاني:

COUNT(DISTINCT column(s))


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

كود:
SELECT COUNT(DISTINCT PNO) FROM WORKS_ON;

ستكون النتيجة هنا = 2 ..

ملاحظة : هذا الشكل يعمل فقط مع ORACLE and Microsoft SQL server ولا يعمل مع الآكسس !!

3-الشكل الثالث:

COUNT(*)


تعيد لنا عدد السجلات ( الصفوف) في الجدول ، مثال :

كود:
SELECT COUNT(*) FROM WORKS_ON;

ستكون النتيجة = 4 .

بهذا يكون الجزء الأول من درس اليوم قد انتهى ، تعلمنا فيه الدوال ( AVG, SUM, MAX, MIN, COUNT )وعملها في الـSQL.
 
الحالة
مغلق و غير مفتوح للمزيد من الردود.
أعلى