SQL Server Essentials: باستخدام SQL SELECT وشرائط WHERE و HAVING لاسترداد البيانات

في هذا المقال، سأقوم بتغطية الأساسيات لاستخدام عبارة 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
An example of a simple SQL SELECT statement (Image credit: Petri/Michael Otey)

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

USE AdventureWorksLT2019
SELECT * from SalesLT.Customer
You can use an asterisk (*) to retrieve all of the columns in the table (Image credit: Petri/Michael Otey)

الأعبار 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';
Using the WHERE clause to filter data that will be returned (Image credit: Petri/Michael Otey)

تصفية الصفوف التي تحتوي على قيمة كجزء من سلسلة

قوة استخدام جملة WHERE مع جملة SELECT تكمن في مرونتها. تذهب جملة WHERE بعيدًا عن المساواة البسيطة وعمليات “أكبر من” و”أصغر من” عمليات المقارنة. دعنا نلقي نظرة أقرب على بعض الأشياء التي يمكنك القيام بها باستخدام جملة WHERE، بدءًا باستخدام مشغل SQL LIKE.

يُستخدم عمليّة التطابق (LIKE) للتحديد ما إذا كان عبارة معينة تطابق نمط معين. في المثال أسفل، سنحصل على جميع الأسطر من جدول الزبائن التي تحتوي على كلمة “Bike” في أي مكان من قاموس “CompanyName”. في هذه الحالة ، يتوجب أستخدام رمز التعاريف % للكلمة “Bike” من أجلاً ومن أخراً.

USE AdventureWorksLT2019
SELECT SalesPerson, CompanyName FROM SalesLT.Customer WHERE CompanyName LIKE('%Bike%');
Using the WHERE clause with the LIKE operator (Image credit: Petri/Michael Otey)

تصفية الأسطر التي تحقق أي من ثلاث شروط

يمكنك أيضًا استخدام الكلا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; 
Filtering rows that meet different conditions with the WHERE clause (Image credit: Petri/Michael Otey)

تصفية الأسطر التي تحتوي في قاموس من القيم

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

USE AdventureWorksLT2019
SELECT AddressID, AddressLine1, City FROM SalesLT.Address
WHERE City IN ('Bothell', 'Bellevue', 'Renton');
Filtering rows that are in a list of values with the IN operator (Image credit: Petri/Michael Otey)

تصفية الصفوف التي تحتوي على قيمة بين قيمتين

يمكنك أيضًا استخدام شرط WHERE في عبارة SELECT باستخدام عامل BETWEEN لتحديد قيم الصفوف التي تقع داخل نطاق معين محدد مسبقًا في عمود معين. يوضح المثال التالي كيف يمكنك استخدام BETWEEN لإعادة الصفوف في جدول المنتجات التي تحتوي على قيمة في عمود ‘ListPrice’ تكون أكبر من 10 وأقل من 50.

USE AdventureWorksLT2019
SELECT ProductID, Name  FROM SalesLT.Product  WHERE ListPrice Between 10 AND 50; 
Filtering rows that have a value between two values (Image credit: Petri/Michael Otey)

تصفية الصفوف باستخدام شرط 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 ;
Filtering rows with the HAVING clause (Image credit: Petri/Michael Otey)

التوجيه

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

المقال ذو الصلة:

Source:
https://petri.com/sql-select-where-clause/