عندما تريد استرداد البيانات من قاعدة بيانات، فإنك تطلب البيانات باستخدام لغة الاستعلامات المركبة أو SQL. SQL هي لغة كمبيوتر تشبه اللغة الإنجليزية بشكل وثيق، ولكن برامج قاعدة البيانات هذه تفهم. يستخدم كل استعلام تقوم بتشغيله SQL خلف الكواليس.
يمكن أن يساعدك فهم كيفية عمل SQL في إنشاء استعلامات أفضل، ويمكن أن يسهل عليك فهم كيفية إصلاح استعلام لا يرجع النتائج التي تريدها.
هذه إحدى مجموعات المقالات التي تدور حول Access SQL. توضح هذه المقالة الاستخدام الأساسي ل SQL لتحديد البيانات، وتستخدم أمثلة لتوضيح بناء جملة SQL.
في هذه المقالة
ما هو SQL؟
SQL هي لغة كمبيوتر للعمل مع مجموعات من الحقائق والعلاقات بينها. تستخدم برامج قاعدة البيانات الارتباطية، مثل Microsoft Office Access، SQL للعمل مع البيانات. على عكس العديد من لغات الكمبيوتر، ليس من الصعب قراءة SQL وفهمه، حتى بالنسبة للمبتدئ. مثل العديد من لغات الكمبيوتر، SQL هو معيار دولي معترف به من قبل هيئات المعايير مثل ISO و ANSI.
يمكنك استخدام SQL لوصف مجموعات البيانات التي يمكن أن تساعدك على الإجابة عن الأسئلة. عند استخدام SQL، يجب استخدام بناء الجملة الصحيح. بناء الجملة هو مجموعة القواعد التي يتم من خلالها دمج عناصر اللغة بشكل صحيح. يستند بناء جملة SQL إلى بناء الجملة باللغة الإنجليزية، ويستخدم العديد من العناصر نفسها مثل بناء جملة Visual Basic for Applications (VBA).
على سبيل المثال، قد تشبه عبارة SQL البسيطة التي تسترد قائمة بأسماء العائلة لجهات الاتصال التي يكون اسمها الأول هو Mary ما يلي:
SELECT Last_Name
FROM Contacts WHERE First_Name = 'Mary';
ملاحظة: لا يتم استخدام SQL فقط لمعالجة البيانات، ولكن أيضا لإنشاء وتغيير تصميم كائنات قاعدة البيانات، مثل الجداول. يسمى جزء SQL المستخدم لإنشاء كائنات قاعدة البيانات وتغييرها لغة تعريف البيانات (DDL). لا يغطي هذا الموضوع DDL. لمزيد من المعلومات، راجع المقالة إنشاء جداول أو فهارس أو تعديلها باستخدام استعلام تعريف البيانات.
عبارات SELECT
لوصف مجموعة من البيانات باستخدام SQL، يمكنك كتابة عبارة SELECT. تحتوي عبارة SELECT على وصف كامل لمجموعة من البيانات التي تريد الحصول عليها من قاعدة بيانات. يتضمن ذلك ما يلي:
-
الجداول التي تحتوي على البيانات.
-
كيفية ارتباط البيانات من مصادر مختلفة.
-
ما هي الحقول أو الحسابات التي ستنتج البيانات.
-
المعايير التي يجب أن تتطابق مع البيانات ليتم تضمينها.
-
ما إذا كان سيتم فرز النتائج وكيفية القيام بها.
عبارات SQL
مثل الجملة، تحتوي عبارة SQL على عبارات. تقوم كل عبارة بتنفيذ دالة لعبارة SQL. بعض العبارات مطلوبة في عبارة SELECT. يسرد الجدول التالي عبارات SQL الأكثر شيوعا.
عبارة SQL |
الإجراء الذي ينفّذه |
مطلوبة |
SELECT |
القوائم الحقول التي تحتوي على بيانات ذات أهمية. |
نعم |
FROM |
القوائم الجداول التي تحتوي على الحقول المدرجة في عبارة SELECT. |
نعم |
WHERE |
يحدد معايير الحقل التي يجب أن يستوفيها كل سجل ليتم تضمينها في النتائج. |
لا |
ترتيب حسب |
يحدد كيفية فرز النتائج. |
لا |
GROUP BY |
في عبارة SQL التي تحتوي على دالات تجميعية، تسرد الحقول التي لم يتم تلخيصها في عبارة SELECT. |
فقط إذا كانت هناك مثل هذه الحقول |
HAVING |
في عبارة SQL التي تحتوي على دالات تجميعية، تحدد الشروط التي تنطبق على الحقول التي تم تلخيصها في عبارة SELECT. |
لا |
شروط SQL
تتكون كل عبارة SQL من مصطلحات - قابلة للمقارنة مع أجزاء الكلام. يسرد الجدول التالي أنواع مصطلحات SQL.
مصطلح SQL |
جزء قابل للمقارنة من الكلام |
التعريف |
مثال |
المعرف |
الاسم |
اسم تستخدمه لتعريف كائن قاعدة بيانات، مثل اسم حقل. |
العملاء. [رقم الهاتف] |
عامل تشغيل |
الفعل أو adverb |
كلمة أساسية تمثل إجراء أو تعدل إجراء. |
AS |
ثابت |
الاسم |
قيمة لا تتغير، مثل رقم أو NULL. |
42 |
تعبير |
صفه |
مجموعة من المعرفات وعوامل التشغيل والثوابت والدالات التي يتم تقييمها إلى قيمة واحدة. |
>= المنتجات. [سعر الوحدة] |
عبارات SQL الأساسية: SELECT و FROM و WHERE
تأخذ عبارة SQL النموذج العام:
SELECT field_1
FROM table_1 WHERE criterion_1 ;
ملاحظات:
-
يتجاهل Access فواصل الأسطر في عبارة SQL. ومع ذلك، ضع في اعتبارك استخدام سطر لكل عبارة للمساعدة في تحسين قابلية قراءة عبارات SQL الخاصة بك لنفسك وللآخرين.
-
تنتهي كل عبارة SELECT بفواصل منقوطة (;). يمكن أن تظهر الفاصلة المنقوطة في نهاية العبارة الأخيرة أو على سطر بحد ذاته في نهاية عبارة SQL.
مثال في Access
يوضح ما يلي كيف قد تبدو عبارة SQL لاستعلام تحديد بسيط في Access:
1. عبارة SELECT
2. عبارة FROM
3. عبارة WHERE
يقرأ هذا المثال عبارة SQL "حدد البيانات المخزنة في الحقول المسماة عنوان البريد الإلكتروني والشركة من الجدول المسمى جهات الاتصال، وتحديدا تلك السجلات التي تكون فيها قيمة الحقل City هي Seattle."
لنلق نظرة على المثال، عبارة واحدة في كل مرة، لمعرفة كيفية عمل بناء جملة SQL.
عبارة SELECT
SELECT [E-mail Address], Company
هذه هي عبارة SELECT. وهو يتكون من عامل تشغيل (SELECT) متبوعا بمعرفين ([عنوان البريد الإلكتروني] والشركة).
إذا كان المعرف يحتوي على مسافات أو أحرف خاصة (مثل "عنوان البريد الإلكتروني")، فيجب أن يكون محاطا بأقواس مربعة.
لا يجب أن تحدد عبارة SELECT الجداول التي تحتوي على الحقول، ولا يمكنها تحديد أي شروط يجب أن تفي بها البيانات المراد تضمينها.
تظهر عبارة SELECT دائما أمام عبارة FROM في عبارة SELECT.
عبارة FROM
FROM Contacts
هذه عبارة FROM. وهو يتكون من عامل تشغيل (FROM) متبوعا بمعرف (جهات الاتصال).
لا تسرد عبارة FROM الحقول التي سيتم تحديدها.
عبارة WHERE
WHERE City="Seattle"
هذه هي عبارة WHERE. وهو يتكون من عامل تشغيل (WHERE) متبوعا بتعبير (City="Seattle").
ملاحظة: على عكس العبارتين SELECT و FROM، فإن عبارة WHERE ليست عنصرا مطلوبا من عبارة SELECT.
يمكنك إنجاز العديد من الإجراءات التي تمكنك SQL من القيام بها باستخدام عبارات SELECT و FROM و WHERE. يتم تقديم مزيد من المعلومات حول كيفية استخدام هذه العبارات في هذه المقالات الإضافية:
فرز النتائج: ORDER BY
مثل Microsoft Excel، يتيح لك Access فرز نتائج الاستعلام في ورقة بيانات. يمكنك أيضا تحديد كيفية فرز النتائج عند تشغيل الاستعلام في الاستعلام باستخدام عبارة ORDER BY. إذا كنت تستخدم عبارة ORDER BY، فهي العبارة الأخيرة في عبارة SQL.
تحتوي عبارة ORDER BY على قائمة بالحقول التي تريد استخدامها للفرز، بنفس الترتيب الذي تريد تطبيق عمليات الفرز به.
على سبيل المثال، افترض أنك تريد فرز نتائجك أولا حسب قيمة الحقل Company بترتيب تنازلي، وإذا كانت هناك سجلات بنفس القيمة للشركة ، يتم فرزها بعد ذلك حسب القيم الموجودة في الحقل عنوان البريد الإلكتروني بترتيب تصاعدي. ستشبه عبارة ORDER BY ما يلي:
ORDER BY Company DESC, [E-mail Address]
ملاحظة: بشكل افتراضي، يقوم Access بفرز القيم بترتيب تصاعدي (A-Z، من الأصغر إلى الأكبر). استخدم الكلمة الأساسية DESC لفرز القيم بترتيب تنازلي بدلا من ذلك.
لمزيد من المعلومات حول عبارة ORDER BY، راجع الموضوع عبارة ORDER BY.
العمل مع البيانات الملخصة: GROUP BY و HAVING
في بعض الأحيان تريد العمل مع البيانات الملخصة، مثل إجمالي المبيعات في شهر، أو العناصر الأكثر تكلفة في المخزون. للقيام بذلك، يمكنك تطبيق وظيفة تجميعية على حقل في عبارة SELECT. على سبيل المثال، إذا كنت تريد أن يعرض الاستعلام عدد عناوين البريد الإلكتروني المدرجة لكل شركة، فقد تشبه عبارة SELECT ما يلي:
SELECT COUNT([E-mail Address]), Company
تعتمد الدالات التجميعية التي يمكنك استخدامها على نوع البيانات الموجودة في الحقل أو التعبير الذي تريد استخدامه. لمزيد من المعلومات حول الدالات التجميعية المتوفرة، راجع المقالة دالات SQL التجميعية.
تحديد الحقول غير المستخدمة في دالة تجميعية: عبارة GROUP BY
عند استخدام الدالات التجميعية، يجب عليك عادة أيضا إنشاء عبارة GROUP BY. تسرد عبارة GROUP BY جميع الحقول التي لا تطبق عليها دالة تجميعية. إذا قمت بتطبيق دالات تجميعية على كافة الحقول في استعلام، فلن تحتاج إلى إنشاء عبارة GROUP BY.
يتبع عبارة GROUP BY على الفور عبارة WHERE أو عبارة FROM إذا لم تكن هناك عبارة WHERE. تسرد عبارة GROUP BY الحقول كما تظهر في عبارة SELECT.
على سبيل المثال، متابعة المثال السابق، إذا كانت عبارة SELECT تطبق دالة تجميعية على [عنوان البريد الإلكتروني] ولكن ليس على الشركة، فإن عبارة GROUP BY الخاصة بك ستشبه ما يلي:
GROUP BY Company
لمزيد من المعلومات حول عبارة GROUP BY، راجع الموضوع عبارة GROUP BY.
الحد من القيم التجميعية باستخدام معايير المجموعة: عبارة HAVING
إذا كنت تريد استخدام معايير للحد من نتائجك، ولكن الحقل الذي تريد تطبيق المعايير عليه مستخدم في دالة تجميعية، فلا يمكنك استخدام عبارة WHERE. بدلا من ذلك، يمكنك استخدام عبارة HAVING. تعمل عبارة HAVING مثل عبارة WHERE، ولكنها تستخدم للبيانات المجمعة.
على سبيل المثال، افترض أنك تستخدم الدالة AVG (التي تحسب قيمة متوسطة) مع الحقل الأول في عبارة SELECT:
SELECT COUNT([E-mail Address]), Company
إذا كنت تريد أن يقيد الاستعلام النتائج استنادا إلى قيمة الدالة COUNT هذه، فلا يمكنك استخدام معايير لهذا الحقل في عبارة WHERE. بدلا من ذلك، يمكنك وضع المعايير في عبارة HAVING. على سبيل المثال، إذا كنت تريد أن يرجع الاستعلام صفوفا فقط إذا كان هناك أكثر من عنوان بريد إلكتروني مقترن بالشركة، فقد تشبه عبارة HAVING ما يلي:
HAVING COUNT([E-mail Address])>1
ملاحظة: يمكن أن يحتوي الاستعلام على عبارة WHERE وعبارة HAVING — تنتقل معايير الحقول غير المستخدمة في دالة تجميعية في عبارة WHERE، ويتم استخدام معايير الحقول المستخدمة مع الدالات التجميعية في عبارة HAVING.
لمزيد من المعلومات حول عبارة HAVING، راجع الموضوع عبارة HAVING.
الجمع بين نتائج الاستعلام: UNION
عندما تريد مراجعة جميع البيانات التي يتم إرجاعها بواسطة العديد من استعلامات التحديد المماثلة معا، كمجوعة مجمعة، يمكنك استخدام عامل تشغيل UNION.
يتيح لك عامل تشغيل UNION دمج عبارات SELECT في واحدة. يجب أن تحتوي عبارات SELECT التي تجمعها على نفس عدد حقول الإخراج، بالترتيب نفسه، وبنفس أنواع البيانات أو أنواع البيانات المتوافقة. عند تشغيل الاستعلام، يتم دمج البيانات من كل مجموعة من الحقول المقابلة في حقل إخراج واحد، بحيث يكون لإخراج الاستعلام نفس عدد الحقول مثل كل من عبارات التحديد.
ملاحظة: لأغراض استعلام موحد، يكون نوعا البيانات "رقم" و"نص" متوافقين.
عند استخدام عامل تشغيل UNION، يمكنك أيضا تحديد ما إذا كان يجب أن تتضمن نتائج الاستعلام صفوفا مكررة، إن وجدت، باستخدام الكلمة الرئيسية ALL.
بناء جملة SQL الأساسي لاستعلام موحد يجمع بين عبارتين SELECT كما يلي:
SELECT field_1
FROM table_1 UNION [ALL] SELECT field_a FROM table_a ;
على سبيل المثال، افترض أن لديك جدولا يسمى Products وجدول آخر يسمى Services. يحتوي كلا الجدولين على حقول تحتوي على اسم المنتج أو الخدمة والسعر أو الضمان أو ضمان التوفر، وما إذا كنت تقدم المنتج أو الخدمة حصريا. على الرغم من أن جدول المنتجات يخزن معلومات الضمان، ويخزن جدول الخدمات معلومات الضمان، فإن المعلومات الأساسية هي نفسها (سواء كان منتج أو خدمة معينة تتضمن وعدا بالجودة). يمكنك استخدام استعلام موحد، مثل ما يلي، لدمج الحقول الأربعة من الجدولين:
SELECT name, price, warranty_available, exclusive_offer
FROM Products UNION ALL SELECT name, price, guarantee_available, exclusive_offer FROM Services ;
لمزيد من المعلومات حول كيفية دمج عبارات SELECT باستخدام عامل التشغيل UNION، راجع دمج نتائج العديد من استعلامات التحديد باستخدام استعلام موحد.