המצגת נטענת. אנא המתן

המצגת נטענת. אנא המתן

SQL: מושגים עמודה, תכונה, שדה, אטריביוט טבלה, רלציה סכמה

מצגות קשורות


מצגת בנושא: "SQL: מושגים עמודה, תכונה, שדה, אטריביוט טבלה, רלציה סכמה"— תמליל מצגת:

1 SQL: מושגים עמודה, תכונה, שדה, אטריביוט טבלה, רלציה סכמה
אביב תשס"ג SQL: מושגים עמודה, תכונה, שדה, אטריביוט טבלה, רלציה סכמה שורה, רשומה, n-יה אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

2 דוגמא של מסד נתונים מסד נתונים של ספרייה Ordered Cust_Id Book_Name
אביב תשס"ג דוגמא של מסד נתונים מסד נתונים של ספרייה Ordered Cust_Id Book_Name Order_Date Books Book_Id Book_Name Year Max_Time Faculty Pages Customers Cust_Id Cust_Name Faculty Borrowed Cust_Id Book_Id From_Date To_Date אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

3 פירוט הטבלאות Customers(Cust_Id, Cust_Name, Faculty)
אביב תשס"ג פירוט הטבלאות Customers(Cust_Id, Cust_Name, Faculty) Cust_Id: (ייחודי לכל לקוח) מס' זהות של לקוח Cust_Name:שם לקוח Faculty: שם פקולטה אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

4 הטבלה Customers Faculty Cust_Name Cust_Id CS Moshe Cohen 12345 EE
אביב תשס"ג הטבלה Customers Faculty Cust_Name Cust_Id CS Moshe Cohen 12345 EE Avi Barak 23456 MED 34567 Lior Edri 45678 56789 67890 אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

5 אביב תשס"ג פירוט הטבלאות (המשך...) Books(Book_Id, Book_Name, Year, Max_Time, Faculty, Pages) Book_Id: מס' מזהה (ייחודי לכל עותק) Book_Name: שם הכותר Year: שנת הוצאה Max_Time: משך השאלה מקס' אפשרי (בימים) Faculty: שם פקולטה Pages: מס' עמודים אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

6 Database And Knowledge
אביב תשס"ג הטבלה Books Faculty Pages Max_Time Year Book_Name Book_Id CS 348 7 1998 Database Systems 1111 14 1112 424 2001 1113 390 1 Database And Knowledge 2222 EE 2223 180 21 Electronic Circuits 3333 MED 580 1985 Genes 7 4444 450 1988 Anatomy 5555 אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

7 פירוט הטבלאות (המשך...) Ordered(Cust_Id, Book_Name, Order_Date)
אביב תשס"ג פירוט הטבלאות (המשך...) Ordered(Cust_Id, Book_Name, Order_Date) Cust_Id: מס' זהות של לקוח Book_Name: שם הכותר Order_Date: תאריך הזמנת הכותר אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

8 Database And Knowledge
אביב תשס"ג טבלת Ordered Order_Date Book_Name Cust_Id 14-Oct-2002 Database Systems 12345 24-Oct-2002 Anatomy 45678 30-Oct-2002 Database And Knowledge 12-Oct-2002 Electronic Circuits אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

9 פירוט הטבלאות (המשך...) Borrowed(Book_Id, Cust_Id, From_Date, To_Date)
אביב תשס"ג פירוט הטבלאות (המשך...) Borrowed(Book_Id, Cust_Id, From_Date, To_Date) Book_Id: מס' מזהה של ספר Cust_Id: מס' זהות של לקוח From_Date: תאריך השאלת הספר To_Date: תאריך החזרת הספר אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

10 טבלת Borrowed To_Date From_Date Cust_Id Book_Id 13-Oct-2002 56789 5555
אביב תשס"ג טבלת Borrowed To_Date From_Date Cust_Id Book_Id 13-Oct-2002 56789 5555 אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

11 אביב תשס"ג שאילתות ב-SQL: SELECT SELECT [ALL | DISTINCT] {[table.]* | expr [alias], exp [alias], …} FROM table [alias], table [alias], … [WHERE condition] [GROUP BY expr, expr, … [HAVING condition]] [{INTERSECT | MINUS | UNION | UNION ALL } SELECT …] [ORDER BY expr [ASC | DESC ], expr [ASC | DESC],…]; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

12 אביב תשס"ג שאילתות ב-SQL: SELECT השאילתה הפשוטה ביותר בוחרת שדות מסוימים מכל הרשומות בטבלה אחת. SELECT column, column, … FROM table; דוגמא: שליפת כל הספרים ומספר העמודים בכל ספר: SELECT Book_Name, Pages FROM Books; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

13 Database And Knowledge
אביב תשס"ג דוגמא - המשך Books: Faculty Pages Max_Time Year Book_Name Book_Id CS 348 7 1998 Database Systems 1111 14 1112 424 2001 1113 390 1 Database And Knowledge 2222 EE 2223 180 21 Electronic Circuits 3333 MED 580 1985 Genes 7 4444 450 1988 Anatomy 5555 אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

14 SELECT Book_Name, Pages FROM Books:
אביב תשס"ג דוגמא - תוצאה SELECT Book_Name, Pages FROM Books: Pages Book_Name 348 Database Systems 424 390 Database And Knowledge 180 Electronic Circuits 580 Genes 7 450 Anatomy אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

15 שליפת כל השדות לשליפת כל השדות, משתמשים בתו "*" (כוכבית).
אביב תשס"ג שליפת כל השדות לשליפת כל השדות, משתמשים בתו "*" (כוכבית). דוגמא: שליפת כל השדות של כל הספרים: SELECT * FROM Books; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

16 Database And Knowledge
אביב תשס"ג דוגמא - תוצאה SELECT * FROM Books: Faculty Pages Max_Time Year Book_Name Book_Id CS 348 7 1998 Database Systems 1111 14 1112 424 2001 1113 390 1 Database And Knowledge 2222 EE 2223 180 21 Electronic Circuits 3333 MED 580 1985 Genes 7 4444 450 1988 Anatomy 5555 אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

17 ביטויים אריתמטיים ניתן לשלוף ביטויים אריתמטיים המשתמשים בשדות הטבלה.
אביב תשס"ג ביטויים אריתמטיים ניתן לשלוף ביטויים אריתמטיים המשתמשים בשדות הטבלה. דוגמא: שליפת שמות ומספרי זיהוי של כל הספרים ומשך ההשאלה בשבועות. SELECT Book_Id, Book_Name, Max_Time/7 FROM Books; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

18 Database And Knowledge
אביב תשס"ג דוגמא - המשך Books: Faculty Pages Max_Time Year Book_Name Book_Id CS 348 7 1998 Database Systems 1111 14 1112 424 2001 1113 390 1 Database And Knowledge 2222 EE 2223 180 21 Electronic Circuits 3333 MED 580 1985 Genes 7 4444 450 1988 Anatomy 5555 אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

19 Database And Knowledge
אביב תשס"ג דוגמא - תוצאה SELECT Book_Id, Book_Name, Max_Time/7 FROM Books : Max_Time/7 Book_Name Book_Id 1 Database Systems 1111 2 1112 1113 Database And Knowledge 2222 2223 3 Electronic Circuits 3333 Genes 7 4444 Anatomy 5555 אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

20 בחירת חלק מהרשומות Where -
אביב תשס"ג בחירת חלק מהרשומות Where - האופציה WHERE condition מאפשרת לבחור רק חלק מהרשומות. דוגמא: שליפת שמות כל הספרים שהוצאו אחרי השנה 1990: SELECT Book_Name FROM Books WHERE Year > 1990; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

21 Database And Knowledge
אביב תשס"ג דוגמא - המשך Books: Faculty Pages Max_Time Year Book_Name Book_Id CS 348 7 1998 Database Systems 1111 14 1112 424 2001 1113 390 1 Database And Knowledge 2222 EE 2223 180 21 Electronic Circuits 3333 MED 580 1985 Genes 7 4444 450 1988 Anatomy 5555 אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

22 Database And Knowledge
אביב תשס"ג דוגמא - תוצאה SELECT Book_Name FROM Books WHERE Year > 1990 : Book_Name Database Systems Database And Knowledge Electronic Circuits אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

23 WHERE (המשך...) תנאים יותר מורכבים:
אביב תשס"ג WHERE (המשך...) תנאים יותר מורכבים: שימוש בסימני היחס: >, =, <, <>, =< ... שימוש בקשרים לוגיים: AND, OR, NOT. דוגמא: שליפת שמות כל הספרים שהוצאו בין השנים 1990 ו- 2000: SELECT Book_Name FROM Books WHERE Year > 1990 AND Year < 2000; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

24 Database And Knowledge
אביב תשס"ג דוגמא - המשך Books: Faculty Pages Max_Time Year Book_Name Book_Id CS 348 7 1998 Database Systems 1111 14 1112 424 2001 1113 390 1 Database And Knowledge 2222 EE 2223 180 21 Electronic Circuits 3333 MED 580 1985 Genes 7 4444 450 1988 Anatomy 5555 אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

25 Database And Knowledge
אביב תשס"ג דוגמא - תוצאה SELECT Book_Name FROM Books WHERE Year > 1990 AND Year < 2000 : Book_Name Database Systems Database And Knowledge Electronic Circuits אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

26 אביב תשס"ג אופרטור BETWEEN בעזרת האופרטור BETWEEN אפשר לכתוב ביטוי זה בצורה יותר קריאה: SELECT Book_Name FROM Books WHERE Year BETWEEN 1990 AND 2000; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

27 עוד דוגמא דוגמא: שליפת שמות כל הספרים שהוצאו לא בין השנים 1990 ו 2000:
אביב תשס"ג עוד דוגמא דוגמא: שליפת שמות כל הספרים שהוצאו לא בין השנים 1990 ו 2000: SELECT Book_Name FROM Books WHERE NOT (Year BETWEEN 1990 AND 2000); או: WHERE Year NOT BETWEEN 1990 AND 2000; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

28 אביב תשס"ג בחירה מרשימה של ערכים דוגמא: שליפת כל הספרים שהוצאו בשנים 1992, 1995 או 1999: SELECT Book_Name FROM Books WHERE Year=1992 OR Year=1998 OR Year=2001; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

29 בחירה מרשימה של ערכים - IN
אביב תשס"ג בחירה מרשימה של ערכים - IN שימוש באופרטור IN: SELECT Book_Name FROM Books WHERE Year IN (1992, 1998, 2001); שימוש באופרטור NOT IN: WHERE Year NOT IN (1992, 1998, 2001); אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

30 אביב תשס"ג האופרטור LIKE האופרטור LIKE בודק התאמה של מחרוזת לתבנית נתונה (wildcards). התו "_" מתאים לתו בודד. התו "%" מתאים לסדרת תווים כלשהי, באורך 0 או יותר. דוגמא: שליפת כל הספרים ששמם מכיל את המחרוזת Database והאות לפני אחרונה היא m: SELECT Book_Name FROM Books WHERE Book_Name LIKE ‘%Database%m_’; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

31 Database And Knowledge
אביב תשס"ג דוגמא - המשך Books: Faculty Pages Max_Time Year Book_Name Book_Id CS 348 7 1998 Database Systems 1111 14 1112 424 2001 1113 390 1 Database And Knowledge 2222 EE 2223 180 21 Electronic Circuits 3333 MED 580 1985 Genes 7 4444 450 1988 Anatomy 5555 אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

32 דוגמא - תוצאה SELECT Book_Name FROM Books
אביב תשס"ג דוגמא - תוצאה SELECT Book_Name FROM Books WHERE Book_Name LIKE ‘%Database%m_’ : Book_Name Database Systems אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

33 ערכים חסרים – NULL NULL – ערך מיוחד המציין ערך חסר ("משבצת ריקה")
אביב תשס"ג ערכים חסרים – NULL NULL – ערך מיוחד המציין ערך חסר ("משבצת ריקה") דוגמאות: תאריך החזרה של ספר שעדיין לא הוחזר פקולטה של לקוח חיצוני השוואה ל-NULL: expr IS NULL – מחזיר true אם expr הוא ערך NULL expr IS NOT NULL דוגמא: שליפת כל הספרים שעוד לא הוחזרו. SELECT Book_Id FROM Borrowed WHERE To_Date IS NULL; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

34 אביב תשס"ג ערכי NULL (המשך) בעיה: ערך של ביטוי אריתמטי או ביטוי לוגי המכיל NULL תמיד יהיה NULL. פתרון: קביעת "ברירת מחדל" עבור ערך שיכול להיות :NULL COALESCE(value, default) דוגמא: הצגת משך ההשאלה בשבועות של כל הספרים (עבור ספרים שעדיין לא הוחזרו יש להציג 0). SELECT Book_Id , COALESCE(To_Date – From_Date, 0) / 7 FROM Borrowed; בצורה כללית: COALESCE(expr1,expr2,…) מחזיר את הערך הראשון השונה מ- NULL אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

35 השמטת כפילויות - DISTINCT
אביב תשס"ג השמטת כפילויות - DISTINCT האופציה DISTINCT משמיטה את הרשומות הכפולות מתוצאת השאילתא. דוגמא: שליפת כל שמות הספרים ושנות ההוצאה, ללא חזרות. SELECT DISTINCT Book_Name, Year FROM Books; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

36 Database And Knowledge
אביב תשס"ג דוגמא - המשך Books: Faculty Pages Max_Time Year Book_Name Book_Id CS 348 7 1998 Database Systems 1111 14 1112 424 2001 1113 390 1 Database And Knowledge 2222 EE 2223 180 21 Electronic Circuits 3333 MED 580 1985 Genes 7 4444 450 1988 Anatomy 5555 אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

37 דוגמא - תוצאה ללא DISTINCT אחרי DISTINCT Year Book_Name Year Book_Name
אביב תשס"ג דוגמא - תוצאה ללא DISTINCT אחרי DISTINCT Year Book_Name 1998 Database Systems 2001 Database And Knowledge Electronic Circuits 1985 Genes 7 1988 Anatomy Year Book_Name 1998 Database Systems 2001 Database And Knowledge Electronic Circuits 1985 Genes 7 1988 Anatomy אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

38 אביב תשס"ג מיון - ORDER BY ORDER BY : מיון של הרשומות הנשלפות על פי הערכים של שדות או ביטויים נתונים. דוגמא: שליפת כל הספרים ממוינים לפי שנת ההוצאה: SELECT * FROM Books ORDER BY Year; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

39 Database And Knowledge
אביב תשס"ג דוגמא - תוצאה SELECT * FROM Books ORDER BY Year : Faculty Pages Max_Time Year Book_Name Book_Id MED 580 7 1985 Genes 7 4444 450 1988 Anatomy 5555 CS 348 1998 Database Systems 1111 14 1112 390 1 Database And Knowledge 2222 EE 180 21 Electronic Circuits 3333 2223 424 2001 1113 אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

40 Database And Knowledge
אביב תשס"ג מיון בסדר הפוך -DESC SELECT * FROM Books ORDER BY Year DESC; Faculty Pages Max_Time Year Book_Name Book_Id CS 424 7 2001 Database Systems 1113 MED 450 1988 Anatomy 5555 348 1998 1111 14 1112 390 1 Database And Knowledge 2222 EE 180 21 Electronic Circuits 3333 2223 580 1985 Genes 7 4444 אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

41 מיון לפי כמה ביטויים מיון ראשוני ומשני.
אביב תשס"ג מיון לפי כמה ביטויים מיון ראשוני ומשני. דוגמא: שליפת פרטי הספרים ממוינים לפי שנת ההוצאה , ולפי מספר העמודים (בין הספרים שהוצאו באותה שנה). SELECT * FROM Books ORDER BY Year, Pages; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

42 מיון (המשך...) ניתן לציין את מס' השדה שלפיו יש למיין.
אביב תשס"ג מיון (המשך...) ניתן לציין את מס' השדה שלפיו יש למיין. דוגמא: שליפת פרטי הספרים ממוינים לפי השדה השלישי: SELECT * FROM Books ORDER BY 3; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

43 פונקציות סטטיסטיות ב- SQL ישנן הפונקציות הסטטיסטיות הבאות:
אביב תשס"ג פונקציות סטטיסטיות ב- SQL ישנן הפונקציות הסטטיסטיות הבאות: MIN – מינימום MAX – מקסימום AVG – ממוצע SUM – סכום COUNT – מספר הרשומות כל אחת מפונקציות אלה פועלת על קבוצת ערכים ומחזירה ערך אחד. אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

44 דוגמא דוגמא: חשב את מספר העמודים הממוצע והמקסימלי בין כל הספרים:
אביב תשס"ג דוגמא דוגמא: חשב את מספר העמודים הממוצע והמקסימלי בין כל הספרים: פתרון: SELECT AVG(Pages), MAX(Pages) FROM Books; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

45 Database And Knowledge
אביב תשס"ג דוגמא – המשך Books: Faculty Pages Max_Time Year Book_Name Book_Id CS 348 7 1998 Database Systems 1111 14 1112 424 2001 1113 390 1 Database And Knowledge 2222 EE 2223 180 21 Electronic Circuits 3333 MED 580 1985 Genes 7 4444 450 1988 Anatomy 5555 אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

46 דוגמא – המשך AVG(Pages) MAX(Pages) 389 580 Pages 348 424 390 180 580
אביב תשס"ג דוגמא – המשך Pages 348 424 390 180 580 450 AVG(Pages) MAX(Pages) 389 580 אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

47 פונקציות סטטיסטיות – המשך
אביב תשס"ג פונקציות סטטיסטיות – המשך ניתן לחשב פונקציות סטטיסטיות רק על חלק מרשומות הטבלה ע"י שימוש באופציה WHERE . לדוגמא: SELECT COUNT (Book_Name) FROM Books WHERE Year = 1998; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

48 פונקציות סטטיסטיות – המשך
אביב תשס"ג פונקציות סטטיסטיות – המשך Books: Faculty Pages Max_Time Year Book_Name Book_Id CS 348 7 1998 Database Systems 1111 14 1112 424 2001 1113 390 1 Database And Knowledge 2222 EE 2223 180 21 Electronic Circuits 3333 MED 580 1985 Genes 7 4444 450 1988 Anatomy 5555 אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

49 דוגמא – המשך Book_Name: Book_Name Book_Name WHERE COUNT(Book_Name)
אביב תשס"ג דוגמא – המשך Book_Name Database Systems Database And Knowledge Electronic Circuits Book_Name: Book_Name Database Systems Database And Knowledge Electronic Circuits Genes 7 Anatomy WHERE COUNT COUNT(Book_Name) 5 אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

50 פונקציות סטטיסטיות -השמטת כפילויות
אביב תשס"ג פונקציות סטטיסטיות -השמטת כפילויות השמטת כפילויות בזמן חישוב הפונקציה: ע"י הוספת המילהDISTINCT לפני הפרמטר. דוגמא: SELECT COUNT (DISTINCT Book_Name) FROM Books WHERE Year = 1998; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

51 דוגמא – המשך (DISTINCT)
אביב תשס"ג דוגמא – המשך (DISTINCT) DISTINCT Book_Name Database Systems Database And Knowledge Electronic Circuits Book_Name Database Systems Database And Knowledge Electronic Circuits COUNT(DISTINCT Book_Name) 3 אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

52 פעולות סטטיסטיות על ערכי NULL
אביב תשס"ג פעולות סטטיסטיות על ערכי NULL כל הפונקציות הסטטיסטיות מתעלמות מערכי NULL. יוצא מן הכלל: COUNT(*). דוגמא: SELECT COUNT (*) FROM Books WHERE Year = 1998; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

53 פונקציות סטטיסטיות – המשך
אביב תשס"ג פונקציות סטטיסטיות – המשך דוגמא: שליפת מספר הספרים בכל שנה ניסיון ראשון: SELECT Year, COUNT(Book_Id) FROM Books; לא חוקי! (הרבה ערכים של Year, ערך אחד של COUNT). אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

54 קיבוץ – GROUP BY הפעלת פונקציות סטטיסטיות על קבוצות של רשומות.
אביב תשס"ג קיבוץ – GROUP BY הפעלת פונקציות סטטיסטיות על קבוצות של רשומות. המשך הדוגמא (תיקון): SELECT Year, COUNT(Book_Id) FROM Books GROUP BY Year; לכל ערך של Year, ה-COUNT מחושב בנפרד. אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

55 דוגמא – המשך (GROUP BY) Year Book_Id COUNT(Book_Id) Year 1998 1111
אביב תשס"ג דוגמא – המשך (GROUP BY) Year Book_Id 1998 1111 1112 2001 1113 2222 2223 3333 1985 4444 1988 5555 COUNT(Book_Id) Year 5 1998 1 1988 2001 1985 אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

56 קיבוץ – המשך דוגמא נוספת: SELECT Faculty, COUNT(Book_Id) FROM Books
אביב תשס"ג קיבוץ – המשך דוגמא נוספת: SELECT Faculty, COUNT(Book_Id) FROM Books GROUP BY Year; לא חוקי! לאחר הקיבוץ לפי Year, בכל קבוצה יכולים להיות ערכי Faculty שונים. כלל: בנוסף לפעולות סטטיסטיות, מותר לשלוף רק שדות לפיהם מתבצע הקיבוץ (וביטויים). אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

57 בחירה לאחר קיבוץ - HAVING
אביב תשס"ג בחירה לאחר קיבוץ - HAVING האופציה HAVING condition: בחירת חלק מהקבוצות המתקבלות מ-GROUP BY . התנאי condition: פונקציות סטטיסטיות, שדות לפיהם מתבצע הקיבוץ, ביטויים. אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

58 דוגמא (HAVING) דוגמא: מה מחזירה השאילתה הבאה?
אביב תשס"ג דוגמא (HAVING) דוגמא: מה מחזירה השאילתה הבאה? SELECT Year, COUNT(Book_Id) FROM Books GROUP BY Year HAVING AVG(Pages) > 400; הסבר: לאחר הקיבוץ לפי Year, מבין כל הקבוצות נבחרות כאלה שבהן ממוצע מספרי העמודים גדול מ- 400. אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

59 Database And Knowledge
אביב תשס"ג דוגמא – המשך (HAVING) Books: Faculty Pages Max_Time Year Book_Name Book_Id CS 348 7 1998 Database Systems 1111 14 1112 424 2001 1113 390 1 Database And Knowledge 2222 EE 2223 180 21 Electronic Circuits 3333 MED 580 1985 Genes 7 4444 450 1988 Anatomy 5555 אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

60 דוגמא – המשך (HAVING) AVG(Pages) > 400 AVG(Pages) COUNT(Book_Id)
אביב תשס"ג דוגמא – המשך (HAVING) AVG(Pages) COUNT(Book_Id) Year 331 5 1998 450 1 1988 424 2001 580 1985 AVG(Pages) > 400 1 1988 COUNT(Book_Id) 1985 2001 Year אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

61 בחירה: WHERE לעומת HAVING
אביב תשס"ג בחירה: WHERE לעומת HAVING WHERE: בחירת רשומות לפני הקיבוץ HAVING: בחירת קבוצות אחרי הקיבוץ. דוגמא: בין כל הספרים עם יותר מ-200 עמודים, חשב בכל שנה את מס' הספרים שיצאו לאור, בתנאי שבממוצע מספר העמודים באותה שנה גדול מ- 400. אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

62 אביב תשס"ג דוגמא – המשך דוגמא: בין כל הספרים עם יותר מ-200 עמודים, חשב בכל שנה את מס' הספרים שיצאו לאור, בתנאי שבממוצע מספר העמודים באותה שנה גדול מ- 400. SELECT Year, COUNT(Book_Id) FROM Books WHERE Pages > 200 GROUP BY Year HAVING AVG(Pages) > 400; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

63 Database And Knowledge
אביב תשס"ג דוגמא – המשך Books: MED 450 7 1988 Anatomy 5555 580 1985 Genes 7 4444 EE 180 21 1998 Electronic Circuits 3333 CS 348 Database Systems 1111 14 1112 424 2001 1113 390 1 Database And Knowledge 2222 2223 Faculty Pages Max_Time Year Book_Name Book_Id WHERE Pages > 200 אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

64 דוגמא – המשך אחרי “GROUP BY Year”: HAVING AVG(Pages) > 400
אביב תשס"ג דוגמא – המשך אחרי “GROUP BY Year”: AVG(Pages) COUNT(Book_Id) Year 369 4 1998 450 1 1988 424 2001 580 1985 1 1988 COUNT(Book_Id) 1985 2001 Year HAVING AVG(Pages) > 400 אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

65 דוגמא – המשך הסבר (שלבים):
אביב תשס"ג דוגמא – המשך הסבר (שלבים): בחירת הרשומות של הספרים שמכילים יותר מ- 200 עמודים. קיבוץ הרשומות לקבוצות, כך שבכל קבוצה יש לכל הרשומות (הספרים) אותו Year. חישוב מספר העמודים הממוצע בכל קבוצה, ובחירת הקבוצות בהן הממוצע הוא לפחות 400. חישוב מס' הספרים בכל קבוצה. אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

66 שאילתות משתי טבלאות או יותר: צירוף (JOIN)
אביב תשס"ג שאילתות משתי טבלאות או יותר: צירוף (JOIN) מטרה: "להצליב" רשומות מרלציות/טבלאות שונות סינטקס: FROM table1, table2, … משמעות: מכפלה קרטזית בין כל הטבלאות התייחסות לשדות מטבלה מסוימת: table1.field ביצוע הצלבה: ע"י הוספת תנאים ב- WHERE אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

67 אביב תשס"ג דוגמא (JOIN) דוגמא: שליפת שמות ומספרי הזהות של הלקוחות יחד עם שמות הספרים שהזמינו. פתרון: SELECT Customer.Cust_Id, Cust_Name, Book_Name FROM Customer, Ordered WHERE Customer.Cust_Id = Ordered.Cust_Id; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

68 Database And Knowledge
אביב תשס"ג דוגמא – המשך (JOIN) Order_Date Book_Name Cust_Id 14-Oct-2002 Database Systems 12345 24-Oct-2002 Anatomy 45678 30-Oct-2002 Database And Knowledge 12-Oct-2002 Electronic Circuits Ordered Faculty Cust_Name Cust_Id CS Moshe Cohen 12345 EE Avi Barak 23456 MED 34567 Lior Edri 45678 56789 67890 Customer אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

69 Database And Knowledge
אביב תשס"ג דוגמא – המשך (JOIN) תוצאה: Book_Name Cust_Name Cust_Id Database Systems Moshe Cohen 12345 Database And Knowledge Anatomy Lior Edri 45678 Electronic Circuits אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

70 JOIN: שליפת כל השדות מטבלה
אביב תשס"ג JOIN: שליפת כל השדות מטבלה שליפת כל השדות של הטבלה. SELECT Customer.*, Book_Name FROM Customer, Ordered WHERE Customer.Cust_Id = Ordered.Cust_Id; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

71 OUTER JOIN: שליפת רשומות ללא התאמה בטבלה השניה
אביב תשס"ג OUTER JOIN: שליפת רשומות ללא התאמה בטבלה השניה מטרה: לכלול את הלקוחות שלא הזמינו אף ספר פתרון: SELECT Customer.Cust_Id, Cust_Name, Book_Name FROM Customer LEFT OUTER JOIN Ordered ON ( Customer.Cust_Id = Ordered. Cust_Id ); אינטואיציה: הוספת שורת ערכי NULL לטבלת ההזמנות, ש"מתאימה" לכל לקוח שימו לב: ON במקום WHERE (תנאי ההצלבה) אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

72 דוגמא – המשך (OUTER JOIN)
אביב תשס"ג דוגמא – המשך (OUTER JOIN) Book_Name Cust_Name Cust_Id Database Systems Moshe Cohen 12345 Database And Knowledge Anatomy Lior Edri 45678 Electronic Circuits Avi Barak 23456 34567 56789 67890 תוצאה: אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

73 דוגמא נוספת דוגמא: מה עושה שאילתה זו?
אביב תשס"ג דוגמא נוספת דוגמא: מה עושה שאילתה זו? SELECT Customer.Cust_Id, Cust_Name, COUNT(Book_Name) FROM Customer LEFT OUTER JOIN Ordered ON (Customer.Cust_Id = Ordered. Cust_Id ( GROUP BY Customer.Cust_Id, Cust_Name; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

74 דוגמא – המשך מה הייתה התוצאה ללא ה-OUTER JOIN?
אביב תשס"ג דוגמא – המשך תשובה: השאילתה מחזירה לכל לקוח ID, שם ומס' הספרים שהזמין. תוצאה: COUNT (Book_Name) Cust_Name Cust_Id 2 Moshe Cohen 12345 Lior Edri 45678 Avi Barak 23456 34567 56789 67890 מה הייתה התוצאה ללא ה-OUTER JOIN? אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

75 שמות נרדפים – ALIAS מטרה: שם נוסף (בד"כ קצר יותר) לטבלה דוגמא:
אביב תשס"ג שמות נרדפים – ALIAS מטרה: שם נוסף (בד"כ קצר יותר) לטבלה דוגמא: SELECT C.Cust_Id, Cust_Name, Book_Name FROM Customer C, Ordered O WHERE C.Cust_Id = O. Cust_Id; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

76 ALIAS: שליפה מאותה טבלה פעמיים
אביב תשס"ג ALIAS: שליפה מאותה טבלה פעמיים שימוש נוסף: מספר עותקים של אותה טבלה SELECT DISTINCT C1.Cust_Name FROM Customer C1, Customer C2 WHERE C1. Cust_Name = C2. Cust_Name AND C1.Cust_Id <> C2.Cust_Id; שאלה: מה מחזירה השאילתה? תשובה: כל הלקוחות כך שיש בספרייה עוד לקוח עם אותו שם. אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

77 ALIAS: מתן שם לביטוי נשלף
אביב תשס"ג ALIAS: מתן שם לביטוי נשלף שימוש נוסף: לתת שם לביטוי סטטיסטי או אריתמטי דוגמא: SELECT Year, COUNT(Book_Id) AS Num_Books FROM Books GROUP BY Year; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

78 אופרטורים מתורת הקבוצות
אביב תשס"ג אופרטורים מתורת הקבוצות התייחסות לרלציה כאל קבוצה של n-יות. אופרטורים ב-SQL: חיתוך – INTERSECT חיסור/הפרש – EXCEPT איחוד – UNION איחוד ללא השמטת כפילויות - UNION ALL תנאי: השאילתות מחזירות אותו מספר עמודות ואותם סוגי עמודות, בהתאמה. אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

79 אופרטורים מתורת הקבוצות – המשך
אביב תשס"ג אופרטורים מתורת הקבוצות – המשך דוגמא: כל הלקוחות שלא הזמינו אף ספר: SELECT Cust_Id FROM Customer EXCEPT SELECT Cust_Id FROM Ordered; שימוש במיון: ORDER BY צריך להופיע אחרי כל האופרטורים עדיף להשתמש במספר השדה ולא בשמו (שיכול להיות שונה בין האופרנדים) אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

80 תתי-שאילתות – SUBQUERIES
אביב תשס"ג תתי-שאילתות – SUBQUERIES מוטיבציה: התנאי ב-WHERE מכיל ביטוי שלא ידוע מראש, אלא תלוי בתוכן המסד. דוגמא: שליפת כל הספרים שיצאו לאור באותה שנה כמו ספר מס' 1112. SELECT Book_Name FROM Books WHERE Year = (SELECT Year FROM Books WHERE Book_Id = 1112); אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

81 תתי-שאילתות – המשך תת-שאילתה יכולה לשלוף כמה ביטויים.
אביב תשס"ג תתי-שאילתות – המשך תת-שאילתה יכולה לשלוף כמה ביטויים. אפשר להשוות לערכים של כל הביטויים האלה בו זמנית. דוגמא: שליפת כל הספרים שיצאו לאור באותה שנה ונמצאים באותה פקולטה כמו ספר מס' 1112. SELECT Book_Name FROM Books WHERE (Year, Faculty) = (SELECT Year, Faculty FROM Books WHERE Book_Id = 1112); אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

82 תתי-שאילתות – המשך תת שאילתה יכולה להופיע החלק ה From.
אביב תשס"ג תתי-שאילתות – המשך תת שאילתה יכולה להופיע החלק ה From. תת השאילתה חייבת לקבל Alias. דוגמא: שליפת שמות הספרים שהוזמנו אחרי 20-0ct-98 ע"י לקוח SELECT Book_Name FROM (SELECT * FROM Ordered Where Order_Date > 20-0ct-98) O WHERE O. Cust_Id = 1234; אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

83 כמתים מוטיבציה: השוואת ערך בודד לקבוצת ערכים
אביב תשס"ג כמתים מוטיבציה: השוואת ערך בודד לקבוצת ערכים בהינתן ערך x וקבוצה A, נרצה לבטא: x גדול מכל הערכים ב-A (yA:x>y) x קטן מערך כלשהו ב-A (yA:x<y) xA (yA:x=y) כמתים ב-SQL: ANY -- קיים ALL -- לכל אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

84 כמתים – המשך הכימות נעשה ע"י כתיבת המילה ANY או ALL אחרי סימן ההשוואה
אביב תשס"ג כמתים – המשך הכימות נעשה ע"י כתיבת המילה ANY או ALL אחרי סימן ההשוואה דוגמא: שליפת ספרים בעלי יותר עמודים מכל הספרים בפקולטה למדעי המחשב. SELECT Book_Name, Pages FROM Books WHERE Pages >ALL (SELECT Pages FROM Books WHERE Faculty = ‘cs’); אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

85 כמתים – המשך (אופרטור שייכות)
אביב תשס"ג כמתים – המשך (אופרטור שייכות) ניתן לממש אופרטור שייכות באמצעות כמתים: =ANY  IN <>ALL  NOT IN דוגמא: SELECT Book_Name, Year FROM Books WHERE Year IN (SELECT Year FROM Books WHERE Faculty = ‘MED’); אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

86 תתי-שאילתות מקוננות ניתן לקונן תתי-שאילתות
אביב תשס"ג תתי-שאילתות מקוננות ניתן לקונן תתי-שאילתות דוגמה: כל הפקולטות שמחזיקות ספרים שהזמין לקוח בשם ליאור אדרי: SELECT Faculty FROM Books WHERE Book_Name IN (SELECT Book_Name FROM Ordered WHERE Cust_Id IN (SELECT Cust_Id FROM Customer WHERE Cust_Name = ‘Lior Edri’)); אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

87 תתי-שאילתות – המשך SELECT B.Faculty
אביב תשס"ג תתי-שאילתות – המשך תתי-שאילתות לעומת JOIN דוגמא: כתוב אותה שאילתה ללא שימוש בתתי שאילתות SELECT B.Faculty FROM Books B, Customer C, Ordered O WHERE B.Book_Name = O.Book_Name AND C.Cust_Id = O. Cust_Id; AND C.Cust_Name = ‘Lior Edri’; שאלה: איזו מהן יותר יעילה? תשובה: תלוי באופטימיזציה בשרת, בד"כ הפתרון עם התתי-שאילתות יעיל יותר אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

88 תתי-שאילתות קשורות הדדית
אביב תשס"ג תתי-שאילתות קשורות הדדית מוטיבציה: יש קשר דו-כיווני בין הפרמטרים של השאילתה החיצונית והפנימית דוגמה: כל הספרים שניתן להשאיל אותם לתקופה ארוכה מהממוצע באותה פקולטה SELECT Book_Id, Book_Name, Max_Time FROM Books B WHERE Max_Time > (SELECT AVG(Max_Time) FROM Books WHERE Faculty = B.Faculty); אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS

89 אופרטור EXISTS SELECT Cust_Name FROM Customer C WHERE EXISTS
אביב תשס"ג אופרטור EXISTS EXISTS הוא אופרטור בוליאני שפועל על תת-שאילתה. מחזיר True אם תת-השאילתה מחזירה ערך כלשהו, False אם אינה מחזירה דבר. דוגמה: שליפת כל הלקוחות שהזמינו ספר כלשהו SELECT Cust_Name FROM Customer C WHERE EXISTS (SELECT * FROM Ordered WHERE Cust_Id = C.Cust_Id); אביב תשס"ה DBMS , שפות שאילתה: SQL DBMS


הורד את "ppt "SQL: מושגים עמודה, תכונה, שדה, אטריביוט טבלה, רלציה סכמה

מצגות קשורות


מודעות Google