Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 SQL: שינוי מסד הנתונים- פעולותDDL, DML פעולות ב-SQL: שאילתות  שינוי תוכן מסד נתונים (עדכון, הוספה של רשומות, וכו'), DML – Data Manipulation Language.

Similar presentations


Presentation on theme: "1 SQL: שינוי מסד הנתונים- פעולותDDL, DML פעולות ב-SQL: שאילתות  שינוי תוכן מסד נתונים (עדכון, הוספה של רשומות, וכו'), DML – Data Manipulation Language."— Presentation transcript:

1 1 SQL: שינוי מסד הנתונים- פעולותDDL, DML פעולות ב-SQL: שאילתות  שינוי תוכן מסד נתונים (עדכון, הוספה של רשומות, וכו'), DML – Data Manipulation Language שינוי מבנה מסד נתונים (יצירה, מחיקה של טבלאות, וכו'), DDL – Data Definition Language אביב 2012DBMS - 236363, DDL+DML: SQL

2 2 עדכון – UPDATE UPDATE tablename SET column-assignment-list WHERE conditional-expression ; אביב 2012DBMS - 236363, DDL+DML: SQL

3 3 עדכון – UPDATE מטרה: עדכון ערכים ברשומות קיימות במסד הנתונים. אפשרות ראשונה: השמה של ערכים קבועים בעמודות מסוימות בכל הרשומות. דוגמא: העברת כל הספרים לספרייה מרכזית, והגבלת משך ההשאלה לשבוע ימים. UPDATE Books SET Max_Time = 7, Faculty = ' GEN ' ; אביב 2012DBMS - 236363, DDL+DML: SQL

4 4 דוגמא - המשך FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 Books: אביב 2012DBMS - 236363, DDL+DML: SQL

5 5 FacultyPagesMax_TimeYearBook_NameBook_Id GEN34871998 Database Systems 1111 GEN34871998 Database Systems 1112 GEN42472001 Database Systems 1113 GEN39071998Database And Knowledge2222 GEN39071998Database And Knowledge2223 GEN18071998Electronic Circuits3333 GEN58071985Genes 74444 GEN45071988Anatomy5555 דוגמא - תוצאה UPDATE Books SET Max_Time = 7, Faculty = ' GEN ' : אביב 2012DBMS - 236363, DDL+DML: SQL

6 6 UPDATE (המשך...) עדכון חלק מהרשומות: הוספת תנאי WHERE condition דוגמא: הגבלת משך ההשאלה לשבוע ימים לספרים השייכים לספריית מדעי המחשב. UPDATE Books SET Max_Time = 7 WHERE Faculty = 'CS'; אביב 2012DBMS - 236363, DDL+DML: SQL

7 7 דוגמא - המשך FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 Books: אביב 2012DBMS - 236363, DDL+DML: SQL

8 8 FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS34871998 Database Systems 1112 CS42472001 Database Systems 1113 CS39071998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 דוגמא - תוצאה UPDATE Books SET Max_Time = 7 WHERE Faculty = 'CS': אביב 2012DBMS - 236363, DDL+DML: SQL

9 9 UPDATE (המשך...) אפשרות נוספת: השמה של ביטויים. דוגמה: הארכת משך ההשאלה לכל הספרים ביום אחד. UPDATE Books SET Max_Time = Max_Time + 1; אביב 2012DBMS - 236363, DDL+DML: SQL

10 10 דוגמא - המשך FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 Books: אביב 2012DBMS - 236363, DDL+DML: SQL

11 11 דוגמא - תוצאה FacultyPagesMax_TimeYearBook_NameBook_Id CS34881998 Database Systems 1111 CS348151998 Database Systems 1112 CS42482001 Database Systems 1113 CS39021998Database And Knowledge2222 EE39081998Database And Knowledge2223 EE180221998Electronic Circuits3333 MED58081985Genes 74444 MED45081988Anatomy5555 UPDATE Books SET Max_Time = Max_Time + 1: אביב 2012DBMS - 236363, DDL+DML: SQL

12 12 UPDATE – שימוש בתתי- שאילתות הערך החדש יכול להיות תוצאה של תת-שאילתה דוגמא: לכל ספר יש לעדכן את משך ההשאלה למקסימלי באותה פקולטה. UPDATE Books SET Max_Time = (SELECT MAX(Max_Time) FROM Books B WHERE B.Faculty = Books.Faculty); אביב 2012DBMS - 236363, DDL+DML: SQL

13 13 דוגמא - המשך FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 Books: MAX אביב 2012DBMS - 236363, DDL+DML: SQL

14 14 FacultyPagesMax_TimeYearBook_NameBook_Id CS348141998 Database Systems 1111 CS348141998 Database Systems 1112 CS424142001 Database Systems 1113 CS390141998Database And Knowledge2222 EE390211998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 דוגמא – תוצאה UPDATE Books SET Max_Time = (SELECT MAX(Max_Time) FROM Books B WHERE B.Faculty = Books.Faculty); אביב 2012DBMS - 236363, DDL+DML: SQL

15 15 UPDATE – המשך הערות: כל החישובים בשאילתא מתבצעים, כביכול, על "העתק" זמני של הטבלה שאינו מתעדכן בזמן ביצוע ההוראה. כלומר, עדכון של רשומה אינו משפיע על החישובים הבאים שמתבצעים עבור הרשומות הבאות. אביב 2012DBMS - 236363, DDL+DML: SQL

16 16 הוספה - INSERT INSERT INTO tablename [( column-list )] VALUES ( constant-list ) ; אביב 2012DBMS - 236363, DDL+DML: SQL

17 17 הוספה - INSERT מטרה: הוספת רשומות חדשות אפשרות ראשונה: הוספת רשומה אחת נתונה דוגמא: הוספת לקוח לטבלת Customers. INSERT INTO Customers VALUES (78901, 'Roy Peled', 'EE'); אביב 2012DBMS - 236363, DDL+DML: SQL

18 18 דוגמה - המשך FacultyCust_NameCust_Id CSMoshe Cohen12345 EEAvi Barak23456 MEDAvi Barak34567 EELior Edri45678 EEMoshe Cohen56789 EEMoshe Cohen67890 Customers: אביב 2012DBMS - 236363, DDL+DML: SQL

19 19 דוגמא - תוצאה FacultyCust_NameCust_Id CSMoshe Cohen12345 EEAvi Barak23456 MEDAvi Barak34567 EELior Edri45678 EEMoshe Cohen56789 EEMoshe Cohen67890 EERoy Peled78901 INSERT INTO Customers VALUES (78901, 'Roy Peled', 'EE'): אביב 2012DBMS - 236363, DDL+DML: SQL

20 20 INSERT – המשך ניתן לאתחל רק חלק מהשדות. דוגמא: INSERT INTO Customers(Cust_Id,Cust_Name) VALUES (78901, 'Roy Peled'); הערות: שדות לא מאותחלים (Faculty) יקבלו ערך NULL. אם בעמודה Faculty אסור שיופיע NULL, ההוראה INSERT אינה חוקית, ולכן היא לא תתבצע. אביב 2012DBMS - 236363, DDL+DML: SQL

21 21 דוגמה - המשך FacultyCust_NameCust_Id CSMoshe Cohen12345 EEAvi Barak23456 MEDAvi Barak34567 EELior Edri45678 EEMoshe Cohen56789 EEMoshe Cohen67890 Customers: אביב 2012DBMS - 236363, DDL+DML: SQL

22 22 דוגמא - תוצאה FacultyCust_NameCust_Id CSMoshe Cohen12345 EEAvi Barak23456 MEDAvi Barak34567 EELior Edri45678 EEMoshe Cohen56789 EEMoshe Cohen67890 Roy Peled78901 INSERT INTO Customers(Cust_Id, Cust_Name) VALUES (78901, 'Roy Peled'): אביב 2012DBMS - 236363, DDL+DML: SQL

23 23 INSERT – שימוש בשאילתות הוספת רשומות המתקבלות כתוצאה של שאילתה. דוגמא: הכנסת כל הלקוחות שהזמינו ספרים לטבלהReaders. INSERT INTO Readers( Id, Name) (SELECT Cust_Id, Cust_Name FROM Customers C WHERE EXISTS (SELECT * FROM Ordered WHERE Cust_Id = C.Cust_Id)); הוראה זו חוקית רק אם טבלה Readers קיימת. אביב 2012DBMS - 236363, DDL+DML: SQL

24 24 דוגמה - המשך Customers: Ordered: EEMoshe Cohen67890 CSMoshe Cohen12345 EEAvi Barak23456 MEDAvi Barak34567 EELior Edri45678 EEMoshe Cohen56789 FacultyCust_NameCust_Id SELECT Cust_Id, Cust_Name FROM Customers C WHERE EXISTS (SELECT * FROM Ordered WHERE Cust_Id = C.Cust_Id): 14-Oct-2002 Database 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: אביב 2012DBMS - 236363, DDL+DML: SQL

25 25 INSERT מתבצעת על "העתק" זמני של הטבלה. דוגמא: INSERT INTO Readers (SELECT * FROM Readers); הוראה זו לא לא תכנס ללולאה אינסופית אלא רק תכפיל את הטבלה. INSERT – המשך אביב 2012DBMS - 236363, DDL+DML: SQL

26 26 תוצאה 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); אביב 2012DBMS - 236363, DDL+DML: SQL

27 27 מחיקה – DELETE DELETE FROM tablename WHERE conditional-expression אביב 2012DBMS - 236363, DDL+DML: SQL

28 28 מחיקה – DELETE ההוראה DELETE מוחקת רשומות מתוך הטבלה. בהוראה זו צריך רק להגדיר אלו רשומות רוצים למחוק. דוגמה: מחיקת כל ההזמנות. DELETE FROM Ordered; הטבלה עצמה אינה נמחקת, אך היא נותרת ריקה. אביב 2012DBMS - 236363, DDL+DML: SQL

29 29 DELETE – המשך (WHERE) אופציה WHERE מאפשרת לבחור אלו רשומות ימחקו מהטבלה. דוגמה: מחיקת כל ההזמנות של הלקוח בעל מספר מזהה 12345. DELETE FROM Ordered WHERE Cust_Id = 12345; אביב 2012DBMS - 236363, DDL+DML: SQL

30 30 דוגמה – המשך Order_DateBook_NameCust_Id 14-Oct-2002 Database Systems 12345 24-Oct-2002Anatomy45678 30-Oct-2002Database And Knowledge12345 12-Oct-2002Electronic Circuits45678 Order_DateBook_NameCust_Id 24-Oct-2002Anatomy45678 12-Oct-2002Electronic Circuits45678 Ordered: DELETE FROM Ordered WHERE Cust_Id = 12345; אביב 2012DBMS - 236363, DDL+DML: SQL

31 31 DELETE – המשך בתוך התנאי אפשר להשתמש בביטויים בוליאניים יותר מורכבים ובשאילתות. דוגמה: ביטול כל ההזמנות של אנשים שאינם מופיעים בטבלת הלקוחות. DELETE FROM Ordered WHERE NOT EXISTS (SELECT * FROM Customers WHERE Cust_Id = Ordered.Cust_Id); אביב 2012DBMS - 236363, DDL+DML: SQL

32 32 דוגמה - המשך Order_Dat e Book_NameCust_Id 14-Oct-2002 Database Systems 12345 24-Oct-2002Anatomy45678 30-Oct-2002Database And Knowledge12345 12-Oct-2002Electronic Circuits45678 12-Oct-2002Electronic Circuits55555 Ordered: FacultyCust_NameCust_Id CSMoshe Cohen12345 EEAvi Barak23456 MEDAvi Barak34567 EELior Edri45678 EEMoshe Cohen56789 EEMoshe Cohen67890 Customers: אביב 2012DBMS - 236363, DDL+DML: SQL

33 33 דוגמא - תוצאה Order_DateBook_NameCust_Id 14-Oct-2002 Database Systems 12345 24-Oct-2002Anatomy45678 30-Oct-2002Database And Knowledge12345 12-Oct-2002Electronic Circuits45678 Ordered: אביב 2012DBMS - 236363, DDL+DML: SQL

34 34 יצירת טבלה – CREATE TABLE יצירת טבלה ריקה: CREATE TABLE table (column_name column_type [(length)] [NOT NULL],…); יצירת טבלה המכילה תוצאה של שאילתה: CREATE TABLE table AS SELECT …; אביב 2012DBMS - 236363, DDL+DML: SQL

35 35 דוגמא CREATE TABLE EXAMPLE (AB VARCHAR(15), CDINTEGER NOT NULL, EFDECIMAL(5), GHDECIMAL(7,2)); אביב 2012DBMS - 236363, DDL+DML: SQL

36 36 טיפוסים ב- PostgreSQL VARCHAR (n) – מחרוזת BOOLEAN – ערך בוליאני DATE – תאריך INTEGER – מספר שלם DECIMAL [(p,s)] – מספר עם דיוק עשרוני נתון … אביב 2012DBMS - 236363, DDL+DML: SQL

37 37 CREATE TABLE – דוגמא דוגמא: יצירת טבלה חדשה בשם CSBooks שמכילה את כל הספרים השייכים לפקולטה ‘CS’. CREATE TABLE CSBooks AS SELECT Book_Id, Book_Name FROM Books WHERE Faculty = 'CS'; אביב 2012DBMS - 236363, DDL+DML: SQL

38 38 דוגמה - המשך FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 Books: אביב 2012DBMS - 236363, DDL+DML: SQL

39 39 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: דוגמה - תוצאה אביב 2012DBMS - 236363, DDL+DML: SQL

40 40 הסכמה של הטבלה החדשה: סוגי העמודות נקבעים ע"י השאילתא שבהוראת ה- 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: אביב 2012DBMS - 236363, DDL+DML: SQL

41 41 מחיקת טבלה – DROP TABLE דוגמה: מחיקת הטבלה CSBooks. DROP TABLE CSBooks; אביב 2012DBMS - 236363, DDL+DML: SQL

42 42 מבטים – VIEWS מוטיבציה: להתייחס לפלט של שאילתה כאל טבלה נפרדת (בלי ליצור אותה פיזית). בפועל: השאילתה שמגדירה את המבט נשמרת במסד הנתונים ומופעלת כל פעם מחדש. אינטואיציה: המבט מהווה מעין "חלון" דרכו אפשר להסתכל על חלק ממסד הנתונים. מטרה: הסתרת מידע, פישוט שאילתות... אביב 2012DBMS - 236363, DDL+DML: SQL

43 43 מבטים - המשך יצירת מבט: 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. אביב 2012DBMS - 236363, DDL+DML: SQL

44 44 דוגמא – המשך FacultyPagesMax_TimeYearBook_NameBook_Id CS34871998 Database Systems 1111 CS348141998 Database Systems 1112 CS42472001 Database Systems 1113 CS39011998Database And Knowledge2222 EE39071998Database And Knowledge2223 EE180211998Electronic Circuits3333 MED58071985Genes 74444 MED45071988Anatomy5555 Books: 7 Database Systems 1111 14 Database Systems 1112 7 Database Systems 1113 1Database And Knowledge2222 Max_TimeBook_NameBook_Id CSBooks אביב 2012DBMS - 236363, DDL+DML: SQL

45 45 מבטים – המשך (שאילתות) על מבט ניתן לבצע שאילתות ממש כאילו היה טבלה. דוגמה: שליפת כל הספרים של מדעי מחשב שמשך ההשאלה שלהם הוא 7 ימים. SELECT Book_Name FROM CSBooks WHERE Max_Time = 7; אביב 2012DBMS - 236363, DDL+DML: SQL

46 46 מבטים – המשך (מחיקה) מחיקת מבט: DROP VIEW דוגמה: DROP VIEW CSBooks; לטבלה שעליה מבוסס המבט לא קורה כלום. אביב 2012DBMS - 236363, DDL+DML: SQL


Download ppt "1 SQL: שינוי מסד הנתונים- פעולותDDL, DML פעולות ב-SQL: שאילתות  שינוי תוכן מסד נתונים (עדכון, הוספה של רשומות, וכו'), DML – Data Manipulation Language."

Similar presentations


Ads by Google