- משפט SQL עוזר לנו לאחזר קבוצה או חבילות של רשומות מהטבלה.
- משפט SQL עוזר לנו לציין תנאי בעמודות או ברשומות של טבלה.
סעיפים שונים הזמינים ב-Structured Query Language הם כדלקמן:
- סעיף איפה
- קבוצה לפי סעיף
- יש סעיף
- הזמנה לפי סעיף
בואו נראה כל סעיף אחד אחד עם דוגמה. נשתמש במסד הנתונים של MySQL לכתיבת השאילתות בדוגמאות.
1. סעיף היכן
נעשה שימוש במשפט WHERE ב-SQL עם שאילתת ה-SELECT, שהיא אחת מפקודות שפת מניפולציות הנתונים. WHERE ניתן להשתמש בסעיפים כדי להגביל את מספר השורות שיוצגו בערכת התוצאות, זה בדרך כלל עוזר בסינון הרשומות. הוא מחזיר רק את השאילתות שממלאות את התנאים הספציפיים של סעיף WHERE. משפט WHERE משמש במשפט SELECT, UPDATE, DELETE וכו'.
משפט WHERE עם שאילתת SELECT
סמל כוכבית משמש עם משפט WHERE בשאילתת SELECT כדי לאחזר את כל ערכי העמודות עבור כל רשומה מטבלה.
תחביר של פסקת where עם שאילתת בחירה כדי לאחזר את כל ערכי העמודות עבור כל רשומה מטבלה:
SELECT * FROM TABLENAME WHERE CONDITION;
אם על פי הדרישה, אנו רוצים לאחזר רק עמודות סלקטיביות, נשתמש בתחביר הבא:
SELECT COLUMNNAME1, COLUMNNAME2 FROM TABLENAME WHERE CONDITION;
שקול את טבלת העובדים עם הנתונים הבאים:
E_ID | שֵׁם | שכר | עִיר | יִעוּד | תאריך_הצטרפות | גיל |
---|---|---|---|---|---|---|
1 | סאקשי קומארי | 50000 | מומבאי | מנהל פרוייקט | 2021-06-20 | 24 |
2 | טג'סוויני נאיק | 75,000 | דלהי | מהנדס מערכות | 24-12-2019 | 23 |
3 | אנוג'ה שארמה | 40000 | ג'איפור | מנהל | 2021-08-15 | 26 |
4 | אנושקה טריפאטי | 90000 | מומבאי | בודקי תוכנה | 2021-06-13 | 24 |
5 | רוחה ג'אטפ | 45,000 | בנגלור | מנהל פרוייקט | 2020-08-09 | 23 |
6 | רותוג'ה דשמוך | 60000 | בנגלור | מנהל | 2019-07-17 | 26 |
7 | קולו של בוויסקר | 55,000 | ג'איפור | מהנדס מערכות | 2021-10-10 | 24 |
8 | יש שייק | 45,000 | פונה | מהנדס תוכנה | 2020-09-10 | 26 |
9 | סוואטי קומארי | 50000 | פונה | בודקי תוכנה | 2021-01-01 | 25 |
10 | מאיורי פאטל | 60000 | מומבאי | מנהל פרוייקט | 2020-10-02 | 24 |
אחד עשר | סימרן חאנה | 45500 | קולהפור | משאבי אנוש | 2019-01-02 | 26 |
12 | שיבאני וואך | 50500 | דלהי | מפתח תוכנה | 2016-09-10 | 25 |
13 | קיראן מהשוורי | 50000 | נאשיק | משאבי אנוש | 2013-12-12 | 23 |
14 | טג'אל ג'יין | 40000 | דלהי | מנהל פרוייקט | 2017-11-10 | 25 |
חֲמֵשׁ עֶשׂרֵה | מוהיני שאה | 38000 | פונה | מפתח תוכנה | 2019-03-05 | עשרים |
דוגמה 1:
כתוב שאילתה כדי לאחזר את כל הרשומות הללו של עובד כאשר שכר העובד גבוה מ-50000.
שאילתא:
mysql> SELECT * FROM employees WHERE Salary > 50000;
השאילתה לעיל תציג את כל אותם רשומות של עובד כאשר שכרו של עובד גדול מ-50000. משכורת מתחת ל-50000 לא תוצג בהתאם לתנאים.
תקבל את הפלט הבא:
לפי התפוקה הצפויה, מוצגות רק הרשומות שבהן שכרו של העובד גדול מ-50000. בטבלת העובד יש שש רשומות שעומדות בתנאי הנתון.
דוגמה 2:
כתוב שאילתה לעדכון הרשומה של העובד והגדר את השם המעודכן כ'הרשאדה שארמה' כאשר שם העיר של העובד הוא ג'איפור.
שאילתא:
mysql> UPDATE employees SET Name = 'Harshada Sharma' WHERE City = 'Jaipur';
השאילתה לעיל תעדכן את שם העובד ל'הרשאדה שארמה', כאשר עירו של העובד היא ג'איפור.
כדי לוודא אם הרשומות מעודכנות או לא, נפעיל שאילתת בחירה.
mysql> SELECT * FROM employees;
יש רק רשומה אחת בטבלה של העובד שבה עירו של העובד היא 'ג'איפור'. המזהה של הרשומה הוא 3, אשר עומד בתנאי הנתון. מכאן שלפי התנאי הנתון, שמו של העובד עם מזהה עובד 3 שונה כעת ל'הרשאדה שארמה'.
דוגמה 3:
כתוב שאילתה למחיקת רשומה של עובד שבה תאריך ההצטרפות של העובד הוא '2013-12-12'.
שאילתא:
mysql> DELETE FROM employees WHERE Date_of_Joining = '2013-12-12';
השאילתה לעיל תמחק את פרטי העובד של העובד שתאריך הצטרפותו הוא '2013-12-12'.
כדי לאמת את התוצאות של השאילתה לעיל, נבצע את שאילתת הבחירה.
mysql> SELECT *FROM employees;
בטבלת העובד יש רק רשומה אחת שבה תאריך ההצטרפות של העובד הוא '2013-12-12'. המזהה של הרשומה הוא 13, אשר עומד בתנאי הנתון. לפיכך על פי התנאי הנתון, העובד בעל מזהה עובד 13 נמחק כעת מטבלת העובד.
2. קבוצה לפי סעיף
הסעיף Group By משמש לסידור סוגים דומים של רשומות לקבוצות בשפת השאילתה המובנית. הסעיף Group by בשפת השאילתה המובנית משמש עם Select Statement. קבוצה לפי משפט ממוקמת אחרי פסקת where במשפט SQL. הסעיף Group By משמש במיוחד עם הפונקציה המצטברת, כלומר, max (), min (), avg (), sum (), count () כדי לקבץ את התוצאה על סמך עמודה אחת או יותר.
התחביר של משפט Group By:
SELECT * FROM TABLENAME GROUP BY COLUMNNAME;
התחביר לעיל יבחר את כל הנתונים או הרשומות מהטבלה, אך הוא יסדר את כל הנתונים או הרשומות הללו בקבוצות על סמך שם העמודה שניתן בשאילתה.
התחביר של משפט Group By עם פונקציות מצטברות:
SELECT COLUMNNAME1, Aggregate_FUNCTION (COLUMNNAME) FROM TABLENAME GROUP BY COLUMNNAME;
בואו נבין את סעיף Group By בעזרת דוגמאות.
שקול את טבלת העובדים עם הנתונים הבאים:
E_ID | שֵׁם | שכר | עִיר | יִעוּד | תאריך_הצטרפות | גיל |
---|---|---|---|---|---|---|
1 | סאקשי קומארי | 50000 | מומבאי | מנהל פרוייקט | 2021-06-20 | 24 |
2 | טג'סוויני נאיק | 75,000 | דלהי | מהנדס מערכות | 24-12-2019 | 23 |
3 | אנוג'ה שארמה | 40000 | ג'איפור | מנהל | 2021-08-15 | 26 |
4 | אנושקה טריפאטי | 90000 | מומבאי | בודקי תוכנה | 2021-06-13 | 24 |
5 | רוחה ג'אטפ | 45,000 | בנגלור | מנהל פרוייקט | 2020-08-09 | 23 |
6 | רותוג'ה דשמוך | 60000 | בנגלור | מנהל | 2019-07-17 | 26 |
7 | קולו של בוויסקר | 55,000 | ג'איפור | מהנדס מערכות | 2021-10-10 | 24 |
8 | יש שייק | 45,000 | פונה | מהנדס תוכנה | 2020-09-10 | 26 |
9 | סוואטי קומארי | 50000 | פונה | בודקי תוכנה | 2021-01-01 | 25 |
10 | מאיורי פאטל | 60000 | מומבאי | מנהל פרוייקט | 2020-10-02 | 24 |
אחד עשר | סימרן חאנה | 45500 | קולהפור | משאבי אנוש | 2019-01-02 | 26 |
12 | שיבאני וואך | 50500 | דלהי | מפתח תוכנה | 2016-09-10 | 25 |
13 | קיראן מהשוורי | 50000 | נאשיק | משאבי אנוש | 2013-12-12 | 23 |
14 | טג'אל ג'יין | 40000 | דלהי | מנהל פרוייקט | 2017-11-10 | 25 |
חֲמֵשׁ עֶשׂרֵה | מוהיני שאה | 38000 | פונה | מפתח תוכנה | 2019-03-05 | עשרים |
דוגמה 1:
כתוב שאילתה כדי להציג את כל הרשומות של טבלת העובדים אך קבץ את התוצאות על סמך עמודת הגיל.
שאילתא:
mysql> SELECT * FROM employees GROUP BY Age;
השאילתה לעיל תציג את כל הרשומות של טבלת העובדים אך מקובצת לפי עמודת הגיל.
תקבל את הפלט הבא:
דוגמה 2:
כתוב שאילתה כדי להציג את כל הרשומות של טבלת העובדים מקובצים לפי הייעוד והשכר.
שאילתא:
mysql> SELECT * FROM employees GROUP BY Salary, Designation;
השאילתה לעיל תציג את כל הרשומות של טבלת העובדים אך מקובצת לפי עמודת השכר והייעוד.
תקבל את הפלט הבא:
דוגמאות לסעיף Group By באמצעות פונקציות צבירה
דוגמה 1:
כתוב שאילתה כדי לרשום את מספר העובדים העובדים על ייעוד מסוים וקבץ את התוצאות לפי ייעוד העובד.
שאילתא:
mysql> SELECT COUNT (E_ID) AS Number_of_Employees, Designation FROM employees GROUP BY Designation;
השאילתה שלעיל תציג את הייעוד עם מספר העובדים העובד על ייעוד זה. כל התוצאות הללו יקובצו לפי עמודת הייעוד.
תקבל את הפלט הבא:
בהתאם לתפוקה הצפויה, ייעוד עם ספירת העובדים בהתאמה מוצג.
דוגמה 2:
כתוב שאילתה כדי להציג את סכום השכר של העובד לפי העיר מקובצת לפי גיל העובד.
שאילתא:
mysql> SELECT SUM (Salary) AS Salary, City FROM employees GROUP BY City;
השאילתה לעיל תחשב תחילה את סכום המשכורות העובדים בכל עיר, ולאחר מכן היא תציג את סכום השכר עם המשכורת המתאימה אך מקובצת לפי עמודת הגיל.
תקבל את הפלט הבא:
לפי התפוקה הצפויה, מוצג סכום שכר העובד לפי העיר אליה שייך העובד. אם שני עובדים שייכים לאותה עיר, אז הם יהיו בקבוצה אחת.
מרבבי 2 עד 1
3. בעל סעיף:
כאשר אנו צריכים להציב תנאים כלשהם בעמודה של הטבלה, אנו משתמשים בסעיף WHERE ב-SQL. אבל אם אנחנו רוצים להשתמש בתנאי כלשהו בעמודה בסעיף Group By באותו זמן, נשתמש במשפט HAVING עם פסקת Group By עבור תנאי העמודה.
תחביר:
TABLENAME GROUP BY COLUMNNAME HAVING CONDITION;
שקול את טבלת העובדים עם הנתונים הבאים:
E_ID | שֵׁם | שכר | עִיר | יִעוּד | תאריך_הצטרפות | גיל |
---|---|---|---|---|---|---|
1 | סאקשי קומארי | 50000 | מומבאי | מנהל פרוייקט | 2021-06-20 | 24 |
2 | טג'סוויני נאיק | 75,000 | דלהי | מהנדס מערכות | 24-12-2019 | 23 |
3 | אנוג'ה שארמה | 40000 | ג'איפור | מנהל | 2021-08-15 | 26 |
4 | אנושקה טריפאטי | 90000 | מומבאי | בודקי תוכנה | 2021-06-13 | 24 |
5 | רוחה ג'אטפ | 45,000 | בנגלור | מנהל פרוייקט | 2020-08-09 | 23 |
6 | רותוג'ה דשמוך | 60000 | בנגלור | מנהל | 2019-07-17 | 26 |
7 | קולו של בוויסקר | 55,000 | ג'איפור | מהנדס מערכות | 2021-10-10 | 24 |
8 | יש שייק | 45,000 | פונה | מהנדס תוכנה | 2020-09-10 | 26 |
9 | סוואטי קומארי | 50000 | פונה | בודקי תוכנה | 2021-01-01 | 25 |
10 | מאיורי פאטל | 60000 | מומבאי | מנהל פרוייקט | 2020-10-02 | 24 |
אחד עשר | סימרן חאנה | 45500 | קולהפור | משאבי אנוש | 2019-01-02 | 26 |
12 | שיבאני וואך | 50500 | דלהי | מפתח תוכנה | 2016-09-10 | 25 |
13 | קיראן מהשוורי | 50000 | נאשיק | משאבי אנוש | 2013-12-12 | 23 |
14 | טג'אל ג'יין | 40000 | דלהי | מנהל פרוייקט | 2017-11-10 | 25 |
חֲמֵשׁ עֶשׂרֵה | מוהיני שאה | 38000 | פונה | מפתח תוכנה | 2019-03-05 | עשרים |
דוגמה 1:
כתוב שאילתה להצגת שם העובדים, השכר והעיר שבה השכר המקסימלי של העובד גדול מ-40000 וקבץ את התוצאות לפי ייעוד.
שאילתא:
mysql> SELECT Name, City, MAX (Salary) AS Salary FROM employees GROUP BY Designation HAVING MAX (Salary) > 40000;
תקבל את הפלט הבא:
הפלט שלעיל מראה ששם העובד, השכר והעיר של עובד שבו שכר העובד גדול מ-40000 מקובצים לפי ייעוד. (עובדים בעלי ייעוד דומה משובצים בקבוצה אחת, ובעלי ייעוד אחר משובצים בנפרד).
דוגמה 2:
כתוב שאילתה להצגת שם העובדים וייעוד כאשר סכום השכר של העובד גדול מ-45000 וקבץ את התוצאות לפי עיר.
שאילתא:
mysql> SELECT Name, Designation, SUM (Salary) AS Salary FROM employees GROUP BY City HAVING SUM (Salary) > 45000;
תקבל את הפלט הבא:
הפלט לעיל מציג את שם העובד, ייעודו ומשכורתו של העובד. סכום השכר גדול מ-45000 מקובצים לפי עיר. (עובדים עם ערים דומות משובצים בקבוצה אחת ואלה שיש להם עיר אחרת אינם דומים משובצים בנפרד).
4. הזמנה לפי סעיף
בכל פעם שאנו רוצים למיין משהו ב-SQL, אנו משתמשים בסעיף ORDER BY. סעיף ORDER BY ב-SQL יעזור לנו למיין את הנתונים על סמך העמודה הספציפית של טבלה. המשמעות היא שכל הנתונים המאוחסנים בעמודה הספציפית עליה אנו מבצעים את סעיף ORDER BY ימוינו. ערכי העמודות המתאימים יוצגו ברצף שבו השגנו את הערכים בשלב הקודם.
כפי שכולנו יודעים, מיון פירושו או בסדר עולה או בסדר יורד. באותו אופן, ORDER BY CLAUSE ממיין את הנתונים בסדר עולה או יורד לפי הדרישה שלנו. הנתונים ימוינו בסדר עולה בכל פעם מילת מפתח ASC משמש עם סעיף ORDER by, וה- מילת מפתח DESC ימיין את הרשומות בסדר יורד.
כברירת מחדל, המיון ב-SQL יתבצע באמצעות הסעיף ORDER BY בסדר ASCENDING אם לא הזכרנו את סדר המיון.
לפני שנעבור לכיוון הדוגמה של סעיף ORDER BY למיון הרשומות, ראשית, נבחן את התחביר כך שיהיה לנו קל לעבור על הדוגמה.
תחביר של משפט ORDER BY ללא מילות מפתח asc ו-desc:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMNAME;
תחביר של משפט ORDER BY למיון בסדר עולה:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME ASC;
תחביר של משפט ORDER BY למיון בסדר יורד:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME DESC;
קחו בחשבון שיש לנו טבלת עובדים עם הנתונים הבאים:
E_ID | שֵׁם | שכר | עִיר | יִעוּד | תאריך_הצטרפות | גיל |
---|---|---|---|---|---|---|
1 | סאקשי קומארי | 50000 | מומבאי | מנהל פרוייקט | 2021-06-20 | 24 |
2 | טג'סוויני נאיק | 75,000 | דלהי | מהנדס מערכות | 24-12-2019 | 23 |
3 | אנוג'ה שארמה | 40000 | ג'איפור | מנהל | 2021-08-15 | 26 |
4 | אנושקה טריפאטי | 90000 | מומבאי | בודקי תוכנה | 2021-06-13 | 24 |
5 | רוחה ג'אטפ | 45,000 | בנגלור | מנהל פרוייקט | 2020-08-09 | 23 |
6 | רותוג'ה דשמוך | 60000 | בנגלור | מנהל | 2019-07-17 | 26 |
7 | קולו של בוויסקר | 55,000 | ג'איפור | מהנדס מערכות | 2021-10-10 | 24 |
8 | יש שייק | 45,000 | פונה | מהנדס תוכנה | 2020-09-10 | 26 |
9 | סוואטי קומארי | 50000 | פונה | בודקי תוכנה | 2021-01-01 | 25 |
10 | מאיורי פאטל | 60000 | מומבאי | מנהל פרוייקט | 2020-10-02 | 24 |
אחד עשר | סימרן חאנה | 45500 | קולהפור | משאבי אנוש | 2019-01-02 | 26 |
12 | שיבאני וואך | 50500 | דלהי | מפתח תוכנה | 2016-09-10 | 25 |
13 | קיראן מהשוורי | 50000 | נאשיק | משאבי אנוש | 2013-12-12 | 23 |
14 | טג'אל ג'יין | 40000 | דלהי | מנהל פרוייקט | 2017-11-10 | 25 |
חֲמֵשׁ עֶשׂרֵה | מוהיני שאה | 38000 | פונה | מפתח תוכנה | 2019-03-05 | עשרים |
דוגמה 1:
כתוב שאילתה כדי למיין את הרשומות בסדר עולה של ייעוד העובד מטבלת העובדים.
שאילתא:
mysql> SELECT * FROM employees ORDER BY Designation;
כאן בשאילתת SELECT, משפט ORDER BY מוחל על העמודה 'Designation' כדי למיין את הרשומות, אבל לא השתמשנו במילת המפתח ASC אחרי משפט ORDER BY כדי למיין בסדר עולה. לכן, כברירת מחדל, הנתונים ימוינו בסדר עולה אם לא נציין מילת מפתח asc.
תקבל את הפלט הבא:
בהתאם לתפוקה הצפויה, הרשומות מוצגות בסדר עולה לפי ייעוד העובד.
דוגמה 2:
כתוב שאילתה להצגת שם העובד והשכר בסדר עולה של שכר העובד מטבלת העובדים.
שאילתא:
mysql> SELECT Name, Salary FROM employees ORDER BY Salary ASC;
כאן בשאילתת SELECT, סעיף ORDER BY מוחל על העמודה 'שכר' כדי למיין את הרשומות. השתמשנו במילת המפתח ASC כדי למיין את השכר של העובד בסדר עולה.
תקבל את הפלט הבא:
כל הרישומים מוצגים בסדר עולה של שכר העובד.
דוגמה 3:
כתוב שאילתה כדי למיין את הנתונים בסדר יורד של שם העובד המאוחסן בטבלת העובדים.
שאילתא:
mysql> SELECT * FROM employees ORDER BY Name DESC;
כאן השתמשנו בסעיף ORDER BY עם שאילתת SELECT מיושמת בעמודה Name כדי למיין את הנתונים. השתמשנו במילת המפתח DESC אחרי הסעיף ORDER BY כדי למיין נתונים בסדר יורד.
תקבל את הפלט הבא:
כל הרשומות מוצגות בסדר יורד של שם העובד.