SQL Server Essentials: שימוש ב-SELECT של SQL ובמושגי WHERE ו-HAVING כדי לאחזר נתונים

בכתבה זו, אסביר את היסודות של שימוש בהצהרת SQL SELECT להשגת נתונים מאחד או יותר של SQL Server שולחנות. אסביר גם כיצד להשיג עמודות מובחנות, כמו גם כיצד להשתמש בפיסוקים SQL WHERE ו-HAVING לסנן שורות.

הדוגמאות בכתבה זו משתמשות בבסיס הנתונים AdventureWorksLT2019 דוגמא. בכתבה הקודמת של סדרת זו, הסברתי כיצד למלא שולחנות SQL Server באמצעות הצהרות INSERT, UPDATE ו-DELETE. הצהרות שפת SQL זו משנות את התוכן של שולחן, אך להצהרת SQL SELECT מטרה שונה.

פרסומת

 

איך להשתמש בהצהרת SQL SELECT פשוטה

הSQL SELECT הצהרה משמשת לשאילתת נתונים משולחן. הקוד הבא מדגים את התחביר הבסיסי ביותר של הצהרת SELECT.

SELECT columns FROM schema_name.table_name;

כפי שצריך לדעת, נתוני הטבלה מאורגנים בפורמט שורה-ועמודה. כל שורה מייצגת רשומה ייחודית בטבלה, וכל עמודה מייצגת שדה בסט הנתונים.

ההסכם הראשון של ההצהרת SELECT הוא רשימת שמות העמודות שיש לאחזר. כאן, אתה מפרט רשימת עמודות המופרדות בפסיקים מהן ברצונך לאחזר נתונים.

פרסום

לאחר מכן, סעיף ה-FROM מפרט את טבלת המקור ושם הסכימה שלה אם דרוש. שרת SQL משתמש בסכימות כדי לקבץ לוגית טבלאות ואובייקטים אחרים במסד הנתונים. הסכימה המוגדרת כברירת מחדל עבור כל מסד נתונים היא dbo, ומכיוון שזו הסכימה שמשמשת כאן, ניתן להתעלם ממנה.

הרשימה הבאה מציגה דוגמה להצהרת SELECT פשוטה:

  • הפקודה הראשונה USE מגדירה את מסד הנתונים הנוכחית כ-AdventureWorksLT2019.
  • הפקודה SELECT מספקת רשימת עמודות לסט התוצאות שיישאפ להשיג מטבלת SalesLT.Customer.
  • במקרה זה, מסד הנתונים הדוגמא AdventureWorksLT2019 משתמש בשם השם של 'SalesLT' (בין אחרים), כך שאתה צריך לכלול את שם השם, נקודה ואז את שם השם, שהוא 'לקוחות'.
  • העמודות 'שם פרטי' ו- 'שם משפחה' משאפות את השם הפרטי ואת השם המשפחה של הלקוח.
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 * שימושית לשאילתות עקיפות או לבדיקת העמודות והנתונים של טבלה שאינך מכיר בה. עם זאת, אסור להשתמש בפקודה זו בקוד הייצור – היא בדרך כלל משאיפה יותר נתונים ממה שהיישומים שלך צריכים, ואתה לא רוצה להגביר את עבודת SQL Server שלך.

פרסומת

איך לסנן שורות עם סעיף WHERE של SQL

הכוח האמיתי של ההצהרה SELECT נמצא ביכולות הסינון וההצטרפות שלה. שאילתת ה-SELECT יכולה להשתמש בסעיף אופציונלי WHERE כדי לסנן את הנתונים שיחזרו.

תנאי boolean אחד או יותר משמשים את סעיף ה- 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, החל משימוש ב- אופרטור LIKE של SQL.

האופרטור LIKE משמש לקביעת האם מחרוזת תווים ספציפית תואמת תבנית מסוימת. בדוגמה שלמטה, אנו מחזירים את כל השורות מטבלת הלקוחות שמכילות את המילה 'Bike' בכל מקום בעמודת 'CompanyName'. כאן, אנו צריכים להשתמש בתו הכללי % מסוג wildcard גם לפני וגם אחרי המילה '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)

סינון שורות שעומדות באחת משלושת התנאים

ניתן גם להשתמש במשפט WHERE כדי לסנן שורות בהתבסס על ערכים שונים מרובים. הקטע הקוד הבא מראה כיצד להשתמש בהצהרת SELECT עם משפט WHERE כדי לבחור שלושה ערכים שונים מטבלת המוצרים. בדוגמה זו, משפט ה-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 כדי להחזיר רק את השורות בטבלת Product שיש להן ערך בעמודת '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

ניתן גם לסנן שורות בסט תוצאות על ידי שימוש בHAVING סעיף. סעיף HAVING נוסף ל- SQL Server מכיוון שמילת המפתח WHERE לא יכולה להיות בשימוש עם פונקציות כוללות כמו GROUP BY. זה משמש לציין תנאי חיפוש עבור קבוצה או כולל אחד או יותר תנאים שהם נכונים לקבוצות שונות של רשומות.

סעיף HAVING תמיד מופיע אחרי סעיף GROUP BY ולפני סעיף ORDER BY, כפי שניתן לראות בהצהרת ה-SQL הבאה. בדוגמה זו, סט התוצאות מורכב מ-'SalesOrderID' ומכינוי עמודה 'SubTotal'. הסדר הוא עולה (ascending) והשורות הן כוללות מקובצות לפי '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)

סיכום

במדריך זה, הסברתי את היסודות של שימוש בהצהרת ה-SELECT ב-T-SQL כדי לסנן שורות במספר דרכים שונות. סעיף ה-WHERE מספק סט גמיש ביותר של אופרטורים שמאפשרים לך לבחור שורות בהתבסס על מספר תנאים שונים. באופן דומה, סעיף ה-HAVING מאפשר לך לבחור קבוצות של שורות העונות על תנאי מסוים. תודה על הקריאה ותמשיכו לעקוב אחר המאמר הבא בסדרת המאמרים החיונית לשרת SQL זה.

מאמר קשור:

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