logo

סעיפי SQL

  • משפט SQL עוזר לנו לאחזר קבוצה או חבילות של רשומות מהטבלה.
  • משפט SQL עוזר לנו לציין תנאי בעמודות או ברשומות של טבלה.

סעיפים שונים הזמינים ב-Structured Query Language הם כדלקמן:

  1. סעיף איפה
  2. קבוצה לפי סעיף
  3. יש סעיף
  4. הזמנה לפי סעיף

בואו נראה כל סעיף אחד אחד עם דוגמה. נשתמש במסד הנתונים של 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 לא תוצג בהתאם לתנאים.

תקבל את הפלט הבא:

סעיפי SQL

לפי התפוקה הצפויה, מוצגות רק הרשומות שבהן שכרו של העובד גדול מ-50000. בטבלת העובד יש שש רשומות שעומדות בתנאי הנתון.

דוגמה 2:

כתוב שאילתה לעדכון הרשומה של העובד והגדר את השם המעודכן כ'הרשאדה שארמה' כאשר שם העיר של העובד הוא ג'איפור.

שאילתא:

 mysql> UPDATE employees SET Name = 'Harshada Sharma' WHERE City = 'Jaipur'; 

סעיפי SQL

השאילתה לעיל תעדכן את שם העובד ל'הרשאדה שארמה', כאשר עירו של העובד היא ג'איפור.

כדי לוודא אם הרשומות מעודכנות או לא, נפעיל שאילתת בחירה.

 mysql> SELECT * FROM employees; 

סעיפי SQL

יש רק רשומה אחת בטבלה של העובד שבה עירו של העובד היא 'ג'איפור'. המזהה של הרשומה הוא 3, אשר עומד בתנאי הנתון. מכאן שלפי התנאי הנתון, שמו של העובד עם מזהה עובד 3 שונה כעת ל'הרשאדה שארמה'.

דוגמה 3:

כתוב שאילתה למחיקת רשומה של עובד שבה תאריך ההצטרפות של העובד הוא '2013-12-12'.

שאילתא:

 mysql> DELETE FROM employees WHERE Date_of_Joining = '2013-12-12'; 

סעיפי SQL

השאילתה לעיל תמחק את פרטי העובד של העובד שתאריך הצטרפותו הוא '2013-12-12'.

כדי לאמת את התוצאות של השאילתה לעיל, נבצע את שאילתת הבחירה.

 mysql> SELECT *FROM employees; 

סעיפי SQL

בטבלת העובד יש רק רשומה אחת שבה תאריך ההצטרפות של העובד הוא '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; 

השאילתה לעיל תציג את כל הרשומות של טבלת העובדים אך מקובצת לפי עמודת הגיל.

תקבל את הפלט הבא:

סעיפי SQL

דוגמה 2:

כתוב שאילתה כדי להציג את כל הרשומות של טבלת העובדים מקובצים לפי הייעוד והשכר.

שאילתא:

 mysql> SELECT * FROM employees GROUP BY Salary, Designation; 

השאילתה לעיל תציג את כל הרשומות של טבלת העובדים אך מקובצת לפי עמודת השכר והייעוד.

תקבל את הפלט הבא:

סעיפי SQL

דוגמאות לסעיף Group By באמצעות פונקציות צבירה

דוגמה 1:

כתוב שאילתה כדי לרשום את מספר העובדים העובדים על ייעוד מסוים וקבץ את התוצאות לפי ייעוד העובד.

שאילתא:

 mysql> SELECT COUNT (E_ID) AS Number_of_Employees, Designation FROM employees GROUP BY Designation; 

השאילתה שלעיל תציג את הייעוד עם מספר העובדים העובד על ייעוד זה. כל התוצאות הללו יקובצו לפי עמודת הייעוד.

תקבל את הפלט הבא:

סעיפי SQL

בהתאם לתפוקה הצפויה, ייעוד עם ספירת העובדים בהתאמה מוצג.

דוגמה 2:

כתוב שאילתה כדי להציג את סכום השכר של העובד לפי העיר מקובצת לפי גיל העובד.

שאילתא:

 mysql> SELECT SUM (Salary) AS Salary, City FROM employees GROUP BY City; 

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

תקבל את הפלט הבא:

סעיפי SQL

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

מרבבי 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; 

תקבל את הפלט הבא:

סעיפי SQL

הפלט שלעיל מראה ששם העובד, השכר והעיר של עובד שבו שכר העובד גדול מ-40000 מקובצים לפי ייעוד. (עובדים בעלי ייעוד דומה משובצים בקבוצה אחת, ובעלי ייעוד אחר משובצים בנפרד).

דוגמה 2:

כתוב שאילתה להצגת שם העובדים וייעוד כאשר סכום השכר של העובד גדול מ-45000 וקבץ את התוצאות לפי עיר.

שאילתא:

 mysql> SELECT Name, Designation, SUM (Salary) AS Salary FROM employees GROUP BY City HAVING SUM (Salary) > 45000; 

תקבל את הפלט הבא:

סעיפי SQL

הפלט לעיל מציג את שם העובד, ייעודו ומשכורתו של העובד. סכום השכר גדול מ-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.

תקבל את הפלט הבא:

סעיפי SQL

בהתאם לתפוקה הצפויה, הרשומות מוצגות בסדר עולה לפי ייעוד העובד.

דוגמה 2:

כתוב שאילתה להצגת שם העובד והשכר בסדר עולה של שכר העובד מטבלת העובדים.

שאילתא:

 mysql> SELECT Name, Salary FROM employees ORDER BY Salary ASC; 

כאן בשאילתת SELECT, סעיף ORDER BY מוחל על העמודה 'שכר' כדי למיין את הרשומות. השתמשנו במילת המפתח ASC כדי למיין את השכר של העובד בסדר עולה.

תקבל את הפלט הבא:

סעיפי SQL

כל הרישומים מוצגים בסדר עולה של שכר העובד.

דוגמה 3:

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

שאילתא:

 mysql> SELECT * FROM employees ORDER BY Name DESC; 

כאן השתמשנו בסעיף ORDER BY עם שאילתת SELECT מיושמת בעמודה Name כדי למיין את הנתונים. השתמשנו במילת המפתח DESC אחרי הסעיף ORDER BY כדי למיין נתונים בסדר יורד.

תקבל את הפלט הבא:

סעיפי SQL

כל הרשומות מוצגות בסדר יורד של שם העובד.