ספרייה של בית ספר, טבלת שיאים במשחק, מלאי של חנות: כל אלה שמורים במסד נתונים, בטבלאות. כדי לשלוף מהן מידע כותבים שאילתה בשפה בשם SQL. כאן בונים שאילתות בלחיצות ורואים מיד מה חוזר. כדאי להכיר מילונים ורשימות דו-ממדיות, כי טבלה היא בעצם רשימה של שורות.
בטבלה books כל שורה היא ספר אחד, וכל עמודה היא תכונה: שם, סוג, מספר עמודים. לעמודה id יש תפקיד מיוחד: היא מפתח ראשי, מספר שונה לכל שורה, כך שאפשר להצביע על ספר אחד בדיוק.
SELECT אומר אילו עמודות רוצים לראות (* זה הכול). WHERE משאיר רק שורות שעונות על תנאי, למשל pages > 300.
ORDER BY loans DESC מסדר את התוצאה מהגדול לקטן (בלי DESC, מהקטן לגדול). COUNT(*) מחזיר רק מספר: כמה שורות עברו את התנאי.
SELECT title, pages FROM books WHERE pages > 300 ORDER BY pages DESC;
זו טבלת הספרים של ספריית בית ספר דמיונית. בחרו עמודות, תנאי וסדר. השאילתה נכתבת למטה, השורות שעוברות את התנאי מסומנות בטבלה, והתוצאה מופיעה מתחת.
נסו את אלה:
התוצאה
ערך טקסט כותבים בתוך גרשיים בודדים. בלי גרשיים, SQL חושב ש-comics הוא שם של עמודה.
✗ לא נכון
WHERE genre = comics✓ נכון
WHERE genre = 'comics'בפייתון משווים עם ==. ב-SQL משווים עם = אחד.
✗ לא נכון
WHERE year == 2016✓ נכון
WHERE year = 2016WHERE בא לפני 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.
השאלה: "אילו ספרי הרפתקאות הכי מושאלים?" השאילתה:
SELECT title, loans FROM books WHERE genre = 'adventure' ORDER BY loans DESC;
כל השאלות על הטבלה books מהמעבדה. אפשר לגלול למעלה ולהציץ בה.
SQL היא שפה לשאילת שאלות על טבלאות במסד נתונים. כותבים מה רוצים לקבל, למשל "את השמות של כל הספרים עם יותר מ-300 עמודים, מהעבה לדקה", ומסד הנתונים מוצא את זה בעצמו. היא נמצאת כמעט בכל אפליקציה ואתר. נסו במעבדה.
עמודה שהערך בה שונה בכל שורה, כמו מספר ספר בספרייה. בעזרתה אפשר להצביע על שורה אחת בדיוק, גם אם יש שני ספרים עם אותו שם. שם או סוג לא מתאימים, כי הם יכולים לחזור.
WHERE מחליט אילו שורות נשארות, ו-ORDER BY רק מסדר את מה שנשאר. WHERE משנה את מספר השורות בתוצאה, ORDER BY לא משנה אותו לעולם. תרגלו למטה.