عندما تريد استرداد البيانات من قاعدة بيانات، يمكنك طلب البيانات باستخدام لغة الاستعلامات المركبة أو SQL. SQL عبارة عن لغة كمبيوتر تشبه اللغة الإنجليزية إلى حد كبير، ولكن برامج قواعد البيانات تفهمها. يستخدم كل استعلام تقوم بتشغيله SQL في الخلفية.
يمكن أن يساعدك فهم كيفية عمل SQL على إنشاء استعلامات أفضل، ويمكن أن يسهل عليك فهم كيفية إصلاح استعلام لا يرجع النتائج التي تريدها.
هذه إحدى مجموعات المقالات التي تدور حول Access SQL. تصف هذه المقالة الاستخدام الأساسي ل SQL لتحديد البيانات، وتستخدم أمثلة لتوضيح بناء جملة SQL.
في هذه المقالة
- ما هو SQL؟
- عبارات SQL الأساسية: SELECT وFROM وWHERE
- فرز النتائج: ORDER BY
- استخدام البيانات الملخصة: GROUP BY وHAVING
- دمج نتائج الاستعلام: UNION
ما هو SQL؟
SQL هي لغة كمبيوتر للعمل على مجموعات من الحقائق والعلاقات بينها. تستخدم برامج قواعد البيانات الارتباطية، مثل Microsoft Office Access، SQL للعمل على البيانات. على عكس العديد من لغات الكمبيوتر، ليس من الصعب قراءة SQL وفهمه، حتى بالنسبة للمبتدئين. مثل العديد من لغات الكمبيوتر، يعد SQL معيارا دوليا معترف به من قبل هيئات المعايير مثل ISOوANSI.
يمكنك استخدام SQL لوصف مجموعات البيانات التي يمكن أن تساعدك في الإجابة على الأسئلة. عند استخدام SQL، يجب عليك استخدام بناء الجملة الصحيح. "بناء الجملة" هو مجموعة القواعد التي يتم بها دمج عناصر اللغة بشكل صحيح. يستند بناء جملة SQL إلى بناء جملة اللغة الإنجليزية، ويستخدم العديد من العناصر نفسها مثل بناء جملة Visual Basic for Applications (VBA).
على سبيل المثال، فإن عبارة SQL البسيطة التي تسترد قائمة بأسماء العائلة لجهات الاتصال التي اسمها الأول هي ماجدة قد تشبه ما يلي:
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 | جزء قابل للمقارنة من الكلام | التعريف | مثال |
|---|---|---|---|
| معرف | اسم | اسم تستخدمه لتعريف كائن قاعدة بيانات، مثل اسم حقل. | العملاء. [رقم الهاتف] |
| عامل تشغيل | فعل أو ظرف | كلمة أساسية تمثل إجراء أو تقوم بتعديل إجراء. | 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 على الآتي "حدد البيانات المخزنة في الحقول المسماة عنوان البريد الإلكتروني والشركة من الجدول المسمى جهات الاتصال، وتحديدا تلك السجلات حيث تكون قيمة الحقل المدينة هي سياتل".
لنلق نظرة على المثال، عبارة واحدة في كل مرة، لنرى كيفية عمل بناء جملة SQL.
عبارة SELECT
SELECT [E-mail Address], Company
هذه هي عبارة SELECT. وهو يتألف من عامل تشغيل (SELECT) متبوعا بمعرفين ([E-mail address] والشركة).
إذا احتوى معرف ما على مسافات أو أحرف خاصة (مثل "عنوان البريد الإلكتروني")، فيجب إحاطته بأقواس مربعة.
لا يجب أن تذكر عبارة 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
يسمح لك Access بفرز نتائج الاستعلام في ورقة بيانات، تماما كما في Microsoft Excel. يمكنك أيضا أن تحدد في الاستعلام كيف تريد فرز النتائج عندما يتم تشغيل الاستعلام، باستخدام عبارة ORDER BY. إذا كنت تستخدم عبارة "ORDER BY"، فهي العبارة الأخيرة في جملة SQL.
تحتوي عبارة ORDER BY على قائمة بالحقول التي تريد استخدامها للفرز، بنفس الترتيب الذي تريد تطبيق عمليات الفرز عليه.
على سبيل المثال، افترض أنك تريد فرز النتائج أولا حسب قيمة الحقل الشركة بترتيب تنازلي، وإذا كانت هناك سجلات بنفس قيمة الشركة فرز بعد ذلك حسب القيم في الحقل "عنوان البريد الإلكتروني" بترتيب تصاعدي. قد تتشابه عبارة ORDER BY مع ما يلي:
ORDER BY Company DESC, [E-mail Address]
ملاحظة
بشكل افتراضي، يقوم Access بفرز القيم بترتيب تصاعدي (من الألف إلى الياء، من الأصغر إلى الأكبر). استخدام الكلمة الأساسية 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
;
على سبيل المثال، افترض أن لديك جدول يسمى "المنتجات" وآخر يسمى "الخدمات". يحتوي الجدولان على حقول تحتوي على اسم المنتج أو الخدمة والسعر أو الضمان أو توفر الضمان، وما إذا كنت تقدم المنتج أو الخدمة حصريا. على الرغم من أن جدول المنتجات يخزن معلومات الضمان، ويخزن جدول الخدمات معلومات الضمان، إلا أن المعلومات الأساسية هي نفسها (سواء كان المنتج أو الخدمة المعينة تتضمن وعدا بالجودة). يمكنك استخدام استعلام موحد، كما يلي لدمج الحقول الأربعة من الجدولين:
SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services
;
لمزيد من المعلومات حول كيفية دمج جمل SELECT باستخدام عامل التشغيل UNION، راجع دمج نتائج عدة استعلامات تحديد باستخدام استعلام موحد.