מירי
כיתה יב · הכנה לבגרות

מבוא למסדי נתונים ו-SQL שואלים את הטבלה שאלות

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

1

הרעיון

טבלה, שורה, עמודה

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

SELECT ו-WHERE

SELECT אומר אילו עמודות רוצים לראות (* זה הכול). WHERE משאיר רק שורות שעונות על תנאי, למשל pages > 300.

ORDER BY ו-COUNT

ORDER BY loans DESC מסדר את התוצאה מהגדול לקטן (בלי DESC, מהקטן לגדול). COUNT(*) מחזיר רק מספר: כמה שורות עברו את התנאי.

SELECT title, pages FROM books WHERE pages > 300 ORDER BY pages DESC;
לזכור: המחשב מבצע את השאילתה בסדר אחר מזה שכותבים: קודם FROM (איזו טבלה), אחר כך WHERE (אילו שורות), אחר כך ORDER BY (סדר), ובסוף SELECT (אילו עמודות להראות).
2

מעבדה: בונים שאילתה

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

SELECT
WHERE
השוואה
ORDER BY

      

נסו את אלה:

התוצאה

3

טעויות שכולם עושים

טקסט בלי גרשיים

ערך טקסט כותבים בתוך גרשיים בודדים. בלי גרשיים, SQL חושב ש-comics הוא שם של עמודה.

✗ לא נכון

WHERE genre = comics

✓ נכון

WHERE genre = 'comics'

== במקום =

בפייתון משווים עם ==. ב-SQL משווים עם = אחד.

✗ לא נכון

WHERE year == 2016

✓ נכון

WHERE year = 2016

סדר החלקים

WHERE בא לפני ORDER BY. בסדר הפוך השאילתה לא תרוץ.

✗ לא נכון

SELECT * FROM books
ORDER BY year
WHERE pages > 200;

✓ נכון

SELECT * FROM books
WHERE pages > 200
ORDER BY year;

> או >=

loans > 20 לא כולל ספר שהושאל בדיוק 20 פעמים. אם "לפחות 20", כותבים >=. בדקו במעבדה עם 20.

4

דוגמה פתורה: איך המחשב מריץ שאילתה

השאלה: "אילו ספרי הרפתקאות הכי מושאלים?" השאילתה:

SELECT title, loans FROM books WHERE genre = 'adventure' ORDER BY loans DESC;
  1. FROM
  2. WHERE
  3. ORDER BY
  4. SELECT
5

תרגול

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

6

שאלות שכולם שואלים

מה זה SQL?

SQL היא שפה לשאילת שאלות על טבלאות במסד נתונים. כותבים מה רוצים לקבל, למשל "את השמות של כל הספרים עם יותר מ-300 עמודים, מהעבה לדקה", ומסד הנתונים מוצא את זה בעצמו. היא נמצאת כמעט בכל אפליקציה ואתר. נסו במעבדה.

מה זה מפתח ראשי?

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

מה ההבדל בין WHERE ל-ORDER BY?

WHERE מחליט אילו שורות נשארות, ו-ORDER BY רק מסדר את מה שנשאר. WHERE משנה את מספר השורות בתוצאה, ORDER BY לא משנה אותו לעולם. תרגלו למטה.