في هذا المقال، سأقوم بتغطية الأساسيات لاستخدام عبارة SQL SELECT لاسترداد البيانات من جدول أو أكثر خادم SQL. سأشرح أيضًا كيفية استرداد الأعمدة المختارة، وكيفية استخدام فلاتر WHERE و HAVING في SQL لفلترة الصفوف.
تستخدم جميع العينات في هذا المقال قاعدة البيانات النموذجية AdventureWorksLT2019. في المقال السابق في هذه السلسلة، شرحت كيفية تعبئة جداول SQL Server باستخدام عبارات INSERT و UPDATE و DELETE. تغيير هذه العبارات البنيوية للاستعلام اللغوية (SQL) محتوى الجدول، لكن عبارة SQL SELECT لها غرض مختلف.
كيفية استخدام عبارة SQL SELECT بسيطة
تستخدم عبارة SQL SELECT لإجراء استعلام على البيانات من جدول. يوضح الكود التالي أبسط بنية لعبارة SELECT.
SELECT columns FROM schema_name.table_name;
كما تعلم ، تتنظم بيانات الجداول في تكوين خط وأعمدة. كل خط يمثل سجل فريد في الجدول ، وكل أعمدة تمثل مجموعة من الحقول في مجموعة البيانات.
الاتفاق الأول في أوامر الإختيار (SELECT) هو قائمة بأسماء الأعمدة التي ستسحب. هنا يمكنك تحديد قائمة من الأعمدة مفصلة بفاصيل من الحقول التي تريد سحب البيانات منها.
من ثم ي especify الجزء التالي من العبارة المحددة (FROM) الجدول المصدر واسم القاعدة الخاص بها إذا كان ذلك من الضروري. يستخدم مجموعات القواعد البيانات لتجميع من الجداول والأشياء الأخرى في القاعدة البيانات. القاعدة الافتراضية لكل قاعدة البيانات هي dbo ، ولأنها القاعدة التي يستخدم فيها هنا يمكن التخلي عنها.
يظهر تقارير التالية مثال لأوامر الإختيار (SELECT) بسيط:
- أول USE تعيين القاعدة الحالية لAdventureWorksLT2019.
- الأعبار التي توفر قاعدة تواريخ للنتيجة التي ستسحب من جدول SalesLT.Customer.
- في هذه الحالة تستخدم قاعدة المثال AdventureWorksLT2019 تسمية الشEMA ‘SalesLT’ (وغيرها من الأشياء), لذا يتوجب عليك إضافة إسم الشEMA ونقطة وما إلى إسم الجدول وهو ‘Customers’.
- الأعمدة ‘FirstName’ و ‘LastName’ تحصل على إسم الزبون الأول والأخير.
USE AdventureWorksLT2019 SELECT FirstName, LastName from SalesLT.Customer

كوائز قصيرة يمكنك أستخدام النقطة بدون وصلة (*) للحصول على جميع الأعمدة في الجدول بغض النظر عن عدد الأعمدة. يمكنك رؤية مثال لذلك أسفل:
USE AdventureWorksLT2019 SELECT * from SalesLT.Customer

الأعبار SELECT * مفيدة للأستعمال في الأستعمالات العشوائية أو للمراجعة عن أعمدة وبيانات الجدول التي لا تعرفها. ومع ذلك لا يمكنك استخدام هذه الأعبار في الشيوط الإنتاجية – إنها تحصل على المزيد من البيانات من ما يحتاجه برنامجك، ولا تريد تعديل عبء سيرفر.
كيفية تصفية الصفوف باستخدام شرط WHERE في SQL
القوة الحقيقية لبيانة SELECT تكمن في قدرتها على التصفية والانضمام. يمكن لاستعلام SELECT استخدام شرط WHERE اختياري لتصفية البيانات التي ستعاد.
تستخدم عبارة WHERE شرطًا واحدًا أو أكثر من الشروط المنطقية لتحديد بيانات الجدول المطلوبة. تأتي عبارة WHERE دائمًا بعد عبارة FROM وقبل عبارات GROUP BY، HAVING، و ORDER BY.
يمكنك رؤية مثال على استخدام جملة WHERE في SQL أدناه. هنا، يتم استخدام جملة WHERE لتصفية قائمة اختيار تحتوي على أعمدة ‘FirstName’، ‘LastName’، ‘Phone’، و ‘CompanyName’ من الصفوف التي تحتوي على قيمة ‘Sharp Bikes’ في عمود ‘CompanyName’.
USE AdventureWorksLT2019 SELECT FirstName, LastName, Phone, CompanyName FROM SalesLT.Customer WHERE CompanyName = 'Sharp Bikes';

تصفية الصفوف التي تحتوي على قيمة كجزء من سلسلة
قوة استخدام جملة WHERE مع جملة SELECT تكمن في مرونتها. تذهب جملة WHERE بعيدًا عن المساواة البسيطة وعمليات “أكبر من” و”أصغر من” عمليات المقارنة. دعنا نلقي نظرة أقرب على بعض الأشياء التي يمكنك القيام بها باستخدام جملة WHERE، بدءًا باستخدام مشغل SQL LIKE.
يُستخدم عمليّة التطابق (LIKE) للتحديد ما إذا كان عبارة معينة تطابق نمط معين. في المثال أسفل، سنحصل على جميع الأسطر من جدول الزبائن التي تحتوي على كلمة “Bike” في أي مكان من قاموس “CompanyName”. في هذه الحالة ، يتوجب أستخدام رمز التعاريف % للكلمة “Bike” من أجلاً ومن أخراً.
USE AdventureWorksLT2019 SELECT SalesPerson, CompanyName FROM SalesLT.Customer WHERE CompanyName LIKE('%Bike%');

تصفية الأسطر التي تحقق أي من ثلاث شروط
يمكنك أيضًا استخدام الكلاUSE (WHERE) لتصفية الأسطر وفقاً للقيم المختلفة. يظهر ترتيب البرمجيات التالي كيفية استخدام الأمر التالي مع الأمر الاختياري (SELECT) مع الكلاUSE WHERE لتحديد ثلاثة قيم مختلفة من جدول المنتجات. في هذا المثال يستخدم الكلاUSE WHERE مع العمليّة OR لتحديد الأسطر التي يتطابق برمز “ProductID” بقيم 680 أو 711 أو 722.
USE AdventureWorksLT2019 SELECT Name, ProductID, ProductNumber FROM SalesLT.Product WHERE ProductID = 680 OR ProductID = 711 OR ProductID = 722;

تصفية الأسطر التي تحتوي في قاموس من القيم
بالمثل، يمكنك استخدام شرط WHERE لتحديد الصفوف التي تحتوي على قيم موجودة في قائمة معينة تم تعريفها باستخدام عامل الـ IN. في المثال التالي، ستُعيد عبارة SELECT الصفوف التي تحتوي على القيم ‘Bothell’، ‘Bellevue’، أو ‘Renton’ في عمود ‘City’ من جدول SalesLT.Address.
USE AdventureWorksLT2019 SELECT AddressID, AddressLine1, City FROM SalesLT.Address WHERE City IN ('Bothell', 'Bellevue', 'Renton');

تصفية الصفوف التي تحتوي على قيمة بين قيمتين
يمكنك أيضًا استخدام شرط WHERE في عبارة SELECT باستخدام عامل BETWEEN لتحديد قيم الصفوف التي تقع داخل نطاق معين محدد مسبقًا في عمود معين. يوضح المثال التالي كيف يمكنك استخدام BETWEEN لإعادة الصفوف في جدول المنتجات التي تحتوي على قيمة في عمود ‘ListPrice’ تكون أكبر من 10 وأقل من 50.
USE AdventureWorksLT2019 SELECT ProductID, Name FROM SalesLT.Product WHERE ListPrice Between 10 AND 50;

تصفية الصفوف باستخدام شرط HAVING
يمكنك أيضًا تصفية أعمدة في مجموعة النتائج باستخدام الClause HAVING. وقد اضفت الClause HAVING إلى SQL Server لأن لا يمكن استخدام كلمة المرور WHERE مع المتطورات الجماعية مثل GROUP BY. ويستخدم لتحدد شرط بحث للمجموعة أو المجموعة التي تشمل ما يصل إلى شرط واحد أو أكثر من البيانات التي تكون صحيحة لمجموعات مختلفة من السجلات.
يأتي الClause HAVING دائمًا بعد الClause GROUP BY وقبل الClause ORDER BY، كما ترون في العبارة الSQL التالية. في هذا المثال، تتكون مجموعة النتائج من ال’SalesOrderID’ والتعاين القائم ‘SubTotal’. والترتيب هو أسوك (تسلسل) وتم تجميع السجلات المختلفة ومجموعتها بواسطة ال’SalesOrderID’.
USE AdventureWorksLT2019 ; SELECT SalesOrderID, SUM(LineTotal) AS SubTotal FROM SalesLT.SalesOrderDetail GROUP BY SalesOrderID HAVING SUM(LineTotal) > 5000.00 ORDER BY SalesOrderID ;

التوجيه
في هذا البرنامج التعليمي، شرحت أساسيات استخدام تعليمة T-SQL SELECT لتصفية الصفوف بعدة طرق مختلفة. توفر عبارة WHERE مجموعة مرنة للغاية من المشغلات التي تمكنك من تحديد الصفوف بناءً على عدة شروط مختلفة. بالمثل، تمكّنك عبارة HAVING من تحديد مجموعات من الصفوف التي تفي بشرط معين. شكرًا على القراءة وترقبوا المقال التالي في سلسلة SQL Server Essential هذه.
المقال ذو الصلة: