Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "אביב תשס"גDBMS - 236363, שפות שאילתה: SQL1 סכמה SQL (Structured Query Language) : מושגים טבלה, רלציה שורה, רשומה, n- יה עמודה, תכונה, שדה, אטריביוט."— Presentation transcript:

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

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

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

4 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL4 הטבלה Customers FacultyCust_NameCust_Id CSMoshe Cohen12345 EEAvi Barak23456 MEDAvi Barak34567 EELior Edri45678 EEMoshe Cohen56789 EEMoshe Cohen67890

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

6 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL6 הטבלה Books FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555

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

8 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL8 טבלת Ordered Order_DateBook_NameCust_Id 14-Oct-2002Database Systems12345 24-Oct-2002Anatomy45678 30-Oct-2002Database And Knowledge12345 12-Oct-2002Electronic Circuits45678

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

10 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL10 טבלת Borrowed To_DateFrom_DateCust_IdBook_Id 13-Oct-2002567895555

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

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

13 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL13 FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 דוגמא - המשך Books:

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

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

16 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL16 FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 דוגמא - תוצאה SELECT * FROM Books:

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

18 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL18 FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 דוגמא - המשך Books:

19 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL19 Max_Time/7Book_NameBook_Id 1 Database Systems 1111 2 Database Systems 1112 1 Database Systems 1113 0Database And Knowledge2222 1Database And Knowledge2223 3Electronic Circuits3333 1Genes 74444 1Anatomy5555 דוגמא - תוצאה SELECT Book_Id, Book_Name, Max_Time/7 FROM Books :

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

21 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL21 FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 Books: דוגמא - המשך

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

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

24 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL24 FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 Books: דוגמא - המשך

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

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

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

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

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

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

31 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL31 FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 דוגמא - המשך Books:

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

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

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

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

36 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL36 FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 דוגמא - המשך Books:

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

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

39 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL39 FacultyPagesMax_TimeYearBook_NameBook_Id MED58071985Genes 74444 MED45071988Anatomy5555 CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS39011998Database And Knowledge2222 EE180211998Electronic Circuits3333 EE39071998Database And Knowledge2223 CS42472001 Database Systems 1113 דוגמא - תוצאה SELECT * FROM Books ORDER BY Year :

40 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL40 מיון בסדר הפוך -DESC DESC SELECT * FROM Books ORDER BY Year DESC; FacultyPagesMax_TimeYearBook_NameBook_Id CS42472001 Database Systems 1113 MED45071988Anatomy5555 CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS39011998Database And Knowledge2222 EE180211998Electronic Circuits3333 EE39071998Database And Knowledge2223 MED58071985Genes 74444

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

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

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

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

45 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL45 דוגמא – המשך Books: FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555

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

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

48 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL48 פונקציות סטטיסטיות – המשך Books: FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555

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

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

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

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

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

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

55 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL55 דוגמא – המשך (GROUP BY) YearBook_Id 19981111 19981112 20011113 19982222 19982223 19983333 19854444 19885555 COUNT(Book_Id)Year 51998 11988 12001 11985

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

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

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

59 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL59 דוגמא – המשך (HAVING) Books: FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555

60 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL60 דוגמא – המשך (HAVING) AVG(Pages)COUNT(Book_Id)Year 33151998 45011988 42412001 58011985 11988 1 1 COUNT(Book_Id) 1985 2001 Year AVG(Pages) > 400

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

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

63 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL63 דוגמא – המשך Books: MED45071988Anatomy5555 MED58071985Genes 74444 EE180211998Electronic Circuits3333 CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 FacultyPagesMax_TimeYearBook_NameBook_Id WHERE Pages > 200

64 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL64 דוגמא – המשך אחרי “GROUP BY Year”: AVG(Pages)COUNT(Book_Id)Year 36941998 45011988 42412001 58011985 11988 1 1 COUNT(Book_Id) 1985 2001 Year HAVING AVG(Pages) > 400

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

66 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL66 שאילתות משתי טבלאות או יותר: צירוף (**JOIN) מטרה: "להצליב" רשומות מרלציות/טבלאות שונות syntax: FROM table1, table2, … משמעות: מכפלה קרטזית בין כל הטבלאות התייחסות לשדות מטבלה מסוימת: table1.field ביצוע הצלבה: ע"י הוספת תנאים ב- WHERE ** also known as: Inner JOIN or Equi-JOIN

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

68 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL68 Order_DateBook_NameCust_Id 14-Oct-2002 Database Systems 12345 24-Oct-2002Anatomy45678 30-Oct-2002Database And Knowledge12345 12-Oct-2002Electronic Circuits45678 FacultyCust_NameCust_Id CSMoshe Cohen12345 EEAvi Barak23456 MEDAvi Barak34567 EELior Edri45678 EEMoshe Cohen56789 EEMoshe Cohen67890 דוגמא – המשך (JOIN) Customer Ordered

69 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL69 דוגמא – המשך (Natural JOIN) Book_NameCust_NameCust_Id Database SystemsMoshe Cohen12345 Database And KnowledgeMoshe Cohen12345 AnatomyLior Edri45678 Electronic CircuitsLior Edri45678 תוצאה:

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

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

72 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL72 Book_NameCust_NameCust_Id Database SystemsMoshe Cohen12345 Database And KnowledgeMoshe Cohen12345 AnatomyLior Edri45678 Electronic CircuitsLior Edri45678 Avi Barak23456 Avi Barak34567 Moshe Cohen56789 Moshe Cohen67890 דוגמא – המשך (OUTER JOIN) תוצאה:

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

74 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL74 תשובה: השאילתה מחזירה לכל לקוח ID, שם ומס' הספרים שהזמין. תוצאה: דוגמא – המשך COUNT (Book_Name)Cust_NameCust_Id 2Moshe Cohen12345 2Lior Edri45678 0Avi Barak23456 0Avi Barak34567 0Moshe Cohen56789 0Moshe Cohen67890 מה הייתה התוצאה ללא ה -OUTER JOIN?

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

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

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

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

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

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

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

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

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

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

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

86 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL86 ניתן לקונן תת-שאילתות דוגמה: כל הפקולטות שמחזיקות ספרים שהזמין לקוח בשם ליאור אדרי: (Nested Subqueries) תת - שאילתות מקוננות 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’));

87 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL87 תת-שאילתות לעומת 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’; שאלה: איזו מהן יותר יעילה? תשובה: תלוי באופטימיזציה בשרת, בד"כ הפתרון עם התת- שאילתות יעיל יותר

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

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

90 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL90 שינוי מסד הנתונים - פעולותDDL, DML פעולות ב-SQL: שאילתות  שינוי תוכן מסד נתונים (עדכון, הוספה של רשומות, וכו'), DML – Data Manipulation Language) שינוי מבנה מסד נתונים (יצירה, מחיקה של טבלאות, וכו'), DDL – Data Definition Language

91 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL91 UPDATE tablename column-assignment-list SET conditional-expression WHERE ; עדכון – UPDATE

92 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL92 עדכון – UPDATE מטרה: עדכון ערכים ברשומות קיימות במסד הנתונים. אפשרות ראשונה: השמה של ערכים קבועים בעמודות מסוימות בכל הרשומות. דוגמא: העברת כל הספרים לספרייה מרכזית, והגבלת משך ההשאלה לשבוע ימים. UPDATE Books SET Max_Time = 7, Faculty = ‘ GEN ’ ;

93 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL93 דוגמא - המשך FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 Books:

94 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL94 FacultyPagesMax_TimeYearBook_NameBook_Id GEN34871998 Database Systems 1111 GEN34871998 Database Systems 1112 GEN42472001 Database Systems 1113 GEN39071998Database And Knowledge2222 GEN39071998Database And Knowledge2223 GEN18071998Electronic Circuits3333 GEN58071985Genes 74444 GEN45071988Anatomy5555 דוגמא - תוצאה UPDATE Books SET Max_Time = 7, Faculty = ‘ GEN ’ :

95 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL95 UPDATE (המשך...) עדכון חלק מהרשומות: הוספת תנאי WHERE condition דוגמא: הגבלת משך ההשאלה לשבוע ימים לספרים השייכים לספריית מדעי המחשב. UPDATE Books SET Max_Time = 7 WHERE Faculty = ‘CS’;

96 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL96 דוגמא - המשך FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 Books:

97 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL97 FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS34871998 Database Systems 1112 CS42472001 Database Systems 1113 CS39071998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 דוגמא - תוצאה UPDATE Books SET Max_Time = 7 WHERE Faculty = ‘CS’:

98 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL98 UPDATE (המשך...) אפשרות נוספת: השמה של ביטויים. דוגמה: הארכת משך ההשאלה לכל הספרים ביום אחד. UPDATE Books SET Max_Time = Max_Time + 1;

99 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL99 דוגמא - המשך FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 Books:

100 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL100 דוגמא - תוצאה FacultyPagesMax_TimeYearBook_NameBook_Id CS34881998 Database Systems 1111 CS348151998 Database Systems 1112 CS42482001 Database Systems 1113 CS39021998Database And Knowledge2222 EE39081998Database And Knowledge2223 EE180221998Electronic Circuits3333 MED58081985Genes 74444 MED45081988Anatomy5555 UPDATE Books SET Max_Time = Max_Time + 1:

101 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL101 UPDATE – שימוש בתת- שאילתות הערך החדש יכול להיות תוצאה של תת-שאילתה דוגמא: לכל ספר יש לעדכן את משך ההשאלה למקסימלי באותה פקולטה. UPDATE Books B SET Max_Time = (SELECT MAX(Max_Time) FROM Books WHERE Faculty = B.Faculty);

102 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL102 דוגמא - המשך FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 Books: MAX

103 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL103 FacultyPagesMax_TimeYearBook_NameBook_Id CS348141998 Database Systems 1111 CS348141998 Database Systems 1112 CS424142001 Database Systems 1113 CS390141998Database And Knowledge2222 EE390211998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 דוגמא – תוצאה UPDATE Books B SET Max_Time = (SELECT MAX(Max_Time) FROM Books WHERE Faculty = B.Faculty):

104 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL104 UPDATE – המשך הערות: כל החישובים בשאילתה מתבצעים, כביכול, על "העתק" זמני של הטבלה שאינו מתעדכן בזמן ביצוע ההוראה. כלומר, עדכון של רשומה אינו משפיע על החישובים הבאים שמתבצעים עבור הרשומות הבאות.

105 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL105 INSERT INTO tablename [( column-list )] VALUES ( constant-list ) ; הוספה - INSERT

106 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL106 הוספה - INSERT מטרה: הוספת רשומות חדשות אפשרות ראשונה: הוספת רשומה אחת נתונה דוגמא: הוספת לקוח לטבלת Customer. INSERT INTO Customer VALUES (78901, ‘Roy Peled’, ‘EE’);

107 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL107 דוגמה - המשך FacultyCust_NameCust_Id CSMoshe Cohen12345 EEAvi Barak23456 MEDAvi Barak34567 EELior Edri45678 EEMoshe Cohen56789 EEMoshe Cohen67890 Customer:

108 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL108 דוגמא - תוצאה FacultyCust_NameCust_Id CSMoshe Cohen12345 EEAvi Barak23456 MEDAvi Barak34567 EELior Edri45678 EEMoshe Cohen56789 EEMoshe Cohen67890 EERoy Peled78901 INSERT INTO Customer VALUES (78901, ‘Roy Peled’, ‘EE’):

109 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL109 INSERT – המשך ניתן לאתחל רק חלק מהשדות. דוגמא: INSERT INTO Customer(Cust_Id,Cust_Name) VALUES (78901, ‘Roy Peled’); הערות: שדות לא מאותחלים (Faculty) יקבלו ערך NULL. אם בעמודה Faculty אסור שיופיע NULL, ההוראה INSERT אינה חוקית, ולכן היא לא תתבצע.

110 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL110 דוגמה - המשך FacultyCust_NameCust_Id CSMoshe Cohen12345 EEAvi Barak23456 MEDAvi Barak34567 EELior Edri45678 EEMoshe Cohen56789 EEMoshe Cohen67890 Customer:

111 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL111 דוגמא - תוצאה FacultyCust_NameCust_Id CSMoshe Cohen12345 EEAvi Barak23456 MEDAvi Barak34567 EELior Edri45678 EEMoshe Cohen56789 EEMoshe Cohen67890 Roy Peled78901 INSERT INTO Customer(Cust_Id, Cust_Name) VALUES (78901, ‘Roy Peled’):

112 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL112 INSERT – שימוש בשאילתות הוספת רשומות המתקבלות כתוצאה של שאילתה. דוגמא: הכנסת כל הלקוחות שהזמינו ספרים לטבלהReaders. INSERT INTO Readers( Id, Name) (SELECT Cust_Id, Cust_Name FROM Customer C WHERE EXIST (SELECT * FROM Ordered WHERE Cust_Id = C.Cust_Id)); הוראה זו חוקית רק אם הטבלה Readers קיימת.

113 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL113 דוגמא - המשך Customer: Ordered: EEMoshe Cohen67890 CSMoshe Cohen12345 EEAvi Barak23456 MEDAvi Barak34567 EELior Edri45678 EEMoshe Cohen56789 FacultyCust_NameCust_Id SELECT Cust_Id, Cust_Name FROM Customer C WHERE EXIST (SELECT * FROM Qrdered WHERE Cust_Id = C.Cust_Id): 14-Oct-2002 Database Systems 12345 24-Oct-2002Anatomy45678 30-Oct-2002Database And Knowledge12345 12-Oct-2002Electronic Circuits45678 Order_DateBook_NameCust_Id Moshe Cohen12345 Lior Edri45678 Cust_NameCust_Id Readers:

114 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL114 INSERT מתבצעת על "העתק" זמני של הטבלה. דוגמא: INSERT INTO Readers (SELECT * FROM Readers); הוראה זו לא תכנס ללולאה אינסופית אלא רק תכפיל את הטבלה. INSERT – המשך

115 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL115 תוצאה CSMoshe Cohen12345 EELior Edri45678 Faculty Cust_NameCust_Id Readers: EELior Edri45678 CSMoshe Cohen12345 CSMoshe Cohen12345 EELior Edri45678 FacultyCust_NameCust_Id Readers: INSERT INTO Readers (SELECT * FROM Readers);

116 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL116 DELETE FROM tablename conditional-expression WHERE מחיקה – DELETE

117 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL117 מחיקה – DELETE ההוראה DELETE מוחקת רשומות מתוך הטבלה. בהוראה זו צריך רק להגדיר אלו רשומות רוצים למחוק. דוגמה: מחיקת כל ההזמנות. DELETE FROM Ordered; הטבלה עצמה אינה נמחקת, אך היא נותרת ריקה.

118 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL118 DELETE – המשך (WHERE) אופציה WHERE מאפשרת לבחור אלו רשומות ימחקו מהטבלה. דוגמה: מחיקת כל ההזמנות של הלקוח בעל מספר מזהה 12345. DELETE FROM Ordered WHERE Cust_Id = 12345;

119 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL119 דוגמא – המשך Order_DateBook_NameCust_Id 14-Oct-2002 Database Systems 12345 24-Oct-2002Anatomy45678 30-Oct-2002Database And Knowledge12345 12-Oct-2002Electronic Circuits45678 Order_DateBook_NameCust_Id 24-Oct-2002Anatomy45678 12-Oct-2002Electronic Circuits45678 Ordered: DELETE FROM Ordered WHERE Cust_Id = 12345;

120 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL120 DELETE – המשך בתוך התנאי אפשר להשתמש בביטויים בוליאניים יותר מורכבים ובשאילתות. דוגמה: ביטול כל ההזמנות של אנשים שאינם מופיעים בטבלת הלקוחות. DELETE FROM Ordered O WHERE NOT EXIST (SELECT * FROM Customer WHERE Cust_Id = O.Cust_Id);

121 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL121 דוגמה - המשך Order_Dat e Book_NameCust_Id 14-Oct-2002 Database Systems 12345 24-Oct-2002Anatomy45678 30-Oct-2002Database And Knowledge12345 12-Oct-2002Electronic Circuits45678 12-Oct-2002Electronic Circuits55555 Ordered: FacultyCust_NameCust_Id CSMoshe Cohen12345 EEAvi Barak23456 MEDAvi Barak34567 EELior Edri45678 EEMoshe Cohen56789 EEMoshe Cohen67890 Customer:

122 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL122 דוגמא - תוצאה Order_DateBook_NameCust_Id 14-Oct-2002 Database Systems 12345 24-Oct-2002Anatomy45678 30-Oct-2002Database And Knowledge12345 12-Oct-2002Electronic Circuits45678 Ordered:

123 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL123 שמירה/ביטול של שינויים COMMIT/ROLLBACK שינויים מתבצעים על "העתק" של המסד. ניתן "להתחרט" ולבטל את השינויים האחרונים. COMMIT: העברת כל השינויים מההעתק אל מסד הנתונים ROLLBACK: ביטול כל השינויים מה-COMMIT האחרון (או מתחילת העבודה עם המסד). דוגמה: DELETE FROM Ordered; ROLLBACK; במקרים מסוימים מתבצעת פעולת COMMIT באופן אוטומטי (נראה בהמשך).

124 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL124 יצירת טבלה – CREATE TABLE יצירת טבלה ריקה: CREATE TABLE table (column_name column_type [(length)] [NOT NULL],…); יצירת טבלה המכילה תוצאה של שאילתה: CREATE TABLE table AS SELECT …; הפעולה COMMIT מתבצעת אוטומטית לפני ואחריCREATE TABLE.

125 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL125 - CREATE TABLE דוגמא CREATE TABLE example (AB varchar(15), CDinteger NOT NULL, EFdecimal(5), GHdecimal(7,2));

126 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL126 טיפוסים ב- PostgreSQL varchar (n) – מחרוזת boolean – ערך בוליאני date – תאריך integer – מספר שלם decimal [(p,s)] – מספר עם דיוק עשרוני נתון …

127 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL127 CREATE TABLE – דוגמא דוגמא: יצירת טבלה חדשה בשם CSBooks שמכילה את כל הספרים השייכים לפקולטה ‘CS’. CREATE TABLE CSBooks AS SELECT Book_Id, Book_Name FROM Books WHERE Faculty = ‘CS’;

128 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL128 דוגמה - המשך FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 Books:

129 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL129 Book_NameBook_Id Database Systems 1111 Database Systems 1112 Database Systems 1113 Database And Knowledge2222 Book_NameBook_Id Database Systems 1111 Database Systems 1112 Database Systems 1113 Database And Knowledge2222 CSBooks: דוגמה - תוצאה

130 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL130 הסכימה של הטבלה החדשה: סוגי העמודות נקבעים ע"י השאילתה שבהוראת CREATE. את שמות העמודות בטבלה החדשה אפשר לשנות: CREATE TABLE – המשך דוגמא: CREATE TABLE CSBooks(Id, Name) AS SELECT Book_Id, Book_Name FROM Books WHERE Faculty = ‘CS’; Database Systems 1111 Database Systems 1112 Database Systems 1113 Database And Knowledge2222 NameId CSBooks:

131 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL131 מחיקת טבלה – DROP TABLE דוגמא: מחיקת הטבלה CSBooks. DROP TABLE CSBooks; שימו לב! הפקודה DROP TABLE היא בלתי הפיכה, כי COMMIT מתבצע אוטומטית לפניה ואחריה.

132 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL132 מבטים – VIEWS מוטיבציה: להתייחס לפלט של שאילתה כאל טבלה נפרדת (בלי ליצור אותה פיזית). בפועל: השאילתה שמגדירה את המבט נשמרת במסד הנתונים ומופעלת כל פעם מחדש. אינטואיציה: המבט מהווה מעין "חלון" דרכו אפשר להסתכל על חלק ממסד הנתונים. מטרה: הסתרת מידע, פישוט שאילתות...

133 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL133 (VIEWS) מבטים - המשך יצירת מבט: CREATE VIEW view_name AS SELECT…; דוגמא: CREATE VIEW CSBooks AS SELECT Book_Id, Book_Name, Max_Time FROM Books WHERE Faculty = ‘CS’; ב-CSBooks מוסתרות כל העמודות של Books פרט ל- Book_Id, Book_Name, Max_Time וכל השורות פרט לספרים של מדעי מחשב. בשאילתה זו אסור שיופיע ORDER BY.

134 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL134 דוגמא – המשך FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 Books: 7 Database Systems 1111 14 Database Systems 1112 7 Database Systems 1113 1Database And Knowledge2222 Max_TimeBook_NameBook_Id CSBooks

135 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL135 (VIEWS) מבטים – המשך (שאילתות) על מבט ניתן לבצע שאילתות ממש כאילו היה טבלה. דוגמה: שליפת כל הספרים של מדעי מחשב שמשך ההשאלה שלהם הוא 7 ימים. SELECT Book_Name FROM CSBooks WHERE Max_Time = 7;

136 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL136 כל שינוי בטבלה המקורית מייד משפיע על המבט. ניתן לבצע עדכונים (UPDATE) למסד הנתונים דרך המבט, פרט למקרים בהם המבט הוא read-only. מבט הוא read-only אם השאילתה של CREATE VIEW מכילה: JOIN GROUP BY ביטויים ברשימת העמודות דוגמה לעדכון: UPDATE CSBooks SET Max_Time = Max_Time + 1; ((VIEWS מבטים – המשך (עדכון)

137 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL137 ((VIEWS דוגמא – המשך FacultyPagesMax_TimeYearBook_NameBook_Id CS34881998 Database Systems 1111 CS348151998 Database Systems 1112 CS42482001 Database Systems 1113 CS39021998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 Books: 8 Database Systems 1111 15 Database Systems 1112 8 Database Systems 1113 2Database And Knowledge2222 Max_TimeBook_NameBook_Id CSBooks אחרי עדכון Max_Time:

138 אביב תשס"גDBMS - 236363, שפות שאילתה: SQL138 ((VIEWS מבטים – המשך (מחיקה) מחיקת מבט: DROP VIEW דוגמה: DROP VIEW CSBooks; לטבלה שעליה מבוסס המבט לא קורה כלום.


Download ppt "אביב תשס"גDBMS - 236363, שפות שאילתה: SQL1 סכמה SQL (Structured Query Language) : מושגים טבלה, רלציה שורה, רשומה, n- יה עמודה, תכונה, שדה, אטריביוט."

Similar presentations


Ads by Google