SQL פשוט: יצירת שאילתות מודולריות ומובנות עם CTEs - KDnuggets

SQL פשוט: יצירת שאילתות מודולריות ומובנות עם CTEs - KDnuggets

צומת המקור: 3084928

SQL פשוט: יצירת שאילתות מודולריות ומובנות עם CTEs
תמונה מאת המחבר 
 

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

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

עם זאת, כל מי שעבד עם שאילתות SQL מורכבות יודע שהן יכולות להפוך במהירות לחיות קשות - קשות לקריאה, לתחזוקה או לשימוש חוזר. 

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

זה המקום שבו ביטויי טבלה נפוצים (CTEs) נכנסים לתמונה, והופכים את אמנות כתיבת השאילתות למלאכה מובנית יותר ונגישה יותר.

אז בואו נגלה יחד כיצד לקודד שאילתות קריאות וניתנות לשימוש חוזר.

אם אתה תוהה מה זה CTE, אתה נמצא במאמר הנכון. 

ביטוי טבלה משותף (CTE) הוא ערכת תוצאות זמנית המוגדרת בטווח הביצוע של משפט SQL יחיד. 

 

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

אז הם מהווים כלי רב עוצמה לפירוק שאילתות מורכבות לחלקים פשוטים יותר.

הנה הסיבה שכדאי לך לשקול להשתמש ב-CTE:

  • מודולריות: אתה יכול לפרק את ההיגיון המורכב לנתחים קריאים.
  • קְרִיאוּת: זה מקל על הבנת הזרימה של שאילתות SQL.
  • שימוש חוזר: ניתן להפנות ל-CTE מספר פעמים בשאילתה אחת, תוך הימנעות מחזרות.

הקסם מתחיל בסעיף WITH, שקודם לשאילתה הראשית שלך ומגדיר טבלאות זמניות שונות (CTEs) עם כינויים.

לכן, אנחנו תמיד צריכים להתחיל את השאילתה שלנו עם הפקודה "WITH" כדי להתחיל להגדיר CTEs משלנו. על ידי שימוש ב-CTE, אנו יכולים לחלק כל שאילתת SQL מורכבת ל: 

– טבלאות זמניות קטנות שמחשבות משתנים קשורים. 

– טבלה סופית שלוקחת רק את המשתנים שאנו רוצים בתור הפלט שלנו.

וזו בדיוק הגישה המודולרית שאנחנו רוצים בכל קוד!

 

SQL פשוט: יצירת שאילתות מודולריות ומובנות עם CTEs
תמונה מאת המחבר
 

אז השימוש ב-CTE בשאילתות שלנו מאפשר לנו:

- בצע טבלה זמנית פעם אחת והפנה אליה מספר פעמים.

- שפר את הקריאות ופשט את ההיגיון המורכב.

- קדם שימוש חוזר בקוד ועיצוב מודולרי.

כדי להבין זאת טוב יותר, נוכל לקחת דוגמה מעשית של רישומי Airbnb בברצלונה. 

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

כדי להמחיש זאת, נשתמש ב- InsideAirbnb טבלה של ברצלונה, שנראית כך: 

 

SQL פשוט: יצירת שאילתות מודולריות ומובנות עם CTEs
 

גישה נאיבית עלולה להוביל אותך ליצור שאילתות משנה מקוננות שהופכות במהירות לסיוט תחזוקה כמו זה כדלקמן:

קוד לפי מחבר

במקום זאת, אנו יכולים להשתמש ב-CTE כדי לחלק את השאילתה שלנו לקטעים לוגיים - כל אחד מגדיר חלק מהפאזל.

  • נתוני שכונה: צור CTE כדי לסכם נתונים לפי שכונה.
  • מידע על דירה ומארח: הגדר CTEs לפרטים על דירות ומארחים.
  • מדדים ברחבי העיר: CTE נוסף לאיסוף נתונים סטטיסטיים ברמת העיר לשם השוואה.
  • הרכבה סופית: שלב את ה-CTE במשפט SELECT אחרון כדי להציג את הנתונים בצורה מגובשת.

 

SQL פשוט: יצירת שאילתות מודולריות ומובנות עם CTEs
תמונה מאת המחבר
 

ובסופו של דבר נקבל את השאילתה הבאה:

קוד לפי מחבר

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

אם צצות דרישות חדשות, אתה יכול להתאים או להוסיף CTEs מבלי לשנות את כל השאילתה.

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

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

CTEs הם עדות לעיקרון שמבנה קטן מוביל הרבה בתכנות. על ידי אימוץ CTEs, אתה יכול לכתוב שאילתות SQL ברורות יותר, ניתנות לתחזוקה וניתנות לשימוש חוזר. 

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

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

העצמי העתידי שלך - וכל מי שעשוי לקרוא את הקוד שלך - יודה לך.
 
 

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

בול זמן:

עוד מ KDnuggets