Presentation is loading. Please wait.

Presentation is loading. Please wait.

בסיסי נתונים ושפת SQL הרצאה #6

Similar presentations


Presentation on theme: "בסיסי נתונים ושפת SQL הרצאה #6"— Presentation transcript:

1 בסיסי נתונים ושפת SQL הרצאה #6
אורן דבוסקין

2 מפגש #6 עדכונים – תרגילים, בוחן אמצע המשך פקודת join, תתי-שאילתות
סיכום פקודת SQL select תרגול

3 עדכונים 25/12: חופשת חנוכה. בוחן אמצע: יום א' , 1/1/2012, שעה 10:30
בוחן אמצע: יום א' , 1/1/2012, שעה 10:30 בוחן על שאילתות SQL, בדומה לתרגילים ובכיתה. 2 שאלות "הרצה" – מה עושה השאילתה? 3 שאלות "כתיבה" – כתיבת שאילתה לפי מפרט.

4 עדכונים - המשך הגשת תרגילים 1-3 עד לתאריך 25/12 תזכורת: מצב עדכני:
לאחר מכן יתפרסמו פתרונות, ולא תתאפשר הגשה. תזכורת: בוחן אמצע: 10% מהציון, תרגילים: 20%. במידה ואין בוחן אמצע: תרגילים 30% מהציון. חובת הגשה של 50% מהתרגילים. מצב עדכני: מצב עדכני נוכחות + ציונים נמצא באתר.

5 תזכורת - ישות Entity אובייקט במודל שקיים במציאות, והוא בעל משמעות (טבלה) לדוגמא: סטודנט, ציונים, מרצים, כיתות לימוד ישות חזקה: ישות עם קיום עצמאי חלשה:בעלת תלות בישות אחרת. מופע Instance: פריט מידע בישות (שורה בטבלה).

6 תכונה Attribute מאפיין של הישות (שדה בטבלה). כל תכונה מוגדרת על ידי:
טיפוס נתונים Datatype: סוג הנתון (מספר, תאריך, מחרוזת וכו') מרחב ערכים Domain: מרחב ערכים חוקיים לתכונה (טווח מספרים, האם חובה?) ערך Value: פריט המידע הקיים בתכונה ברגע נתון.

7 מפתח Key מזהה עבור הישות: תכונה אחת או יותר המהווה זיהוי חד-ערכי למופע ביישות. מפתח ראשי Primary Key: קבוצת התכונות המהוות זיהוי חד-ערכי למופע בישות. מפתח זר/חיצוני Foreign key: תכונה/קבוצת תכונות בישות המהווה מפתח ראשי לישות אחרת.

8 תאור בתרשים Entity Name Attribute (PK) Attribute

9 תרשים - דוגמא users user_id user_name birthday hometown

10 קשרים Relationship יחס בעל משמעות בין ישויות שונות.
פונקציית / קרדינליות הקשר: דרגת היחס בין הישויות 1:1 קשר חד-חד ערכי (אחד לאחד) 1:N קשר חד-רב ערכי (אחד לרבים) לכל מופע בישות החלשה יכול להיות מופע אחד בלבד בישות החזקה. M:N קשר רב-רב ערכי (רבים לרבים) לכל מופע בישות החלשה יכול להיות יותר ממופע אחד בישות החזקה.

11 קשרים - דוגמאות טבלת עובדים – פרטי חשבון טבלת מנהלים – עובדים
לכל עובד יש רק מנהל אחד טבלת עובדים – פרוייקטים כל עובד יכול לעבוד במספר פרוייקטים

12 ייצוג בתרשים ERD 1:1 1:N N:M

13 מפתחות ראשיים/זרים? 1:1 1:N N:M האם יש לנו ישות ללא מפתח ראשי?

14 בניית יחס בין טבלאות - SQL
צירוף טבלאות Join: בניית טבלה ע"י צירוף של טבלה אחת או יותר, באמצעות תכונה משותפת. Join condition: התנאי לחיבור בין הטבלאות. שיוך של מפתח זר אל מפתח ראשי

15 דוגמא הצגת שם משתמש, וכל ההודעות שהמשתמש כתב ל wall :
SELECT u.user_name, w.message FROM user AS u, wall AS w WHERE u.user_id = w.user_id

16 דוגמא SELECT u.user_name, w.message FROM user AS u, wall AS w
WHERE u.user_id = w.user_id איזה מהמפתחות הוא זר? איזה ראשי? בחירה מרובה של טבלאות תנאי החיבור

17 סוגי קשרים Inner Join החזרה של הנתונים המשותפים בלבד.

18 דוגמא – inner join users wall JOIN result 11111 Moshe Levi 22222
user_id user_name 11111 Moshe Levi 22222 Yair Cohen 33333 Yoav Gal user_id message 11111 Hello world Good morning 22222 Happy birthday On vacation Feel well JOIN result user_name message Moshe Levi Hello world Good morning Yair Cohen Happy birthday On vacation Feel well

19 סוגי קשרים Outer Join (left, right, full)
הנתונים המשותפים, וגם נתונים שאינן מקיימים את תנאי השיתוף.

20 דוגמא – right outer join
users wall user_id user_name 11111 Moshe Levi 22222 Yair Cohen 33333 Yoav Gal user_id message 11111 Hello world Good morning 22222 Happy birthday On vacation Feel well 3333 This is a mistake JOIN result user_name message Moshe Levi Hello world Good morning Yair Cohen Happy birthday On vacation Feel well Null This is a mistake

21 דוגמא – left outer join users wall JOIN result 11111 Moshe Levi 22222
user_id user_name 11111 Moshe Levi 22222 Yair Cohen 33333 Yoav Gal user_id message 11111 Hello world Good morning 22222 Happy birthday On vacation Feel well JOIN result user_name message Moshe Levi Hello world Good morning Yair Cohen Happy birthday On vacation Feel well Yoav Gal null

22 דוגמא – full outer join users wall JOIN result 11111 Moshe Levi 22222
user_id user_name 11111 Moshe Levi 22222 Yair Cohen 33333 Yoav Gal user_id message 11111 Hello world Good morning 22222 Happy birthday On vacation Feel well 3333 This is a mistake JOIN result user_name message Moshe Levi Hello world Good morning Yair Cohen Happy birthday On vacation Feel well Yoav Gal null Null This is a mistake

23 X סוגי קשרים מכפלה קרטזית cartesian product / cross-join

24 מכפלה קרטזית SELECT u.user_name, w.message FROM user AS u, wall AS w
WHERE u.user_id = w.user_id

25 התוצאה user_name message Moshe Levi Hello world Good morning
Happy birthday On vacation Feel well Yair Cohen Yoav Gal

26 תת-שאילתות Sub Queries
שפת SQL מאפשרת ביצוע פקודת select מקוננת (שאילתה בתוך שאילתה): SELECT … FROM … WHERE [ column ] [ in | not in | exists | not exists | any | all ] ( SELECT … FROM … WHERE … )

27 תת-שאילתה: דוגמא הצגת המשתמשים שכתבו הודעות SELECT user_name
FROM users AS u WHERE exists ( select 1 from messages AS m where u.user_id = m.user_id )

28 תת-שאילתה: דוגמא הצגת המשתמשים שכתבו הודעות באורך מעל 50 תווים
SELECT user_name FROM users WHERE user_id in ( select user_id from messages where len(message) > 50 )

29 סיכום - שאילתת SQL פקודת ה - SELECT : SELECT [ עמודות ]
FROM [ טבלאות ] { WHERE [ תנאי ] } { GROUP BY [ עמודות לבניית קבוצה ] } { HAVING [ תנאי] } { ORDER BY [ עמודות ] } { } = אופציונלי

30 בחירת המידע SELECT [ * | }distinct{ ]columns[ }AS [alias] { ]
FROM [ טבלאות ] { WHERE [ תנאי ] } { GROUP BY [ עמודות לבניית קבוצה ] } { HAVING [ תנאי] } { ORDER BY [ עמודות ] } Select: איזה מידע אנו רוצים – בחירה של העמודות

31 בחירת מקור המידע SELECT [ עמודות ] FROM [ טבלאות {AS [alias] } ]
{ WHERE [ תנאי ] } { GROUP BY [ עמודות לבניית קבוצה ] } { HAVING [ תנאי] } { ORDER BY [ עמודות ] } From: מהיכן המידע יגיע – בחירה של הטבלאות

32 בחירת שורות SELECT [ עמודות ] FROM [ טבלאות ] WHERE [ תנאי ]
{ GROUP BY [ עמודות לבניית קבוצה ] } { HAVING [ תנאי] } { ORDER BY [ עמודות ] } Where: בחירת השורות

33 חלוקת המידע לתתי קבוצות
יצירת קבוצות מידע SELECT [ עמודות ] FROM [ טבלאות ] WHERE [ תנאי ] GROUP BY [ עמודות לבניית קבוצה ] HAVING [ תנאי] { ORDER BY [ עמודות ] } Group by/Having: חלוקת המידע לתתי קבוצות

34 מיון המידע בסדר עולה/יורד
SELECT [ עמודות ] FROM [ טבלאות ] WHERE [ תנאי ] GROUP BY [ עמודות לבניית קבוצה ] HAVING [ תנאי] ORDER BY [ columns [asc|desc] ] Order by: מיון המידע בסדר עולה/יורד

35 פונקציות פונקציות שורה Scalar: פונקציות קבוצה Aggregate:
פונקציות המתבצעות על נתון יחיד. לדוגמא: lower, datevalue רשימת פונקציות שורה פונקציות קבוצה Aggregate: פונקציות המתבצעות על רשימת נתונים לדוגמא: count, average רשימת פונקציות קבוצה רשימת פונקציות כללית וגם

36 חומר עזר נוסף www.db-class.org (הרצאות מוקלטות)
ספר הקורס

37 תרגיל כיתה תרגול יחסים בין טבלאות

38 שיעור הבא בוחן אמצע תרגילים 1-3 להגשה עד ל 25/12. חופשה נעימה!
הגשה ב Access. חופשה נעימה!


Download ppt "בסיסי נתונים ושפת SQL הרצאה #6"

Similar presentations


Ads by Google