|
دورة SQL [الدرس الثالث : الجزء الأول] : الأمر Select ... From ... Where
بعد أن تعرفنا على أوامر إنشاء قاعدة البيانات وجداولها وما إلى ذلك ، نأتي إلى درس اليوم والذي يعتبر مخ استخدام قواعد البيانات في أي مجال ، وهو استخراج البيانات من اي قاعدة بيانات .
الأمر SELECT - SELECT Statement :
يستخدم هذا الأمر لتحديد واسترجاع حقول البيانات التي تريدها من أي جدول في قاعدة البيانات ، يقدم لك النتيجة في جدول أيضاً ، صيغة هذا الأمر كالتالي :
SELECT column_name(s)
FROM table_name; |
نفصل بين الحقول المطلوبة عند استخدام هذا الأمر بالفاصلة (،) .. مثال : لتحديد واسترجاع حقول اسماء الموظفين من جدول الموظفين ، نكتب :
SELECT FNAME , LNAME
FROM EMPLOYEE; |
والنتيجة هي :

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

أعطانا أرقام الأقسام بدون تكرار :)
إذن كلمة DISTINCT تستخدم مع الأمر SELECT لاسترجاع أو استخراج القيم المختلفة ، وعليه تكون صياغة الأمر كالتالي :
SELECT DISTINCT column-name(s) FROM table-name; |
وأما إذا كنّا نريد استخراج جميع الحقول من جدول محدد أو من عدة جداول ، فليس علينا ان نكتب جميع أسماء الحقول أو الأعمدة ، بل يكفي فقط أن نضع النجمة (*) ليعطينا جميع الحقول ، مثال :
والنتيجة تكون :

وإذا كنّا نريد أن تظهر لنا النتائج مرتبة ترتيباً أبجدياً أو تصاعدياً أو أبجدي بطريقة عكسية أو تنازلي .. نستخدم كلمة ORDER BY في آخر أمر SELECT ،ونضع بعدها اسم السجل ( العمود ) الذي نريد أن تظهر لنا النتيجة مرتبة من خلاله ، الجدول التالي يوضح أوامر الترتيب الممكنة في SQL :
| صيغة الأمر |
وظيفته |
|
ORDER BY columnX |
تكون الصفوف( السجلات) في جدول النتيجة مرتبة ترتيباً أبجدياً أو تصاعدياً بالنسبة لقيم العمود X . |
|
ORDER BY columnX DESC
|
تكون الصفوف( السجلات) في جدول النتيجة مرتبة ترتيباً أبجدياً عكسياً أو تنازلياً بالنسبة لقيم العمود X . |
من الممكن ان نطلب الترتيب في اكثر من حقل (عمود) واحد ، فتأتينا النتيجة مرتبة على حسب قيم الحقل الأول ومن ثم تنتقل لترتيب قيم الحقل الثاني في ظل ترتيب الحقل الأول ، مثال :
SELECT * FROM EMPLOYEE
ORDER BY FNAME, DNO DESC; |
والنتيجة ستكون عبارة عن جدول ترتبت فيه قيم حقل FNAME أبجدياً من ثم ترتبت فيه قيم حقل DNO تنازلياً في ظل الترتيب الأبجدي الأول !! كما توضح الصورة :

لا يستخدم الأمر SELECT فقط لإسترجاع بيانات من الجداول سواء كانت مرتبة أو لا ، وإنما يمكننا أن نستخدم العمليات الرياضية الاعتيادية فيه ، فمثلاً لو زدنا عدد ساعات عمل الموظفين بمقدار ساعتين ، فيمكننا من خلال استخدام أمر SELECT أن نسترجع عدد ساعات العمل الجديدة للموظفين لحساب الزيادة في رواتبهم مثلاً .. كما يوضح الأمر التالي :
SELECT HOURS+2 AS New_Hours FROM WORKS_ON; |
والنتيجة هي :

استخدمنا AS لإعادة تسمية الحقل عند عرض النتيجة فقط ، ولا يؤدي ذلك إلى تغيير اسم الحقل الأساسي في الجدول !!
الشرط WHERE Clause :
الشرط هو أحد أجزاء الأمر SELECT ، نستخدمه حينما نريد استرجاع قيم معينة ومحددة من أي حقل ، لا جميع القيم الموجودة في الحقل وإنما القيم التي نريدها وفق المعايير التي نحددها في الشرط ، صيغته كالتالي :
SELECT columnX FROM table
WHERE columnY operator value; |
من الممكن أن يكون columnX هو نفسه columnY ومن الممكن ان يكون حقل مختلف تماماً ولكن في نفس الجدول ، والعمليات التي نستخدمها في الشرط هي :
| Operator العملية |
Description وصفها |
|
= |
Equal يساوي |
|
<> |
Not equal لا يساوي |
|
< |
Greater than أكبر من |
|
> |
Less than أصغر من |
|
=< |
Greater than or equal أكبر من أو يساوي |
|
=> |
Less than or equal أصغر من أو يساوي |
|
BETWEEN |
Between an inclusive range بين قيمتين |
|
LIKE |
Search for a pattern للبحث عن تشابة |
مثال :
كي نستخرج السجلات كاملة لجميع الموظفين الذين يشتركون في اسم " محمد " :
SELECT * FROM EMPLOYEE
WHERE FNAME = 'محمد'; |
والنتيجة هي فقط سجلات الموظفين الذين اسمهم محمد :

وهكذا بالنسبة للعمليات الاعتيادية ذات اللون الاسود في الجدول ، أما طريقة استخدام كلمة BETWEEN & LIKE ففي الشرط فسنتعرف عليها إن شاء الله في الجظء الثاني من هذا الدرس . :)
ملاحظة مهمة جداً :
في الشرط ، نستخدم قوس الاقتباس المفرد ( ' ) فقط حينما يكون الشرط عبارة عن نص ، أما إذا كان رقم فلا نحتاج للقوس .
إذن تعلمنا في الجزء الأول من الدرس الثالث التالي :
-
الأمر SELECT ...... FROM .
-
استرجاع القيم المختلفة باستخدام كلمة DISTINCT .
-
عرض جميع الحقول باستخدام النجمة * .
-
ترتيب النتائج باستخدام ORDER BY .
-
تسمية الحقل في جدول النتائج باستخدام AS .
-
الشرط WHERE واستخدام العمليات المنطقية المعتادة فيه .
إذا أردت أن تطبق هذه الأوامر عملياً في برنامج الأكسس ، شاهد العرض الفلاشي التالي لتتعرف على الطريقة :
الآن ،خذ قسطاً من الراحة وتنفس بعمق ثم انتقل لقراءة الجزء الثاني من الدرس ،، والله ولي التوفيق
واجب الجزء الأول :
اكتب أمر SQL لعرض حقل hours من جدول العمل WORKS_ON بدون تكرار لقيمه ، وبترتيب تصاعدي !!
المزيد من المواضيع
أمر التجميع والإحتواء ودوال المجموع SQL Group & SQL HAVING with Aggregate Function
دورة SQL [الدرس الخامس] : الربط في السيكيول SQL Join
دورة SQL [الدرس الرابع / الجزء الثاني] : أوامر إضافة ، تحديث، وحذف السجلات
دورة SQL [الدرس الرابع / الجزء الأول] : الدوال SQL Functions
دورة SQL [الدرس الثالث : الجزء الثاني] : التعمق في الشروط
دورة SQL [الدرس الأول] : مقدمة في قواعد البيانات
|