DBMS , שפות שאילתה: SQL (ב')

Slides:



Advertisements
Similar presentations
מבוא למדעי המחשב לתעשייה וניהול
Advertisements

©Silberschatz, Korth and Sudarshan4.1Database System Concepts סכימה לדוגמא.
עיבוד תמונות ואותות בעזרת מחשב
הדרכה בשימוש בקטלוג הספרייה מפגש מס ' 2 תשס " ח. מטרת ההדרכה  איתור חומר מתוך הסילבוס  איתור חומר בנושא מבוקש.
אקסס מבוא למערכות מידע.
מתמטיקה בדידה תרגול 3.
מסדי נתונים תשס " ג 1 תכנון סכמות (Design Theory) מסדי נתונים.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
תכנות תרגול 2 שבוע : שבוע שעבר כתבו תוכנית המגדירה שלושה משתנים מאתחלת אותם ל 1 2 ו 3 ומדפיסה את המכפלה שלהם את ההפרש שלהם ואת הסכום שלהם.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
אביב תשס"הDBMS , PostgreSQL1 PostgreSQL עבודה עם שרת PostgreSQL : PSQL – מפענח שורת פקודה LIBPQ – ספריית C WebDB – ממשק מבוסס Web (לסטודנטים של.
Map-Reduce Input: a collection of scientific articles on different topics, each marked with a field of science –Mathematics, Computer Science, Biology,
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
1 חלק XQuery :IV XML Query. 2 ביבליוגרפיה - DTD 3 ביבליוגרפיה – books.xml TCP/IP Illustrated Stevens W. Addison-Wesley Advanced Programming in.
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site : T.A. :Emilia Katz.
ערמות ; מבני נתונים 09 מבוסס על מצגות של ליאור שפירא, חיים קפלן, דני פלדמן וחברים.
חורף תשס " ג DBMS , שפות שאילתה : SQL ( א ') 1 סכמה SQL: מושגים טבלה, רלציה שורה, רשומה, n- יה עמודה, תכונה, שדה, אטריביוט.
מסדי נתונים תשס " ג 1 More on SQL קורס מסדי נתונים.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
חורף DBMS , שפות שאילתה: SQL 1 SQL questions.
חורף תשס"טDBMS , PostgreSQL1 PostgreSQL עבודה עם שרת PostgreSQL : PSQL – מפענח שורת פקודה LIBPQ – ספריית C WebDB – ממשק מבוסס Web (לסטודנטים של.
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 1 שינוי מסד הנתונים - פעולות DDL, DML פעולות ב -SQL: שאילתות שינוי תוכן מסד נתונים ( עדכון, הוספה.
Data Structures, CS, TAU, Perfect Hashing 1 Perfect Hashing בעיה : נתונה קבוצה S של n מפתחות מתחום U השוואה ל - Hash : * טבלה קבועה (Hash רגיל - דינאמי.
©Silberschatz, Korth and Sudarshan4.1Database System Concepts SQL n מבנה שאילתה n פונקציות צבירה.
תכנות תרגול 5 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
1 Data Structures, CS, TAU, Perfect Hashing בעיה: נתונה קבוצה S של n מפתחות מתחום U השוואה ל- Hash : * טבלה קבועה (Hash רגיל - דינאמי) * רוצים זמן קבוע.
עקרון ההכלה וההדחה.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
Last time on Clang משתנה: "פתק" המשמש את המחשב לשמירת מידע. לכל משתנה יש שם וטיפוס כללים לשמות משתנים –חייבים להכיל רק אותיות, מספרים ו '_' –חייבים להתחיל.
תרגול 5: ביטויים לוגיים ומשפטי תנאי (חזרה והרחבה)
אביב תשס"הDBMS , PostgreSQL1 PostgreSQL עבודה עם שרת PostgreSQL : PSQL – מפענח שורת פקודה LIBPQ – ספריית C WebDB – ממשק מבוסס Web (לסטודנטים של.
Safari On-line books. מה זה ספארי ספארי זו ספריה וירטואלית בנושא מחשבים היא כוללת יותר מ כותרים כל הספרים הם בטקסט מלא ניתן לחפש ספר בנושא מסוים.
1 מבוא למדעי המחשב backtracking. 2 מוטיבציה בעיית n המלכות: נתון: לוח שחמט בגודל. המטרה: לסדר על הלוח n מלכות כך שאף אחת לא תאיים על השנייה. דוגמא: עבור.
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
Structure. מה לומדים היום ? דרך לבנות מבנה נתונים בסיסי – Structure מייצר " טיפוס " חדש מתאים כאשר רוצים לאגד כמה משתנים יחד דוגמאות : עובד : שם, טלפון,
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
1 SQL: שינוי מסד הנתונים- פעולותDDL, DML פעולות ב-SQL: שאילתות  שינוי תוכן מסד נתונים (עדכון, הוספה של רשומות, וכו'), DML – Data Manipulation Language.
File Systems Motivation SQL (Structured Query Language) MapReduce 1 תרגול 1.
אביב תשס"גDBMS , שפות שאילתה: SQL1 סכמה SQL (Structured Query Language) : מושגים טבלה, רלציה שורה, רשומה, n- יה עמודה, תכונה, שדה, אטריביוט.
שיאון שחוריMilOSS-il מוטיבציה  python זה קל ו C זה מהיר. למה לא לשלב?  יש כבר קוד קיים ב C. אנחנו רוצים להשתמש בו, ולבסס מעליו קוד חדש ב python.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 12. ספריות.
2003B Q5 Suppliers(sid, sname, city) Select sid from suppliers where city=‘jerusalem’ or sname like ‘%Smith’ Select sid from suppliers where city=‘jerusalem’
1 חלק XQuery :IV XML Query. 2 ביבליוגרפיה - DTD 3 ביבליוגרפיה – books.xml TCP/IP Illustrated Stevens W. Addison-Wesley Advanced Programming in.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 6. מפעל השעווה – לולאות  עד עכשיו  טיפלנו בייצור נרות מסוג אחד, במחיר אחיד  למדנו להתמודד עם טיפול במקרים שונים.
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
מבוא למדעי המחשב לתעשייה וניהול
Tirgul 12 Trees 1.
Structured Query Language
Operators Overloading
Formal Specifications for Complex Systems (236368) Tutorial #1
Database Management Systems
Database Management Systems
SQL בסיסי – הגדרה אינדוקטיבית
Structured Query Language
SQL SQL הינה השפה הדומיננטית לטיפול בבסיסי נתונים יחסיים, אך לא קיים סטנדרט SQL יחיד. ׁ(SQL92, SQL3 …) ניתן לחלק את פקודות SQL לארבע משפחות: פקודות להגדרת.
עבודה עם נתונים באמצעות ADO.NET
מודל היחסים (Relational Model)
פרוקטוז, C6H12O6 , חד-סוכר מיוחד
בעיות נוספות ב-NPC.
Based on the lecture notes of Prof. Sagiv
בסיסי נתונים ושפת SQL הרצאה #6
טבלאות מדומות (Views).
איתור נתונים מתקדם, בעזרת vlookup וחברים
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Presentation transcript:

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

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

דוגמא – המשך 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, שפות שאילתה: SQL (ב') דוגמא – המשך Pages: Pages 348 424 390 180 580 450 AVG(Pages) MAX(Pages) 389 580 חורף תשס"ג DBMS - 236363, שפות שאילתה: SQL (ב')

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

דוגמא – המשך 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 (ב')

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

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

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

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

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

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

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

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

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

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

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

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

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

דוגמא – המשך Faculty Pages Max_Time Year Book_Name Book_Id 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 Books: WHERE Pages > 200 חורף תשס"ג DBMS - 236363, שפות שאילתה: SQL (ב')

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

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

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

דוגמא – המשך (JOIN) Order_Date Book_Name Cust_Id Ordered Customer 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 (ב')

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

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

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 (ב')

דוגמא – המשך (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, שפות שאילתה: SQL (ב') דוגמא נוספת דוגמא: מה עושה שאילתה זו? 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, שפות שאילתה: SQL (ב') דוגמא – המשך תשובה: השאילתה מחזירה לכל לקוח 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, שפות שאילתה: SQL (ב') שמות נרדפים – ALIAS מטרה: שם נוסף (בד"כ קצר יותר) לטבלה דוגמא: SELECT C.Cust_Id, Cust_Name, Book_Name FROM Customer C, Ordered O WHERE C.Cust_Id = O. Cust_Id; חורף תשס"ג DBMS - 236363, שפות שאילתה: SQL (ב')

ALIAS: שליפה מאותה טבלה פעמיים שימוש נוסף: מספר עותקים של אותה טבלה SELECT 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 (ב')

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

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

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

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

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

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

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

כמתים – המשך (אופרטור שייכות) ניתן לממש אופרטור שייכות באמצעות כמתים: =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, שפות שאילתה: SQL (ב') תת-שאילתות מקוננות ניתן לקונן תת-שאילתות דוגמה: כל הפקולטות שמחזיקות ספרים שהזמין לקוח בשם ליאור אדרי: 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, שפות שאילתה: SQL (ב') תת-שאילתות – המשך תת-שאילתות לעומת 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 (ב')

תת-שאילתות קשורות הדדית מוטיבציה: יש קשר דו-כיווני בין הפרמטרים של השאילתה החיצונית והפנימית דוגמה: כל הספרים שניתן להשאיל אותם לתקופה ארוכה מהממוצע באותה פקולטה 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, שפות שאילתה: SQL (ב') אופרטור EXIST EXIST הוא אופרטור בוליאני שפועל על תת-שאילתה. מחזיר true אם תת-השאילתה מחזירה ערך כלשהו, False אם אינה מחזירה דבר. דוגמה: שליפת כל הלקוחות שהזמינו ספר כלשהו SELECT Cust_Name FROM Customer C WHERE EXIST (SELECT * FROM Ordered WHERE Cust_Id = C.Cust_Id); חורף תשס"ג DBMS - 236363, שפות שאילתה: SQL (ב')