שליפת נתונים בסיסית באמצעות 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.

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

מיקרו בקרים

בית חכם עם ESPHome ו Home Assistant

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

פיתוח ב-JavaScript

Axios interceptors

תכנון נכון של קריאות AJAX באפליקציה ריאקטית וניהול השגיאות או ההצלחות עם פיצ׳ר נחמד של axios

פתרונות ומאמרים על פיתוח אינטרנט

נגישות טכנית – פודקאסט ומבוא

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

צילום מסך של סוואגר
יסודות בתכנות

openAPI

שימוש בתשתית הפופולרית למיפוי ותיעוד של API וגם הסבר בסיסי על מה זה API

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