שליפת נתונים בסיסית באמצעות MySQL

במאמר מוסבר כיצד לשלוף נתונים מה-MySQL באמצעות פקודת SELECT.

במאמר הקודם למדנו על הכנסת נתונים לטבלת MySQL באמצעות INSERT. כעת אנו נלמד על שליפת נתונים. לשם דוגמא אנו נניח שיש לנו טבלה ששמה הוא my_costumer כמו זו שיצרנו במאמר הקודם. בטבלה יש נתונים כאלו:


+-------------+---------------+--------------+--------------+
| costumer_id | costumer_name | costumer_sex | costumer_age |
+-------------+---------------+--------------+--------------+
|           1 | moshe         | male         |           22 |
|           2 | Haim          | male         |           26 |
|           3 | Yaakov        | male         |           19 |
|           4 | Dan           | male         |           19 |
|           5 | Dana          | female       |           42 |
|           6 | Rina          | female       |           24 |
|           7 | Omri          | male         |            9 |
+-------------+---------------+--------------+--------------+

על מנת לשלוף את כל הנתונים מטבלה כלשהי, אנו משתמשים בפקודת SELECT באופן פשוט ביותר:


SELECT * FROM my_costumer;

אחרי שאנו עושים את זה, תופיע הטבלה עם כל הנתונים שיש לנו. במקרה הזה 7 לקוחות. קל ונעים לראות טבלה כל כך קטנה בקלות כזו. אך נניח ואנו רוצים לשלוף רק את הנשים (אלו שהמין שלהן הוא female). אם כך, גם זה פשוט למדי:



SELECT * FROM my_costumer WHERE costumer_sex = 'female';

ואז זה מה שיצא – כל הנשים:


+-------------+---------------+--------------+--------------+
| costumer_id | costumer_name | costumer_sex | costumer_age |
+-------------+---------------+--------------+--------------+
|           5 | Dana          | female       |           42 |
|           6 | Rina          | female       |           24 |
+-------------+---------------+--------------+--------------+

כמובן שכאן אנו מקבלים את כל הפרטים על הנשים, ואם אנו רוצים רק את השמות שלהם? שינוי קטן בשאילתת ה-SELECT שלנו תפתור את הבעיה:


SELECT costumer_name FROM my_costumer WHERE costumer_sex = 'female';

ואז זה מה שיצא לנו:


+---------------+
| costumer_name |
+---------------+
 | Dana          |
 | Rina          |
+---------------+

אם אנו רוצים להציג גם את הגיל וגם את השם, אין פשוט מזה:


SELECT costumer_name, costumer_age FROM my_costumer WHERE costumer_sex = 'female';

וכך זה יראה, כל הנשים עם הגילאים שלהן:


+---------------+--------------+
| costumer_name | costumer_age |
+---------------+--------------+
| Dana          |           42 |
| Rina          |           24 |
+---------------+--------------+

אנחנו לא חייבים להשתמש רק בקריטריון אחד לסינון, אפשר לסנן גם לפי שם וגם לפי מין באמצעות AND. למשל:


SELECT costumer_name, costumer_age FROM my_costumer WHERE costumer_sex='f
emale' AND costumer_name = 'Rina';

וזה יביא את התוצאה הבאה:


+---------------+--------------+
| costumer_name | costumer_age |
+---------------+--------------+
| Rina          |           24 |
+---------------+--------------+

בואו ונבחר את כל הגברים במועדון הלקוחות שלנו באמצעות שאילתא:


 SELECT * FROM my_costumer WHERE costumer_sex='m
ale';

זה יביא לנו את התוצאה הבאה:


+-------------+---------------+--------------+--------------+
| costumer_id | costumer_name | costumer_age | costumer_sex |
+-------------+---------------+--------------+--------------+
|           1 | moshe         |           26 | male         |
|           2 | Haim          |           22 | male         |
|           3 | Yaakov        |           19 | male         |
|           4 | Dan           |           19 | male         |
|           5 | Dana          |           42 | female       |
|           6 | Rina          |           24 | female       |
|           7 | Omri          |            9 | male         |
+-------------+---------------+--------------+--------------+

כפי שאנו רואים, הטבלה מסודרת לפי סדר האינדקס. אך אם אנו רוצים להציג אותה בסדר אחר, אין קל מזה, פשוט נעזרים ב-ORDER BY וב- ASC או DESC:


select * from my_costumer ORDER BY costumer_age DESC;

יסדר את כל הלקוחות לפי גילאים בסדר יורד (הגיל הגבוה יותר קודם):


+-------------+---------------+--------------+--------------+
| costumer_id | costumer_name | costumer_age | costumer_sex |
+-------------+---------------+--------------+--------------+
|           5 | Dana          |           42 | female       |
|           1 | moshe         |           26 | male         |
|           6 | Rina          |           24 | female       |
|           2 | Haim          |           22 | male         |
|           3 | Yaakov        |           19 | male         |
|           4 | Dan           |           19 | male         |
|           7 | Omri          |            9 | male         |
+-------------+---------------+--------------+--------------+

החלפת ה-DESC ב-ASC תסדר את הטבלה לפי גילאים בסדר הפוך מהנמוך לגבוה. כפי שאנו רואים, יש בטבלה שני אנשים שהגיל שלהם זהה. יעקב ודן – כיצד אנו יכולים לקבוע את הסידור המשני שהוא זה שקובע את הסדר במידה והסדר הראשוני (במקרה שלנו – הגיל) יוצא זהה? פשוט מוסיפים את הסידור באופן הבא:


select * from my_costumer ORDER BY costumer_age DESC, costumer_name ASC;

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


select * from my_costumer ORDER BY costumer_age ASC LIMIT 3;

וכך זה יראה:


+-------------+---------------+--------------+--------------+
| costumer_id | costumer_name | costumer_age | costumer_sex |
+-------------+---------------+--------------+--------------+
|           7 | Omri          |            9 | male         |
|           3 | Yaakov        |           19 | male         |
|           4 | Dan           |           19 | male         |
+-------------+---------------+--------------+--------------+

⚠️המדריכים כאן הם טעימה בלבד! יש ספר מקיף המלמד MySQL מרמת בסיס ועד רמה מתקדמת. הספר הדיגיטלי, שרלוונטי גם לכל מסדי הנתונים שעובדים עם SQL – זמין כאן כחלק מהפרויקט "ללמוד ג'אווהסקריפט בעברית" – זו הדרך הטובה ביותר ללמוד באופן מקיף MySQL.

במאמר הבא נמשיך לפרט על פקודת ה-SELECT שהיא הפקודה החשובה ביותר ב-MySQL.

פוסטים נוספים שכדאי לקרוא

גלילה לראש העמוד