Download presentation
Presentation is loading. Please wait.
Published byAshlyn Gregory Modified over 9 years ago
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.