מבוא
שפת SQL
SQL הוא ראשי תיבות עבור שפת שאילתות מובנית. SQL משמש לתקשורת עם מסדי נתונים יחסיים. משפטי SQL משמשים לביצוע משימות כגון עדכון נתונים במסד נתונים, או אחזור נתונים ממסד נתונים. לדוגמה, משפט SQL SELECT משמש לשאילתה במסד הנתונים ולהחזרת ערכה של שורות נתונים. מערכות ניהול נפוצות של מסדי נתונים יחסיים המשתמשות ב- SQL כוללות את Microsoft SQL Server, MySQL, PostgreSQL, MariaDB ו- Oracle.
קיים תקן של שפת SQL המוגדר על-ידי המכון האמריקאי לתקנים הלאומיים (ANSI). כל ספק מוסיף וריאציות והרחבות משלו.
במודול זה, תלמד כיצד:
- הבנת SQL ואופן השימוש בו
- זיהוי אובייקטי מסד נתונים בסכימות
- זיהוי סוגים של משפטי SQL
- שימוש במשפט SELECT כדי לבצע שאילתה על טבלאות במסד נתונים
- עבודה עם סוגי נתונים
- כתובות NUL של נקודת אחיזה
Transact-SQL
משפטי SQL בסיסיים, כגון SELECT, INSERT, UPDATE ו- DELETE זמינים ללא קשר למערכת מסדי הנתונים היחסית שבה אתה עובד. למרות ש משפטי SQL אלה הם חלק מתקן ANSI SQL, מערכות ניהול מסדי נתונים רבות כוללות גם הן הרחבות משלהן. הרחבות אלה מספקות פונקציונליות אינן מכוסות לפי תקן ה- SQL, והן כוללות אזורים כגון ניהול אבטחה ואפשרויות תיכנות. מערכות מסדי נתונים של Microsoft כגון SQL Server, Azure SQL Database, Microsoft Fabric ואחרות משתמשות בחיוג של SQL שנקרא Transact-SQL או T-SQL. T-SQL כולל הרחבות שפה עבור כתיבת פרוצדורות ופונקציות מאוחסנות, שהם קוד יישום המאוחסן במסד הנתונים וניהול חשבונות משתמשים.
SQL הוא שפה הצהרתית
שפות תיכנות יכולות להיות מסווגות כ procedural אוכהצהרתן. שפות רצף מאפשרות לך להגדיר רצף הוראות שהמחשב עוקב אחריהן כדי לבצע משימה. שפות הצהרתיות מאפשרות לך לתאר את הפלט הרצוי, ולהשאיר את פרטי השלבים הדרושים להפקת הפלט למנוע הביצוע.
SQL תומך בתחביר procedural מסוים, אך ביצוע שאילתה על נתונים באמצעות SQL עוקב בדרך כלל אחר סמנטיקה הצהרתית. השתמש ב- SQL כדי לתאר את התוצאות הרצויות, ומעבד השאילתות של מנגנון מסד הנתונים מפתח תוכנית שאילתה כדי לאחזר אותה. מעבד השאילתות משתמש בסטטיסטיקה לגבי הנתונים במסד הנתונים ואינדקסים המוגדרים בטבלאות כדי למצוא תוכנית שאילתה טובה.
נתונים יחסיים
SQL משמש לעתים קרובות (אך לא תמיד) כדי לבצע שאילתה על נתונים במסדי נתונים יחסיים. מסד נתונים יחסי הוא מסד נתונים שבו הנתונים אורגן בטבלאות מרובות (הנקראות באופן טכני קשרי גומלין ), כל אחד מהם מייצג סוג מסוים של ישות (כגון לקוח, מוצר או הזמנת מכירה). התכונות של ישויות אלה (לדוגמה, שם לקוח, מחיר מוצר או תאריך הזמנה של הזמנת מכירה) מוגדרות כעמודות, או כתכונות, של הטבלה, וכל שורה בטבלה מייצגת מופע של סוג הישות (לדוגמה, לקוח, מוצר או הזמנת מכירה ספציפיים).
הטבלאות במסד הנתונים קשורות זו לזה באמצעות עמודות מפתח המזהות באופן ייחודי את הישות המסוימת המיוצגת. מפתח ראשי מוגדר עבור כל טבלה, והפניה למפתח זה מוגדרת כמפתח זר בכל טבלה קשורה. קל יותר להבין זאת על-ידי התסתכלות בדוגמה:
הדיאגרמה מציגה מסד נתונים יחסי המכיל ארבע טבלאות:
- לקוח
- SalesOrderHeader
- SalesOrderDetail
- מוצר
כל לקוח מזוהה על-ידי שדה CustomerID ייחודי - שדה זה הוא המפתח הראשי עבור טבלת הלקוחות. הטבלה SalesOrderHeader כוללת מפתח ראשי בשם OrderID כדי לזהות כל הזמנה, והיא כוללת גם מפתח זר של CustomerID המפנה למפתח הראשי בטבלת הלקוחות כך שהוא מזהה איזה לקוח משויך לכל הזמנה. נתונים אודות הפריטים הבודדים בהזמנה מאוחסנים בטבלה SalesOrderDetail, הכוללת מפתח ראשי מורכב המשלב את ה- OrderID בטבלה SalesOrderHeader עם ערך LineItemNo. השילוב של ערכים אלה מזהה באופן ייחודי פריט שורה. השדה OrderID משמש גם כמפתח זר כדי לציין לאיזה סדר שייך פריט השורה, שדה ProductID משמש כמפתח זר למפתח הראשי של ProductID בטבלת המוצר כדי לציין איזה מוצר הוזמן.
עיבוד מבוסס-הגדרה
תיאוריית ההגדרה היא אחת מהיס בסיסיות המתמטיות של המודל היחסי של ניהול נתונים, והיא מהותית לעבודה עם מסדי נתונים יחסיים. על אף שייתכן שתוכל לכתוב שאילתות ב- T-SQL ללא הבנה מעמיקה של ערכות, ייתכן שבסופו של דבר תיתקל בקשיים בכתיבת חלק מסוגי המשפטים המורכבים יותר שייתכן שתידרש לביצועים מיטביים.
מבלי לצלול לתוך המתמטיקה של תיאוריית הערכה, ניתן לחשוב על ערכה כ"אוסף של אובייקטים ברורים, ברורים שנחשבים לשלם". במונחים המוחלים על מסדי נתונים של SQL Server, ניתן לחשוב על ערכה כאוסף של אובייקטים ייחודיים המכילים אפס או יותר חברים מאותו סוג. לדוגמה, הטבלה Customer מייצגת ערכה: באופן ספציפי, את ערכת כל הלקוחות. תוכל לראות שהתוצאות של משפט SELECT מהותיות גם הן כערכה.
ככל שתלמד עוד אודות משפטי שאילתת T-SQL, חשוב תמיד לחשוב על כל הקבוצה, במקום על חברים בודדים. הלך רוח זה יצייד אותך טוב יותר בכתיבת קוד מבוסס-ערכה, במקום לחשוב על שורה אחת בכל פעם. עבודה עם ערכות מחייבת חשיבה במונחים של פעולות המתרחשות "כולם בו-זמנית" במקום אחת בכל פעם.
אחת התכונות החשובות שיש לשים לב לגבי תיאוריית ההגדרה היא שאין מפרט בנוגע לכל סדר של חברי ערכה. היעדר סדר זה חל על טבלאות של מסד נתונים יחסי. אין מושג של שורה ראשונה , שורה שניהאו שורה אחרונה . ניתן לגשת לרכיבים (ולאחזר אותם) בכל סדר. אם עליך להחזיר תוצאות בסדר מסוים, עליך לציין אותן באופן מפורש באמצעות משפט ORDER BY בשאילתת SELECT.