חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 1 שינוי מסד הנתונים - פעולות DDL, DML פעולות ב -SQL: שאילתות שינוי תוכן מסד נתונים ( עדכון, הוספה של רשומות, וכו '), DML – Data Manipulation Language) שינוי מבנה מסד נתונים ( יצירה, מחיקה של טבלאות, וכו '), DDL – Data Definition Language
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 2 עדכון – UPDATE מטרה : עדכון ערכים ברשומות קיימות במסד הנתונים. אפשרות ראשונה : השמה של ערכים קבועים בעמודות מסוימות בכל הרשומות. דוגמא : העברת כל הספרים לספרייה מרכזית, והגבלת משך ההשאלה לשבוע ימים. UPDATE Books SET Max_Time = 7, Faculty = ‘ GEN ’ ;
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 3 דוגמא - המשך FacultyPagesMax_TimeYearBook_NameBook_Id CS Database Systems 1111 CS Database Systems 1112 CS Database Systems 1113 CS Database And Knowledge2222 EE Database And Knowledge2223 EE Electronic Circuits3333 MED Genes MED Anatomy5555 Books:
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 4 FacultyPagesMax_TimeYearBook_NameBook_Id GEN Database Systems 1111 GEN Database Systems 1112 GEN Database Systems 1113 GEN Database And Knowledge2222 GEN Database And Knowledge2223 GEN Electronic Circuits3333 GEN Genes GEN Anatomy5555 דוגמא - תוצאה UPDATE Books SET Max_Time = 7, Faculty = ‘ GEN ’ :
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 5 UPDATE ( המשך...) עדכון חלק מהרשומות : הוספת תנאי WHERE condition דוגמא : הגבלת משך ההשאלה לשבוע ימים לספרים השייכים לספריית מדעי המחשב. UPDATE Books SET Max_Time = 7 WHERE Faculty = ‘CS’;
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 6 דוגמא - המשך FacultyPagesMax_TimeYearBook_NameBook_Id CS Database Systems 1111 CS Database Systems 1112 CS Database Systems 1113 CS Database And Knowledge2222 EE Database And Knowledge2223 EE Electronic Circuits3333 MED Genes MED Anatomy5555 Books:
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 7 FacultyPagesMax_TimeYearBook_NameBook_Id CS Database Systems 1111 CS Database Systems 1112 CS Database Systems 1113 CS Database And Knowledge2222 EE Database And Knowledge2223 EE Electronic Circuits3333 MED Genes MED Anatomy5555 דוגמא - תוצאה UPDATE Books SET Max_Time = 7 WHERE Faculty = ‘CS’:
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 8 UPDATE ( המשך...) אפשרות נוספת : השמה של ביטויים. דוגמה : הארכת משך ההשאלה לכל הספרים ביום אחד. UPDATE Books SET Max_Time = Max_Time + 1;
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 9 דוגמא - המשך FacultyPagesMax_TimeYearBook_NameBook_Id CS Database Systems 1111 CS Database Systems 1112 CS Database Systems 1113 CS Database And Knowledge2222 EE Database And Knowledge2223 EE Electronic Circuits3333 MED Genes MED Anatomy5555 Books:
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 10 דוגמא - תוצאה FacultyPagesMax_TimeYearBook_NameBook_Id CS Database Systems 1111 CS Database Systems 1112 CS Database Systems 1113 CS Database And Knowledge2222 EE Database And Knowledge2223 EE Electronic Circuits3333 MED Genes MED Anatomy5555 UPDATE Books SET Max_Time = Max_Time + 1:
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 11 UPDATE – שימוש בתת - שאילתות הערך החדש יכול להיות תוצאה של תת - שאילתה דוגמא : לכל ספר יש לעדכן את משך ההשאלה למקסימלי באותה פקולטה. UPDATE Books B SET Max_Time = (SELECT MAX(Max_Time) WHERE Faculty = B.Faculty);
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 12 דוגמא - המשך FacultyPagesMax_TimeYearBook_NameBook_Id CS Database Systems 1111 CS Database Systems 1112 CS Database Systems 1113 CS Database And Knowledge2222 EE Database And Knowledge2223 EE Electronic Circuits3333 MED Genes MED Anatomy5555 Books: MAX
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 13 FacultyPagesMax_TimeYearBook_NameBook_Id CS Database Systems 1111 CS Database Systems 1112 CS Database Systems 1113 CS Database And Knowledge2222 EE Database And Knowledge2223 EE Electronic Circuits3333 MED Genes MED Anatomy5555 דוגמא – תוצאה UPDATE Books B SET Max_Time = (SELECT MAX(Max_Time) WHERE Faculty = B.Faculty):
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 14 UPDATE – המשך הערות : – כל החישובים בשאילתא מתבצעים, כביכול, על " העתק " זמני של הטבלה שאינו מתעדכן בזמן ביצוע ההוראה. – כלומר, עדכון של רשומה אינו משפיע על החישובים הבאים שמתבצעים עבור הרשומות הבאות.
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 15 הוספה - INSERT מטרה : הוספת רשומות חדשות אפשרות ראשונה : הוספת רשומה אחת נתונה דוגמא : הוספת לקוח לטבלת Customer. INSERT INTO Customer VALUES (78901, ‘Roy Peled’, ‘EE’);
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 16 דוגמה - המשך FacultyCust_NameCust_Id CSMoshe Cohen12345 EEAvi Barak23456 MEDAvi Barak34567 EELior Edri45678 EEMoshe Cohen56789 EEMoshe Cohen67890 Customer:
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 17 דוגמא - תוצאה FacultyCust_NameCust_Id CSMoshe Cohen12345 EEAvi Barak23456 MEDAvi Barak34567 EELior Edri45678 EEMoshe Cohen56789 EEMoshe Cohen67890 EERoy Peled78901 INSERT INTO Customer VALUES (78901, ‘Roy Peled’, ‘EE’):
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 18 INSERT – המשך ניתן לאתחל רק חלק מהשדות. דוגמא : INSERT INTO Customer(Cust_Id,Cust_Name) VALUES (78901, ‘Roy Peled’); הערות : – שדות לא מאותחלים (Faculty) יקבלו ערך NULL. – אם בעמודה Faculty אסור שיופיע NULL, ההוראה INSERT אינה חוקית, ולכן היא לא תתבצע.
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 19 דוגמה - המשך FacultyCust_NameCust_Id CSMoshe Cohen12345 EEAvi Barak23456 MEDAvi Barak34567 EELior Edri45678 EEMoshe Cohen56789 EEMoshe Cohen67890 Customer:
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 20 דוגמא - תוצאה FacultyCust_NameCust_Id CSMoshe Cohen12345 EEAvi Barak23456 MEDAvi Barak34567 EELior Edri45678 EEMoshe Cohen56789 EEMoshe Cohen67890 Roy Peled78901 INSERT INTO Customer(Cust_Id, Cust_Name) VALUES (78901, ‘Roy Peled’):
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 21 INSERT – שימוש בשאילתות הוספת רשומות המתקבלות כתוצאה של שאילתה. דוגמא : הכנסת כל הלקוחות שהזמינו ספרים לטבלה Readers. INSERT INTO Readers( Id, Name) (SELECT Cust_Id, Cust_Name FROM Customer C WHERE EXIST (SELECT * FROM Qrdered WHERE Cust_Id = C.Cust_Id); הוראה זו חוקית רק אם טבלה Readers קיימת.
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 22 דוגמה - המשך EEMoshe Cohen67890 CSMoshe Cohen12345 EEAvi Barak23456 MEDAvi Barak34567 EELior Edri45678 EEMoshe Cohen56789 FacultyCust_NameCust_Id Customer: SELECT Cust_Id, Cust_Name FROM Customer C WHERE EXIST (SELECT * FROM Qrdered WHERE Cust_Id = C.Cust_Id): 14-Oct-2002 Database Systems Oct-2002Anatomy Oct-2002Database And Knowledge Oct-2002Electronic Circuits45678 Order_DateBook_NameCust_Id Ordered: Moshe Cohen12345 Lior Edri45678 Cust_NameCust_Id Readers:
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 23 INSERT מתבצעת על " העתק " זמני של הטבלה. דוגמא : INSERT INTO Readers (SELECT * FROM Readers); הוראה זו לא לא תכנס ללולאה אינסופית אלא רק תכפיל את הטבלה. INSERT – המשך
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 24 תוצאה CSMoshe Cohen12345 EELior Edri45678 Faculty Cust_NameCust_Id Readers: EELior Edri45678 CSMoshe Cohen12345 CSMoshe Cohen12345 EELior Edri45678 FacultyCust_NameCust_Id Readers: INSERT INTO Readers (SELECT * FROM Readers);
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 25 מחיקה – DELETE ההוראה DELETE מוחקת רשומות מתוך הטבלה. בהוראה זו צריך רק להגדיר אלו רשומות רוצים למחוק. דוגמה : מחיקת כל ההזמנות. DELETE FROM Ordered; הטבלה עצמה אינה נמחקת, אך היא נותרת ריקה.
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 26 DELETE – המשך (WHERE) אופציה WHERE מאפשרת לבחור אלו רשומות ימחקו מהטבלה. דוגמה : מחיקת כל ההזמנות של הלקוח בעל מספר מזהה DELETE FROM Ordered WHERE Cust_Id = 12345;
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 27 דוגמה – המשך Order_DateBook_NameCust_Id 14-Oct-2002 Database Systems Oct-2002Anatomy Oct-2002Database And Knowledge Oct-2002Electronic Circuits45678 Order_DateBook_NameCust_Id 24-Oct-2002Anatomy Oct-2002Electronic Circuits45678 Ordered: DELETE FROM Ordered WHERE Cust_Id = 12345;
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 28 DELETE – המשך בתוך התנאי אפשר להשתמש בביטויים בוליאניים יותר מורכבים ובשאילתות. דוגמה : ביטול כל ההזמנות של אנשים שאינם מופיעים בטבלת הלקוחות. DELETE FROM Ordered O WHERE NOT EXIST (SELECT * FROM Customer WHERE Cust_Id = O.Cust_Id);
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 29 דוגמה - המשך Order_DateBook_NameCust_Id 14-Oct-2002 Database Systems Oct-2002Anatomy Oct-2002Database And Knowledge Oct-2002Electronic Circuits Oct-2002Electronic Circuits55555 Ordered: FacultyCust_NameCust_Id CSMoshe Cohen12345 EEAvi Barak23456 MEDAvi Barak34567 EELior Edri45678 EEMoshe Cohen56789 EEMoshe Cohen67890 Customer:
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 30 דוגמא - תוצאה Order_DateBook_NameCust_Id 14-Oct-2002 Database Systems Oct-2002Anatomy Oct-2002Database And Knowledge Oct-2002Electronic Circuits45678 Ordered:
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 31 שמירה / ביטול של שינויים COMMIT/ROLLBACK שינויים מתבצעים על " העתק " של המסד. ניתן " להתחרט " ולבטל את השינויים האחרונים. COMMIT: העברת כל השינויים מההעתק אל מסד הנתונים ROLLBACK: ביטול כל השינויים מה -COMMIT האחרון ( או מתחילת העבודה עם המסד ). דוגמה : DELETE FROM Ordered; ROLLBACK; במקרים מסוימים מתבצעת פעולת COMMIT באופן אוטומטי ( נראה בהמשך ).
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 32 יצירת טבלה – CREATE TABLE יצירת טבלה ריקה : CREATE TABLE table (column_type [(length)] [NOT NULL],…); יצירת טבלה המכילה תוצאה של שאילתה : CREATE TABLE table AS SELECT …; הפעולה COMMIT מתבצעת אוטומטית לפני ואחרי CREATE TABLE.
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 33 דוגמא CREATE TABLE EXAMPLE (AB VARCHAR(15), CDINTEGER NOT NULL, EFDECIMAL(5), GHDECIMAL(7,2));
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 34 טיפוסים ב - PostgreSQL VARCHAR (n) – מחרוזת BOOLEAN – ערך בוליאני DATE – תאריך INTEGER – מספר שלם DECIMAL [(p,s)] – מספר עם דיוק עשרוני נתון …
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 35 CREATE TABLE – דוגמא דוגמא : יצירת טבלה חדשה בשם CSBooks שמכילה את כל הספרים השייכים לפקולטה ‘CS’. CREATE TABLE CSBooks AS SELECT Book_Id, Book_Name FROM Books WHERE Faculty = ‘CS’;
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 36 דוגמה - המשך FacultyPagesMax_TimeYearBook_NameBook_Id CS Database Systems 1111 CS Database Systems 1112 CS Database Systems 1113 CS Database And Knowledge2222 EE Database And Knowledge2223 EE Electronic Circuits3333 MED Genes MED Anatomy5555 Books:
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 37 Book_NameBook_Id Database Systems 1111 Database Systems 1112 Database Systems 1113 Database And Knowledge2222 Book_NameBook_Id Database Systems 1111 Database Systems 1112 Database Systems 1113 Database And Knowledge2222 CSBooks: דוגמה - תוצאה
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 38 הסכמה של הטבלה החדשה : – סוגי העמודות נקבעים ע " י השאילתא שבהוראת ה - CREATE. – את שמות העמודות בטבלה החדשה אפשר לשנות : CREATE TABLE – המשך דוגמא : CREATE TABLE CSBooks(Id, Name) AS SELECT Book_Id, Book_Name FROM Books WHERE Faculty = ‘CS’; Database Systems 1111 Database Systems 1112 Database Systems 1113 Database And Knowledge2222 NameId CSBooks:
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 39 מחיקת טבלה – DROP TABLE דוגמה : מחיקת הטבלה CSBooks. DROP TABLE CSBooks; שימו לב ! הפקודה DROP TABLE היא בלתי הפיכה, כי COMMIT מתבצע אוטומטית לפניה ואחריה.
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 40 מבטים – VIEWS מוטיבציה : להתייחס לפלט של שאילתה כאל טבלה נפרדת ( בלי ליצור אותה פיזית ). בפועל : השאילתה שמגדירה את המבט נשמרת במסד הנתונים ומופעלת כל פעם מחדש. אינטואיציה : המבט מהווה מעין " חלון " דרכו אפשר להסתכל על חלק ממסד הנתונים. מטרה : הסתרת מידע, פישוט שאילתות...
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 41 מבטים - המשך יצירת מבט : 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, שפות שאילתא : SQL ( ג ') 42 דוגמא – המשך FacultyPagesMax_TimeYearBook_NameBook_Id CS Database Systems 1111 CS Database Systems 1112 CS Database Systems 1113 CS Database And Knowledge2222 EE Database And Knowledge2223 EE Electronic Circuits3333 MED Genes MED Anatomy5555 Books: 7 Database Systems Database Systems Database Systems Database And Knowledge2222 Max_TimeBook_NameBook_Id CSBooks
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 43 מבטים – המשך ( שאילתות ) על מבט ניתן לבצע שאילתות ממש כאילו היה טבלה. דוגמה : שליפת כל הספרים של מדעי מחשב שמשך ההשאלה שלהם הוא 7 ימים. SELECT Book_Name FROM CSBooks WHERE Max_Time = 7;
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 44 כל שינוי בטבלה המקורית מייד משפיע על המבט. ניתן לבצע עדכונים (UPDATE) למסד הנתונים דרך המבט, פרט למקרים בהם המבט הוא read-only. מבט הוא read-only אם השאילתה של CREATE VIEW מכילה : –JOIN –GROUP BY – ביטויים ברשימת העמודות דוגמה לעדכון : UPDATE CSBooks SET Max_Time = Max_Time + 1; מבטים – המשך ( עדכון )
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 45 דוגמא – המשך FacultyPagesMax_TimeYearBook_NameBook_Id CS Database Systems 1111 CS Database Systems 1112 CS Database Systems 1113 CS Database And Knowledge2222 EE Database And Knowledge2223 EE Electronic Circuits3333 MED Genes MED Anatomy5555 Books: 8 Database Systems Database Systems Database Systems Database And Knowledge2222 Max_TimeBook_NameBook_Id CSBooks אחרי עדכון Max_Time:
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 46 מבטים – המשך ( מחיקה ) מחיקת מבט : DROP VIEW דוגמה : DROP VIEW CSBooks; לטבלה שעליה מבוסס המבט לא קורה כלום.