Presentation is loading. Please wait.

Presentation is loading. Please wait.

Structured Query Language

Similar presentations


Presentation on theme: "Structured Query Language"— Presentation transcript:

1 Structured Query Language
SQL Structured Query Language שפת תכנות מיוחדת למסדי נתונים. שפה הצהרתית ולא כמו C (פרוצדורלי – אימפרטיבי). יש מסדי נתונים MySQL, PostgreSQL, MSSQL, Oracle, SQL Lite מודל השרת לקוח. Structured English Query Language SQL היא שפת מחשב הצהרתית, כלומר, היא מתארת רק מה לבצע ולא כיצד לבצע. מכיוון שכך, ניתן להשתמש באותו משפט SQL בבסיסי נתונים שונים, הפועלים בדרכים שונות לחלוטין. אי תלותה של SQL במבנה הנתונים, בנוסף על עוצמתה של השפה, המאפשרת לאחזר חתכים מורכבים בפשטות רבה, הפכו אותה לשפה המקובלת ביותר כיום בניהול בסיסי נתונים. שפת SQL פותחה במקורה על ידי IBM, אך מאז הועתקה על ידי חברות רבות, ואף אומצה על ידי מכון התקנים האמריקאי (ANSI) ב-1986 ועל ידי ארגון התקינה הבינלאומי (ISO) ב-1987. חברות שפיתחו בסיסי נתונים וכלי תוכנה אחרים המשתמשים בשפת SQL הרשו לעצמן לעתים לשנות את תחביר השפה, כך שהסבת משפטי SQL מבסיס נתונים אחד לאחר מצריכה בדרך כלל עריכת שינויים משמעותיים. עם זאת, כללי היסוד של שפת SQL דומים מאוד בכל הגרסאות. - איזה מסדי נתונים אתם מכירים? חורף 2017 DBMS , DDL +DML: SQL

2 SQL: מושגים שחור סגלגל ורוד חיה גיל צבע חתול 23 ורוד
אביב תשס"ג SQL: מושגים עמודה, תכונה, שדה, אטריביוט שחור סגלגל ורוד טבלה, רלציה סכמה חיה גיל צבע שורה, רשומה, n-יה חתול 23 ורוד חורף 2017 DBMS , DDL +DML: SQL DBMS

3 דוגמא של מסד נתונים מסד נתונים של ספרייה Ordered Cust_Id Book_Id
אביב תשס"ג דוגמא של מסד נתונים מסד נתונים של ספרייה Ordered Cust_Id Book_Id Order_Date Books Book_Id Book_Name Year Max_Time Faculty Pages Customers Cust_Id Cust_Name Faculty Borrowed Cust_Id Book_Id From_Date To_Date חורף 2017 DBMS , DDL +DML: SQL DBMS

4 פירוט הטבלאות Customers(Cust_Id, Cust_Name, Faculty)
אביב תשס"ג פירוט הטבלאות Customers(Cust_Id, Cust_Name, Faculty) Cust_Id: (ייחודי לכל לקוח) מס' זהות של לקוח Cust_Name:שם לקוח Faculty: שם פקולטה זו דרך נוספת להצגת סכמה של טבלה. המפתח מסומן בקו תחתון. מה ההגדרה של מפתח?קבוצה של תכונות, כך שאין 2 רשומות ברלציה שיש להן את אותם הערכים בקבוצת התכונות. חורף 2017 DBMS , DDL +DML: SQL DBMS

5 הטבלה Customers Faculty Cust_Name Cust_Id CS Moshe Cohen 12345 EE
אביב תשס"ג הטבלה Customers Faculty Cust_Name Cust_Id CS Moshe Cohen 12345 EE Avi Barak 23456 MED 34567 Lior Edri 45678 56789 67890 ניתן לראות שיש 2 לקוחות עם אותו השם – אבי ברק יש 2 לקוחות עם אותו השם ומאותה הפקולטה – משה כהן חורף 2017 DBMS , DDL +DML: SQL DBMS

6 אביב תשס"ג פירוט הטבלאות (המשך...) Books(Book_Id, Book_Name, Year, Max_Time, Faculty, Pages) Book_Id: מס' מזהה (ייחודי לכל עותק) Book_Name: שם הכותר Year: שנת הוצאה Max_Time: משך השאלה מקס' אפשרי (בימים) Faculty: שם פקולטה Pages: מס' עמודים חורף 2017 DBMS , DDL +DML: SQL DBMS

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 - אותו הספר (database and knowledge) נמצא ב-2 פקולטות עם זמני השאלה שונים חורף 2017 DBMS , DDL +DML: SQL DBMS

8 פירוט הטבלאות (המשך...) Ordered(Cust_Id, Book_Id, Order_Date)
אביב תשס"ג פירוט הטבלאות (המשך...) Ordered(Cust_Id, Book_Id, Order_Date) Cust_Id: מס' זהות של לקוח Book_Id : מס' מזהה (ייחודי לכל עותק) Order_Date: תאריך הזמנת הכותר - זוהי טבלה מקשרת חורף 2017 DBMS , DDL +DML: SQL DBMS

9 טבלת Ordered Order_Date Cust_Id Book_Id 14-Oct-2002 1111 12345
אביב תשס"ג טבלת Ordered Order_Date Book_Id Cust_Id 14-Oct-2002 1111 12345 24-Oct-2002 1112 45678 30-Oct-2002 1113 12-Oct-2002 2222 חורף 2017 DBMS , DDL +DML: SQL DBMS

10 פירוט הטבלאות (המשך...) Borrowed(Book_Id, Cust_Id, From_Date, To_Date)
אביב תשס"ג פירוט הטבלאות (המשך...) Borrowed(Book_Id, Cust_Id, From_Date, To_Date) Book_Id: מס' מזהה של ספר Cust_Id: מס' זהות של לקוח From_Date: תאריך השאלת הספר To_Date: תאריך החזרת הספר חורף 2017 DBMS , DDL +DML: SQL DBMS

11 טבלת Borrowed To_Date From_Date Cust_Id Book_Id 13-Oct-2002 56789 5555
אביב תשס"ג טבלת Borrowed To_Date From_Date Cust_Id Book_Id 13-Oct-2002 56789 5555 - To_Date הוא NULL מכיוון וטרם החזירו את הספר חורף 2017 DBMS , DDL +DML: SQL DBMS

12 שאילתות ב-SQL מבנה כללי של שאילתא
אביב תשס"ג שאילתות ב-SQL מבנה כללי של שאילתא SELECT [ALL | DISTINCT] {[table.]* | expr [alias], exp [alias], …} FROM table [alias], table [alias], … [WHERE condition] [GROUP BY expr, expr, … [HAVING condition]] [{INTERSECT | EXCEPT | UNION | UNION ALL } SELECT …] [ORDER BY expr [ASC | DESC ], expr [ASC | DESC],…]; חורף 2017 DBMS , DDL +DML: SQL DBMS

13 שאילתות ב-SQL: SELECT בחירת עמודות מטבלה:
אביב תשס"ג שאילתות ב-SQL: SELECT בחירת עמודות מטבלה: SELECT column1, column2, column3,… FROM table; בחירת כל העמודות של טבלה: SELECT * חורף 2017 DBMS , DDL +DML: SQL DBMS

14 דוגמא דוגמא: שליפת כל שמות הספרים ומספר העמודים בכל ספר:
אביב תשס"ג דוגמא דוגמא: שליפת כל שמות הספרים ומספר העמודים בכל ספר: SELECT Book_Name, Pages FROM Books; 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 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 חורף 2017 DBMS , DDL +DML: SQL DBMS

15 SELECT Book_Name, Pages FROM Books:
אביב תשס"ג דוגמא - תוצאה SELECT Book_Name, Pages FROM Books: Pages Book_Name 348 Database Systems 424 390 Database And Knowledge 180 Electronic Circuits 580 Genes 7 450 Anatomy - ניתן לראות כי יש כפילויות בתשובה חורף 2017 DBMS , DDL +DML: SQL DBMS

16 בחירת חלק מהרשומות Where -
אביב תשס"ג בחירת חלק מהרשומות Where - סינון רשומות בשאילתה: SELECT column1, column2, column3,… FROM table WHERE Boolean_Condition; דוגמא: שליפת שמות כל הספרים שהוצאו אחרי השנה 1990: SELECT Book_Name FROM Books WHERE Year > 1990; חורף 2017 DBMS , DDL +DML: SQL DBMS

17 דוגמא - המשך SELECT Book_Name FROM Books WHERE Year > 1990 Books:
אביב תשס"ג דוגמא - המשך SELECT Book_Name FROM Books WHERE Year > 1990 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 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 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 ניתן לראות כי SELECT פועל על עמודות ו-WHERE פועל על שורות חורף 2017 DBMS , DDL +DML: SQL DBMS

18 Database And Knowledge
אביב תשס"ג דוגמא - תוצאה SELECT Book_Name FROM Books WHERE Year > 1990 : Book_Name Database Systems Database And Knowledge Electronic Circuits חורף 2017 DBMS , DDL +DML: SQL DBMS

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

20 עדכון – UPDATE UPDATE tablename SET column-assignment-list
WHERE conditional-expression ; חורף 2017 DBMS , DDL +DML: SQL

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

22 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 חורף 2017 DBMS , DDL +DML: SQL

23 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 חורף 2017 DBMS , DDL +DML: SQL

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

25 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 חורף 2017 DBMS , DDL +DML: SQL

26 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 חורף 2017 DBMS , DDL +DML: SQL

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

28 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 חורף 2017 DBMS , DDL +DML: SQL

29 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 חורף 2017 DBMS , DDL +DML: SQL

30 הוספה - INSERT INSERT INTO tablename [( column-list )]
VALUES ( constant-list ) ; חורף 2017 DBMS , DDL +DML: SQL

31 הוספה - INSERT מטרה: הוספת רשומות חדשות
אפשרות ראשונה: הוספת רשומה אחת נתונה דוגמא: הוספת לקוח לטבלת Customers. INSERT INTO Customers VALUES (78901, 'Roy Peled', 'EE'); חורף 2017 DBMS , DDL +DML: SQL

32 דוגמה - המשך Customers: Faculty Cust_Name Cust_Id CS Moshe Cohen 12345
EE Avi Barak 23456 MED 34567 Lior Edri 45678 56789 67890 חורף 2017 DBMS , DDL +DML: SQL

33 דוגמא - תוצאה INSERT INTO Customers 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 חורף 2017 DBMS , DDL +DML: SQL

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

35 דוגמה - המשך Customers: Faculty Cust_Name Cust_Id CS Moshe Cohen 12345
EE Avi Barak 23456 MED 34567 Lior Edri 45678 56789 67890 חורף 2017 DBMS , DDL +DML: SQL

36 דוגמא - תוצאה INSERT INTO Customers(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 חורף 2017 DBMS , DDL +DML: SQL

37 INSERT – שימוש בשאילתות
הוספת רשומות המתקבלות כתוצאה של שאילתה. דוגמא: הכנסת כל הלקוחות שהזמינו ספרים לטבלהReaders . INSERT INTO Readers( Id) (SELECT Cust_Id FROM Ordered); הוראה זו חוקית רק אם טבלה Readers קיימת. חורף 2017 DBMS , DDL +DML: SQL

38 Database And Knowledge
דוגמה - המשך Readers: Ordered: Cust_Id Cust_Id Book_Name Order_Date 12345 12345 Database Systems 14-Oct-2002 45678 45678 Anatomy 24-Oct-2002 12345 12345 Database And Knowledge 30-Oct-2002 45678 45678 Electronic Circuits 12-Oct-2002 חורף 2017 DBMS , DDL +DML: SQL

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

40 תוצאה 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 חורף 2017 DBMS , DDL +DML: SQL

41 מחיקה – DELETE DELETE FROM tablename WHERE conditional-expression
חורף 2017 DBMS , DDL +DML: SQL

42 מחיקה – DELETE ההוראה DELETE מוחקת רשומות מתוך הטבלה.
בהוראה זו צריך רק להגדיר אלו רשומות רוצים למחוק. דוגמה: מחיקת כל ההזמנות. DELETE FROM Ordered; הטבלה עצמה אינה נמחקת, אך היא נותרת ריקה. מחיקה עם WHERE: DELETE FROM Ordered WHERE Cust_Id = 12345; חורף 2017 DBMS , DDL +DML: SQL

43 יצירת טבלה – CREATE TABLE
יצירת טבלה ריקה: CREATE TABLE table (column_name column_type [(length)] [NOT NULL],…); יצירת טבלה המכילה תוצאה של שאילתה: CREATE TABLE table AS SELECT …; חורף 2017 DBMS , DDL +DML: SQL

44 דוגמא CREATE TABLE EXAMPLE (AB VARCHAR(15), CD INTEGER,
EF INTEGER NOT NULL, GH DECIMAL(5), IJ DECIMAL(7,2), KL TEXT default(‘DB’)); חורף 2017 DBMS , DDL +DML: SQL

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

46 Primary Key CREATE TABLE EXAMPLE (AB VARCHAR(15), CD INTEGER,
EF DECIMAL(5), GH DECIMAL(7,2), PRIMARY KEY (AB,CD)); * מפתח ראשי אינו יכול להיות NULL. חורף 2017 DBMS , DDL +DML: SQL

47 UNIQUE CREATE TABLE EXAMPLE (AB VARCHAR(15), CD INTEGER,
EF DECIMAL(5), GH DECIMAL(7,2), UNIQUE (AB,CD)); UNIQUE (CD,EF)); חורף 2017 DBMS , DDL +DML: SQL

48 Foreign Key נזכר בטבלת ההזמנות: Ordered(Cust_Id, Book_Id, Order_Date).
CREATE TABLE Ordered (Cust_Id INTEGER, Book_Id INTEGER, Order_Date TIMESTAMP, FOREIGN KEY (Cust_Id) REFERENCES Customers(Cust_Id)); חורף 2017 DBMS , DDL +DML: SQL

49 Foreign Key (cont) במקרה הנ"ל, ניתן לכתוב גם: CREATE TABLE Ordered
(Cust_Id INTEGER, Book_Id INTEGER, Order_Date TIMESTAMP, FOREIGN KEY (Cust_Id) REFERENCES Customers); וגם: (Cust_Id INTEGER REFERENCES Customers, Order_Date TIMESTAMP); הסטודנטים צריכים להבין: * האם ניתן למחוק רשומה ש"מצביעים" אליה? חורף 2017 DBMS , DDL +DML: SQL

50 Foreign Key (cont) במידה וקיימת הזמנה ללקוח 1002 ואנו מוחקים אותו מטבלת הלקוחות, מה יקרה? אפשרות נוספות להגדרה: CREATE TABLE Ordered (Cust_Id INTEGER, Book_Id INTEGER, Order_Date TIMESTAMP, FOREIGN KEY (Cust_Id) REFERENCES Customers(Cust_Id) ON DELETE CASCADE); הסטודנטים צריכים להבין: * האם ניתן למחוק רשומה ש"מצביעים" אליה? חורף 2017 DBMS , DDL +DML: SQL

51 Check ניתן לכתוב גם כ: CREATE TABLE EXAMPLE (A TEXT, B INTEGER,
C INTEGER, CHECK (B > 0), CHECK (B < C)); ניתן לכתוב גם כ: B INTEGER CHECK (B > 0), חורף 2017 DBMS , DDL +DML: SQL

52 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'; חורף 2017 DBMS , DDL +DML: SQL

53 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 חורף 2017 DBMS , DDL +DML: SQL

54 דוגמה - תוצאה 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 חורף 2017 DBMS , DDL +DML: SQL

55 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: חורף 2017 DBMS , DDL +DML: SQL

56 מחיקת טבלה – DROP TABLE דוגמה: מחיקת הטבלה CSBooks.
חורף 2017 DBMS , DDL +DML: SQL

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

58 מבטים - המשך יצירת מבט: 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. חורף 2017 DBMS , DDL +DML: SQL

59 דוגמא – המשך Books: 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 7 Database Systems 1111 14 1112 1113 1 Database And Knowledge 2222 Max_Time Book_Name Book_Id CSBooks חורף 2017 DBMS , DDL +DML: SQL

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

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


Download ppt "Structured Query Language"

Similar presentations


Ads by Google