מושגים

מסמכים קשורים
מבוא לתכנות ב- JAVA תרגול 7

אוניברסיטת בן גוריון בנגב תאריך המבחן: שם המרצה: מר אלכסנדר שקולניק, בשפת JAVA מבחן ב: מבוא לתכנות מס' הקורס : מיועד לתלמידי : הנד

אוניברסיטת חיפה החוג למדעי המחשב מבוא למדעי המחשב מועד א' סמסטר ב', תשע"ג, משך המבחן: שעתיים וחצי חומר עזר: אסור הנחיות: וודאו כי יש בידיכם

Microsoft Word - c_SimA_MoedB2005.doc

PowerPoint Presentation

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

שאלהIgal : מערכים דו מימדיים רקורסיה:

תרגול 1

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

PowerPoint Presentation

אוניברסיטת בן גוריון בנגב תאריך המבחן: שקולניק אלכסנדר שם המרצה: מר בשפת JAVA מבוא לתכנות מבחן ב: מס' הקורס : הנדסת תעשיה וניהול מ

מספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה

Slide 1

מקביליות

שאלהIgal : מערכים דו מימדיים רקורסיה:

מהוא לתכנות ב- JAVA מעבדה 3

Slide 1

תרגול 1

BIG DATA תיאור הקורס המונח Big Data הולך וצובר תאוצה בשנים האחרונות, הוא הופך למגמה רווחת בתעשייה. המשמעות הפרקטית של המונח Big Data הינה טכנולוגיות נ

שעור 6

מצגת של PowerPoint

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

Slide 1

סדנת תכנות ב C/C++

מבוא לתכנות ב- JAVA תרגול 11

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

מקביליות

מבוא למדעי המחשב

שאלהIgal : מערכים דו מימדיים רקורסיה:

מבוא למדעי המחשב

הגשה תוך שבוע בשעת התרגול

שקופית 1

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים ע

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

תוכן העניינים

תאריך פרסום: תאריך הגשה: מבנה נתונים תרגיל 5 )תיאורטי( מרצה ומתרגל אחראים: צחי רוזן, דינה סבטליצקי נהלי הגשת עבודה: -את העבודה יש לה

מבוא למדעי המחשב

1 תבניות טקסט מהי תבנית טקסט? שימוש ב- Characters Meta שימוש ב- Expression Grouping שימוש ב- Quantifiers תת תבניות הפונקציה preg_match הפונקציה preg_m

תרגול מס' 1

ex1-bash

HTML - Hipper Text Makeup Language

מבוא למדעי המחשב - חובלים

PowerPoint Presentation

מקביליות

מבוא למדעי המחשב - חובלים

תוכן העניינים: פרק צמצומים ומימושים של פונקציות בוליאניות... 2 צמצומים של פונקציות באמצעות מפת קרנו:...2 שאלות:... 2 תשובות סופיות:... 4 צמצום

תרגול 3 - מערכים

PRESENTATION NAME

Homework Dry 3

- פרק 6 שימוש במאגר נתונים 6.1 תוכן פרק - 6 שימוש במאגר נתונים... 1 מבוא בנית מאגר נתונים הוספת טבלה למאגר הפעולות על בסיס

PowerPoint Presentation

Slide 1

מבוא לאסמבלי

איטרטורים: 1 תוכנה 1 סתיו תשע"ג תרגיל מספר 9 הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה moodl

Tutorial 11

Microsoft Word - Ass1Bgu2019b_java docx

תורת הקומפילציה

Microsoft Word B

PowerPoint Presentation

הגשה תוך שבוע בשעת התרגול

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

Microsoft PowerPoint - rec3.ppt

ייבוא וייצוא של קבצי אקסל וטקסט

Microsoft Word - c_SimA_MoedA2006.doc

ISI

<4D F736F F D20E7E5F7E920E0E9EEE5FA20E1E8E1ECE42E646F63>

תורת החישוביות תרגול הכנה לוגיקה ותורת הקבוצות מה יש כאן? בקורס תורת החישוביות נניח ידע בסיסי בתורת הקבוצות ובלוגיקה, והכרות עם מושגים בסיסיים כמו א"ב

מבוא למדעי המחשב

מבוא למדעי המחשב

תכנות מונחה עצמים א' – תש"ע

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו

Data Structure Assignment no.3 תאריך הגשה: p.m. 11/09/16, 23:59 את העבודה יש להגיש בזוגות במערכת ההגשות.submission system על העבודה להיות מוגשות כקובץ

Microsoft PowerPoint - rec1.ppt

Overview of new Office 365 plans for SMBs

תוכן העניינים

Slide 1

תכנות דינמי פרק 6, סעיפים 1-6, ב- Kleinberg/Tardos סכום חלקי מרחק עריכה הרעיון: במקום להרחיב פתרון חלקי יחיד בכל צעד, נרחיב כמה פתרונות אפשריים וניקח

Slide 1

Data Analyst Expert 042 שעות תיאור ההכשרה: בעולם העסקי של היום, נתונים, מידע וחיזוי הם העתיד של כל ארגון. כמויות המידע שנאספות בארגונים ובאנושות כולה

המינהל למדע וטכנולוגיה הפיקוח על מדעי המחשב עתודה מדעית טכנולוגית מדינת ישראל משרד החינוך המינהל הפדגוגי אגף בכיר בחינות בחינת מפמ ר במדעי המחשב לכיתה

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

Microsoft Word - ExamA_Final_Solution.docx

Microsoft PowerPoint - T-10.ppt [Compatibility Mode]

תרגול מס' 7 – חזרה על MST ואלגוריתם Dijkstra

Slide 1

הכרת משאבי הספרייה קורס מקוון חיפוש במאגרי המידע ו- PubMed Biosis Previews, Zoological Record )לתלמידי החוג למדעי החיים( (Biosis Previews:

פרק ג': עיצובים

PowerPoint Presentation

דוגמאות שהוצגו בהרצאה 10 בקורס יסודות מערכות פתוחות דוגמה 1 דוגמאות של פונקציות ב- awk שמראות שהעברת פרמטרים של משתנים פשוטים היא by value והעברת פרמט

התגוננות בפני כוחות האופל

PowerPoint Presentation

regular_expression_examples

תמליל:

SQL Structured Query Language DBMS - 236363, שאילתה :שפות SQL 1

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

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

הטבלה Customers Cust_Id 12345 23456 3456 4568 5689 6890 Cust_Name Moshe Cohen Avi Barak Avi Barak Lior Edri Moshe Cohen Moshe Cohen Faculty CS EE MED EE EE EE DBMS - 236363, שאילתה :שפות SQL 4

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

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

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

טבלת Ordered Cust_Id 12345 4568 12345 4568 Book_Id 1111 1112 1113 2222 Order_Date 14-Oct-2002 24-Oct-2002 30-Oct-2002 12-Oct-2002 DBMS - 236363, שאילתה :שפות SQL 8

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

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

שאילתות ב- SQL מבנה כללי של שאילתא SELECT [ALL DISTINCT] {[table.]* expr [alias], exp [alias], } FROM table [alias], table [alias], [WHERE condition] [GROUP BY expr, expr, [HAVING condition]] [{INTERSECT EXCEPT UNION UNION ALL } SELECT ] [ORDER BY expr [ASC DESC ], expr [ASC DESC], ]; DBMS - 236363, שאילתה :שפות SQL 11

WHERE מה תחזיר השאילתה הבאה? SELECT Book_Name FROM Books WHERE Year >= 1990 AND Year <= 2000; כל הספרים שהוצאו בין השנים 1990 ו- 2000. DBMS - 236363, שאילתה :שפות SQL 12

המשך דוגמא - Books: Book_Id SELECT Book_Name FROM Books WHERE Year >= 1990 AND Year <= 2000; Book_Name Year Max_Time Pages Faculty 1111 Database Systems 348 CS 1112 Database Systems 14 348 CS 1113 Database Systems 2001 424 CS 2222 Database And Knowledge 1 390 CS 2223 Database And Knowledge 390 EE 3333 Electronic Circuits 21 180 EE 4444 Genes 1985 580 MED 5555 Anatomy 1988 450 MED DBMS - 236363, שאילתה :שפות SQL 13

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

האופרטור LIKE DBMS - 236363, שאילתה :שפות SQL 15

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

דוגמא - המשך Books: SELECT Book_Name FROM Books WHERE Book_Name LIKE '%Database%m_'; Book_Id Book_Name Year Max_Time Pages Faculty 1111 Database Systems 348 CS 1112 Database Systems 14 348 CS 1113 Database Systems 2001 424 CS 2222 Database And Knowledge 1 390 CS 2223 Database And Knowledge 390 EE 3333 Electronic Circuits 21 180 EE 4444 Genes 1985 580 MED 5555 Anatomy 1988 450 MED DBMS - 236363, שאילתה :שפות SQL 1

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

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

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

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

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

דוגמא המשך SELECT AVG(Pages), MAX(Pages) FROM books; Book_Id Book_Name Year Max_Time Pages Faculty 1111 Database Systems 348 CS 1112 Database Systems 14 348 CS 1113 Database Systems 2001 424 CS 2222 Database And Knowledge 1 390 CS 2223 Database And Knowledge 390 EE 3333 Electronic Circuits 21 180 EE 4444 Genes 1985 580 MED 5555 Anatomy 1988 450 MED DBMS - 236363, שאילתה :שפות SQL 23

דוגמא המשך SELECT AVG(Pages), MAX(Pages) FROM books; AVG(Pages) MAX(Pages) 389 580 Pages 348 348 424 390 390 180 580 450 DBMS - 236363, שאילתה :שפות SQL 24

ו) פעולות סטטיסטיות על ערכי NULL כל הפונקציות הסטטיסטיות מתעלמות מערכי.NULL יוצא מן הכלל:.COUNT(*) ההבדל בין count לבין פונקציות סטטיסטיות אחרות הוא ש- count תחזיר 0 כאשר הוא תקבל אף ערך והפונקציות הסטטיסטיות האחרות יחזירו.null לכן פונקציות סטטיסטיות שמקבלות עמודה של null יחזירו null )הן מתעלמות מערכי ה- null ומקבלות כלום, לכן מחזירות )null פרט ל- count שתחזיר count(*)- 0 תחזיר את מספר השורות( DBMS - 236363, שאילתה :שפות SQL 25

פעולות סטטיסטיות על ערכי NULL Borrowed: Book_Id Cust_Id From_Date To_Date 5555 5689 13-Oct-2002 SELECT MAX(To_Date) FROM Borrowed; SELECT COUNT(To_Date) FROM Borrowed; SELECT COUNT(*) FROM Borrowed; יחזיר NULL יחזיר 0 יחזיר 1 DBMS - 236363, שאילתה :שפות SQL 26

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

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

המשך BY( )GROUP SELECT Year, COUNT(Book_Id) FROM Books GROUP BY Year; Book_Id Book_Name Year Max_Time דוגמא Pages Faculty 1111 Database Systems 348 CS 1112 Database Systems 14 348 CS 1113 Database Systems 2001 424 CS 2222 Database And Knowledge 1 390 CS 2223 Database And Knowledge 390 EE 3333 Electronic Circuits 21 180 EE 4444 Genes 1985 580 MED 5555 Anatomy 1988 450 MED DBMS - 236363, שאילתה :שפות SQL 29

)GROUP BY( Book_Id 1111 1112 1113 2222 2223 3333 4444 5555 Year 2001 1985 1988 המשך SELECT Year, COUNT(Book_Id) FROM Books GROUP BY Year; Year 1988 2001 1985 דוגמא COUNT(Book_Id) 5 1 1 1 DBMS - 236363, שאילתה :שפות SQL 30

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

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

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

דוגמא המשך )HAVING( SELECT Year, COUNT(Book_Id) FROM Books GROUP BY Year HAVING AVG(Pages) > 400; Book_Id Book_Name Year Max_Time Pages Faculty 1111 Database Systems 348 CS 1112 Database Systems 14 348 CS 1113 Database Systems 2001 424 CS 2222 Database And Knowledge 1 390 CS 2223 Database And Knowledge 390 EE 3333 Electronic Circuits 21 180 EE 4444 Genes 1985 580 MED 5555 Anatomy 1988 450 MED DBMS - 236363, שאילתה :שפות SQL 34

דוגמא המשך )HAVING( SELECT Year, COUNT(Book_Id) FROM Books GROUP BY Year HAVING AVG(Pages) > 400; Year COUNT(Book_Id) AVG(Pages) 5 331 1988 1 450 2001 1 424 1985 1 580 Year COUNT(Book_Id) 1988 1 2001 1 1985 1 AVG(Pages) > 400 DBMS - 236363, שאילתה :שפות SQL 35

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

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

Books: דוגמא המשך SELECT Year, COUNT(Book_Id) FROM Books WHERE Pages > 200 GROUP BY Year HAVING AVG(Pages) > 400; Book_Id Book_Name Year Max_Time Pages Faculty 1111 1112 Database Systems Database Systems 14 348 348 CS CS 1113 Database Systems 2001 424 CS 2222 Database And Knowledge 1 390 CS 2223 Database And Knowledge 390 EE 3333 Electronic Circuits 21 180 EE 4444 Genes 1985 580 MED 5555 Anatomy 1988 450 MED WHERE Pages > 200 DBMS - 236363, שאילתה :שפות SQL 38

דוגמא המשך SELECT Year, COUNT(Book_Id) FROM Books WHERE Pages > 200 GROUP BY Year HAVING AVG(Pages) > 400; Year 1988 2001 1985 COUNT(Book_Id) 4 1 1 1 AVG(Pages) 369 450 424 580 Year 1988 2001 1985 COUNT(Book_Id) 1 1 1 DBMS - 236363, שאילתה :שפות SQL 39

דוגמא המשך הסבר )שלבים(: 1. :WHERE בחירת הרשומות של הספרים שמכילים יותר מ- 200 עמודים. 2. BY :GROUP קיבוץ הרשומות לקבוצות, כך שבכל קבוצה יש לכל הרשומות )הספרים( אותו.Year 3. פונ' סטטיסטיות: חישוב מספר העמודים הממוצע בכל קבוצה, ואת מס' הספרים בכל קבוצה. 4. :HAVING בחירת הקבוצות בהן הממוצע הוא לפחות.400 DBMS - 236363, שאילתה :שפות SQL 40

דוגמא נוספת דוגמא: מה עושה שאילתה זו? SELECT Cust_Name, Customers.Cust_Id, COUNT(Book_Id) FROM Customers LEFT OUTER JOIN Ordered ON (Customers.Cust_Id = Ordered. Cust_Id) GROUP BY Customers.Cust_Id, Cust_Name; DBMS - 236363, שאילתה :שפות SQL 41

דוגמא המשך JOIN( )OUTER SELECT Customers.Cust_Id, Customer.Cust_Id, Cust_Name, COUNT(Book_Id) FROM Customers LEFT OUTER JOIN Ordered ON ( Customers.Cust_Id Customer.Cust_Id = Ordered. Cust_Id ); ) GROUP BY Customers.Cust_Id, Cust_Name; Cust_Id Cust_Name Book_Id 12345 Moshe Cohen 1111 12345 Moshe Cohen 1112 4568 Lior Edri 1113 4568 23456 3456 5689 6890 Lior Edri Avi Barak Avi Barak Moshe Cohen Moshe Cohen 2222 DBMS - 236363, שאילתה :שפות SQL 42

דוגמא המשך תשובה: השאילתה מחזירה לכל לקוח,ID שם ומס' הספרים שהזמין. Cust_Id Cust_Name תוצאה: (Book_Id) COUNT 12345 4568 23456 3456 5689 6890 Moshe Cohen Lior Edri Avi Barak Avi Barak Moshe Cohen Moshe Cohen 2 2 0 0 0 0 מה הייתה התוצאה ללא ה- JOIN?OUTER DBMS - 236363, שאילתה :שפות SQL 43

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

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

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

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

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

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

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

תתי-שאילתות מקוננות ניתן לקונן תתי-שאילתות דוגמה: כל הפקולטות שמחזיקות ספרים שהזמין לקוח בשם ליאור אדרי: SELECT Faculty FROM Books WHERE Book_Id IN (SELECT Book_Id FROM Ordered WHERE Cust_Id IN (SELECT Cust_Id FROM Customers WHERE Cust_Name = 'Lior Edri')); DBMS - 236363, שאילתה :שפות SQL 51

תתי-שאילתות המשך תתי-שאילתות לעומת JOIN דוגמא: נכתוב את אותה שאילתה ללא שימוש בתתי שאילתות SELECT B.Faculty FROM Books B, Customers C, Ordered O WHERE B.Book_Id = O.Book_Id AND C.Cust_Id = O. Cust_Id AND C.Cust_Name = 'Lior Edri'; שאלה: איזו מהן יותר יעילה? תשובה: תלוי באופטימיזציה בשרת, בד"כ הפתרון עם תתי-השאילתות יעיל יותר DBMS - 236363, שאילתה :שפות SQL 52

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

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

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

מבטים - המשך יצירת מבט: 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 DBMS - LQS :LMD+LDD, 236363 56

דוגמא המשך Books: Book_Id Book_Name Year 1111 Database Systems 1112 Database Systems 1113 Database Systems 2001 2222 Database And Knowledge 2223 Database And Knowledge 3333 Electronic Circuits 4444 5555 Book_Id 1111 1112 1113 2222 Genes Book_Name Anatomy Database Systems 1985 1988 Database Systems Database Systems Database And Knowledge Max_Time 14 1 14 1 21 Max_Time Pages Faculty 348 CS 348 CS 424 CS 390 CS 390 EE 180 EE 580 MED 450 MED CSBooks DBMS - LQS :LMD+LDD, 236363 5

מבטים המשך )שאילתות( על מבט ניתן לבצע שאילתות ממש כאילו היה טבלה. דוגמה: שליפת כל הספרים של מדעי מחשב שמשך ההשאלה שלהם הוא ימים. SELECT Book_Name FROM CSBooks WHERE Max_Time = ; DBMS - LQS :LMD+LDD, 236363 58

מבטים המשך )מחיקה( DROP VIEW CSBooks; מחיקת מבט: DROP VIEW דוגמה: לטבלה שעליה מבוסס המבט לא קורה כלום. DBMS - LQS :LMD+LDD, 236363 59

Triggers Custom code that fires upon database updates Used for: Integrity testing (throws exception) Propagating updates among relations A trigger language has two components: A mapping of a function to update events A programming language for functions Example: PL/SQL combines SQL with ordinary program controls (conditions, loops, etc.)

Example 1 2 4 6 5 3 CREATE TABLE Node( id int PRIMARY KEY, color text ) CREATE TABLE Edge( src int REFERENCES Node(id), tgt int REFERENCES Node(id), PRIMARY KEY (src,tgt) ) Right now, we cannot add any edge before we add the adjacent node to the Node relation We would like to allow an easier behavior: whenever an edge is added, its nodes are added with the default black color

Trigger Example A mapping of a function to update events CREATE TRIGGER edge_trigger BEFORE INSERT ON Edge FOR EACH ROW EXECUTE PROCEDURE add_missing_nodes(); Function declaration CREATE OR REPLACE FUNCTION add_missing_nodes() RETURNS TRIGGER AS $$ BEGIN IF (NEW.src NOT IN (SELECT id FROM Node)) THEN INSERT INTO Node VALUES(NEW.src,'black'); END IF; IF (NEW.tgt NOT IN (SELECT id FROM Node)) THEN INSERT INTO Node VALUES(NEW.tgt,'black'); END IF; RETURN NEW; END; $$ LANGUAGE plpgsql; PL/SQL code

Some Built-In Variables NEW: new tuple (insert/update) OLD: old tuple (update/delete) Trigger info: TG_NAME, TG_WHEN, TG_OP, TG_TABLE_NAME

Trigger Syntax CREATE TRIGGER <name> <BEFORE/AFTER> <INSERT/UPDATE/DELETE> ON <relationname> FOR EACH <ROW/STATEMENT> EXECUTE PROCEDURE <functionname>; WHEN (<condition>); CREATE TRIGGER edge_trigger BEFORE INSERT ON Edge FOR EACH ROW EXECUTE PROCEDURE add_missing_nodes(); What would happen if we replaced BEFORE with AFTER?