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

במאמר הקודם למדנו על הכנסת נתונים לטבלת 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         |
+-------------+---------------+--------------+--------------+

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

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

אהבתם? לא אהבתם? דרגו!

לא אהבתי בכלללא אהבתיבסדראהבתיאהבתי מאוד (3 הצבעות, ממוצע: 3.67 מתוך 5)

תגיות: פורסם בקטגוריה: לימוד MySQL

אל תשארו מאחור! יש עוד מה ללמוד!

הצטרפו לעדכונים!

העדכונים נשלחים אך ורק כאשר האתר מתעדכן.

רן בר-זיק

רן בר-זיקכותב כל המאמרים באינטרנט ישראל, מפתח אינטרנט מנוסה במגוון שפות ופלטפורמות.
ניתן ליצור איתי קשר באמצעות:
כתובת המייל שלי: info@internet-israel.com.
פרופיל הלינקדאין שלי

הטוויטר שלי

פרופיל הפייסבוק שלי

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