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

Slides:



Advertisements
מצגות קשורות
הערכות מילוליות קורס מנב"ס בתוכניות להכשרת מנהלים ומורים במוסדות להשכלה גבוהה, תשס"ה. © כל הזכויות שמורות למשרד החינוך התרבות והספורט.
Advertisements

מערכות סדרתיות (מערכות עקיבה)
הכרת תוכנת בקרים. כניסה לתוכנה תתבצע בשלבים הבאים: 1
תחקור והערכת מערכת .
אשף ניהול הדיווח החודשי לרשויות
תכנות בשפת C תרגול 11 - קבצים.
© Keren Kalif JPA קרן כליף.
הרצאה 02 סוגי משתנים קרן כליף.
11. שפות ODL ו-OQL ותכנון מכוון עצמים
יצירת מקרו הפעלת מקרו יצירת לחצן / פקד דוגמה מסכמת
מבוא לתכנות ב-JAVA מעבדה 1
טיפים מנצחים: לחפש ולמצוא במהירות ובדיוק
HTML שפת Hyper Text Markup Language
Trends in Periodic Table Properties
פינוק מסביב לעולם מחזות זמר הסבר הזמנה ומימוש.
נערך ע"י אריק הוד, הגימנסיה העברית הרצליה
OOO Execution of Memory Operations
Marina Kogan Sadetsky –
אלקטרושליליות ופולריות הקשר
Jump tables, review questions
פריסת כותרת כותרת משנה.
פריסת כותרת כותרת משנה.
תכנות בשפת C תרגול 11 רשימות מקושרות מבנים
תרגול Introduction to C - Fall Amir Menczel.
פעולות אריתמטיות קרן כליף.
Present Perfect Simple
תירגול 11: מיונים וחיפוש בינארי
תרכובות עם יונים פוליאטומים בחיי היום יום
נערך ע"י אריק הוד הגימנסיה העברית הרצליה
תזרים מזומנים.
יסודות מבני נתונים תרגול 13: עץ פורש מינימלי - Minimum Spanning Tree (MST)
הכרת מאגרי מידע ביבליוגרפיים
Entity Relationship Diagram – ERD
פרק 5 – ארכיטקטורות של מוצרים לניתוח רב-מימדי
חג פורים שמח ומבדח מגן פרפר....תפן שם הגננת: מאיה פלס
מבני נתונים תרגול 3 ליאור שפירא.
תכנון סכמות רלציוניות איזה תכנון טוב יותר? Customer Ordered CustOrders
תהליך ההרשמה לבעלי אימייל של המכללה, ניתן להכנס לכתובת הבאה וליצור חשבון:
תירגול 2: מבוא לתיכנות ב-C
© האוניברסיטה העברית בירושלים, 2008
מוטיבציה והשוואה בין מבני נתונים שלמדנו
אימון הרשת ע"י שימוש באלגוריתם Back Propagation
מבוסס על שקפים מאת יאן ציטרין
תירגול חזרה מערכות מסדי נתונים
תורת הקומפילציה תרגול 9: תרגום לקוד ביניים
יישומון הר לעמק 2019 הוראות הפעלה.
מבוא לתכנות למערכות מידע
מבנה מחשבים ספרתיים זכרון וירטואלי מבוסס על תרגול של מורן גביש
SQL - כתיבת שאילתות למתחילים
Marina Kogan Sadetsky –
CLI vs GUI.
מת"מ מעבדה 7-8 רשימות.
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
What is Chemistry? מהי כימיה? Chemistry is the study of matter and its
שימוש בעצם ממחלקה אחרת כמאפיין במחלקה הנוכחית
מבוא לתכנות ב- JAVA מעבדה 4
מבחני איתור לנבחרת ישראל הצעירה (מדעים ומתמטיקה) לתלמידי כיתות ז'
SQL: מושגים עמודה, תכונה, שדה, אטריביוט טבלה, רלציה סכמה
Proquest Central
מעבדה 2- עיצוב (עבור חלק ג)
תרגול מס' 2: Data and Control Hazards
מבנה מחשבים ספרתיים תרגול מס' 4: זכרון מטמון 2.
ניהול שינויים במחסן נתונים יש עומק היסטורי הארגון משתנה במשך הזמן
מערכת הערעורים מסכי סטודנטים.
עקרונות תכנות מונחה עצמים תרגול 9:C++ - תרגילים
Java Programming רשימות מקושרות - המשך
Engineering Programming A
תמליל מצגת:

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

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

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

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 - 236363, DDL+DML: SQL

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 - 236363, DDL+DML: SQL

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

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 - 236363, DDL+DML: SQL

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 - 236363, DDL+DML: SQL

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

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 - 236363, DDL+DML: SQL

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 - 236363, DDL+DML: SQL

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

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 - 236363, DDL+DML: SQL

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 - 236363, DDL+DML: SQL

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

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

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

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

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

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

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

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

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 - 236363, DDL+DML: SQL

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 - 236363, DDL+DML: SQL

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

תוצאה 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 - 236363, DDL+DML: SQL

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

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

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

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 - 236363, DDL+DML: SQL

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

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 - 236363, DDL+DML: SQL

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 - 236363, DDL+DML: SQL

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

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

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

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

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 - 236363, DDL+DML: SQL

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 - 236363, DDL+DML: SQL

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

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 - 236363, DDL+DML: SQL

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

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

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

דוגמא – המשך 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 - 236363, DDL+DML: SQL

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

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

דוגמא – המשך 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 - 236363, DDL+DML: SQL

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