תמונה על ידי פריפיק
SQL, או Standard Query Language, היא שפת תכנות לניהול ולטפל בנתונים בתוך מערכת ניהול מסד נתונים יחסי (RDBMS). זוהי שפה סטנדרטית המשמשת בחברות רבות כדי לעזור לעסקים לגשת לנתונים בצורה חלקה. מכיוון שהוא נמצא בשימוש נרחב, התעסוקה מציינת את SQL כאחת המיומנויות הנחוצות. לכן חיוני ללמוד על SQL.
אחת הבעיות הנפוצות עבור אנשים בלימוד SQL היא הבנת השאילתות, בעיקר כאשר אדם אחר כותב אותן. היינו עובדים כצוות בחברות ולעיתים קרובות צריכים לקרוא ולהבין את שאילתות ה-SQL שלהם. לכן, עלינו להתאמן בפירוק שאילתות SQL ולהבין אותן.
מאמר זה יעביר תהליך שלב אחר שלב לקריאה והבנה של שאילתות SQL. איך אנחנו עושים את זה? בואו ניכנס לזה.
The first thing we need to do when encountering an SQL query is to understand the general intention of the SQL queries. The general intention doesn’t mean we know entirely about the query’s structure; it’s more about the overall flows.
עלינו להבין את שאילתות SQL הסטנדרטיות כדי להבין את שאילתת SQL הכללית. רוב שאילתות SQL מתחילות ב- לבחור סעיף ופעל לפי ה מן סָעִיף. אם ממשיכים משם, לרוב השאילתות עוקבות אחריהן להצטרף, איפה, קבוצתי קבוצתי, מיין לפי, ו HAVING סעיפים.
הסעיפים לעיל הם סטנדרטיים בשאילתות SQL שעלינו להבין. עבור כל סעיף, הפונקציות שלהם הן:
- לבחור: אילו עמודות יש לקחת מהטבלה
- מן: מאיזו טבלה הגיעו הנתונים
- להצטרף: שלב טבלאות עם המזהה שצוין
- איפה: מסנן נתונים המבוסס על התנאי
- קבוצתי קבוצתי: Organize the data based on the column’s value and allow aggregation function to be performed.
- מיין לפי: סדר את סדר תוצאות הנתונים על סמך העמודה הספציפית
- HAVING: תנאי המסנן לפונקציית צבירה שלא ניתן לציין איתה איפה
אלו הם הסעיפים הסטנדרטיים ומה שאתה צריך למצוא בהתחלה כאשר אתה מבין את מבנה השאילתות הכללי של SQL. בואו נשתמש בקוד לדוגמה כדי ללמוד עוד.
SELECT
customers.name,
purchases.product,
SUM(price) as total_price
FROM
purchases
JOIN customers ON purchases.cust_id = customers.id
WHERE
purchases.category = 'kitchen'
GROUP BY
customers.name,
purchases.product
HAVING
total_price > 10000
ORDER BY
total_price DESC;
כאשר אתה מסתכל על השאילתה למעלה, נסה לזהות את הסעיפים הסטנדרטיים. הסעיף יספק לך הבנה של אילו נתונים נבחרים (לבחור), מאיפה זה (מן ו להצטרף), והמצב (איפה, קבוצתי קבוצתי, מיין לפי, ו HAVING).
לדוגמה, קריאת השאילתה למעלה תספק לך הבנה של הדברים הבאים:
- אנחנו מנסים לקבל שלושה סוגים שונים של נתונים: השם מטבלה שנקראת לקוחות, המוצר מטבלה שנקראת רכישות, והצטברות עמודות המחיר שאינן מזהות מאיפה הטבלה ועם הכינוי total_price (מידע מסעיף לבחור).
- The overall data would come from purchases and customers tables that join together using the cust_id column from purchases and the id column from the customer’s table (Information from clause מ) ו להצטרף).
- נבחר רק את הנתונים עם ערך עמודת הקטגוריה בטבלת הרכישות בתור 'מטבח' (מידע מסעיף איפה),
- קבוצה עבור פונקציית הצבירה עם עמודת השם והמוצר שהגיעו מהטבלה המתאימה (Information from clausule קבוצתי קבוצתי),
- מסונן גם מסכום התוצאה של פונקציית הצבירה כאשר המחיר הכולל הוא יותר מ-10000 (מידע מסעיף HAVING,) ו
- סדר את הנתונים יורדים לפי total_price (מידע מסעיף מיין לפי).
זה המבנה הכללי של שאילתת SQL שאתה צריך לדעת ולזהות. משם, נוכל לחקור עוד מהשאילתה המתקדמת. בואו נמשיך עם השלב הבא.
יהיה זמן שבו תיתקל בשאילתה מורכבת שבה כל כך הרבה לבחור קיימות סעיפים באותה שאילתה. במקרה זה, עלינו להבין את התוצאה הסופית של השאילתה או את התוצאה הסופית (הראשונה) לבחור אתה רואה בשאילתה. המפתח הוא לדעת מה פלט השאילתה רוצה להיות.
בואו נשתמש בקוד מורכב יותר כמו זה למטה.
WITH customerspending AS (
SELECT
customers.id,
SUM(purchases.price) as total_spending
FROM
purchases
JOIN customers ON purchases.cust_id = customers.id
GROUP BY
customers.id
)
SELECT
c.name,
pd.product,
pd.total_product_price,
cs.total_spending
FROM
(
SELECT
purchases.cust_id,
purchases.product,
SUM(purchases.price) as total_product_price
FROM
purchases
WHERE
purchases.category = 'kitchen'
GROUP BY
purchases.cust_id,
purchases.product
HAVING
SUM(purchases.price) > 10000
) AS pd
JOIN customers c ON pd.cust_id = c.id
JOIN customerspending cs ON c.id = cs.id
ORDER BY
pd.total_product_price DESC;
השאילתה נראית מורכבת וארוכה יותר כעת, אך ההתמקדות הראשונית צריכה להיות בגמר בחר, שנראה כמנסה לייצר את סך כל ההוצאות והיסטוריית הרכישות של הלקוח. נסו להעריך מה התוצאה הסופית רוצה להיות ולפרק אותה משם.
יש לנו את התובנה שהתוצאה צריכה להיות מהשאילתות. החלק הבא הוא לראות מה התנאים לגמר לבחור הם. סעיף התנאים, לרבות איפה, קבוצתי קבוצתי, מיין לפי, ו HAVING היו אלה ששלטו בתוצאת הנתונים הכוללת.
Try to read and understand our query’s conditions, and we will better understand our query’s final result. For example, in our previous SQL query, the final condition is only the מיין לפי. המשמעות היא שהתוצאה הסופית תוסדר לפי מחיר המוצר הכולל בסדר יורד.
ידיעת התנאים הסופיים תעזור לך להבין חלק משמעותי מהשאילתה ואת כוונת השאילתה הכוללת.
לבסוף, עלינו להבין מאיפה מגיעים הנתונים. לאחר שנדע על הנתונים לבחירה ועל התנאים לקבלתם, עלינו להבין את המקור. הגמר להצטרף סעיף ייתן לנו להבין כיצד הטבלאות מתקשרות וזרימת הנתונים.
לדוגמה, השאילתה המורכבת הקודמת מראה שביצענו Join פעמיים. זה אומר שהשתמשנו לפחות בשלושה מקורות נתונים לתוצאה הסופית. מידע זה יהיה נחוץ בשלבים המאוחרים יותר כדי להבין כיצד כל מקור נתונים מגיע, במיוחד כאשר מקור הנתונים מגיע משאילתת המשנה.
לאחר שהבנו כיצד צריכה להיות התוצאה הסופית ומאיפה היא מגיעה, עלינו להסתכל מקרוב על הפרטים. מכאן, היינו חוזרים אל כל שאילתות משנה ומבינים מדוע הן בנויות כך.
עם זאת, אנחנו לא מנסים להסתכל עליהם במבנים מלמעלה למטה. במקום זאת, עלינו לנסות להסתכל על השאילתות המשנה הקרובות יותר לתוצאה הסופית, ונעבור לזו הרחוקה ביותר מהתוצאה הסופית. מדוגמה של הקוד למעלה, עלינו לנסות להבין תחילה את הקוד הזה:
SELECT
purchases.cust_id,
purchases.product,
SUM(purchases.price) as total_product_price
FROM
purchases
WHERE
purchases.category = 'kitchen'
GROUP BY
purchases.cust_id,
purchases.product
HAVING
SUM(purchases.price) > 10000
לאחר מכן, אנו עוברים לקוד הרחוק ביותר שהוא זה:
WITH customerspending AS (
SELECT
customers.id,
SUM(purchases.price) as total_spending
FROM
purchases
JOIN customers ON purchases.cust_id = customers.id
GROUP BY
customers.id
)
We can track down the author’s thought process clearly when we break down each subquery from the one closer to the result to the furthest.
נסה לחזור על התהליך שלמעלה אם אתה זקוק לעזרה בהבנת כל שאילתת משנה. עם קצת תרגול, תהיה לך חוויה טובה יותר בקריאה והבנת השאילתה.
קריאה והבנה של שאילתות SQL היא מיומנות שצריכה להיות לכל אחד בעידן המודרני, שכן כל חברה עוסקת בהן. על ידי שימוש במדריך שלב אחר שלב הבא, יהיה לך זמן טוב יותר להבין את שאילתות SQL המורכבות. השלבים כוללים:
- הבן את מבנה שאילתת SQL כללי
- הבן את הבחירה הסופית
- הבן את סעיף התנאים הסופיים
- הבן את ההצטרפות הסופית
- קריאה וחזרה בסדר הפוך
קורנליוס יודא וויאיה הוא עוזר מנהל וכותב נתונים במדעי הנתונים. בעודו עובד במשרה מלאה באליאנץ אינדונזיה, הוא אוהב לחלוק טיפים לפייתון ונתונים באמצעות מדיה חברתית ומדיה כתיבה.
- הפצת תוכן ויחסי ציבור מופעל על ידי SEO. קבל הגברה היום.
- PlatoData.Network Vertical Generative Ai. העצים את עצמך. גישה כאן.
- PlatoAiStream. Web3 Intelligence. הידע מוגבר. גישה כאן.
- PlatoESG. פחמן, קלינטק, אנרגיה, סביבה, שמש, ניהול פסולת. גישה כאן.
- PlatoHealth. מודיעין ביוטכנולוגיה וניסויים קליניים. גישה כאן.
- מקור: https://www.kdnuggets.com/a-step-by-step-guide-to-reading-and-understanding-sql-queries?utm_source=rss&utm_medium=rss&utm_campaign=a-step-by-step-guide-to-reading-and-understanding-sql-queries
- :הוא
- :לֹא
- :איפה
- $ למעלה
- 12
- 17
- 9
- a
- אודות
- מֵעַל
- גישה
- פי
- מתקדם
- לאחר
- - צבירה
- אליאנץ
- להתיר
- an
- ו
- אחר
- ARE
- מאמר
- AS
- לְהַעֲרִיך
- עוזר
- At
- מחבר
- מבוסס
- BE
- כי
- ההתחלה
- להלן
- מוטב
- לשבור
- עסקים
- אבל
- by
- נקרא
- הגיע
- CAN
- לא יכול
- מקרה
- קטגוריה
- בבירור
- קרוב יותר
- קוד
- טור
- עמודות
- לשלב
- איך
- מגיע
- מגיע
- Common
- חברות
- חברה
- מורכב
- מצב
- תנאים
- ממשיך
- נשלט
- cs
- לקוח
- לקוחות
- נתונים
- מדע נתונים
- מסד נתונים
- דילים
- פרטים
- אחר
- do
- לא
- לא
- מטה
- כל אחד
- תעסוקה
- פְּגִישָׁה
- פוגש
- לַחֲלוּטִין
- תקופה
- במיוחד
- חיוני
- כל
- כולם
- דוגמה
- להתקיים
- ניסיון
- לחקור
- לסנן
- סופי
- ראשון
- תזרים
- זורם
- להתמקד
- לעקוב
- בעקבות
- הבא
- בעד
- החל מ-
- פונקציה
- פונקציות
- נוסף
- כללי
- לקבל
- לתת
- קְבוּצָה
- מדריך
- יש
- יש
- he
- לעזור
- כאן
- היסטוריה
- איך
- HTTPS
- ID
- מזהה
- לזהות
- if
- in
- לכלול
- כולל
- אינדונזיה
- מידע
- בתחילה
- תובנה
- במקום
- מטרה
- אינטראקציה
- אל תוך
- IT
- להצטרף
- jpg
- KDnuggets
- מפתח
- סוגים
- לדעת
- שפה
- מאוחר יותר
- לִלמוֹד
- למידה
- הכי פחות
- כמו
- לינקדין
- עוד
- נראה
- אוהב
- בעיקר
- ניהול
- מערכת ניהול
- מנהל
- ניהול
- מניפולציה
- רב
- אומר
- אומר
- מדיה
- מודרני
- יותר
- רוב
- המהלך
- נע
- שם
- הכרחי
- צורך
- הבא
- עַכשָׁיו
- of
- לעתים קרובות
- on
- ONE
- יחידות
- רק
- or
- להזמין
- שלנו
- תפוקה
- מקיף
- חלק
- אֲנָשִׁים
- ביצעתי
- אדם
- אפלטון
- מודיעין אפלטון
- אפלטון נתונים
- תרגול
- קודם
- מחיר
- בעיות
- תהליך
- לייצר
- המוצר
- תכנות
- לספק
- לִרְכּוֹשׁ
- רכישות
- פיתון
- שאילתות
- שאלה
- חומר עיוני
- קריאה
- לחזור על
- אלה
- תוצאה
- להפוך
- s
- אותו
- מדע
- לִרְאוֹת
- נראה
- בחר
- נבחר
- שיתוף
- צריך
- הופעות
- משמעותי
- מְיוּמָנוּת
- מיומנויות
- חלק
- So
- חֶברָתִי
- מדיה חברתית
- כמה
- מָקוֹר
- מקורות
- ספציפי
- מפורט
- הוצאה
- SQL
- תֶקֶן
- התחלה
- שלב
- צעדים
- מִבְנֶה
- מובנה
- מבנים
- סכום
- מערכת
- שולחן
- משימות
- נבחרת
- מֵאֲשֶׁר
- זֶה
- השמיים
- המקור
- שֶׁלָהֶם
- אותם
- שם.
- הֵם
- דבר
- זֶה
- מחשבה
- שְׁלוֹשָׁה
- דרך
- זמן
- טיפים
- ל
- יַחַד
- סה"כ
- לעקוב
- לנסות
- פעמים
- להבין
- הבנה
- us
- להשתמש
- מְשׁוּמָשׁ
- באמצעות
- בְּדֶרֶך כְּלַל
- ערך
- באמצעות
- ללכת
- רוצה
- we
- טוֹב
- מה
- מתי
- אשר
- בזמן
- למה
- באופן נרחב
- יצטרך
- עם
- בתוך
- תיק עבודות
- עובד
- היה
- היה נותן
- סופר
- כתיבה
- אתה
- זפירנט