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

Slides:



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

ועדה מלווה.
הכרת תוכנת בקרים. כניסה לתוכנה תתבצע בשלבים הבאים: 1
למנוע שגיאות בעזרת הכלים של "האתגר 5": המקרה של נקודת פיתול
תכנות בשפת C תרגול 11 - קבצים.
© Keren Kalif JPA קרן כליף.
SQL: שינוי מסד הנתונים- פעולותDDL , DML
יהי X משתנה מקרי חיובי. אזי
11. שפות ODL ו-OQL ותכנון מכוון עצמים
מכניקה תורת התנועה O x y o y x r y x tanα = r² =x² +y²
ריבועי קסם סוגים שונים של ריבועי קסם ומה מסתתר בהם
השתלמות מורים לפיזיקה בראשית דרכם יום רביעי 03 דצמבר 2008
ייצוגים שונים של פונקציה
בקרת Sliding Mode של מערכת עקיבה
הרצאה 12: מיזוג, מיון ושימושים לפעולות על קבוצות - המשך
טיפים מנצחים: לחפש ולמצוא במהירות ובדיוק
HTML שפת Hyper Text Markup Language
Trends in Periodic Table Properties
נערך ע"י אריק הוד, הגימנסיה העברית הרצליה
Marina Kogan Sadetsky –
אלקטרושליליות ופולריות הקשר
מטרת פרויקט "שיעורים פרטיים ברשת"
רמי כהן, מדעי המחשב, הטכניוןכל הזכויות שמורות ©
Jump tables, review questions
מבוא למדעי המחשב הרצאה מספר 12: רקורסיה
תכנות בשפת C תרגול 11 רשימות מקושרות מבנים
תרגול Introduction to C - Fall Amir Menczel.
פעולות אריתמטיות קרן כליף.
תירגול 11: מיונים וחיפוש בינארי
הכרת מאגרי מידע ביבליוגרפיים

פרק 5 – ארכיטקטורות של מוצרים לניתוח רב-מימדי
מזל טוב לסיום התואר השני
שם ביה"ס, רשות: מקיף ה' אשדוד שם המורה: פולינה צ'יגרינסקי שם המדריכה:
מזל טוב לסיום הדוקטורט.
Mantled Howler Monkey - Alouatta palliata
תכנון סכמות רלציוניות איזה תכנון טוב יותר? Customer Ordered CustOrders
© האוניברסיטה העברית בירושלים, 2008
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
מבוא לתכנות מונחה עצמים Object Oriented Programming
הרצאה 10: אלגוריתמי מיון רקורסיביים Merge sort ו-Quick sort
תירגול חזרה מערכות מסדי נתונים
תורת הקומפילציה תרגול 9: תרגום לקוד ביניים
מבוא לתכנות למערכות מידע
SQL - כתיבת שאילתות למתחילים
אלגוריתמי מיון רקורסיביים
תרגול 13 : חזרה נכתב על-ידי לימור ליבוביץ נערך ע"י ישראל גוטר
Marina Kogan Sadetsky –
Solving Simultaneous Linear Equations Using GPU
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
תוכנה 1 תשס"ח סמסטר ב' אוהד ברזילי ליאור שפירא
אוטומטים ושפות פורמליות
צמצום בעזרת מפת קרנו.
מבוא לתכנות ב- JAVA מעבדה 4
יסודות חומר טהור הבנוי מסוג אחד של אטומים.
מבוא למדעי המחשב סמסטר ב' – 2008 מרצה: יעל סיגל מתרגל: ענבל בודובסקי.
מצביעים Pointers – המשך...
מזל טוב לסיום התואר השני
מערכת משוואות מיוחדות.
Data Structures, CS, TAU, Perfect Hashing
לבית: המשיכו וקראו עד סוף פרק א' נושא תנועה.
(או כיצד ללמוד בצורה נכונה מתחילת הסמסטר)
(או כיצד ללמוד בצורה נכונה מתחילת הסמסטר)
מעבדה 2- עיצוב (עבור חלק ג)
ניהול שינויים במחסן נתונים יש עומק היסטורי הארגון משתנה במשך הזמן
Java Programming רשימות מקושרות - המשך
הפונקציה מחזירה את מספר התווים במחרוזת נתונה.
Engineering Programming A
תמליל מצגת:

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

דוגמא של מסד נתונים מסד נתונים של ספרייה 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 - 236363, שפות שאילתה: SQL DBMS - 236363

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

הטבלה 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 - 236363, שפות שאילתה: SQL DBMS - 236363

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

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 - 236363, שפות שאילתה: SQL DBMS - 236363

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

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 - 236363, שפות שאילתה: SQL DBMS - 236363

פירוט הטבלאות (המשך...) 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 - 236363, שפות שאילתה: SQL DBMS - 236363

טבלת 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 - 236363, שפות שאילתה: SQL DBMS - 236363

אביב תשס"ג שאילתות ב-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 - 236363, שפות שאילתה: SQL DBMS - 236363

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

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 - 236363, שפות שאילתה: SQL DBMS - 236363

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 - 236363, שפות שאילתה: SQL DBMS - 236363

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

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 - 236363, שפות שאילתה: SQL DBMS - 236363

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

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 - 236363, שפות שאילתה: SQL DBMS - 236363

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 - 236363, שפות שאילתה: SQL DBMS - 236363

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

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 - 236363, שפות שאילתה: SQL DBMS - 236363

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

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

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 - 236363, שפות שאילתה: SQL DBMS - 236363

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

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

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

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

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

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

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 - 236363, שפות שאילתה: SQL DBMS - 236363

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

ערכים חסרים – 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 - 236363, שפות שאילתה: SQL DBMS - 236363

אביב תשס"ג ערכי 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 - 236363, שפות שאילתה: SQL DBMS - 236363

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

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 - 236363, שפות שאילתה: SQL DBMS - 236363

דוגמא - תוצאה ללא 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 - 236363, שפות שאילתה: SQL DBMS - 236363

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

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 - 236363, שפות שאילתה: SQL DBMS - 236363

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 - 236363, שפות שאילתה: SQL DBMS - 236363

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

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

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

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

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 - 236363, שפות שאילתה: SQL DBMS - 236363

דוגמא – המשך 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 - 236363, שפות שאילתה: SQL DBMS - 236363

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

פונקציות סטטיסטיות – המשך אביב תשס"ג פונקציות סטטיסטיות – המשך 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 - 236363, שפות שאילתה: SQL DBMS - 236363

דוגמא – המשך 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 - 236363, שפות שאילתה: SQL DBMS - 236363

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

דוגמא – המשך (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 - 236363, שפות שאילתה: SQL DBMS - 236363

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

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

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

דוגמא – המשך (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 - 236363, שפות שאילתה: SQL DBMS - 236363

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

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

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

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 - 236363, שפות שאילתה: SQL DBMS - 236363

דוגמא – המשך (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 - 236363, שפות שאילתה: SQL DBMS - 236363

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

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

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 - 236363, שפות שאילתה: SQL DBMS - 236363

דוגמא – המשך אחרי “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 - 236363, שפות שאילתה: SQL DBMS - 236363

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

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

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

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 - 236363, שפות שאילתה: SQL DBMS - 236363

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 - 236363, שפות שאילתה: SQL DBMS - 236363

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

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 - 236363, שפות שאילתה: SQL DBMS - 236363

דוגמא – המשך (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 - 236363, שפות שאילתה: SQL DBMS - 236363

דוגמא נוספת דוגמא: מה עושה שאילתה זו? אביב תשס"ג דוגמא נוספת דוגמא: מה עושה שאילתה זו? 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 - 236363, שפות שאילתה: SQL DBMS - 236363

דוגמא – המשך מה הייתה התוצאה ללא ה-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 - 236363, שפות שאילתה: SQL DBMS - 236363

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

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 - 236363, שפות שאילתה: SQL DBMS - 236363

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

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

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

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

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

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

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

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

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

תתי-שאילתות מקוננות ניתן לקונן תתי-שאילתות אביב תשס"ג תתי-שאילתות מקוננות ניתן לקונן תתי-שאילתות דוגמה: כל הפקולטות שמחזיקות ספרים שהזמין לקוח בשם ליאור אדרי: 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 - 236363, שפות שאילתה: SQL DBMS - 236363

תתי-שאילתות – המשך 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 - 236363, שפות שאילתה: SQL DBMS - 236363

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

אופרטור 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 - 236363, שפות שאילתה: SQL DBMS - 236363