חורף - תשס " ג 236363- dbms, שפות שאילתא : sql ( ג ') 1 שינוי...
Post on 15-Jan-2016
258 Views
Preview:
TRANSCRIPT
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
1
שינוי מסד הנתונים- DDL , DMLפעולות
:SQLפעולות ב-
שאילתות•
מסד נתונים (עדכון, הוספה של רשומות, תוכןשינוי •)DML – Data Manipulation Languageוכו'),
מסד נתונים (יצירה, מחיקה של מבנהשינוי •DDL – Data Definition Languageטבלאות, וכו'),
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
2
UPDATEעדכון –
: עדכון ערכים ברשומות קיימות במסד הנתונים.מטרה•
: השמה של ערכים קבועים בעמודות אפשרות ראשונה•מסוימות בכל הרשומות.
העברת כל הספרים לספרייה מרכזית, והגבלת :דוגמא•משך ההשאלה לשבוע ימים.
• UPDATE BooksSET Max_Time = 7, Faculty = ‘GEN’;
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
3
דוגמא - המשך
Book_IdBook_NameYearMax_TimePagesFaculty
1111Database Systems 19987348CS
1112Database Systems 199814348CS
1113Database Systems20017424CS
2222Database And Knowledge19981390CS
2223Database And Knowledge19987390EE
3333Electronic Circuits199821180EE
4444Genes 719857580MED
5555Anatomy19887450MED
Books:
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
4
Book_IdBook_NameYearMax_TimePagesFaculty
1111Database Systems 19987348GEN
1112Database Systems 19987348GEN
1113Database Systems20017424GEN
2222Database And Knowledge19987390GEN
2223Database And Knowledge19987390GEN
3333Electronic Circuits19987180GEN
4444Genes 719857580GEN
5555Anatomy19887450GEN
דוגמא - תוצאה
UPDATE Books SET Max_Time = 7, Faculty = ‘GEN’:
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
5
UPDATE(...המשך)
עדכון חלק מהרשומות: •WHERE conditionהוספת תנאי
דוגמא: הגבלת משך ההשאלה לשבוע ימים לספרים •השייכים לספריית מדעי המחשב.
UPDATE Books
SET Max_Time = 7
WHERE Faculty = ‘CS’;
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
6
דוגמא - המשך
Book_IdBook_NameYearMax_TimePagesFaculty
1111Database Systems 19987348CS
1112Database Systems 199814348CS
1113Database Systems20017424CS
2222Database And Knowledge19981390CS
2223Database And Knowledge19987390EE
3333Electronic Circuits199821180EE
4444Genes 719857580MED
5555Anatomy19887450MED
Books:
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
7
Book_IdBook_NameYearMax_TimePagesFaculty
1111Database Systems 19987348CS
1112Database Systems 19987348CS
1113Database Systems20017424CS
2222Database And Knowledge19987390CS
2223Database And Knowledge19987390EE
3333Electronic Circuits199821180EE
4444Genes 719857580MED
5555Anatomy19887450MED
דוגמא - תוצאהUPDATE Books SET Max_Time = 7 WHERE Faculty = ‘CS’:
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
8
UPDATE(...המשך)
אפשרות נוספת: השמה של ביטויים.•
דוגמה: הארכת משך ההשאלה לכל הספרים ביום •אחד.
UPDATE Books
SET Max_Time = Max_Time + 1;
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
9
דוגמא - המשך
Book_IdBook_NameYearMax_TimePagesFaculty
1111Database Systems 19987348CS
1112Database Systems 199814348CS
1113Database Systems20017424CS
2222Database And Knowledge19981390CS
2223Database And Knowledge19987390EE
3333Electronic Circuits199821180EE
4444Genes 719857580MED
5555Anatomy19887450MED
Books:
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
10
דוגמא - תוצאה
Book_IdBook_NameYearMax_TimePagesFaculty
1111Database Systems 19988348CS
1112Database Systems 199815348CS
1113Database Systems20018424CS
2222Database And Knowledge19982390CS
2223Database And Knowledge19988390EE
3333Electronic Circuits199822180EE
4444Genes 719858580MED
5555Anatomy19888450MED
UPDATE Books SET Max_Time = Max_Time + 1:
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
11
UPDATEשימוש בתת-שאילתות –
הערך החדש יכול להיות תוצאה של תת-שאילתה•
דוגמא: לכל ספר יש לעדכן את משך ההשאלה •למקסימלי באותה פקולטה.
UPDATE Books B
SET Max_Time =
(SELECT MAX(Max_Time)
WHERE Faculty = B.Faculty);
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
12
דוגמא - המשך
Book_IdBook_NameYearMax_TimePagesFaculty
1111Database Systems 19987348CS
1112Database Systems 199814348CS
1113Database Systems20017424CS
2222Database And Knowledge19981390CS
2223Database And Knowledge19987390EE
3333Electronic Circuits199821180EE
4444Genes 719857580MED
5555Anatomy19887450MED
Books:
MAX
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
13
Book_IdBook_NameYearMax_TimePagesFaculty
1111Database Systems 199814348CS
1112Database Systems 199814348CS
1113Database Systems200114424CS
2222Database And Knowledge199814390CS
2223Database And Knowledge199821390EE
3333Electronic Circuits199821180EE
4444Genes 719857580MED
5555Anatomy19887450MED
דוגמא – תוצאהUPDATE Books B
SET Max_Time = (SELECT MAX(Max_Time) WHERE Faculty = B.Faculty):
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
14
UPDATEהמשך –
הערות:•כל החישובים בשאילתא מתבצעים, כביכול, על –
"העתק" זמני של הטבלה שאינו מתעדכן בזמן ביצוע ההוראה.
כלומר, עדכון של רשומה אינו משפיע על החישובים –הבאים שמתבצעים עבור הרשומות הבאות.
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
15
INSERTהוספה -
: הוספת רשומות חדשותמטרה•
: הוספת רשומה אחת נתונהאפשרות ראשונה•
.Customer: הוספת לקוח לטבלת דוגמא•
INSERT INTO Customer
VALUES (78901, ‘Roy Peled’, ‘EE’);
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
16
דוגמה - המשך
Cust_IdCust_NameFaculty
12345Moshe CohenCS
23456Avi BarakEE
34567Avi BarakMED
45678Lior EdriEE
56789Moshe CohenEE
67890Moshe CohenEE
Customer:
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
17
דוגמא - תוצאה
Cust_IdCust_NameFaculty
12345Moshe CohenCS
23456Avi BarakEE
34567Avi BarakMED
45678Lior EdriEE
56789Moshe CohenEE
67890Moshe CohenEE
78901Roy PeledEE
INSERT INTO Customer VALUES (78901, ‘Roy Peled’, ‘EE’):
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
18
INSERTהמשך –
ניתן לאתחל רק חלק מהשדות.•
דוגמא:•
INSERT INTO Customer(Cust_Id,Cust_Name)
VALUES (78901, ‘Roy Peled’);
הערות:•.NULL) יקבלו ערך Facultyשדות לא מאותחלים (– , ההוראהNULL אסור שיופיע Facultyאם בעמודה –
INSERT.אינה חוקית, ולכן היא לא תתבצע
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
19
דוגמה - המשך
Cust_IdCust_NameFaculty
12345Moshe CohenCS
23456Avi BarakEE
34567Avi BarakMED
45678Lior EdriEE
56789Moshe CohenEE
67890Moshe CohenEE
Customer:
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
20
דוגמא - תוצאה
Cust_IdCust_NameFaculty
12345Moshe CohenCS
23456Avi BarakEE
34567Avi BarakMED
45678Lior EdriEE
56789Moshe CohenEE
67890Moshe CohenEE
78901Roy Peled
INSERT INTO Customer(Cust_Id, Cust_Name)
VALUES (78901, ‘Roy Peled’):
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
21
INSERT שימוש בשאילתות –
הוספת רשומות המתקבלות כתוצאה של שאילתה.•דוגמא: הכנסת כל הלקוחות שהזמינו ספרים •
. ReadersלטבלהINSERT INTO Readers( Id, Name)
(SELECT Cust_Id, Cust_Name
FROM Customer C WHERE EXIST
(SELECT * FROM Qrdered
WHERE Cust_Id = C.Cust_Id);
קיימת.Readersהוראה זו חוקית רק אם טבלה •
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
22
דוגמה - המשך
EEMoshe Cohen67890
CSMoshe Cohen12345EEAvi Barak23456
MEDAvi Barak34567EELior Edri45678EEMoshe Cohen56789
FacultyCust_NameCust_Id
Customer:
SELECT Cust_Id, Cust_Name
FROM Customer C WHERE EXIST
(SELECT * FROM Qrdered
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_IdOrdered:
Moshe Cohen12345
Lior Edri45678
Cust_NameCust_Id
Readers:
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
23
•INSERT.מתבצעת על "העתק" זמני של הטבלה
דוגמא:•
INSERT INTO Readers
(SELECT * FROM Readers);
הוראה זו לא לא תכנס ללולאה אינסופית אלא רק •תכפיל את הטבלה.
INSERTהמשך –
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
24
תוצאה
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);
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
25
DELETEמחיקה –
מוחקת רשומות מתוך הטבלה.DELETEההוראה •
בהוראה זו צריך רק להגדיר אלו רשומות רוצים •למחוק.
דוגמה: מחיקת כל ההזמנות.•
DELETE FROM Ordered;
הטבלה עצמה אינה נמחקת, אך היא נותרת ריקה.•
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
26
DELETE) המשך – WHERE(
מאפשרת לבחור אלו רשומות WHEREאופציה •ימחקו מהטבלה.
דוגמה: מחיקת כל ההזמנות של הלקוח בעל מספר •.12345מזהה
DELETE FROM Ordered
WHERE Cust_Id = 12345;
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
27
דוגמה – המשך
Cust_IdBook_NameOrder_Date12345Database Systems 14-Oct-2002
45678Anatomy24-Oct-2002
12345Database And Knowledge30-Oct-2002
45678Electronic Circuits12-Oct-2002
Cust_IdBook_NameOrder_Date45678Anatomy24-Oct-2002
45678Electronic Circuits12-Oct-2002
Ordered:
Ordered:
DELETE FROM Ordered
WHERE Cust_Id = 12345;
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
28
DELETEהמשך –
בתוך התנאי אפשר להשתמש בביטויים בוליאניים •יותר מורכבים ובשאילתות.
דוגמה: ביטול כל ההזמנות של אנשים שאינם •מופיעים בטבלת הלקוחות.
DELETE FROM Ordered O
WHERE NOT EXIST
(SELECT * FROM Customer
WHERE Cust_Id = O.Cust_Id);
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
29
דוגמה - המשך
Cust_IdBook_NameOrder_Date12345Database
Systems 14-Oct-2002
45678Anatomy24-Oct-2002
12345Database And Knowledge
30-Oct-2002
45678Electronic Circuits12-Oct-2002
55555Electronic Circuits12-Oct-2002
Ordered: Cust_IdCust_NameFaculty
12345Moshe CohenCS
23456Avi BarakEE
34567Avi BarakMED
45678Lior EdriEE
56789Moshe CohenEE
67890Moshe CohenEE
Customer:
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
30
דוגמא - תוצאה
Cust_IdBook_NameOrder_Date12345Database
Systems 14-Oct-2002
45678Anatomy24-Oct-2002
12345Database And Knowledge
30-Oct-2002
45678Electronic Circuits12-Oct-2002
Ordered:
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
31
ביטול של שינויים/שמירהCOMMIT/ROLLBACK
של המסד."העתק"שינויים מתבצעים על •ניתן "להתחרט" ולבטל את השינויים האחרונים.••COMMIT העברת כל השינויים מההעתק אל מסד הנתונים :•ROLLBACK-ביטול כל השינויים מה :COMMIT האחרון
(או מתחילת העבודה עם המסד).דוגמה:•
DELETE FROM Ordered;ROLLBACK;
באופן COMMITבמקרים מסוימים מתבצעת פעולת •אוטומטי (נראה בהמשך).
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
32
CREATE TABLEיצירת טבלה –
: יצירת טבלה ריקה•CREATE TABLE table (column_type [(length)] [NOT NULL],…);
יצירת טבלה המכילה תוצאה של שאילתה:•CREATE TABLE table AS SELECT …;
מתבצעת אוטומטית לפני ואחרי COMMIT הפעולה •CREATE TABLE.
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
33
דוגמא
• CREATE TABLE EXAMPLE(AB VARCHAR(15),
CD INTEGER NOT NULL, EF DECIMAL(5), GH DECIMAL(7,2));
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
34
PostgreSQLטיפוסים ב-
• VARCHAR (n) – מחרוזת
• BOOLEAN – ערך בוליאני
• DATE – תאריך
• INTEGER – מספר שלם
• DECIMAL [(p,s)] – מספר עם דיוק עשרוני נתון
• …
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
35
CREATE TABLEדוגמא –
CSBooksדוגמא: יצירת טבלה חדשה בשם •.’CS‘שמכילה את כל הספרים השייכים לפקולטה
CREATE TABLE CSBooks AS
SELECT Book_Id, Book_Name
FROM Books
WHERE Faculty = ‘CS’;
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
36
דוגמה - המשך
Book_IdBook_NameYearMax_TimePagesFaculty
1111Database Systems 19987348CS
1112Database Systems 199814348CS
1113Database Systems20017424CS
2222Database And Knowledge19981390CS
2223Database And Knowledge19987390EE
3333Electronic Circuits199821180EE
4444Genes 719857580MED
5555Anatomy19887450MED
Books:
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
37
Book_IdBook_Name
1111Database Systems
1112Database Systems
1113Database Systems
2222Database And Knowledge
Book_IdBook_Name
1111Database Systems
1112Database Systems
1113Database Systems
2222Database And Knowledge
CSBooks:
דוגמה - תוצאה
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
38
הסכמה של הטבלה החדשה:•סוגי העמודות נקבעים ע"י השאילתא שבהוראת –
.CREATEה-את שמות העמודות בטבלה החדשה אפשר לשנות:–
CREATE TABLEהמשך –
דוגמא:•CREATE TABLE CSBooks(Id, Name) AS
SELECT Book_Id, Book_Name FROM BooksWHERE Faculty = ‘CS’;
Database Systems 1111
Database Systems 1112
Database Systems1113
Database And Knowledge2222
NameId
CSBooks:
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
39
DROP TABLEמחיקת טבלה –
.CSBooksדוגמה: מחיקת הטבלה •
DROP TABLE CSBooks;
היא בלתי DROP TABLE הפקודה שימו לב!• מתבצע אוטומטית לפניה COMMITהפיכה, כי
ואחריה.
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
40
VIEWSמבטים –
: להתייחס לפלט של שאילתה כאל טבלה מוטיבציה•נפרדת (בלי ליצור אותה פיזית).
: השאילתה שמגדירה את המבט נשמרת במסד בפועל•הנתונים ומופעלת כל פעם מחדש.
: המבט מהווה מעין "חלון" דרכו אפשר אינטואיציה•להסתכל על חלק ממסד הנתונים.
: הסתרת מידע, פישוט שאילתות...מטרה•
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
41
מבטים - המשך:יצירת מבט•
CREATE VIEW view_name AS SELECT…;דוגמא:•
CREATE VIEW CSBooks ASSELECT Book_Id, Book_Name, Max_Time FROM BooksWHERE Faculty = ‘CS’;
פרט ל- Books כל העמודות של מוסתרות CSBooksב-•Book_Id, Book_Name, Max_Time וכל השורות פרט
לספרים של מדעי מחשב..ORDER BY שיופיע אסורבשאילתה •
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
42
דוגמא – המשך
Book_IdBook_NameYearMax_TimePagesFaculty1111Database Systems 19987348CS
1112Database Systems 199814348CS
1113Database Systems20017424CS
2222Database And Knowledge19981390CS
2223Database And Knowledge19987390EE
3333Electronic Circuits199821180EE
4444Genes 719857580MED
5555Anatomy19887450MED
Books:
7Database Systems 1111
14Database Systems 1112
7Database Systems1113
1Database And Knowledge2222
Max_TimeBook_NameBook_Id
CSBooks
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
43
מבטים – המשך (שאילתות)
על מבט ניתן לבצע שאילתות ממש כאילו היה טבלה.•
דוגמה: שליפת כל הספרים של מדעי מחשב שמשך • ימים.7ההשאלה שלהם הוא
SELECT Book_Name
FROM CSBooks
WHERE Max_Time = 7;
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
44
כל שינוי בטבלה המקורית מייד משפיע על המבט.•) למסד הנתונים דרך המבט, UPDATEניתן לבצע עדכונים (•
.read-onlyפרט למקרים בהם המבט הוא CREATE VIEW אם השאילתה של read-onlyמבט הוא •
מכילה:–JOIN–GROUP BYביטויים ברשימת העמודות–
דוגמה לעדכון:•UPDATE CSBooks SET Max_Time = Max_Time + 1;
מבטים – המשך (עדכון)
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
45
דוגמא – המשך
Book_IdBook_NameYearMax_TimePagesFaculty1111Database Systems 19988348CS
1112Database Systems 199815348CS
1113Database Systems20018424CS
2222Database And Knowledge19982390CS
2223Database And Knowledge19987390EE
3333Electronic Circuits199821180EE
4444Genes 719857580MED
5555Anatomy19887450MED
Books:
8Database Systems 1111
15Database Systems 1112
8Database Systems1113
2Database And Knowledge2222
Max_TimeBook_NameBook_Id
CSBooks
:Max_Timeאחרי עדכון
SQL :שפות שאילתא ,DBMS -236363חורף-תשס"ג('ג)
46
מבטים – המשך (מחיקה)
DROP VIEWמחיקת מבט: •
דוגמה:•
DROP VIEW CSBooks;
לטבלה שעליה מבוסס המבט לא קורה כלום.•
top related