בכתבה זו, אסביר את היסודות של שימוש בהצהרת 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

כדקדוק, אפשר להשתמש בכוכבית (*) כדי להשיג את כל העמודות בטבלה בלי קשר למספר העמודות. אפשר לראות דוגמא לכך להלן:
USE AdventureWorksLT2019 SELECT * from SalesLT.Customer

הפקודה 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';

סינון שורות המכילות ערך כחלק ממחרוזת
הכוח שבשימוש בפסקאלה WHERE עם הצהרת SELECT נמצא בגמישותו. פסקאלה WHERE עוברת מעבר לשוויון הפשוט, "גדול מ" ו- "קטן מ" אופרטורי השוואה. בואו נסתכל מקרוב יותר על כמה מהדברים שאפשר לעשות עם פסקאלה WHERE, החל משימוש ב- אופרטור LIKE של SQL.
האופרטור LIKE משמש לקביעת האם מחרוזת תווים ספציפית תואמת תבנית מסוימת. בדוגמה שלמטה, אנו מחזירים את כל השורות מטבלת הלקוחות שמכילות את המילה 'Bike' בכל מקום בעמודת 'CompanyName'. כאן, אנו צריכים להשתמש בתו הכללי % מסוג wildcard גם לפני וגם אחרי המילה 'Bike'.
USE AdventureWorksLT2019 SELECT SalesPerson, CompanyName FROM SalesLT.Customer WHERE CompanyName LIKE('%Bike%');

סינון שורות שעומדות באחת משלושת התנאים
ניתן גם להשתמש במשפט 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;

סינון שורות שנמצאות ברשימת ערכים
כמו כן, אפשר להשתמש בפסקה 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 כדי להחזיר רק את השורות בטבלת Product שיש להן ערך בעמודת 'ListPrice' שגדול מ-10 וקטן מ-50.
USE AdventureWorksLT2019 SELECT ProductID, Name FROM SalesLT.Product WHERE ListPrice Between 10 AND 50;

סינון שורות עם הפסקה 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 ;

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