המצגת נטענת. אנא המתן

המצגת נטענת. אנא המתן

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

מצגות קשורות


מצגת בנושא: "SQL: שינוי מסד הנתונים- פעולותDDL , DML"— תמליל מצגת:

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

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

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

4 Database And Knowledge
דוגמא - המשך Books: Faculty Pages Max_Time Year Book_Name Book_Id CS 348 7 1998 Database Systems 1111 14 1112 424 2001 1113 390 1 Database And Knowledge 2222 EE 2223 180 21 Electronic Circuits 3333 MED 580 1985 Genes 7 4444 450 1988 Anatomy 5555 אביב תשס"ה DBMS , DDL+DML: SQL

5 Database And Knowledge
דוגמא - תוצאה UPDATE Books SET Max_Time = 7, Faculty = ‘GEN’: Faculty Pages Max_Time Year Book_Name Book_Id GEN 348 7 1998 Database Systems 1111 1112 424 2001 1113 390 Database And Knowledge 2222 2223 180 Electronic Circuits 3333 580 1985 Genes 7 4444 450 1988 Anatomy 5555 אביב תשס"ה DBMS , DDL+DML: SQL

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

7 Database And Knowledge
דוגמא - המשך Books: Faculty Pages Max_Time Year Book_Name Book_Id CS 348 7 1998 Database Systems 1111 14 1112 424 2001 1113 390 1 Database And Knowledge 2222 EE 2223 180 21 Electronic Circuits 3333 MED 580 1985 Genes 7 4444 450 1988 Anatomy 5555 אביב תשס"ה DBMS , DDL+DML: SQL

8 Database And Knowledge
דוגמא - תוצאה UPDATE Books SET Max_Time = 7 WHERE Faculty = ‘CS’: Faculty Pages Max_Time Year Book_Name Book_Id CS 348 7 1998 Database Systems 1111 1112 424 2001 1113 390 Database And Knowledge 2222 EE 2223 180 21 Electronic Circuits 3333 MED 580 1985 Genes 7 4444 450 1988 Anatomy 5555 אביב תשס"ה DBMS , DDL+DML: SQL

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

10 Database And Knowledge
דוגמא - המשך Books: Faculty Pages Max_Time Year Book_Name Book_Id CS 348 7 1998 Database Systems 1111 14 1112 424 2001 1113 390 1 Database And Knowledge 2222 EE 2223 180 21 Electronic Circuits 3333 MED 580 1985 Genes 7 4444 450 1988 Anatomy 5555 אביב תשס"ה DBMS , DDL+DML: SQL

11 Database And Knowledge
דוגמא - תוצאה UPDATE Books SET Max_Time = Max_Time + 1: Faculty Pages Max_Time Year Book_Name Book_Id CS 348 8 1998 Database Systems 1111 15 1112 424 2001 1113 390 2 Database And Knowledge 2222 EE 2223 180 22 Electronic Circuits 3333 MED 580 1985 Genes 7 4444 450 1988 Anatomy 5555 אביב תשס"ה DBMS , DDL+DML: SQL

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

13 Database And Knowledge
דוגמא - המשך Books: Faculty Pages Max_Time Year Book_Name Book_Id CS 348 7 1998 Database Systems 1111 14 1112 424 2001 1113 390 1 Database And Knowledge 2222 EE 2223 180 21 Electronic Circuits 3333 MED 580 1985 Genes 7 4444 450 1988 Anatomy 5555 MAX אביב תשס"ה DBMS , DDL+DML: SQL

14 Database And Knowledge
דוגמא – תוצאה UPDATE Books SET Max_Time = (SELECT MAX(Max_Time) FROM Books B WHERE B.Faculty = Books.Faculty): Faculty Pages Max_Time Year Book_Name Book_Id CS 348 14 1998 Database Systems 1111 1112 424 2001 1113 390 Database And Knowledge 2222 EE 21 2223 180 Electronic Circuits 3333 MED 580 7 1985 Genes 7 4444 450 1988 Anatomy 5555 אביב תשס"ה DBMS , DDL+DML: SQL

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

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

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

18 דוגמה - המשך Customer: Faculty Cust_Name Cust_Id CS Moshe Cohen 12345
EE Avi Barak 23456 MED 34567 Lior Edri 45678 56789 67890 אביב תשס"ה DBMS , DDL+DML: SQL

19 דוגמא - תוצאה INSERT INTO Customer VALUES (78901, ‘Roy Peled’, ‘EE’):
Faculty Cust_Name Cust_Id CS Moshe Cohen 12345 EE Avi Barak 23456 MED 34567 Lior Edri 45678 56789 67890 Roy Peled 78901 אביב תשס"ה DBMS , DDL+DML: SQL

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

21 דוגמה - המשך Customer: Faculty Cust_Name Cust_Id CS Moshe Cohen 12345
EE Avi Barak 23456 MED 34567 Lior Edri 45678 56789 67890 אביב תשס"ה DBMS , DDL+DML: SQL

22 דוגמא - תוצאה INSERT INTO Customer(Cust_Id, Cust_Name)
VALUES (78901, ‘Roy Peled’): Faculty Cust_Name Cust_Id CS Moshe Cohen 12345 EE Avi Barak 23456 MED 34567 Lior Edri 45678 56789 67890 Roy Peled 78901 אביב תשס"ה DBMS , DDL+DML: SQL

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

24 Database And Knowledge
דוגמה - המשך Ordered: Customer: EE Moshe Cohen 67890 CS 12345 Avi Barak 23456 MED 34567 Lior Edri 45678 56789 Faculty Cust_Name Cust_Id SELECT Cust_Id, Cust_Name FROM Customer C WHERE EXISTS (SELECT * FROM Ordered WHERE Cust_Id = C.Cust_Id): 14-Oct-2002 Database Systems 24-Oct-2002 Anatomy 30-Oct-2002 Database And Knowledge 12-Oct-2002 Electronic Circuits Order_Date Book_Name Readers: אביב תשס"ה DBMS , DDL+DML: SQL

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

26 תוצאה Readers: Readers: INSERT INTO Readers (SELECT * FROM Readers);
CS Moshe Cohen 12345 EE Lior Edri 45678 Faculty Cust_Name Cust_Id Readers: INSERT INTO Readers (SELECT * FROM Readers); Readers: CS Moshe Cohen 12345 EE Lior Edri 45678 Faculty Cust_Name Cust_Id 12345 Moshe Cohen CS 45678 Lior Edri EE אביב תשס"ה DBMS , DDL+DML: SQL

27 מחיקה – DELETE DELETE FROM tablename conditional-expression WHERE
אביב תשס"ה DBMS , DDL+DML: SQL

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

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

30 Database And Knowledge
דוגמה – המשך Ordered: Order_Date Book_Name Cust_Id 14-Oct-2002 Database Systems 12345 24-Oct-2002 Anatomy 45678 30-Oct-2002 Database And Knowledge 12-Oct-2002 Electronic Circuits DELETE FROM Ordered WHERE Cust_Id = 12345; Ordered: Order_Date Book_Name Cust_Id 24-Oct-2002 Anatomy 45678 12-Oct-2002 Electronic Circuits אביב תשס"ה DBMS , DDL+DML: SQL

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

32 Database And Knowledge
דוגמה - המשך Customer: Faculty Cust_Name Cust_Id CS Moshe Cohen 12345 EE Avi Barak 23456 MED 34567 Lior Edri 45678 56789 67890 Ordered: Order_Date Book_Name Cust_Id 14-Oct-2002 Database Systems 12345 24-Oct-2002 Anatomy 45678 30-Oct-2002 Database And Knowledge 12-Oct-2002 Electronic Circuits 55555 אביב תשס"ה DBMS , DDL+DML: SQL

33 Database And Knowledge
דוגמא - תוצאה Ordered: Order_Date Book_Name Cust_Id 14-Oct-2002 Database Systems 12345 24-Oct-2002 Anatomy 45678 30-Oct-2002 Database And Knowledge 12-Oct-2002 Electronic Circuits אביב תשס"ה DBMS , DDL+DML: SQL

34 שמירה/ביטול של שינויים COMMIT/ROLLBACK
שינויים מתבצעים על "העתק" של המסד. ניתן "להתחרט" ולבטל את השינויים האחרונים. COMMIT: העברת כל השינויים מההעתק אל מסד הנתונים ROLLBACK: ביטול כל השינויים מה-COMMIT האחרון (או מתחילת העבודה עם המסד). דוגמה: DELETE FROM Ordered; ROLLBACK; במקרים מסוימים מתבצעת פעולת COMMIT באופן אוטומטי (נראה בהמשך). אביב תשס"ה DBMS , DDL+DML: SQL

35 יצירת טבלה – CREATE TABLE
יצירת טבלה ריקה: CREATE TABLE table (column_name column_type [(length)] [NOT NULL],…); יצירת טבלה המכילה תוצאה של שאילתה: CREATE TABLE table AS SELECT …; הפעולה COMMIT מתבצעת אוטומטית לפני ואחריCREATE TABLE. אביב תשס"ה DBMS , DDL+DML: SQL

36 דוגמא CREATE TABLE EXAMPLE (AB VARCHAR(15), CD INTEGER NOT NULL,
EF DECIMAL(5), GH DECIMAL(7,2)); אביב תשס"ה DBMS , DDL+DML: SQL

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

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

39 Database And Knowledge
דוגמה - המשך Books: Faculty Pages Max_Time Year Book_Name Book_Id CS 348 7 1998 Database Systems 1111 14 1112 424 2001 1113 390 1 Database And Knowledge 2222 EE 2223 180 21 Electronic Circuits 3333 MED 580 1985 Genes 7 4444 450 1988 Anatomy 5555 אביב תשס"ה DBMS , DDL+DML: SQL

40 דוגמה - תוצאה CSBooks: Book_Name Book_Id Book_Name Book_Id
Database Systems 1111 1112 1113 Database And Knowledge 2222 CSBooks: Book_Name Book_Id Database Systems 1111 1112 1113 Database And Knowledge 2222 אביב תשס"ה DBMS , DDL+DML: SQL

41 Database And Knowledge
CREATE TABLE – המשך הסכמה של הטבלה החדשה: סוגי העמודות נקבעים ע"י השאילתא שבהוראת ה-CREATE. את שמות העמודות בטבלה החדשה אפשר לשנות: דוגמא: CREATE TABLE CSBooks(Id, Name) AS SELECT Book_Id, Book_Name FROM Books WHERE Faculty = ‘CS’; Database Systems 1111 1112 1113 Database And Knowledge 2222 Name Id CSBooks: אביב תשס"ה DBMS , DDL+DML: SQL

42 מחיקת טבלה – DROP TABLE דוגמה: מחיקת הטבלה CSBooks.
שימו לב! הפקודה DROP TABLE היא בלתי הפיכה, כי COMMIT מתבצע אוטומטית לפניה ואחריה. אביב תשס"ה DBMS , DDL+DML: SQL

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

44 מבטים - המשך יצירת מבט: 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 , DDL+DML: SQL

45 דוגמא – המשך Books: CSBooks Max_Time Book_Name Book_Id Faculty Pages
7 Database Systems 1111 14 1112 1113 1 Database And Knowledge 2222 Max_Time Book_Name Book_Id CSBooks Faculty Pages Max_Time Year Book_Name Book_Id CS 348 7 1998 Database Systems 1111 14 1112 424 2001 1113 390 1 Database And Knowledge 2222 EE 2223 180 21 Electronic Circuits 3333 MED 580 1985 Genes 7 4444 450 1988 Anatomy 5555 אביב תשס"ה DBMS , DDL+DML: SQL

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

47 מבטים – המשך (עדכון) כל שינוי בטבלה המקורית מייד משפיע על המבט.
ניתן לבצע עדכונים (UPDATE) למסד הנתונים דרך המבט, פרט למקרים בהם המבט הוא read-only. מבט הוא read-only אם השאילתה של CREATE VIEW מכילה: JOIN GROUP BY ביטויים ברשימת העמודות דוגמה לעדכון: UPDATE CSBooks SET Max_Time = Max_Time + 1; אביב תשס"ה DBMS , DDL+DML: SQL

48 דוגמא – המשך Books: אחרי עדכון Max_Time: CSBooks Faculty Pages
Year Book_Name Book_Id CS 348 8 1998 Database Systems 1111 15 1112 424 2001 1113 390 2 Database And Knowledge 2222 EE 7 2223 180 21 Electronic Circuits 3333 MED 580 1985 Genes 7 4444 450 1988 Anatomy 5555 Book_Id Book_Name Max_Time 1111 Database Systems 8 1112 Database Systems 15 CSBooks 1113 Database Systems 8 2222 Database And Knowledge 2 אביב תשס"ה DBMS , DDL+DML: SQL

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


הורד את "ppt "SQL: שינוי מסד הנתונים- פעולותDDL , DML

מצגות קשורות


מודעות Google