Разработка любой базы данных подразумевает не רק יצירה ומילוי של טבלאות עם מגוון מידע, אלא גם עבודה נוספת עם נתונים. כדי לבצע נכון מגוון של משימות לבחירת נתונים מטבלאות והפקת דוחות, נעשה שימוש בעיצוב Select הרגיל.
אם ניקח בחשבון את בעיית בחירת הנתונים אובניית דוח כלשהו, אתה יכול לקבוע את רמת המורכבות של פעולה זו. ככלל, כאשר עובדים עם מסדי נתונים רציניים (מבחינת נפח המידע) שנוצרים, למשל בחנויות מקוונות או חברות גדולות, בחירת הנתונים לא תוגבל רק לטבלה אחת. ככלל, הדגימות יכולות להיות ממספר גדול למדי של לא רק טבלאות קשורות, אלא גם תת-שאילתות / שאילתות משנה, שנעשות על ידי המתכנת עצמו, תלוי במשימה שהוקצתה לו. לבחירה מטבלה אחת, תוכלו להשתמש בבנייה הפשוטה ביותר:
בחר * מתוך אדם |
כאשר האדם הוא שם הטבלה שממנה יש להביא נתונים.
אם יש צורך לבחור נתונים מכמה טבלאות, תוכלו להשתמש באחד מהעיצובים הסטנדרטיים כדי להצטרף למספר טבלאות.
אם ניקח בחשבון את השימוש במבנים כאלה ברמה הראשונית, נוכל להבחין במנגנונים הבאים לחיבור מספר הטבלאות הדרוש לדגימה, כלומר:
תוכלו ללמוד כיצד להשתמש במפעילי צירוף טבלה בפועל על ידי בחינת השימוש במפעיל SQL - Inner Join. דוגמה לשימוש בו תיראה כך:
בחר * מתוך אדם הצטרפות פנימית לתת-חלוקה ב- Su_Person = Pe_ID |
שפת ה- SQL והמפעיל הצטרף להצטרפות פנימית יכולים להיותהשתמש לא רק בהצטרפות לשני טבלאות או יותר, אלא גם לחיבור שאילתות משנה אחרות, מה שמקל מאוד על עבודתם של מנהלי מסדי נתונים וככלל יכול להאיץ משמעותית את ביצוע השאילתות המסוימות והמורכבות.
אם אתה שוקל לחבר מספר רב של שאילתות משנה ולאסוף נתונים לטבלה אחת שורה אחר שורה, תוכל גם להשתמש במפעילי האיחוד והאיחוד הכל.
השימוש במבנים אלה יהיה תלוי במשימה שהוגדרה עבור היזם ובתוצאה אותה הוא רוצה להשיג בסופו של דבר.
ברוב המקרים, לשלב כמהטבלאות SQL משתמשות באופרטור הצטרפות פנימית. התיאור של הצטרפות פנימית ב- SQL הוא די קל להבנה עבור המתכנת הממוצע שרק מתחיל לעבוד עם בסיסי נתונים. אם ניקח בחשבון את תיאור מנגנון הפעולה של מבנה זה, נקבל את התמונה הבאה. ההיגיון של המפעיל בכללותו מבוסס על אפשרות של צומת ובחירה רק של הנתונים שנמצאים בכל אחת מהטבלאות הכלולות בשאילתה.
אם ניקח בחשבון עבודה זו מנקודת מבט של פרשנות גרפית, נקבל את המבנה של אופרטור ה- SQL Inner Join, דוגמה לכך ניתן להציג באמצעות התרשים הבא:
לדוגמא, יש לנו שתי טבלאות שהסכמה שלהן היאמוצג באיור. יש להם מספר אחר של רשומות. בכל אחת מהטבלאות יש שדות שקשורים זה לזה. אם ננסה להסביר את פעולת המפעיל על סמך האיור, התוצאה שהוחזרה תהיה בצורה של מערך רשומות משתי טבלאות, בהן מספר השדות הקשורים חופף. במילים פשוטות, השאילתה תחזיר רק את הרשומות האלה (מהטבלה מספר שתיים), שהנתונים עליהן נמצאים בטבלה מספר אחת.
כאמור, מפעיל הצטרפות פנימית ו-התחביר שלה הוא פשוט בצורה בלתי רגילה. כדי לארגן קישורים בין טבלאות במדגם אחד, יהיה זה מספיק לזכור ולהשתמש בתרשים הסכימטי הבא לבניית מפעיל, שנכתב בשורה אחת של קוד SQL של התוכנית, כלומר:
לתקשורת במפעיל זה, העיקרימקשי שולחן. ככלל, בקבוצת טבלאות המאחסנת מידע על עובדים, לאדם ולתת-חלוקה שתוארו יש לפחות שיא דומה אחד. אז בואו נסתכל מקרוב על הצהרת SQL Inner Join, דוגמה לה הוצגה קודם לכן.
יש לנו שולחן Person שמאוחסןמידע על כל העובדים העובדים בחברה. מיד נציין כי המפתח העיקרי של טבלה זו הוא השדה - Pe_ID. זה על זה שהחבורה תלך.
טבלת המשנה השנייה תאוחסןמידע על המחלקות בהן עובדים העובדים. זה בתורו מקושר דרך שדה Su_Person לטבלת האדם. מה זה אומר? בהתבסס על סכמת הנתונים, אנו יכולים לומר כי טבלת המחלקות עבור כל רשומה מהטבלה "עובדים" תכיל מידע על המחלקה בה הם עובדים. על חיבור זה יפעל מפעיל הצטרפות פנימית.
לשימוש ברור יותר, שקול את אופרטור ה- SQL Inner Join (דוגמאות לשימוש בו בטבלה אחת ושתי טבלאות). אם ניקח בחשבון דוגמה לטבלה אחת, אז הכל די פשוט:
בחר * מתוך אדם הצטרפות פנימית לתת-חלוקה ב- Su_Person = Pe_ID |
דוגמאות לשימוש במפעיל מצטרף ל- SQLאשר לאיסוף נתונים מכמה טבלאות ניתן לארגן באופן הנ"ל, עובד על פי עיקרון מעט מסובך. בואו נסבך את המשימה לשתי טבלאות. נניח שיש לנו טבלת Depart המאחסנת מידע על כל המחלקות בכל אחת מהמחלקות. טבלה זו מכילה את מספר המחלקה ומספר העובד ועליך להוסיף את מדגם הנתונים לשם של כל מחלקה. במבט קדימה, ראוי לומר כי ניתן להשתמש בשתי שיטות לפתרון בעיה זו.
הדרך הראשונה היא לחבר את טבלת המחלקה לבחירה. במקרה זה, תוכלו לארגן בקשה באופן הבא:
בחר Pe_ID, Pe_Name, Su_Id, Su_Name, Dep_ID, Dep_Name מאדם הצטרפות פנימית לתת-חלוקה ב- Su_Person = Pe_ID הצטרפות פנימית יוצאת ב- Su_Depart = Dep_ID ו- Pe_Depart = Dep_ID |
השיטה השנייה לפתרון הבעיה היא השימוששאילתת משנה שבה לא כל הנתונים ייבחרו מטבלת המחלקות, אלא רק את הנתונים הדרושים. זאת, בניגוד לשיטה הראשונה, יפחית את זמן עיבוד השאילתות.
בחר Pe_ID, Pe_Name, Su_Id, Su_Name, Dep_ID, Dep_Name מאדם הצטרפות פנימית לתת-חלוקה ב- Su_Person = Pe_ID הצטרפות פנימית (בחר Dep_ID, Dep_Name, Pe_Depart מ- Depart) כ- T ב- Su_Depart = Dep_ID ו- Pe_Depart = Dep_ID |
יש לציין כי עיצוב זה לא תמידיכול להאיץ את השאילתה. לעיתים ישנם מקרים בהם עליכם להשתמש במבחר נתונים נוסף בטבלה זמנית (אם גודלם גדול מדי), ואז לשלבם עם הבחירה הראשית.
בניית שאילתות מורכבות כוללתהשימוש במספר משמעותי של טבלאות ושאילתות משנה הקשורות זו לזו לבחירת נתונים. התחביר של SQL Inner Join יכול לענות על דרישות אלה. דוגמאות לשימוש במפעיל במקרה זה יכולות להיות מסובכות לא רק על ידי בחירות ממקומות אחסון נתונים רבים, אלא גם ממספר רב של שאילתות משנה מקוננות. לדוגמא ספציפית, תוכלו לקחת מבחר נתונים מטבלאות המערכת (מפעיל SQL הצטרף פנימי). דוגמה - 3 טבלאות - במקרה זה תהיה בעלת מבנה מורכב למדי.
במקרה זה, שלושה תנאים נוספים נוספים מחוברים (לטבלה הראשית) ומוצגים מספר תנאים לבחירת נתונים.
כשמשתמשים במפעיל הצטרפות פנימית זה עולהזכרו שככל שהבקשה מורכבת יותר, ייקח לה זמן רב יותר ליישום, ולכן כדאי לחפש דרכים לביצוע ולפתרון של המשימה במהירות רבה יותר.
בסופו של דבר, אני רוצה לומר דבר אחד:עבודה עם מאגרי מידע אינה הדבר הקשה ביותר בתכנות, לכן אם תרצה בכך, כולם בהחלט יכולים לשלוט בידע בבניית מאגרי מידע, ועם הזמן, לאחר שצברו ניסיון, ניתן יהיה לעבוד איתם ברמה מקצועית.