1.39k likes | 1.62k Views
עמודה, תכונה, שדה, אטריביוט. טבלה, רלציה. סכמה. שורה, רשומה, n -יה. SQL (Structured Query Language) : מושגים. דוגמא של מסד נתונים. מסד נתונים של ספרייה. Ordered Cust_Id Book_Name Order_Date. Books Book_Id Book_Name Year Max_Time Faculty Pages0. Customers Cust_Id Cust_Name
E N D
עמודה, תכונה, שדה, אטריביוט טבלה, רלציה סכמה שורה, רשומה, n-יה SQL (Structured Query Language): מושגים DBMS - 236363, שפות שאילתה: SQL
דוגמא של מסד נתונים מסד נתונים של ספרייה • Ordered • Cust_Id • Book_Name • Order_Date • Books • Book_Id • Book_Name • Year • Max_Time • Faculty • Pages0 • Customers • Cust_Id • Cust_Name • Faculty • Borrowed • Cust_Id • Book_Id • From_Date • To_Date DBMS - 236363, שפות שאילתה: SQL
פירוט הטבלאות • Customers(Cust_Id, Cust_Name, Faculty) • Cust_Id: (ייחודי לכל לקוח)מס' זהות של לקוח • Cust_Name:שם לקוח • Faculty: שם פקולטה DBMS - 236363, שפות שאילתה: SQL
הטבלה Customers DBMS - 236363, שפות שאילתה: SQL
פירוט הטבלאות (המשך...) • Books(Book_Id, Book_Name, Year, Max_Time, Faculty, Pages) • Book_Id: מס' מזהה (ייחודי לכל עותק) • Book_Name: שם הספר • Year: שנת הוצאה • Max_Time: משך השאלה מקס' אפשרי (בימים) • Faculty: שם פקולטה • Pages: מס' עמודים DBMS - 236363, שפות שאילתה: SQL
הטבלה Books DBMS - 236363, שפות שאילתה: SQL
פירוט הטבלאות (המשך...) • Ordered(Cust_Id, Book_Name, Order_Date) • Cust_Id: מס' זהות של לקוח • Book_Name: שם הספר • Order_Date: תאריך הזמנת הספר DBMS - 236363, שפות שאילתה: SQL
טבלתOrdered DBMS - 236363, שפות שאילתה: SQL
פירוט הטבלאות (המשך...) • Borrowed(Book_Id, Cust_Id, From_Date, To_Date) • Book_Id: מס' מזהה של הספר • Cust_Id: מס' זהות של לקוח • From_Date: תאריך השאלת הספר • To_Date: תאריך החזרת הספר DBMS - 236363, שפות שאילתה: SQL
טבלת Borrowed DBMS - 236363, שפות שאילתה: SQL
שאילתות ב-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
שאילתות ב-SQL: SELECT • השאילתה הפשוטה ביותר בוחרת שדות מסוימים מכל הרשומות בטבלה אחת. • SELECT column, column, … • FROM table; • דוגמא: שליפת כל הספרים ומספר העמודים בכל ספר: SELECT Book_Name, Pages FROM Books; DBMS - 236363, שפות שאילתה: SQL
דוגמא - המשך Books: DBMS - 236363, שפות שאילתה: SQL
דוגמא - תוצאה SELECT Book_Name, Pages FROM Books: DBMS - 236363, שפות שאילתה: SQL
שליפת כל השדות לשליפת כל השדות, משתמשים בתו "*" (כוכבית). דוגמא: שליפת כל השדות של כל הספרים: SELECT * FROM Books; DBMS - 236363, שפות שאילתה: SQL
דוגמא - תוצאה SELECT * FROM Books: DBMS - 236363, שפות שאילתה: SQL
ביטויים אריתמטיים • ניתן לשלוף ביטויים אריתמטיים המשתמשים בשדות הטבלה. • דוגמא: שליפת שמות ומספרי זיהוי של כל הספרים ומשך ההשאלה בשבועות. SELECT Book_Id, Book_Name, Max_Time/7 FROM Books; DBMS - 236363, שפות שאילתה: SQL
דוגמא - המשך Books: DBMS - 236363, שפות שאילתה: SQL
דוגמא - תוצאה SELECT Book_Id, Book_Name, Max_Time/7 FROM Books : DBMS - 236363, שפות שאילתה: SQL
בחירת חלק מהרשומות Where - • האופציה WHERE condition מאפשרת לבחור רק חלק מהרשומות. • דוגמא: שליפת שמות כל הספרים שהוצאו אחרי השנה 1990: SELECT Book_Name FROM Books WHERE Year > 1990; DBMS - 236363, שפות שאילתה: SQL
דוגמא - המשך Books: DBMS - 236363, שפות שאילתה: SQL
דוגמא - תוצאה SELECT Book_Name FROM Books WHERE Year > 1990 : DBMS - 236363, שפות שאילתה: SQL
WHERE (המשך...) • תנאים יותר מורכבים: • שימוש בסימני היחס: >, =, <, <>, =< ... • שימוש בקשרים לוגיים: AND, OR, NOT. • דוגמא: שליפת שמות כל הספרים שהוצאו בין השנים 1990 ו 2000: SELECT Book_Name FROM Books WHERE Year > 1990 AND Year < 2000; DBMS - 236363, שפות שאילתה: SQL
דוגמא - המשך Books: DBMS - 236363, שפות שאילתה: SQL
דוגמא - תוצאה SELECT Book_Name FROM Books WHERE Year > 1990 AND Year < 2000 : DBMS - 236363, שפות שאילתה: SQL
אופרטור BETWEEN • בעזרת האופרטור BETWEEN אפשר לכתוב ביטוי זה בצורה יותר קריאה: SELECT Book_Name FROM Books WHERE Year BETWEEN 1990 AND 2000; DBMS - 236363, שפות שאילתה: SQL
עוד דוגמא • דוגמא: שליפת שמות כל הספרים שהוצאו לא בין השנים 1990 ו 2000: SELECT Book_Name FROM Books WHERE NOT (Year BETWEEN 1990 AND 2000); או: WHERE Year NOT BETWEEN 1990 AND 2000; DBMS - 236363, שפות שאילתה: SQL
בחירה מרשימה של ערכים • דוגמא: שליפת כל הספרים שהוצאו בשנים 1992, 1995 או 1999: SELECT Book_Name FROM Books WHERE Year=1992 OR Year=1998 ORYear=2001; DBMS - 236363, שפות שאילתה: SQL
בחירה מרשימה של ערכים - IN • שימוש באופרטור IN: SELECT Book_Name FROM Books WHERE Year IN (1992, 1998, 2001); • שימוש באופרטור NOT IN: SELECT Book_Name FROM Books WHERE Year NOTIN (1992, 1998, 2001); DBMS - 236363, שפות שאילתה: SQL
האופרטור LIKE • האופרטור LIKE בודק התאמה של מחרוזת לתבנית נתונה (wildcards). • התו "_" מתאים לתו בודד. • התו "%" מתאים לסדרת תווים כלשהי, באורך 0 או יותר. • דוגמא: שליפת כל הספרים ששמם מכיל את המחרוזת Database והאות לפני אחרונה היא m: SELECT Book_Name FROM Books WHERE Book_Name LIKE ‘%Database%m_’; DBMS - 236363, שפות שאילתה: SQL
דוגמא - המשך Books: DBMS - 236363, שפות שאילתה: SQL
דוגמא - תוצאה SELECT Book_Name FROM Books WHERE Book_Name LIKE ‘%Database%m_’ : DBMS - 236363, שפות שאילתה: SQL
ערכים חסרים – NULL • NULL – ערך מיוחד המציין ערך חסר ("משבצת ריקה") • דוגמאות: • תאריך החזרה של ספר שעדיין לא הוחזר • פקולטה של לקוח חיצוני • השוואה ל-NULL: • expr IS NULL – מחזיר true אם expr הוא ערך NULL • expr IS NOT NULL • דוגמא: שליפת כל הספרים שעוד לא הוחזרו. SELECT Book_Id FROM Borrowed WHERETo_Date IS NULL; DBMS - 236363, שפות שאילתה: SQL
ערכי NULL (המשך) • מוטיבציה: קביעת "ברירת מחדל" עבור ערך שיכול להיות :NULL COALESCE(value, default) • סיבה נוספת: ערך של ביטוי אריתמטי המכיל NULL תמיד יהיה NULL. • דוגמא: הצגת משך ההשאלה בשבועות של כל הספרים (עבור ספרים שעדיין לא הוחזרו יש להציג 0). SELECT Book_Id , COALESCE(To_Date – From_Date, 0) / 7 FROM Borrowed; • בצורה כללית: COALESCE(expr1,expr2,…) מחזיר את הערך הראשון השונה מ- NULL DBMS - 236363, שפות שאילתה: SQL
השמטת כפילויות - DISTINCT • האופציה DISTINCT משמיטה את הרשומות הכפולות מתוצאת השאילתא. • דוגמא: שליפת כל שמות הספרים ושנות ההוצאה, ללא חזרות. SELECT DISTINCT Book_Name, Year FROM Books; DBMS - 236363, שפות שאילתה: SQL
דוגמא - המשך Books: DBMS - 236363, שפות שאילתה: SQL
דוגמא - תוצאה ללאDISTINCT אחריDISTINCT DBMS - 236363, שפות שאילתה: SQL
מיון - ORDER BY • ORDER BY : מיון של הרשומות הנשלפות על פי הערכים של שדות או ביטויים נתונים. • דוגמא: שליפת כל הספרים ממוינים לפי שנת ההוצאה: SELECT * FROM Books ORDER BY Year; DBMS - 236363, שפות שאילתה: SQL
דוגמא - תוצאה SELECT * FROM BooksORDER BY Year : DBMS - 236363, שפות שאילתה: SQL
מיון בסדר הפוך -DESC SELECT * FROM Books ORDER BY Year DESC; DBMS - 236363, שפות שאילתה: SQL
מיון לפי כמה ביטויים • מיון ראשוני ומשני. • דוגמא: שליפת פרטי הספרים ממוינים לפי שנת ההוצאה , ולפי מספר העמודים (בין הספרים שהוצאו באותה שנה). SELECT * FROM Books ORDER BY Year, Pages; DBMS - 236363, שפות שאילתה: SQL
מיון (המשך...) • ניתן לציין את מס' השדה שלפיו יש למיין. • דוגמא: שליפת פרטי הספרים ממוינים לפי השדה השלישי: SELECT * FROM Books ORDER BY 3; DBMS - 236363, שפות שאילתה: SQL
פונקציות סטטיסטיות • ב- SQL ישנן הפונקציות הסטטיסטיות הבאות: • MIN – מינימום • MAX – מקסימום • AVG – ממוצע • SUM – סכום • COUNT – מספר הרשומות • כל אחת מפונקציות אלה פועלת על קבוצת ערכים ומחזירה ערך אחד. DBMS - 236363, שפות שאילתה: SQL
דוגמא • דוגמא: חשב את מספר העמודים הממוצע והמקסימלי בין כל הספרים: • פתרון: SELECT AVG(Pages), MAX(Pages) FROM Books; DBMS - 236363, שפות שאילתה: SQL
דוגמא – המשך Books: DBMS - 236363, שפות שאילתה: SQL
דוגמא – המשך DBMS - 236363, שפות שאילתה: SQL
פונקציות סטטיסטיות – המשך • ניתן לחשב פונקציות סטטיסטיות רק על חלק מרשומות הטבלה ע"י שימוש באופציה WHERE. • לדוגמא: SELECT COUNT (Book_Name) FROM Books WHERE Year = 1998; DBMS - 236363, שפות שאילתה: SQL
פונקציות סטטיסטיות – המשך • Books: DBMS - 236363, שפות שאילתה: SQL
דוגמא – המשך • Book_Name: WHERE COUNT DBMS - 236363, שפות שאילתה: SQL
פונקציות סטטיסטיות -השמטת כפילויות • השמטת כפילויות בזמן חישוב הפונקציה: ע"י הוספת המילהDISTINCT לפני הפרמטר. • דוגמא: SELECT COUNT (DISTINCT Book_Name) FROM Books WHERE Year = 1998; DBMS - 236363, שפות שאילתה: SQL