אביב תשס"גdbms - 236363, שפות שאילתה: sql1 סכמה sql (structured query...

138
גגגג גגג"גDBMS - 236363, גגגגגג גגגג: SQL 1 גגגגSQL (Structured Query Language) : םםםםםם גגגג, גגגגג גגגג, גגגגג, n - גג גגגגג, גגגגג, גגג, גגגגגגגג

Upload: evangeline-virginia-carter

Post on 19-Jan-2016

258 views

Category:

Documents


0 download

TRANSCRIPT

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 1

סכמה

SQL (Structured Query Language)מושגים :

טבלה, רלציה

שורה, רשומה,

n-יה

, תכונה, עמודהאטריביוט, שדה

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 2

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

מסד נתונים של ספרייה

דוגמא של מסד נתונים

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 3

פירוט הטבלאות

• Customers(Cust_Id, Cust_Name, Faculty)

– Cust_Id: (ייחודי לכל לקוח) מס' זהות של לקוח

– Cust_Name:שם לקוח – Faculty: שם פקולטה

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 4

Customersהטבלה

Cust_IdCust_NameFaculty

12345Moshe CohenCS

23456Avi BarakEE

34567Avi BarakMED

45678Lior EdriEE

56789Moshe CohenEE

67890Moshe CohenEE

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 5

פירוט הטבלאות (המשך...)

Books(Book_Id, Book_Name, Year, Max_Time, Faculty, Pages)

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

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 6

Booksהטבלה

Book_IdBook_NameYearMax_TimePagesFaculty

1111Database Systems 19987348CS

1112Database Systems 199814348CS

1113Database Systems20017424CS

2222Database And Knowledge19981390CS

2223Database And Knowledge19987390EE

3333Electronic Circuits199821180EE

4444Genes 719857580MED

5555Anatomy19887450MED

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 7

פירוט הטבלאות (המשך...)

Ordered(Cust_Id, Book_Name, Order_Date) Cust_Id: מס' זהות של לקוח Book_Name: שם הספר Order_Date: תאריך הזמנת הספר

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 8

Ordered טבלת

Cust_IdBook_NameOrder_Date12345Database Systems14-Oct-2002

45678Anatomy24-Oct-2002

12345Database And Knowledge30-Oct-2002

45678Electronic Circuits12-Oct-2002

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 9

פירוט הטבלאות (המשך...)

Borrowed(Book_Id, Cust_Id, From_Date, To_Date) Book_Id: מס' מזהה של הספר Cust_Id: מס' זהות של לקוח From_Date: תאריך השאלת הספר To_Date: תאריך החזרת הספר

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 10

Borrowedטבלת

Book_IdCust_IdFrom_DateTo_Date

55555678913-Oct-2002

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 11

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],…];

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 12

SQL: SELECTשאילתות ב-

דוגמא: שליפת כל הספרים ומספר העמודים בכלספר:

SELECT Book_Name, Pages FROM Books;

השאילתה הפשוטה ביותר בוחרת שדות מסוימים •מכל הרשומות בטבלה אחת.

SELECT column, column, …

FROM table;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 13

Book_IdBook_NameYearMax_TimePagesFaculty

1111Database Systems 19987348CS

1112Database Systems 199814348CS

1113Database Systems20017424CS

2222Database And Knowledge19981390CS

2223Database And Knowledge19987390EE

3333Electronic Circuits199821180EE

4444Genes 719857580MED

5555Anatomy19887450MED

המשך - דוגמא

Books:

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 14

SELECT Book_Name, Pages FROM Books:

Book_NamePages

Database Systems 348

Database Systems 348

Database Systems424

Database And Knowledge390

Database And Knowledge390

Electronic Circuits180

Genes 7580

Anatomy450

דוגמא - תוצאה

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 15

שליפת כל השדות

.(כוכבית) "*" לשליפת כל השדות, משתמשים בתו:דוגמא: שליפת כל השדות של כל הספרים

SELECT ** FROM Books;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 16

Book_IdBook_NameYearMax_TimePagesFaculty

1111Database Systems 19987348CS

1112Database Systems 199814348CS

1113Database Systems20017424CS

2222Database And Knowledge19981390CS

2223Database And Knowledge19987390EE

3333Electronic Circuits199821180EE

4444Genes 719857580MED

5555Anatomy19887450MED

תוצאה - דוגמא

SELECT * FROM Books:

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 17

ניתן לשלוף ביטויים אריתמטיים המשתמשיםבשדות הטבלה.

דוגמא: שליפת שמות ומספרי זיהוי של כלהספרים ומשך ההשאלה בשבועות.

SELECT Book_Id, Book_Name, Max_Time/7

FROM Books;

אריתמטיים ביטויים

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 18

Book_IdBook_NameYearMax_TimePagesFaculty

1111Database Systems 19987348CS

1112Database Systems 199814348CS

1113Database Systems20017424CS

2222Database And Knowledge19981390CS

2223Database And Knowledge19987390EE

3333Electronic Circuits199821180EE

4444Genes 719857580MED

5555Anatomy19887450MED

המשך - דוגמא

Books:

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 19

Book_IdBook_NameMax_Time/7

1111Database Systems 1

1112Database Systems 2

1113Database Systems1

2222Database And Knowledge0

2223Database And Knowledge1

3333Electronic Circuits3

4444Genes 71

5555Anatomy1

תוצאה - דוגמא

SELECT Book_Id, Book_Name, Max_Time/7 FROM Books :

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 20

-Whereבחירת חלק מהרשומות

האופציהWHERE condition מאפשרת לבחור רק חלק מהרשומות.

דוגמא: שליפת שמות כל הספרים שהוצאו אחרי:1990השנה

SELECT Book_Name

FROM Books

WHEREWHERE Year > 1990;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 21

Book_IdBook_NameYearMax_TimePagesFaculty

1111Database Systems 19987348CS

1112Database Systems 199814348CS

1113Database Systems20017424CS

2222Database And Knowledge19981390CS

2223Database And Knowledge19987390EE

3333Electronic Circuits199821180EE

4444Genes 719857580MED

5555Anatomy19887450MED

Books:

דוגמא - המשך

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 22

Book_Name

Database Systems

Database Systems

Database Systems

Database And Knowledge

Database And Knowledge

Electronic Circuits

תוצאה - דוגמא

SELECT Book_Name FROM Books WHERE Year > 1990 :

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 23

WHERE(...המשך)

תנאים יותר מורכבים:... >= ,>> ,> ,= ,> :שימוש בסימני היחס :שימוש בקשרים לוגייםAND, OR, NOT.

דוגמא: שליפת שמות כל הספרים שהוצאו בין:2000 ו 1990השנים

SELECT Book_Name

FROM Books

WHERE Year >> 1990 ANDAND Year >> 2000;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 24

Book_IdBook_NameYearMax_TimePagesFaculty

1111Database Systems 19987348CS

1112Database Systems 199814348CS

1113Database Systems20017424CS

2222Database And Knowledge19981390CS

2223Database And Knowledge19987390EE

3333Electronic Circuits199821180EE

4444Genes 719857580MED

5555Anatomy19887450MED

Books:

דוגמא - המשך

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 25

Book_Name

Database Systems

Database Systems

Database And Knowledge

Database And Knowledge

Electronic Circuits

SELECT Book_Name FROM Books

WHERE Year > 1990 AND Year < 2000 :

דוגמא - תוצאה

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 26

BETWEENאופרטור

בעזרת האופרטורBETWEEN אפשר לכתוב :ביטוי זה בצורה יותר קריאה

SELECT Book_Name

FROM Books

WHERE Year BETWEENBETWEEN 1990 ANDAND 2000;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 27

עוד דוגמא

בין לאדוגמא: שליפת שמות כל הספרים שהוצאו :2000 ו 1990השנים

SELECT Book_Name

FROM Books

WHERE NOTNOT (Year BETWEEN 1990 AND 2000);

או:

WHERE Year NOTNOT BETWEEN 1990 AND 2000;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 28

בחירה מרשימה של ערכים

1992דוגמא: שליפת כל הספרים שהוצאו בשנים ,:1999 או 1995

SELECT Book_Name

FROM Books

WHERE Year=1992 OROR Year=1998 OROR Year=2001;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 29

שימוש באופרטורIN:

SELECT Book_Name

FROM Books

WHERE Year ININ (1992, 1998, 2001); שימוש באופרטורNOT IN:

SELECT Book_Name

FROM Books

WHERE Year NOT ININ (1992, 1998, 2001);

INבחירה מרשימה של ערכים -

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 30

LIKEהאופרטור

האופרטורLIKELIKE בודק התאמה של מחרוזת ).wildcardsלתבנית נתונה (

" מתאים לתו בודד._התו "" 0" מתאים לסדרת תווים כלשהי, באורך %התו

או יותר. דוגמא: שליפת כל הספרים ששמם מכיל את

:m והאות לפני אחרונה היא Databaseהמחרוזת SELECT Book_Name FROM BooksWHERE Book_Name LIKELIKE ‘%Database%m_’;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 31

Book_IdBook_NameYearMax_TimePagesFaculty

1111Database Systems 19987348CS

1112Database Systems 199814348CS

1113Database Systems20017424CS

2222Database And Knowledge19981390CS

2223Database And Knowledge19987390EE

3333Electronic Circuits199821180EE

4444Genes 719857580MED

5555Anatomy19887450MED

המשך - דוגמא

Books:

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 32

Book_Name

Database Systems

Database Systems

Database Systems

תוצאה - דוגמא

SELECT Book_Name FROM Books

WHERE Book_Name LIKE ‘%Database%m_’ :

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 33

NULLערכים חסרים –

NULL("משבצת ריקה") ערך מיוחד המציין ערך חסר – :דוגמאות

תאריך החזרה של ספר שעדיין לא הוחזרפקולטה של לקוח חיצוני

-השוואה לNULL :expr IS NULL מחזיר – true אם expr הוא ערך NULLexpr IS NOT NULL

.דוגמא: שליפת כל הספרים שעוד לא הוחזרו

SELECT Book_Id FROM Borrowed

WHERE To_Date IS NULLIS NULL;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 34

(המשך)NULLערכי

מוטיבציה: קביעת "ברירת מחדל" עבור ערך שיכולNULL:להיות

COALESCE(value, default) סיבה נוספת: ערך של ביטוי אריתמטי המכילNULL תמיד

.NULLיהיה דוגמא: הצגת משך ההשאלה בשבועות של כל הספרים (עבור

).0ספרים שעדיין לא הוחזרו יש להציג SELECT Book_Id , COALESCECOALESCE(To_Date – From_Date, 0) / 7

FROM Borrowed;

:בצורה כלליתCOALESCE(expr1,expr2,…) מחזיר את NULLהערך הראשון השונה מ-

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 35

DISTINCT השמטת כפילויות -

האופציהDISTINCT משמיטה את הרשומות הכפולות מתוצאת השאילתא.

,דוגמא: שליפת כל שמות הספרים ושנות ההוצאהללא חזרות.

SELECT DISTINCTDISTINCT Book_Name, Year

FROM Books;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 36

Book_IdBook_NameYearMax_TimePagesFaculty1111Database Systems 19987348CS

1112Database Systems 199814348CS

1113Database Systems20017424CS

2222Database And Knowledge19981390CS

2223Database And Knowledge19987390EE

3333Electronic Circuits199821180EE

4444Genes 719857580MED

5555Anatomy19887450MED

המשך - דוגמא

Books:

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 37

Book_NameYearDatabase Systems 1998

Database Systems 1998

Database Systems2001

Database And Knowledge1998

Database And Knowledge1998

Electronic Circuits1998

Genes 71985

Anatomy1988

תוצאה - דוגמא

Book_NameYearDatabase Systems 1998

Database Systems2001

Database And Knowledge1998

Electronic Circuits1998

Genes 71985

Anatomy1988

DISTINCT ללא DISTINCT אחרי

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 38

ORDER BY מיון -

ORDER BY מיון של הרשומות הנשלפות על פי : הערכים של שדות או ביטויים נתונים.

דוגמא: שליפת כל הספרים ממוינים לפי שנתההוצאה:

SELECT * FROM Books

ORDER BYORDER BY Year;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 39

Book_IdBook_NameYearMax_TimePagesFaculty

4444Genes 719857580MED

5555Anatomy19887450MED

1111Database Systems 19987348CS

1112Database Systems 199814348CS

2222Database And Knowledge19981390CS

3333Electronic Circuits199821180EE

2223Database And Knowledge19987390EE

1113Database Systems20017424CS

תוצאה - דוגמא

SELECT * FROM Books ORDER BY Year :

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 40

DESCמיון בסדר הפוך -

SELECT * FROM Books ORDER BY Year DESCDESC;

Book_IdBook_NameYearMax_TimePagesFaculty

1113Database Systems20017424CS

5555Anatomy19887450MED

1111Database Systems 19987348CS

1112Database Systems 199814348CS

2222Database And Knowledge19981390CS

3333Electronic Circuits199821180EE

2223Database And Knowledge19987390EE

4444Genes 719857580MED

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 41

מיון לפי כמה ביטויים

.מיון ראשוני ומשני דוגמא: שליפת פרטי הספרים ממוינים לפי שנת

ההוצאה , ולפי מספר העמודים (בין הספרים שהוצאו באותה שנה).

SELECT * FROM Books

ORDER BY Year,, Pages;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 42

מיון (המשך...)

.ניתן לציין את מס' השדה שלפיו יש למיין דוגמא: שליפת פרטי הספרים ממוינים לפי השדה

השלישי:

SELECT * FROM Books

ORDER BY 33;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 43

פונקציות סטטיסטיות

-בSQL:ישנן הפונקציות הסטטיסטיות הבאות MINמינימום – MAXמקסימום – AVGממוצע – SUMסכום – COUNTמספר הרשומות – כל אחת מפונקציות אלה פועלת על קבוצת ערכים

ומחזירה ערך אחד.

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 44

דוגמא

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

פתרון:

SELECT AVG(Pages), MAX(Pages)

FROM Books;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 45

דוגמא – המשך

Books:

Book_IdBook_NameYearMax_TimePagesFaculty1111Database Systems 19987348CS

1112Database Systems 199814348CS

1113Database Systems20017424CS

2222Database And Knowledge19981390CS

2223Database And Knowledge19987390EE

3333Electronic Circuits199821180EE

4444Genes 719857580MED

5555Anatomy19887450MED

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 46

דוגמא – המשך

Pages

348

348

424

390

390

180

580

450

AVG(Pages)MAX(Pages)

389580

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 47

פונקציות סטטיסטיות – המשך

ניתן לחשב פונקציות סטטיסטיות רק על חלק . WHEREמרשומות הטבלה ע"י שימוש באופציה

:לדוגמא

SELECT COUNT (Book_Name)

FROM Books

WHERE Year = 1998;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 48

פונקציות סטטיסטיות – המשך

Books:Book_IdBook_NameYearMax_TimePagesFaculty

1111Database Systems 19987348CS

1112Database Systems 199814348CS

1113Database Systems20017424CS

2222Database And Knowledge19981390CS

2223Database And Knowledge19987390EE

3333Electronic Circuits199821180EE

4444Genes 719857580MED

5555Anatomy19887450MED

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 49

דוגמא – המשך

Book_Name:Book_Name

Database Systems

Database Systems

Database Systems

Database And Knowledge

Database And Knowledge

Electronic Circuits

Genes 7

Anatomy

COUNT(Book_Name)

5

Book_Name

Database Systems

Database Systems

Database And Knowledge

Database And Knowledge

Electronic Circuits

WHERE

COUNT

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 50

פונקציות סטטיסטיות -השמטת כפילויות

השמטת כפילויות בזמן חישוב הפונקציה: ע"י לפני הפרמטר. DISTINCTהוספת המילה

:דוגמא

SELECT COUNT (DISTINCT Book_Name)

FROM Books

WHERE Year = 1998;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 51

)DISTINCTדוגמא – המשך (

COUNT(DISTINCT Book_Name)

3

DISTINCT Book_Name

Database Systems

Database And Knowledge

Electronic Circuits

Book_Name

Database Systems

Database Systems

Database And Knowledge

Database And Knowledge

Electronic Circuits

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 52

פעולות סטטיסטיות על ערכי NULL

כל הפונקציות הסטטיסטיות מתעלמות מערכי NULL.

יוצא מן הכלל : COUNT(*).:דוגמא

SELECT COUNT(*)

FROM Books

WHERE Year = 1998;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 53

פונקציות סטטיסטיות – המשך

שליפת מספר הספרים בכל שנהדוגמא ::ניסיון ראשון

SELECT Year, COUNT(Book_Id)

FROM Books;

!הרבה ערכים של לא חוקי) Year ערך אחד של ,COUNT.(

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 54

) Aggregation( – קיבוץGROUP BY

הפעלת פונקציות סטטיסטיות על קבוצות של רשומות.

:(תיקון) המשך הדוגמא

SELECT Year, COUNT(Book_Id)

FROM Books

GROUP BY Year; לכל ערך של Year-ה ,COUNT.מחושב בנפרד

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 55

)GROUP BY( דוגמא – המשך

Book_IdYear

11111998

11121998

11132001

22221998

22231998

33331998

44441985

55551988

YearCOUNT(Book_Id)

19985

19881

20011

19851

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 56

) Aggregation(קיבוץ – המשך

:דוגמא נוספת

SELECT Faculty, COUNT(Book_Id)

FROM Books

GROUP BY Year; !לאחר הקיבוץ לפי לא חוקי Year בכל קבוצה ,

שונים.Facultyיכולים להיות ערכי בנוסף לפעולות סטטיסטיות, מותר לשלוף כלל :

רק שדות לפיהם מתבצע הקיבוץ (וביטויים).

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 57

HAVINGבחירה לאחר קיבוץ -

האופציה HAVING condition בחירת חלק :. GROUP BYמהקבוצות המתקבלות מ-

התנאי condition פונקציות סטטיסטיות, שדות :לפיהם מתבצע הקיבוץ, ביטויים.

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 58

)HAVINGדוגמא (

מה מחזירה השאילתה הבאה?דוגמא :

SELECT Year, COUNT(Book_Id)

FROM Books

GROUP BY Year

HAVING AVG(Pages) > 400;, מבין כל Year הסבר: לאחר הקיבוץ לפי •

הקבוצות נבחרות כאלה שבהן ממוצע מספרי .400העמודים גדול מ-

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 59

)HAVINGדוגמא – המשך (

Books:

Book_IdBook_NameYearMax_TimePagesFaculty

1111Database Systems 19987348CS

1112Database Systems 199814348CS

1113Database Systems20017424CS

2222Database And Knowledge19981390CS

2223Database And Knowledge19987390EE

3333Electronic Circuits199821180EE

4444Genes 719857580MED

5555Anatomy19887450MED

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 60

)HAVINGדוגמא – המשך (

YearCOUNT(Book_Id)AVG(Pages)

19985331

19881450

20011424

19851580

11988

1

1

COUNT(Book_Id)

1985

2001

Year

AVG(Pages) > 400

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 61

לעומת WHEREבחירה: HAVING

WHERE הקיבוץלפנירשומות : בחירת HAVING הקיבוץ.אחרי קבוצות: בחירת

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

בתנאי שבממוצע מספר העמודים באותה שנה .400גדול מ-

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 62

דוגמא – המשך

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

בתנאי שבממוצע מספר העמודים באותה שנה .400גדול מ-

SELECT Year, COUNT(Book_Id)FROM BooksWHERE Pages > 200GROUP BY YearHAVING AVG(Pages) > 400;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 63

דוגמא – המשך

Books:

MED45071988Anatomy5555

MED58071985Genes 74444

EE180211998Electronic Circuits3333

CS34871998Database Systems 1111

CS348141998Database Systems 1112

CS42472001Database Systems1113

CS39011998Database And Knowledge2222

EE39071998Database And Knowledge2223

FacultyPagesMax_TimeYearBook_NameBook_Id

WHERE Pages > 200

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 64

דוגמא – המשך

אחרי“GROUP BY Year”:YearCOUNT(Book_Id)AVG(Pages)19984369

19881450

20011424

19851580

11988

1

1

COUNT(Book_Id)

1985

2001

Year

HAVING AVG(Pages) > 400

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 65

דוגמא – המשך

(שלבים):הסבר

בחירת הרשומות של הספרים שמכילים יותר מ- 1. עמודים.200

קיבוץ הרשומות לקבוצות, כך שבכל קבוצה יש 2..Yearלכל הרשומות (הספרים) אותו

חישוב מספר העמודים הממוצע בכל קבוצה, 3..400ובחירת הקבוצות בהן הממוצע הוא לפחות

חישוב מס' הספרים בכל קבוצה.4.

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 66

שאילתות משתי טבלאות או )JOIN(** צירוףיותר:

להצליב" רשומות מרלציות/טבלאות שונותמטרה" : syntax: FROM table1, table2… , מכפלה קרטזית בין כל הטבלאותמשמעות : :התייחסות לשדות מטבלה מסוימת table1.field ע"י הוספת תנאים ב- ביצוע הצלבה :WHERE

** also known as: Inner JOIN or Equi-JOIN

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 67

)JOINדוגמא (

שליפת שמות ומספרי הזהות של דוגמא :הלקוחות יחד עם שמות הספרים שהזמינו.

:פתרון

SELECT Customer.Cust_Id, Cust_Name, Book_Name

FROM Customer, Ordered

WHERE Customer.Cust_Id = Ordered.Cust_Id;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 68

Cust_IdBook_NameOrder_Date12345Database Systems 14-Oct-2002

45678Anatomy24-Oct-2002

12345Database And Knowledge30-Oct-2002

45678Electronic Circuits12-Oct-2002

Cust_IdCust_NameFaculty

12345Moshe CohenCS

23456Avi BarakEE

34567Avi BarakMED

45678Lior EdriEE

56789Moshe CohenEE

67890Moshe CohenEE

)JOINדוגמא – המשך (

Customer

Ordered

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 69

Naturalדוגמא – המשך (JOIN(

Cust_IdCust_NameBook_Name

12345Moshe CohenDatabase Systems

12345Moshe CohenDatabase And Knowledge

45678Lior EdriAnatomy

45678Lior EdriElectronic Circuits

:תוצאה

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 70

.שליפת כל השדות של הטבלה

SELECT Customer.*, Book_Name

FROM Customer, Ordered

WHERE Customer.Cust_Id = Ordered.Cust_Id;

JOIN שליפת כל השדות :מטבלה

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 71

לכלול את הלקוחות שלא הזמינו אף ספרמטרה :פתרון:

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 :רשומות שליפתהשניה בטבלה התאמה ללא

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 72

Cust_IdCust_NameBook_Name

12345Moshe CohenDatabase Systems

12345Moshe CohenDatabase And Knowledge

45678Lior EdriAnatomy

45678Lior EdriElectronic Circuits

23456Avi Barak

34567Avi Barak

56789Moshe Cohen

67890Moshe Cohen

המשך – ) OUTERדוגמאJOIN)

תוצאה:

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 73

מה עושה שאילתה זו?דוגמא :

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;

נוספת דוגמא

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 74

תשובה: השאילתה מחזירה לכל לקוחID שם ,ומס' הספרים שהזמין.

:תוצאה

המשך – דוגמא

Cust_IdCust_NameCOUNT (Book_Name)

12345Moshe Cohen2

45678Lior Edri2

23456Avi Barak0

34567Avi Barak0

56789Moshe Cohen0

67890Moshe Cohen0

•- ה ללא התוצאה הייתה ?OUTER JOINמה

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 75

שם נוסף (בד"כ קצר יותר) לטבלהמטרה :דוגמא:

SELECT C.Cust_Id, Cust_Name, Book_Name

FROM Customer C, Ordered O

WHERE C.Cust_Id = O. Cust_Id;

נרדפים – ALIASשמות

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 76

שימוש נוסף: מספר עותקים של אותה טבלה

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עם אותו שם. (זאת דוגמא של

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 77

SELECT Year, COUNT(Book_Id) AS Num_Books

FROM Books

GROUP BY Year;

שימוש נוסף: לתת שם לביטוי סטטיסטי או •אריתמטי

דוגמא:•

ALIAS :נשלף לביטוי שם מתן

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 78

של קבוצההתייחסות לרלציה כאל n .יות--אופרטורים בSQL:

– חיתוךINTERSECT – חיסור/הפרשEXCEPT – איחודUNION - איחוד ללא השמטת כפילויותUNION ALL

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

הקבוצות מתורת אופרטורים

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 79

:דוגמא: כל הלקוחות שלא הזמינו אף ספר

SELECT Cust_Id FROM Customer

EXCEPT

SELECT Cust_Id FROM Ordered;

הקבוצות – מתורת אופרטוריםהמשך

שימוש במיון:•

–ORDER BY צריך להופיע אחרי כלהאופרטורים

יש להשתמש במספר השדה ולא בשמו (שיכול –להיות שונה בין האופרנדים)

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 80

-מוטיבציה: התנאי בWHERE מכיל ביטוי שלא ידוע מראש, אלא תלוי בתוכן מסד הנתונים.**

דוגמא: שליפת כל הספרים שיצאו לאור באותה.1112שנה כמו ספר מס'

SELECT Book_Name FROM Books WHERE Year =

(SELECT Year FROM Books WHERE Book_Id = 1112);

** Dynamic WHERE clause

שאילתות- – SUBQUERIESתת

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 81

.תת-שאילתה יכולה לשלוף כמה ביטויים אפשר להשוות לערכים של כל הביטויים האלה

בו-זמנית. דוגמא: שליפת כל הספרים שיצאו לאור באותה

.1112שנה ונמצאים באותה פקולטה כמו ספר מס' SELECT Book_Name FROM Books WHERE (Year, Faculty) =

(SELECT Year, Faculty FROM Books WHERE Book_Id = 1112);

המשך- – שאילתות תת

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 82

-תת-השאילתה יכולה להופיע כחלק מFROM. תת-השאילתה חייבת לקבלAlias.20-0: שליפת שמות הספרים שהוזמנו אחרי דוגמאct-98

.1234ע"י לקוח מס'

SELECT Book_Name FROM (SELECT * FROM Ordered

WHERE Order_Date > 20-0ct-98) OWHERE O. Cust_Id = 1234;

המשך- – שאילתות תת

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 83

מוטיבציה: השוואת ערך בודד לקבוצת ערכים בהינתן ערךx וקבוצה A:נרצה לבטא ,

x-גדול מכל הערכים ב A (yA:x>y)x-קטן מערך כלשהו ב A (yA:x>y) xA (yA:x=y)

-כמתים בSQL:•ANYקיים --•ALLלכל --

( Quantifiers)כמתים

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 84

הכימות נעשה ע"י כתיבת המילהANY או ALL אחרי סימן ההשוואה

דוגמא: שליפת ספרים בעלי יותר עמודים מכלהספרים בפקולטה למדעי המחשב.

SELECT Book_Name, Pages

FROM Books

WHERE Pages >ALL (SELECT Pages FROM Books WHERE Faculty = ‘CS’);

המשך – כמתים

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 85

:ניתן לממש אופרטור שייכות באמצעות כמתים.1=ANY IN

.2>>ALL NOT IN :דוגמא

אופרטור – ) המשך כמתיםשייכות(

SELECT Book_Name, Year

FROM Books

WHERE Year IN (SELECT Year FROM Books WHERE Faculty =

‘MED’);

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 86

ניתן לקונן תת-שאילתות דוגמה: כל הפקולטות שמחזיקות ספרים שהזמין

לקוח בשם ליאור אדרי:

)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’));

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 87

תת-שאילתות לעומתJOINדוגמא: כתוב אותה שאילתה ללא שימוש בתת שאילתות

המשך- – שאילתות תת

SELECT B.FacultyFROM Books B, Customer C, Ordered OWHERE B.Book_Name = O.Book_Name

AND C.Cust_Id = O. Cust_Id;AND C.Cust_Name = ‘Lior Edri’;

שאלה: איזו מהן יותר יעילה?•תשובה: תלוי באופטימיזציה בשרת, בד"כ הפתרון עם •

התת-שאילתות יעיל יותר

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 88

מוטיבציה: יש קשר דו-כיווני בין הפרמטרים של השאילתההחיצונית והפנימית

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

(Interconnected Subqueries) -קשורות שאילתות תתהדדית

SELECT Book_Id, Book_Name, Max_Time

FROM Books B

WHERE Max_Time >

(SELECT AVG(Max_Time) FROM Books

WHERE Faculty = B.Faculty);

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 89

EXIST .הוא אופרטור בוליאני שפועל על תת-שאילתה מחזירtrue ,אם תת-השאילתה מחזירה ערך כלשהו

False.אם אינה מחזירה דבר דוגמא: שליפת כל הלקוחות שהזמינו ספר כלשהו

EXISTאופרטור

SELECT Cust_Name

FROM Customer C

WHERE EXIST

(SELECT * FROM Ordered

WHERE Cust_Id = C.Cust_Id);

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 90

שינוי מסד הנתונים - DDL , DMLפעולות

:SQLפעולות ב-שאילתות מסד נתונים (עדכון, הוספה של רשומות, תוכןשינוי

)DML – Data Manipulation Languageוכו'), מסד נתונים (יצירה, מחיקה של מבנהשינוי

DDL – Data Definitionטבלאות, וכו'), Language

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 91

UPDATE tablename

column-assignment-list SET

conditional-expression WHERE ;

UPDATEעדכון –

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 92

UPDATEעדכון –

עדכון ערכים ברשומות קיימות במסד מטרה :הנתונים.

השמה של ערכים קבועים אפשרות ראשונה :בעמודות מסוימות בכל הרשומות.

העברת כל הספרים לספרייה מרכזית, :דוגמא והגבלת משך ההשאלה לשבוע ימים.

UPDATE BooksSET Max_Time = 7, Faculty = ‘GEN’;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 93

דוגמא - המשך

Book_IdBook_NameYearMax_TimePagesFaculty

1111Database Systems 19987348CS

1112Database Systems 199814348CS

1113Database Systems20017424CS

2222Database And Knowledge19981390CS

2223Database And Knowledge19987390EE

3333Electronic Circuits199821180EE

4444Genes 719857580MED

5555Anatomy19887450MED

Books:

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 94

Book_IdBook_NameYearMax_TimePagesFaculty

1111Database Systems 19987348GEN

1112Database Systems 19987348GEN

1113Database Systems20017424GEN

2222Database And Knowledge19987390GEN

2223Database And Knowledge19987390GEN

3333Electronic Circuits19987180GEN

4444Genes 719857580GEN

5555Anatomy19887450GEN

דוגמא - תוצאה

UPDATE Books SET Max_Time = 7, Faculty = ‘GEN’:

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 95

UPDATE(...המשך)

:עדכון חלק מהרשומותWHERE conditionהוספת תנאי

דוגמא: הגבלת משך ההשאלה לשבוע ימיםלספרים השייכים לספריית מדעי המחשב.

UPDATE Books

SET Max_Time = 7

WHERE Faculty = ‘CS’;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 96

דוגמא - המשך

Book_IdBook_NameYearMax_TimePagesFaculty

1111Database Systems 19987348CS

1112Database Systems 199814348CS

1113Database Systems20017424CS

2222Database And Knowledge19981390CS

2223Database And Knowledge19987390EE

3333Electronic Circuits199821180EE

4444Genes 719857580MED

5555Anatomy19887450MED

Books:

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 97

Book_IdBook_NameYearMax_TimePagesFaculty

1111Database Systems 19987348CS

1112Database Systems 19987348CS

1113Database Systems20017424CS

2222Database And Knowledge19987390CS

2223Database And Knowledge19987390EE

3333Electronic Circuits199821180EE

4444Genes 719857580MED

5555Anatomy19887450MED

דוגמא - תוצאה

UPDATE Books SET Max_Time = 7 WHERE Faculty = ‘CS’:

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 98

UPDATE(...המשך)

.אפשרות נוספת: השמה של ביטויים דוגמה: הארכת משך ההשאלה לכל הספרים ביום

אחד.

UPDATE Books

SET Max_Time = Max_Time + 1;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 99

דוגמא - המשך

Book_IdBook_NameYearMax_TimePagesFaculty

1111Database Systems 19987348CS

1112Database Systems 199814348CS

1113Database Systems20017424CS

2222Database And Knowledge19981390CS

2223Database And Knowledge19987390EE

3333Electronic Circuits199821180EE

4444Genes 719857580MED

5555Anatomy19887450MED

Books:

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 100

דוגמא - תוצאה

Book_IdBook_NameYearMax_TimePagesFaculty

1111Database Systems 19988348CS

1112Database Systems 199815348CS

1113Database Systems20018424CS

2222Database And Knowledge19982390CS

2223Database And Knowledge19988390EE

3333Electronic Circuits199822180EE

4444Genes 719858580MED

5555Anatomy19888450MED

UPDATE Books SET Max_Time = Max_Time + 1:

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 101

UPDATE שימוש – בתת-שאילתות

הערך החדש יכול להיות תוצאה של תת-שאילתה דוגמא: לכל ספר יש לעדכן את משך ההשאלה

למקסימלי באותה פקולטה.

UPDATE Books B

SET Max_Time =

(SELECT MAX(Max_Time) FROM Books

WHERE Faculty = B.Faculty);

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 102

דוגמא - המשך

Book_IdBook_NameYearMax_TimePagesFaculty

1111Database Systems 19987348CS

1112Database Systems 199814348CS

1113Database Systems20017424CS

2222Database And Knowledge19981390CS

2223Database And Knowledge19987390EE

3333Electronic Circuits199821180EE

4444Genes 719857580MED

5555Anatomy19887450MED

Books:

MAX

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 103

Book_IdBook_NameYearMax_TimePagesFaculty

1111Database Systems 199814348CS

1112Database Systems 199814348CS

1113Database Systems200114424CS

2222Database And Knowledge199814390CS

2223Database And Knowledge199821390EE

3333Electronic Circuits199821180EE

4444Genes 719857580MED

5555Anatomy19887450MED

דוגמא – תוצאהUPDATE Books B

SET Max_Time = (SELECT MAX(Max_Time) FROM Books WHERE Faculty = B.Faculty):

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 104

UPDATEהמשך –

:הערות כל החישובים בשאילתה מתבצעים, כביכול, על

"העתק" זמני של הטבלה שאינו מתעדכן בזמן ביצוע ההוראה.

כלומר, עדכון של רשומה אינו משפיע על החישוביםהבאים שמתבצעים עבור הרשומות הבאות.

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 105

INSERT INTO tablename [( column-list )]

VALUES ( constant-list ) ;

INSERTהוספה -

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 106

INSERTהוספה -

הוספת רשומות חדשותמטרה :הוספת רשומה אחת נתונהאפשרות ראשונה :הוספת לקוח לטבלת דוגמא :Customer.

INSERT INTO Customer

VALUES (78901, ‘Roy Peled’, ‘EE’);

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 107

דוגמה - המשך

Cust_IdCust_NameFaculty

12345Moshe CohenCS

23456Avi BarakEE

34567Avi BarakMED

45678Lior EdriEE

56789Moshe CohenEE

67890Moshe CohenEE

Customer:

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 108

דוגמא - תוצאה

Cust_IdCust_NameFaculty

12345Moshe CohenCS

23456Avi BarakEE

34567Avi BarakMED

45678Lior EdriEE

56789Moshe CohenEE

67890Moshe CohenEE

78901Roy PeledEE

INSERT INTO Customer VALUES (78901, ‘Roy Peled’, ‘EE’):

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 109

INSERTהמשך –

.ניתן לאתחל רק חלק מהשדות:דוגמא

INSERT INTO Customer(Cust_Id,Cust_Name)

VALUES (78901, ‘Roy Peled’);:הערות

) שדות לא מאותחליםFaculty יקבלו ערך (NULL. אם בעמודהFaculty אסור שיופיע NULLההוראה ,

INSERT.אינה חוקית, ולכן היא לא תתבצע

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 110

דוגמה - המשך

Cust_IdCust_NameFaculty

12345Moshe CohenCS

23456Avi BarakEE

34567Avi BarakMED

45678Lior EdriEE

56789Moshe CohenEE

67890Moshe CohenEE

Customer:

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 111

דוגמא - תוצאה

Cust_IdCust_NameFaculty

12345Moshe CohenCS

23456Avi BarakEE

34567Avi BarakMED

45678Lior EdriEE

56789Moshe CohenEE

67890Moshe CohenEE

78901Roy Peled

INSERT INTO Customer(Cust_Id, Cust_Name)

VALUES (78901, ‘Roy Peled’):

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 112

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הוראה זו חוקית רק אם הטבלה •

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 113

דוגמא - המשך

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-2002Database 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:

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 114

INSERT.מתבצעת על "העתק" זמני של הטבלה :דוגמא

INSERT INTO Readers

(SELECT * FROM Readers);

הוראה זו לא תכנס ללולאה אינסופית אלא רקתכפיל את הטבלה.

INSERTהמשך –

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 115

תוצאה

CSMoshe Cohen12345

EELior Edri45678

FacultyCust_NameCust_Id

Readers:

EELior Edri45678

CSMoshe Cohen12345

CSMoshe Cohen12345

EELior Edri45678

FacultyCust_NameCust_Id

Readers:

INSERT INTO Readers

(SELECT * FROM Readers);

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 116

DELETE FROM tablename

conditional-expression WHERE

DELETEמחיקה –

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 117

DELETEמחיקה –

ההוראהDELETE.מוחקת רשומות מתוך הטבלה בהוראה זו צריך רק להגדיר אלו רשומות רוצים

למחוק..דוגמה: מחיקת כל ההזמנות

DELETE FROM Ordered;

.הטבלה עצמה אינה נמחקת, אך היא נותרת ריקה

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 118

DELETE) המשך – WHERE(

אופציהWHERE מאפשרת לבחור אלו רשומות ימחקו מהטבלה.

דוגמה: מחיקת כל ההזמנות של הלקוח בעל.12345מספר מזהה

DELETE FROM Ordered

WHERE Cust_Id = 12345;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 119

דוגמא – המשך

Cust_IdBook_NameOrder_Date12345Database Systems 14-Oct-2002

45678Anatomy24-Oct-2002

12345Database And Knowledge30-Oct-2002

45678Electronic Circuits12-Oct-2002

Cust_IdBook_NameOrder_Date45678Anatomy24-Oct-2002

45678Electronic Circuits12-Oct-2002

Ordered:

Ordered:

DELETE FROM Ordered

WHERE Cust_Id = 12345;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 120

DELETEהמשך –

בתוך התנאי אפשר להשתמש בביטויים בוליאנייםיותר מורכבים ובשאילתות.

דוגמה: ביטול כל ההזמנות של אנשים שאינםמופיעים בטבלת הלקוחות.

DELETE FROM Ordered O

WHERE NOT EXIST

(SELECT * FROM Customer

WHERE Cust_Id = O.Cust_Id);

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 121

דוגמה - המשך

Cust_IdBook_NameOrder_Date

12345Database Systems 14-Oct-2002

45678Anatomy24-Oct-2002

12345Database And Knowledge30-Oct-2002

45678Electronic Circuits12-Oct-2002

55555Electronic Circuits12-Oct-2002

Ordered: Cust_IdCust_NameFaculty

12345Moshe CohenCS

23456Avi BarakEE

34567Avi BarakMED

45678Lior EdriEE

56789Moshe CohenEE

67890Moshe CohenEE

Customer:

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 122

דוגמא - תוצאה

Cust_IdBook_NameOrder_Date12345Database Systems 14-Oct-2002

45678Anatomy24-Oct-2002

12345Database And Knowledge30-Oct-2002

45678Electronic Circuits12-Oct-2002

Ordered:

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 123

ביטול של שינויים/שמירהCOMMIT/ROLLBACK

של המסד."העתק"שינויים מתבצעים על .ניתן "להתחרט" ולבטל את השינויים האחרוניםCOMMIT העברת כל השינויים מההעתק אל מסד הנתונים :ROLLBACK-ביטול כל השינויים מה :COMMIT האחרון (או

מתחילת העבודה עם המסד).:דוגמה

DELETE FROM Ordered;ROLLBACK;

במקרים מסוימים מתבצעת פעולתCOMMIT באופן אוטומטי (נראה בהמשך).

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 124

CREATEיצירת טבלה – TABLE

יצירת טבלה ריקה :CREATE TABLE table (column_name column_type [(length)] [NOT NULL],…);

:יצירת טבלה המכילה תוצאה של שאילתה CREATE TABLE table AS SELECT …;

הפעולה COMMIT מתבצעת אוטומטית לפני . CREATE TABLEואחרי

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 125

- CREATE TABLE דוגמא

CREATE TABLE example(AB varchar(15),

CD integer NOT NULL, EF decimal(5), GH decimal(7,2));

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 126

PostgreSQLטיפוסים ב-

varchar (n) – מחרוזת boolean – ערך בוליאני date – תאריך integer – מספר שלם decimal [(p,s)] – מספר עם דיוק עשרוני נתון …

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 127

CREATE TABLEדוגמא –

דוגמא: יצירת טבלה חדשה בשםCSBooks .’CS‘שמכילה את כל הספרים השייכים לפקולטה

CREATE TABLE CSBooks AS

SELECT Book_Id, Book_Name

FROM Books

WHERE Faculty = ‘CS’;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 128

דוגמה - המשך

Book_IdBook_NameYearMax_TimePagesFaculty

1111Database Systems 19987348CS

1112Database Systems 199814348CS

1113Database Systems20017424CS

2222Database And Knowledge19981390CS

2223Database And Knowledge19987390EE

3333Electronic Circuits199821180EE

4444Genes 719857580MED

5555Anatomy19887450MED

Books:

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 129

Book_IdBook_Name

1111Database Systems

1112Database Systems

1113Database Systems

2222Database And Knowledge

Book_IdBook_Name

1111Database Systems

1112Database Systems

1113Database Systems

2222Database And Knowledge

CSBooks:

דוגמה - תוצאה

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 130

:הסכימה של הטבלה החדשה סוגי העמודות נקבעים ע"י השאילתה שבהוראת

CREATE.:את שמות העמודות בטבלה החדשה אפשר לשנות

CREATE TABLEהמשך –

דוגמא:•CREATE TABLE CSBooks(Id, Name) AS

SELECT Book_Id, Book_Name FROM BooksWHERE Faculty = ‘CS’;

Database Systems 1111

Database Systems 1112

Database Systems1113

Database And Knowledge2222

NameId

CSBooks:

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 131

DROP TABLEמחיקת טבלה –

דוגמא: מחיקת הטבלהCSBooks.

DROP TABLE CSBooks;

!הפקודה שימו לב DROP TABLE היא בלתי מתבצע אוטומטית לפניה COMMITהפיכה, כי

ואחריה.

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 132

VIEWSמבטים –

להתייחס לפלט של שאילתה כאל טבלה מוטיבציה :נפרדת (בלי ליצור אותה פיזית).

השאילתה שמגדירה את המבט נשמרת בפועל :במסד הנתונים ומופעלת כל פעם מחדש.

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

הסתרת מידע, פישוט שאילתות...מטרה :

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 133

)VIEWS(מבטים - המשך

יצירת מבט:CREATE VIEW view_name AS SELECT…;

:דוגמאCREATE VIEW CSBooks AS

SELECT Book_Id, Book_Name, Max_Time FROM BooksWHERE Faculty = ‘CS’;

-בCSBooks כל העמודות של מוסתרות Books -פרט ל Book_Id, Book_Name, Max_Time וכל השורות פרט

לספרים של מדעי מחשב. שיופיע אסורבשאילתה זו ORDER BY.

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 134

דוגמא – המשך

Book_IdBook_NameYearMax_TimePagesFaculty1111Database Systems 19987348CS

1112Database Systems 199814348CS

1113Database Systems20017424CS

2222Database And Knowledge19981390CS

2223Database And Knowledge19987390EE

3333Electronic Circuits199821180EE

4444Genes 719857580MED

5555Anatomy19887450MED

Books:

7Database Systems 1111

14Database Systems 1112

7Database Systems1113

1Database And Knowledge2222

Max_TimeBook_NameBook_Id

CSBooks

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 135

)VIEWS( מבטים – המשך (שאילתות)

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

ימים.7ההשאלה שלהם הוא

SELECT Book_Name

FROM CSBooks

WHERE Max_Time = 7;

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 136

.כל שינוי בטבלה המקורית מייד משפיע על המבט) ניתן לבצע עדכוניםUPDATE ,למסד הנתונים דרך המבט (

.read-onlyפרט למקרים בהם המבט הוא מבט הואread-only אם השאילתה של CREATE VIEW

מכילה:JOINGROUP BYביטויים ברשימת העמודות

:דוגמה לעדכוןUPDATE CSBooks SET Max_Time = Max_Time + 1;

) )VIEWS מבטים – המשך (עדכון)

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 137

))VIEWSדוגמא – המשך

Book_IdBook_NameYearMax_TimePagesFaculty1111Database Systems 19988348CS

1112Database Systems 199815348CS

1113Database Systems20018424CS

2222Database And Knowledge19982390CS

2223Database And Knowledge19987390EE

3333Electronic Circuits199821180EE

4444Genes 719857580MED

5555Anatomy19887450MED

Books:

8Database Systems 1111

15Database Systems 1112

8Database Systems1113

2Database And Knowledge2222

Max_TimeBook_NameBook_Id

CSBooks

עדכון אחריMax_Time:

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

אביב תשס"ג DBMS - 236363, שפות שאילתה: SQL 138

))VIEWS מבטים – המשך (מחיקה)

:מחיקת מבטDROP VIEW:דוגמה

DROP VIEW CSBooks;

.לטבלה שעליה מבוסס המבט לא קורה כלום