SQL : שינוי מסד הנתונים- פעולות DDL , DML. פעולות ב- SQL : שאילתות שינוי תוכן מסד נתונים (עדכון, הוספה של רשומות, וכו'), DML – Data Manipulation Language שינוי מבנה מסד נתונים (יצירה, מחיקה של טבלאות, וכו'), DDL – Data Definition Language. עדכון – UPDATE. UPDATE tablename - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1
SQL-שינוי מסד הנתונים : DDL , DMLפעולות
:SQLפעולות ב-שאילתות מסד נתונים )עדכון, הוספה של רשומות, תוכןשינוי
DML – Data Manipulation Languageוכו'(, מסד נתונים )יצירה, מחיקה של מבנהשינוי
DDL – Data Definitionטבלאות, וכו'(, Language
2012אביב DBMS - 236363, DDL+DML: SQL
2
UPDATEעדכון –
UPDATE tablename
SET column-assignment-list
WHERE conditional-expression ;
2012אביב DBMS - 236363, DDL+DML: SQL
3
UPDATEעדכון –
עדכון ערכים ברשומות קיימות במסד מטרה :הנתונים.
השמה של ערכים קבועים אפשרות ראשונה :בעמודות מסוימות בכל הרשומות.
העברת כל הספרים לספרייה מרכזית, :דוגמא והגבלת משך ההשאלה לשבוע ימים.
UPDATE BooksSET Max_Time = 7, Faculty = 'GEN';
2012אביב DBMS - 236363, DDL+DML: SQL
4
דוגמא - המשך
Book_Id Book_Name Year Max_Time Pages Faculty
1111 Database Systems 1998 7 348 CS
1112 Database Systems 1998 14 348 CS
1113 Database Systems 2001 7 424 CS
2222 Database And Knowledge 1998 1 390 CS
2223 Database And Knowledge 1998 7 390 EE
3333 Electronic Circuits 1998 21 180 EE
4444 Genes 7 1985 7 580 MED
5555 Anatomy 1988 7 450 MED
Books:
2012אביב DBMS - 236363, DDL+DML: SQL
5
Book_Id Book_Name Year Max_Time Pages Faculty
1111 Database Systems 1998 7 348 GEN
1112 Database Systems 1998 7 348 GEN
1113 Database Systems 2001 7 424 GEN
2222 Database And Knowledge 1998 7 390 GEN
2223 Database And Knowledge 1998 7 390 GEN
3333 Electronic Circuits 1998 7 180 GEN
4444 Genes 7 1985 7 580 GEN
5555 Anatomy 1988 7 450 GEN
דוגמא - תוצאה
UPDATE Books SET Max_Time = 7, Faculty = 'GEN':
2012אביב DBMS - 236363, DDL+DML: SQL
6
UPDATE)...המשך(
:עדכון חלק מהרשומותWHERE conditionהוספת תנאי
דוגמא: הגבלת משך ההשאלה לשבוע ימיםלספרים השייכים לספריית מדעי המחשב.
UPDATE Books
SET Max_Time = 7
WHERE Faculty = 'CS';
2012אביב DBMS - 236363, DDL+DML: SQL
7
דוגמא - המשך
Book_Id Book_Name Year Max_Time Pages Faculty
1111 Database Systems 1998 7 348 CS
1112 Database Systems 1998 14 348 CS
1113 Database Systems 2001 7 424 CS
2222 Database And Knowledge 1998 1 390 CS
2223 Database And Knowledge 1998 7 390 EE
3333 Electronic Circuits 1998 21 180 EE
4444 Genes 7 1985 7 580 MED
5555 Anatomy 1988 7 450 MED
Books:
2012אביב DBMS - 236363, DDL+DML: SQL
8
Book_Id Book_Name Year Max_Time Pages Faculty
1111 Database Systems 1998 7 348 CS
1112 Database Systems 1998 7 348 CS
1113 Database Systems 2001 7 424 CS
2222 Database And Knowledge 1998 7 390 CS
2223 Database And Knowledge 1998 7 390 EE
3333 Electronic Circuits 1998 21 180 EE
4444 Genes 7 1985 7 580 MED
5555 Anatomy 1988 7 450 MED
דוגמא - תוצאה
UPDATE Books SET Max_Time = 7 WHERE Faculty = 'CS':
2012אביב DBMS - 236363, DDL+DML: SQL
9
UPDATE)...המשך(
.אפשרות נוספת: השמה של ביטויים דוגמה: הארכת משך ההשאלה לכל הספרים ביום
אחד.
UPDATE Books
SET Max_Time = Max_Time + 1;
2012אביב DBMS - 236363, DDL+DML: SQL
10
דוגמא - המשך
Book_Id Book_Name Year Max_Time Pages Faculty
1111 Database Systems 1998 7 348 CS
1112 Database Systems 1998 14 348 CS
1113 Database Systems 2001 7 424 CS
2222 Database And Knowledge 1998 1 390 CS
2223 Database And Knowledge 1998 7 390 EE
3333 Electronic Circuits 1998 21 180 EE
4444 Genes 7 1985 7 580 MED
5555 Anatomy 1988 7 450 MED
Books:
2012אביב DBMS - 236363, DDL+DML: SQL
11
דוגמא - תוצאה
Book_Id Book_Name Year Max_Time Pages Faculty
1111 Database Systems 1998 8 348 CS
1112 Database Systems 1998 15 348 CS
1113 Database Systems 2001 8 424 CS
2222 Database And Knowledge 1998 2 390 CS
2223 Database And Knowledge 1998 8 390 EE
3333 Electronic Circuits 1998 22 180 EE
4444 Genes 7 1985 8 580 MED
5555 Anatomy 1988 8 450 MED
UPDATE Books SET Max_Time = Max_Time + 1:
2012אביב DBMS - 236363, DDL+DML: SQL
12
UPDATE שימוש – בתתי-שאילתות
הערך החדש יכול להיות תוצאה של תת-שאילתה דוגמא: לכל ספר יש לעדכן את משך ההשאלה
למקסימלי באותה פקולטה.
UPDATE Books
SET Max_Time =
(SELECT MAX(Max_Time) FROM Books B
WHERE B.Faculty = Books.Faculty);
2012אביב DBMS - 236363, DDL+DML: SQL
13
דוגמא - המשך
Book_Id Book_Name Year Max_Time Pages Faculty
1111 Database Systems 1998 7 348 CS
1112 Database Systems 1998 14 348 CS
1113 Database Systems 2001 7 424 CS
2222 Database And Knowledge 1998 1 390 CS
2223 Database And Knowledge 1998 7 390 EE
3333 Electronic Circuits 1998 21 180 EE
4444 Genes 7 1985 7 580 MED
5555 Anatomy 1988 7 450 MED
Books:
MAX
2012אביב DBMS - 236363, DDL+DML: SQL
14
Book_Id Book_Name Year Max_Time Pages Faculty
1111 Database Systems 1998 14 348 CS
1112 Database Systems 1998 14 348 CS
1113 Database Systems 2001 14 424 CS
2222 Database And Knowledge 1998 14 390 CS
2223 Database And Knowledge 1998 21 390 EE
3333 Electronic Circuits 1998 21 180 EE
4444 Genes 7 1985 7 580 MED
5555 Anatomy 1988 7 450 MED
דוגמא – תוצאהUPDATE Books
SET Max_Time = (SELECT MAX(Max_Time) FROM Books B WHERE B.Faculty = Books.Faculty);
2012אביב DBMS - 236363, DDL+DML: SQL
15
UPDATEהמשך –
:הערות כל החישובים בשאילתא מתבצעים, כביכול, על
"העתק" זמני של הטבלה שאינו מתעדכן בזמן ביצוע ההוראה.
כלומר, עדכון של רשומה אינו משפיע על החישוביםהבאים שמתבצעים עבור הרשומות הבאות.
2012אביב DBMS - 236363, DDL+DML: SQL
16
INSERTהוספה -
INSERT INTO tablename [) column-list (]
VALUES ) constant-list ( ;
2012אביב DBMS - 236363, DDL+DML: SQL
17
INSERTהוספה -
הוספת רשומות חדשותמטרה :הוספת רשומה אחת נתונהאפשרות ראשונה :הוספת לקוח לטבלת דוגמא :Customers.
INSERT INTO Customers
VALUES )78901, 'Roy Peled', 'EE'(;
2012אביב DBMS - 236363, DDL+DML: SQL
18
דוגמה - המשך
Cust_Id Cust_Name Faculty
12345 Moshe Cohen CS
23456 Avi Barak EE
34567 Avi Barak MED
45678 Lior Edri EE
56789 Moshe Cohen EE
67890 Moshe Cohen EE
Customers:
2012אביב DBMS - 236363, DDL+DML: SQL
19
דוגמא - תוצאה
Cust_Id Cust_Name Faculty
12345 Moshe Cohen CS
23456 Avi Barak EE
34567 Avi Barak MED
45678 Lior Edri EE
56789 Moshe Cohen EE
67890 Moshe Cohen EE
78901 Roy Peled EE
INSERT INTO Customers VALUES (78901, 'Roy Peled', 'EE'):
2012אביב DBMS - 236363, DDL+DML: SQL
20
INSERTהמשך –
.ניתן לאתחל רק חלק מהשדות:דוגמא
INSERT INTO Customers)Cust_Id,Cust_Name(
VALUES )78901, 'Roy Peled'(;:הערות
( שדות לא מאותחליםFaculty יקבלו ערך )NULL. אם בעמודהFaculty אסור שיופיע NULLההוראה ,
INSERT.אינה חוקית, ולכן היא לא תתבצע
2012אביב DBMS - 236363, DDL+DML: SQL
21
דוגמה - המשך
Cust_Id Cust_Name Faculty
12345 Moshe Cohen CS
23456 Avi Barak EE
34567 Avi Barak MED
45678 Lior Edri EE
56789 Moshe Cohen EE
67890 Moshe Cohen EE
Customers:
2012אביב DBMS - 236363, DDL+DML: SQL
22
דוגמא - תוצאה
Cust_Id Cust_Name Faculty
12345 Moshe Cohen CS
23456 Avi Barak EE
34567 Avi Barak MED
45678 Lior Edri EE
56789 Moshe Cohen EE
67890 Moshe Cohen EE
78901 Roy Peled
INSERT INTO Customers(Cust_Id, Cust_Name)
VALUES (78901, 'Roy Peled'):
2012אביב DBMS - 236363, DDL+DML: SQL
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הוראה זו חוקית רק אם טבלה •
2012אביב DBMS - 236363, DDL+DML: SQL
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-2002Database 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:
2012אביב DBMS - 236363, DDL+DML: SQL
25
INSERT.מתבצעת על "העתק" זמני של הטבלה :דוגמא
INSERT INTO Readers
)SELECT * FROM Readers(;
הוראה זו לא לא תכנס ללולאה אינסופית אלא רקתכפיל את הטבלה.
INSERTהמשך –
2012אביב DBMS - 236363, DDL+DML: SQL
26
תוצאה
CSMoshe Cohen12345
EELior Edri45678
FacultyCust_NameCust_Id
Readers:
EELior Edri45678
CSMoshe Cohen12345
CSMoshe Cohen12345
EELior Edri45678
FacultyCust_NameCust_Id
Readers:
INSERT INTO Readers
(SELECT * FROM Readers);
2012אביב DBMS - 236363, DDL+DML: SQL
27
DELETEמחיקה –
DELETE FROM tablename
WHERE conditional-expression
2012אביב DBMS - 236363, DDL+DML: SQL
28
DELETEמחיקה –
ההוראהDELETE.מוחקת רשומות מתוך הטבלה בהוראה זו צריך רק להגדיר אלו רשומות רוצים
למחוק..דוגמה: מחיקת כל ההזמנות
DELETE FROM Ordered;
.הטבלה עצמה אינה נמחקת, אך היא נותרת ריקה
2012אביב DBMS - 236363, DDL+DML: SQL
29
DELETE( המשך – WHERE)
אופציהWHERE מאפשרת לבחור אלו רשומות ימחקו מהטבלה.
דוגמה: מחיקת כל ההזמנות של הלקוח בעל.12345מספר מזהה
DELETE FROM Ordered
WHERE Cust_Id = 12345;
2012אביב DBMS - 236363, DDL+DML: SQL
30
דוגמה – המשך
Cust_Id Book_Name Order_Date
12345 Database Systems 14-Oct-2002
45678 Anatomy 24-Oct-2002
12345 Database And Knowledge 30-Oct-2002
45678 Electronic Circuits 12-Oct-2002
Cust_Id Book_Name Order_Date
45678 Anatomy 24-Oct-2002
45678 Electronic Circuits 12-Oct-2002
Ordered:
Ordered:
DELETE FROM Ordered
WHERE Cust_Id = 12345;
2012אביב DBMS - 236363, DDL+DML: SQL
31
DELETEהמשך –
בתוך התנאי אפשר להשתמש בביטויים בוליאנייםיותר מורכבים ובשאילתות.
דוגמה: ביטול כל ההזמנות של אנשים שאינםמופיעים בטבלת הלקוחות.
DELETE FROM Ordered
WHERE NOT EXISTS
(SELECT * FROM Customers
WHERE Cust_Id = Ordered.Cust_Id);2012אביב DBMS - 236363, DDL+DML: SQL