إجعلنا صفحتك الرئيسية أخبر صديق الصفحة الرئيسية
بريد | تخزين ملفات | البوماتك | مبوبه | ملتقى الشركات | بلوج :خدمات
دردشه | منتديات | أصحاب | كروت تهنئه :مجتمعات
سينما | فنانين | المرأه و الطفل | الصحة | أقوال مأثوره | أخبار الطقس | كورسات | تغطيات :قنوات
نكت | أبراج | ألعاب | مسابقات | ماشى راديو | ماشي فيديو | موسيقى :ترفيه
الأخبار الرئيسية | مصر | السعوديه | الإمارات | الوطن العربى | العالم | رياضه | ثقافه و فن | علوم وتكنولوجيا | اقتصاد | متنوعه | حوادث :أخبار
Html | FTP | PHP | CSS | Linux | Photoshop | Premiere 6 | Photoshop Elements 3.0 | MS Word 2000 | MS Excel | MS Power point | MS Access | MCSE | Dreamweaver MX | Flash MX | JavaScript | Flash advanced | QAMOS | Photoshop | Help | Mashy Help

SQL لغة

لا بد أنك قد لاحظت ا لآ ن أن هنالك الكثير من العمليات التي تستطيع قاعدة البيانات أدائها، فيمكنها أن تنشأ سجلا أو تحذف سجلات أو تعدل سجلا أو تغير جدولا أو تحذف جدولا و غ يرها الكثير، هذه العمليات تجرى بواسطة لغةSQL وهي اختصار لعبارة Structured Query Language  أي لغة الاستعلامات البنيوية،تسمى كل عملية تنفذ عن طريق لغة SQL بالاستعلام Query  ، وعلى حسب لغة البرمجة التي تستخدمها وبرنامج قواعد البيانات الذي تستخدمه ف إ ن الاستعلامات ترسل وتنفذ بطر ق مختلفة وكيفية الح ص ول على نتائج الاستعلام تختلف أيضا، في هذه الدورة لن يهمنا كيف تقوم بإ رسال ا لإ ستعلام إلى قاعدة البيانات وتنفذه وتحصل على نتائجه، ولكن ما سنتحد ث عنه هو كيفية كتابة الاستعلام نفسه، لغةSQL على سبيل المثال في موقعنا نستخدم لغةPHP البرمجة شبه متفق عليها بين جميع نظم قواعد البيانات،للوصول إلى مزود قاعدة البيانات MySQL ، وهي من التوليفات الشهيرة، ومنها أي ض ا استخدام برنامج Visual Basic للوصول إلى مزودقاعدة بيانات Microsoft SQL Server لعمل البرامج التي تتطلب وصولا إلى بيانات مركزية كما في المحلات والأسواق والمخازن والمستشفيات و غيرها، ويمكن استخدام لغة SQL أيضا عن طريق البرامج المكتوبة بلغة C و ++ C و Perl و Delphi للوصول إلى بيانات مخزنة في قواعد بيانات Oracle و Sybase و Informix و IBM/ DB2 و Access و غيرها.

مزودات قواعد البيانات

من الطر ق الشهيرة لتخزين قواعد البيانات هي وضعها في صورة ملفات ن ص ية بسيطة Plain Text ، بحيث يوضع كل سجل في سطر من أسطر الملف ويفصل بين الحقول المختلفة في كل سجل بفاصلة ( , ) comma ، وتكون أحيانا في صورة ملفات أكثر تعقيدا بحي ث يحتوي الملف على الكثير من الجدوال والفهارس التي تسرع عمليات البحث في قواعد البيانات والاستعلامات الجاهزة والنماذج كما في قواعد بيانات Microsoft Access.

هذه الطريقة قد تعتبر جيدة في البرامج البسيطة ولكن في بيئات الشبكات المعقدة والبرامج التي تحتاج وصولا مشتركا إلى البيانات تصبح هذه الفكرة صعبة التطبيق حيث أن ملف البيانات يكون في جهاز المزود، ويتم الوصول إليه عبر الشبكة من قبل الزبون، وفي حالة الملفات الثابته يجب أن يتم نقل ملف البيانات بأكمله عبر الشبكة حتى يصل إلى الزبون الذي يأخذ المعلومات منه وإذا قام الزبون بتغيير أي من المعلومات فإن المزود يجب أن ينتظر حتى يقوم الزبون ب إ عادة الملف بعد عمل التغييرات عليه، وهذا أمر يستغر ق الكثير من الوقت خاصة إذا كان حجم الملف كبيرا وكانت الشبكة بطيئة، وكذلك إذا أراد أكثر من شخص الوصول إلى البيانات في نفس الوقت وتغييرها في نفس الوقت سيؤ دي ذلك إلى عطب البيانات وحدو ث خلل فيها، لهذا ف إ ن المزود يقوم بإ عطا ء الملف لمن يطلبه أولا ويقوم بقفل الملف بحي ث يجب على كل من يطلب الملف بعد ذلك أن ينتظهر حتى ينتهي هذا الشخص من الملف، وبعدها الذي يليه وهكذا، وهو أمر غير معقول أبدا!

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



SELECT العبارة

يمكنك الح ص ول على البيانات في صورة سجلات باستخدام لغة SQL وذلك عن طري ق العبارة SELECT والتي تأخذ الشكل العام التالي :
SELECT fields FROM tables;
حيث أن fields هي أسما ء الحقول وtables هي أسما ء الجداول التي نريد أن نحصل على الحقول منها، فإ ذا كان لدينا الجدول التالي في قاعدة البيانات على سبيل المثال :

إذا أردن ا أن نح ل على الحقلين Telephone و Name  في الجدول السابق فإن العبارة التي سنستخدمها هي:SELECT
name , telephone FROM directory ;

والعبارة السابقة تعيد الجدول كما هو في الأعلى بالضبط ، ولكن ماذا ل  كتبنا كلمة telephone قبل كلمةname  في عبارة SQL السابقة فتصبح كالتالي:
SELECT telephone, name FROM directory;

عند تنفيذ العبارة السابقة سنحصل على الجدول التالي :

أما إذا كتبنا العبارة كالتالي:SELECT name, telephone, name FROM directory telepho

فسنحصل على النتيجة التالية :

SELECT name FROM directory : وماذا لو قمنا بتنفيذ العبارة التالية

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


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

قد تحتاج في بعض الأحيان أن تعرض جميع الحقول في الجدول، فيمكنك استخدام علامة النجم ة ( * ) في مكان الحقول للحصول على جميع

SELECT * FROM directory; الحقول التي في الجدول، فاستخدام العبارة التالية

قواعد اللغة

عند كتابتك لاستعلامات SQL يجب أن تتذكر الأمور التالية دائما

وكلها SeLeCt والكلمة select والكلمة SELECT لا تفر ق بين الحروف الكبيرة  غيرة فلا فر ق بين كتابة الكلمة SQL لغة ·تعامل بنفس الطريقة، قد تكون هنالك بع ض الاستثنا ءات في أسما ء الجداول أو الحقول، يجب أن تراجع دليل الاستخدام المرف ق مع برنامج قاعدة البيانات الذي تستخدمه للتأكد من ذلك، فيمكنك وضع أي قدر تريد من المسافات البيضا ء لتنسيق استعلاماتك، فيمكنك SQL المسافات البيضا ء ليس لها اعتبار في لغة ·مثلا أن تكتب الاستعلام في الصورة التالية، ولا توجد أية مشكلة في ذلك :

SELECT * ·

FROM directory ; ·


الشروط


يمكنك أثنا ء جلب السجلات أنت ضع شروطا معينة للسجلات التي تريد الحصول عليها بواسطة العبارة SELECT وذلك باستخدام المقطع  WHERE وبعده تضع الشروط التي تريدها، أنظر مثلا:SELECT telephone FROM directory WHERE name= 'Tim'

فإن ناتج تنفيذ الاستعلام السابق سيكون كالتالي :



حيث أن هنالك حقلا واحد فقط يطابق الشرط، والشرط هو أن يكون الاسم name يساوي Tim ولأن كلمة Tim جز ء من البيانات المخزنة في قاعدة البيانات ف إ ننا نحيطها بعلامات الاقتباس المفردة، لاحظ أيضا أن البرنامج لن يعيد الاسم أيضا ضمن النتائج وذلك لأننا لم نطلب الاسم في SELECT telephone, name FROM directory WHERE : عبارتنا، ويمكننا الحصول على الاسم أي ض ا باستخدام هذه العبارة

name = ' Tim ';

كما تلاحظ فإن عبارة SELECT من بدايتها وحتى ما قبل كلمة WHERE تعمل كما شرحنا في السابق بالضبط الجز ء الذي يهمنا ا لآ ن في العبارة هو الجز ء الذي يأتي بعد الكلمة WHERE أو ما يسمى بالشرط condition ، تتكون عبارة الشرط الواحدة من ثلاثة أجزا ء ، الجز ء الأول هو الطرف الأيسر من العبارة والجز ء الثاني هو الطرف الأيمن من العبارة والجزء الثالث هو المعامل الذي يقع بين الطرفين، والمعامل في مثالنا الساب ق هو علامة المساواة ( = ) حي ث أن شرطنا هو أن يكون الطرف الأيمن يساوي الطرف الأيسر حتى يتحقق الشرط

rightside           operator         leftside

'Tim'                    =               name

والعوامل المستخدمة في الشروط مختلفة، أهما ما يلي :

 العامل الأول هو عامل المساواة وهو يتحقق عندما يكون الطرف الأيمن والأيسر متساويان، كما رأينا في المثال السابق ، العوامل التالية تبدو واضحة وهي < ويتحقق عندما يكون الطرف الأيسر أكبر من الطرف الأيمن، > ويتحق ق عندما يكون الطرف الأيمن أصغر من الطرف الأيسر، وبعدها أكبر من أو يساوي ثم أصغر من أو يساوي.
أما المعامل السادس >< فيعني لا يساوي ويتحق ق الشرط فيه عندما يكون الطرف الأيمن لا يساوي الطرف الأيسر. قد تبدو مقارنة الن ص و ص باستخدام العوامل > و < غريبة نوعا ما، فكيف نقول مثلا بأن 'Jim' > 'Tim' ؟ الأمر في غاية البساطة، كل ما عليك فعله هو أن تتخيل بأنك تريد أن ترتب هذا الجدول تنازليا فهذا يعني بأن القيم العليا تكون فو ق والقيم الدنيا تكون في أسفل الترتيب، ولهذافإن 'a' < 'z' تعتبر عبارة صحيحة.



العامل الأخير من عوامل المقارنه هو العامل( LIKE يشبه ) وهو يستخدم لمقارنة النصوص عادة، ويتحقق الشرط فيه عندما يكون الطرف الأيمن يشبه الطرف الأيسر، ويكتب طرفها الأيمن في صورة ن ص يحتوي على علامات النسبة الم ؤ وية ( % ) وهي تعني ( أي شي ء ) بمعني SELECT name, telephone FROM directory WHERE name LIKE '% m'; :
أنك إذا قلت
فهذا يعني بأن الاسم يجب أن يكون ( أي شي ء ) ثم الحرف 'm' ، أو بمعنى آ خر سيكون الشرط متحققا في السجلات التي ينتهي الاسم فيها

SELECT name, telephone FROM directory WHERE name LIKE 'm% '; : ،
وإذا كتبنا 'm' بالحرف
SELECT name, telephone : ، حسنا ماذا لو قلنا m التي تبدأ بالحرف name ثم ( أي شي ء ) أي أنها تطاب ق حقول m فهذا يعني
FROM directory WHERE name LIKE ' % m % ';

 فيها على الحرف name ثم ( أي شي ء ) أي أنها ستطاب ق جميع السجلات التي يحتوي الحقل m أما هذه فتعني ( أي شي ء ) ثم الحرف

يمكنك أن تقيس على ذلك الكثير من الأمور، فيمكنك أن تبح ث في قاعدة البيانات عن حقل يبدأ بكلمة 'this' وبعدها بعدة أحرف أو كلمات أو )

text LIKE 'this% one% ' : فتكتب هكذا 'one' أي شي ء ) تأتي كلمة دعنا نجرب تطبي ق هذا الاستعلام  على قاعدة البيانات التي نعمل عليها: SELECT name, telephone FROM directory WHERE name LIKE ' % m ';

فإ ن النتائج ستكون كالتالي :



استخدام أكثر من شرط

 يمكنك استخدام أكثر من شرط واحد عن جلب سجلات بياناتك، فيمكنك مثلا أن تبحث عن جميع الحقول التي يبدأ اسم صاحبها بالحرف والحرف D ، أو ربما تريد البحث عن جميع الأشخا ص الذين تاريخ ميلادهم أكبر من 1 يناير 2000 وأصغر من 5 فبراير 2000 وهكذا أمور، يمكنك أن تربط بين الشروط باستخدام أداتين مختلفتين للربط هما AND و OR ، وهاتان الأداتان تساويان && و || على التوالي في بعض لغات البرمجة.

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

SELECT name , telephone FROM directory WHERE

name LIKE ' % m ' AND telephone > 20000000 ;

ويعني ذلك بأن السجلات الوحيدة التي سيتم عرضها هي التي يتحقق فيها كل من الشرطان معا، فتكون name تنتهي بالحرف m ورقم الهاتف أكبر من 20000000 ، فهي تعيد السجل الوحيد الذي يحقق الشرطان كالتالي :

 

أما OR ( أو ) فيكفي لتحققها أن يتحقق أحد الشرطان فقط , فإذا قلنا :

SELECT name , telephone FROM directory WHERE

name LIKE ' % m ' OR telephone > 20000000 ;

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


كما تلاحظ ، السجل الأول Tim كان من ضمن السجلات التي حققت الشرطان معا فكان من ضمن جدول النتائج، أما السجل الثاني Jim فلم يحقق الشرط الثاني وكان الحقل telephone فيه أقل من 20000000 إلا أنه كان من ضمن جدول النتائج لأنه حقق الشرط الأول وهذا كاف; بالحرف Dill والسجل الثالث حقق الشرط الثاني ولم يحقق الأول حيث أنه لا ينتهي m

استخدام OR و AND معا

يمكنك ربط أكثر من شرط باستخدام أكثر من أداة ربط ولأكثر من مرة، فيمكنك أن تقول مثلا :

SELECT name , telephone FROM directory WHERE

telephone > 20000000 OR telephone = 30000000 AND name LIKE ' % m ';


العبارة السابقة تنطوي على حيلة ما، قد يبدو لك في الوهلة الأولى أن العبارة تقوم بمطابقة جميع السجلات التي يكون الحقل name فيهاينتهي بالحرفm وفي نفس الوقت يكون رقم الهاتف فيها أكبر من 20000000 أو يكون يساوي 30000000 ، ولكن الواقع يختلف عن ذلك،عندما يكون هنالك أكثر من أداة ربط ، ويكون هنالك أكثر من شرطين، فإ ن برنامج قاعدة البيانات سيقوم بتنفيذ أداة الربط AND أولا حسب ترتيبها بالجملة، وبعد ذلك يقوم بربط الجمل التي تستخدم الأداة (OR )


OR أما الأداة 'name LIKE '% m و 30000000 = telephone ترب ط شرطان هما AND يعني ذلك بأنه في العبارة السابقة الأداة

فترب ط شرطان هما 20000000 < telephone و 'telephone = 30000000 AND name LIKE %' m ، ونقول هنا بأن AND

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

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

SELECT name , telephone FROM directory WHERE

( telephone > 20000000 OR telephone = 30000000 ) AND name LIKE ' % m

لأن الأقواس لها أولوية أعلى في التنفيذ من العبارة (OR ) الأقواس لها أعلى أولوية على ا لإ طلا ق ، فإ ن البرنامج يقوم بتنفيذ ما بداخل الأقواس أولا، وفي داخل الأقواس سيجد شرطان مربوطان بالأداة OR فيقوم بربطهما وينتج شرط واحد كبير، وبعد ذلك يأتي دور العبارة'name LIKE '% m فترتبط الشرط الكبير الذي بداخل الأقواس مع الشرط الذي يأتي على يمينها وهو AND.

لاحظ أن الجز ء الذي أتى بعد العبارة OR داخل الأقواس غير ضروري أبدا لأن الشرط سيتحق ق دائما إذا كان الرقم يساوي 30000000 لو لم نطلب منه ذلك تحديدا، حي ث أن الشرط الذي على يسار العبارة يكفي لذلك ( تذكر بأن 30000000 أكبر دائما من ) 20000000 ، ولكننا أوردناها هنا كمثال فقط.

النفى بالعبارة NOT

تقوم العبارة NOT بنفي الشرط الذي يأتي بعدها، فت ص ب ح العبارة صحيحة إذا كانت خاطئة وتصبح خاطئة إذا كانت صحيحة، مثلا العبارة التالية:

SELECT name , telephone FROM directory WHERE NOT name = ' Tim ';

ستعيد جميع السجلات التي لا يكون فيها الحقل name يساوي Tim وهكذا، ويمكناستخدامها في تراكيب أكثر تعقيدا مع الأداتان AND و OR
والأقواس.

 

الفصل الأول <<
   الدرس الأول
   الدرس الثانى
   الدرس الثالث
الفصل الثانى <<
   الدرس الأول
   الدرس الثانى
   الدرس الثالث
الفصل الثالث <<
   الدرس الأول
   الدرس الثانى
   الدرس الثالث
   الدرس الرابع

About Us - Terms of Service - Advertise with us - Copyright - Disclaimer - Feedback - Privacy - Jobs - Contact Us
Copyright © El Motaheda.com 2008. All rights reserved.
Mashy.com is against all forms of violence.
ماشى دوت كوم ضد العنف بكل أنواعه