Post on 21-Dec-2015
1('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
סכמה
SQLמושגים :
טבלה, רלציה
שורה, רשומה,
nיה-
עמודה, תכונה, שדה, אטריביוט
2('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
דוגמא של מסד נתונים
מסד נתונים של ספריה•המסד מכיל את הטבלאות הבאות:•
• Customers(Cust_Id, Cust_Name, Faculty)– Cust_Id: מס' זהות של לקוח– Cust_Name:שם לקוח – Faculty: שם פקולטה
3('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
Customersהטבלה
Cust_IdCust_NameFaculty
12345Moshe CohenCS
23456Avi BarakEE
34567Avi BarakMED
45678Lior EdriEE
56789Moshe CohenEE
67890Moshe CohenEE
4('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
פירוט הטבלאות (המשך...)
• Books(Book_Id, Book_Name, Year, Max_Time, Faculty, Pages)
– Book_Id: (ייחודי לכל עותק) מס' מזהה– Book_Name: שם הכותר – Year: שנת הוצאה– Max_Time: (בימים) משך השאלה מקס' אפשרי– Faculty: שם פקולטה– Pages: מס' עמודים
5('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
Booksהטבלה
Book_IdBook_NameYearMax_TimePagesFaculty
1111Database Systems 19987348CS
1112Database Systems 199814348CS
1113Database Systems20017424CS
2222Database And Knowledge19981390CS
2223Database And Knowledge19987390EE
3333Electronic Circuits199821180EE
4444Genes 719857580MED
5555Anatomy19887450MED
6('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
פירוט הטבלאות (המשך...)
• Ordered(Cust_Id, Book_Name, Order_Date)– Cust_Id: מס' זהות של לקוח– Book_Name: שם הכותר– Order_Date: תאריך הזמנת הכותר
7('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
Ordered טבלת
Cust_IdBook_NameOrder_Date12345Database Systems 14-Oct-2002
45678Anatomy24-Oct-2002
12345Database And Knowledge30-Oct-2002
45678Electronic Circuits12-Oct-2002
8('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
פירוט הטבלאות (המשך...)
• Borrowed(Book_Id, Cust_Id, From_Date, To_Date)– Book_Id: מס' מזהה של ספר– Cust_Id: מס' זהות של לקוח– From_Date: תאריך השאלת הספר– To_Date: תאריך החזרת הספר
9('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
Borrowedטבלת
Book_IdCust_IdFrom_DateTo_Date
55555678913-Oct-2002
10('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
SQL: SELECTשאילתות ב-
דוגמא: שליפת כל הספרים ומספר העמודים בכל •ספר:
SELECT Book_Name, Pages FROM Books;
השאילתה הפשוטה ביותר בוחרת שדות מסוימים •מכל הרשומות בטבלה אחת.
SELECT column, column, …
FROM table;
11('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
Book_IdBook_NameYearMax_TimePagesFaculty
1111Database Systems 19987348CS
1112Database Systems 199814348CS
1113Database Systems20017424CS
2222Database And Knowledge19981390CS
2223Database And Knowledge19987390EE
3333Electronic Circuits199821180EE
4444Genes 719857580MED
5555Anatomy19887450MED
דוגמא - המשך
Books:
12('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
דוגמא - תוצאה
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
13('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
שלפית כל השדות
לשליפת כל השדות, משתמשים בתו "*" (כוכבית).•
דוגמא: שליפת כל השדות של כל הספרים:•
SELECT * FROM Books;
14('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
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:
15('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
ניתן לשלוף ביטויים אריתמטיים המשתמשים •בשדות הטבלה.
דוגמא: שליפת שמות ומספרי זיהוי של כל הספרים •ומשך ההשאלה בשבועות.
SELECT Book_Id, Book_Name, Max_Time/7
FROM Books;
ביטויים אריתמטיים
16('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
Book_IdBook_NameYearMax_TimePagesFaculty
1111Database Systems 19987348CS
1112Database Systems 199814348CS
1113Database Systems20017424CS
2222Database And Knowledge19981390CS
2223Database And Knowledge19987390EE
3333Electronic Circuits199821180EE
4444Genes 719857580MED
5555Anatomy19887450MED
דוגמא - המשך
Books:
17('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
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 :
18('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
בחירת חלק מהרשומות
מאפשרת לבחור WHERE conditionהאופציה •רק חלק מהרשומות.
דוגמא: שליפת שמות כל הספרים שהוצאו אחרי •:1990השנה
SELECT Book_Name
FROM Books
WHERE Year > 1990;
19('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
Book_IdBook_NameYearMax_TimePagesFaculty
1111Database Systems 19987348CS
1112Database Systems 199814348CS
1113Database Systems20017424CS
2222Database And Knowledge19981390CS
2223Database And Knowledge19987390EE
3333Electronic Circuits199821180EE
4444Genes 719857580MED
5555Anatomy19887450MED
דוגמא - המשך
Books:
20('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
Book_Name
Database Systems
Database Systems
Database Systems
Database And Knowledge
Database And Knowledge
Electronic Circuits
דוגמא - תוצאה
SELECT Book_Name FROM Books WHERE Year > 1990 :
21('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
WHERE(...המשך)
:תנאים יותר מורכבים•שימוש בסימני היחס: <, =, <, <<, =< ...–.AND, OR, NOTשימוש בקשרים לוגיים: –
דוגמא: שליפת שמות כל הספרים שהוצאו בין •:2000 ו 1990השנים
SELECT Book_NameFROM BooksWHERE Year > 1990 AND Year > 2000;
22('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
Book_IdBook_NameYearMax_TimePagesFaculty
1111Database Systems 19987348CS
1112Database Systems 199814348CS
1113Database Systems20017424CS
2222Database And Knowledge19981390CS
2223Database And Knowledge19987390EE
3333Electronic Circuits199821180EE
4444Genes 719857580MED
5555Anatomy19887450MED
דוגמא - המשך
Books:
23('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
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 :
24('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
BETWEENאופרטור
אפשר לכתוב BETWEENבעזרת האופרטור •:ביטוי זה בצורה יותר קריאה
SELECT Book_Name
FROM Books
WHERE Year BETWEEN 1990 AND 2000;
25('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
עוד דוגמא
בין לאדוגמא: שליפת שמות כל הספרים שהוצאו •:2000 ו 1990השנים
SELECT Book_Name
FROM Books
WHERE NOTNOT (Year BETWEEN 1990 AND 2000);
או:
WHERE Year NOTNOT BETWEEN 1990 AND 2000;
26('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
בחירה מרשימה של ערכים
1995, 1992דוגמא: שליפת כל הספרים שהוצאו בשנים •:1999או
SELECT Book_Name
FROM Books
WHERE Year=1992 OR Year=1998 OR Year=2001;
27('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
:INשימוש באופרטור •SELECT Book_NameFROM BooksWHERE Year IN (1992, 1998, 2001);
:NOT INשימוש באופרטור •SELECT Book_NameFROM BooksWHERE Year NOT IN (1992, 1998, 2001);
INבחירה מרשימה של ערכים -
28('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
LIKEהאופרטור
בודק התאמה של מחרוזת LIKEהאופרטור •).wildcardsלתבנית נתונה (
" מתאים לתו בודד._התו "• או 0" מתאים לסדרת תווים כלשהי, באורך %התו "•
יותר.דוגמא: שליפת כל הספרים ששמם מכיל את •
:m והאות לפני אחרונה היא Databaseהמחרוזת SELECT Book_Name FROM BooksWHERE Book_Name LIKE ‘%Database%m_’;
29('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
Book_IdBook_NameYearMax_TimePagesFaculty
1111Database Systems 19987348CS
1112Database Systems 199814348CS
1113Database Systems20017424CS
2222Database And Knowledge19981390CS
2223Database And Knowledge19987390EE
3333Electronic Circuits199821180EE
4444Genes 719857580MED
5555Anatomy19887450MED
דוגמא - המשך
Books:
30('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
Book_NameDatabase Systems
Database Systems
Database Systems
דוגמא - תוצאה
SELECT Book_Name FROM Books
WHERE Book_Name LIKE ‘%Database%m_’ :
31('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
NULLערכים חסרים –
•NULL("משבצת ריקה") ערך מיוחד המציין ערך חסר – דוגמאות:•
תאריך החזרה של ספר שעדיין לא הוחזר–פקולטה של לקוח חיצוני–
: NULLהשוואה ל-•–expr IS NULL מחזיר – true אם expr הוא ערך NULL–expr IS NOT NULL
דוגמא: שליפת כל הספרים שעוד לא הוחזרו.•SELECT Book_Id FROM BorrowedWHERE To_Date IS NULL;
32('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
(המשך)NULLערכי
מוטיבציה: קביעת "ברירת מחדל" עבור ערך שיכול •NULL:להיות
COALESCE(value, default) תמיד NULLסיבה נוספת: ערך של ביטוי אריתמטי המכיל •
.NULLיהיה דוגמא: הצגת משך ההשאלה בשבועות של כל הספרים (עבור •
).0ספרים שעדיין לא הוחזרו יש להציג SELECT Book_Id , COALESCE(To_Date – From_Date, 0) / 7FROM Borrowed;
מחזיר את COALESCE(expr1,expr2,…)בצורה כללית: •NULLהערך הראשון השונה מ-
33('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
DISTINCT השמטת כפילויות -
משמיטה את הרשומות DISTINCTהאופציה •הכפולות מתוצאת השאילתא.
דוגמא: שליפת כל שמות הספרים ושנות ההוצאה, •ללא חזרות.
SELECT DISTINCT Book_Name, Year
FROM Books;
34('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
Book_IdBook_NameYearMax_TimePagesFaculty1111Database Systems 19987348CS
1112Database Systems 199814348CS
1113Database Systems20017424CS
2222Database And Knowledge19981390CS
2223Database And Knowledge19987390EE
3333Electronic Circuits199821180EE
4444Genes 719857580MED
5555Anatomy19887450MED
דוגמא - המשך
Books:
35('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
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 אחרי
36('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
ORDER BY מיון -
•ORDER BY מיון של הרשומות הנשלפות על פי : הערכים של שדות או ביטויים נתונים.
דוגמא: שליפת כל הספרים ממוינים לפי שנת •ההוצאה:
SELECT * FROM Books
ORDER BY Year;
37('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
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 :
38('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
DESCמיון בסדר הפוך -
SELECT * FROM Books
ORDER BY Year DESC;
39('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
מיון לפי כמה ביטויים
מיון ראשוני ומשני.•
דוגמא: שליפת פרטי הספרים ממוינים לפי שנת •ההוצאה , ולפי מספר העמודים (בין הספרים
שהוצאו באותה שנה).
SELECT * FROM Books
ORDER BY Year, Pages;
40('א) SQL :שפות שאילתה ,DBMS - 236363חורף תשס"ג
מיון (המשך...)
ניתן לציין את מס' השדה שלפיו יש למיין.•
דוגמא: שליפת פרטי הספרים ממוינים לפי השדה •השלישי:
SELECT * FROM Books
ORDER BY 3;