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 - 236363, DDL +DML: SQL
SQL: מושגים שחור סגלגל ורוד חיה גיל צבע חתול 23 ורוד אביב תשס"ג SQL: מושגים עמודה, תכונה, שדה, אטריביוט שחור סגלגל ורוד טבלה, רלציה סכמה חיה גיל צבע שורה, רשומה, n-יה חתול 23 ורוד חורף 2017 DBMS - 236363, DDL +DML: SQL DBMS - 236363
דוגמא של מסד נתונים מסד נתונים של ספרייה 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 - 236363, DDL +DML: SQL DBMS - 236363
פירוט הטבלאות Customers(Cust_Id, Cust_Name, Faculty) אביב תשס"ג פירוט הטבלאות Customers(Cust_Id, Cust_Name, Faculty) Cust_Id: (ייחודי לכל לקוח) מס' זהות של לקוח Cust_Name:שם לקוח Faculty: שם פקולטה זו דרך נוספת להצגת סכמה של טבלה. המפתח מסומן בקו תחתון. מה ההגדרה של מפתח?קבוצה של תכונות, כך שאין 2 רשומות ברלציה שיש להן את אותם הערכים בקבוצת התכונות. חורף 2017 DBMS - 236363, DDL +DML: SQL DBMS - 236363
הטבלה 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 - 236363, DDL +DML: SQL DBMS - 236363
אביב תשס"ג פירוט הטבלאות (המשך...) Books(Book_Id, Book_Name, Year, Max_Time, Faculty, Pages) Book_Id: מס' מזהה (ייחודי לכל עותק) Book_Name: שם הכותר Year: שנת הוצאה Max_Time: משך השאלה מקס' אפשרי (בימים) Faculty: שם פקולטה Pages: מס' עמודים חורף 2017 DBMS - 236363, DDL +DML: SQL DBMS - 236363
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 - 236363, DDL +DML: SQL DBMS - 236363
פירוט הטבלאות (המשך...) Ordered(Cust_Id, Book_Id, Order_Date) אביב תשס"ג פירוט הטבלאות (המשך...) Ordered(Cust_Id, Book_Id, Order_Date) Cust_Id: מס' זהות של לקוח Book_Id : מס' מזהה (ייחודי לכל עותק) Order_Date: תאריך הזמנת הכותר - זוהי טבלה מקשרת חורף 2017 DBMS - 236363, DDL +DML: SQL DBMS - 236363
טבלת 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 - 236363, DDL +DML: SQL DBMS - 236363
פירוט הטבלאות (המשך...) 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 - 236363, DDL +DML: SQL DBMS - 236363
טבלת 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 - 236363, DDL +DML: SQL DBMS - 236363
שאילתות ב-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 - 236363, DDL +DML: SQL DBMS - 236363
שאילתות ב-SQL: SELECT בחירת עמודות מטבלה: אביב תשס"ג שאילתות ב-SQL: SELECT בחירת עמודות מטבלה: SELECT column1, column2, column3,… FROM table; בחירת כל העמודות של טבלה: SELECT * חורף 2017 DBMS - 236363, DDL +DML: SQL DBMS - 236363
דוגמא דוגמא: שליפת כל שמות הספרים ומספר העמודים בכל ספר: אביב תשס"ג דוגמא דוגמא: שליפת כל שמות הספרים ומספר העמודים בכל ספר: 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 - 236363, DDL +DML: SQL DBMS - 236363
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 - 236363, DDL +DML: SQL DBMS - 236363
בחירת חלק מהרשומות Where - אביב תשס"ג בחירת חלק מהרשומות Where - סינון רשומות בשאילתה: SELECT column1, column2, column3,… FROM table WHERE Boolean_Condition; דוגמא: שליפת שמות כל הספרים שהוצאו אחרי השנה 1990: SELECT Book_Name FROM Books WHERE Year > 1990; חורף 2017 DBMS - 236363, DDL +DML: SQL DBMS - 236363
דוגמא - המשך 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 - 236363, DDL +DML: SQL DBMS - 236363
Database And Knowledge אביב תשס"ג דוגמא - תוצאה SELECT Book_Name FROM Books WHERE Year > 1990 : Book_Name Database Systems Database And Knowledge Electronic Circuits חורף 2017 DBMS - 236363, DDL +DML: SQL DBMS - 236363
SQL: שינוי מסד הנתונים- פעולותDDL , DML שאילתה בסיסית. שינוי תוכן מסד נתונים (עדכון, הוספה של רשומות, וכו'), DML – Data Manipulation Language שינוי מבנה מסד נתונים (יצירה, מחיקה של טבלאות, וכו'), DDL – Data Definition Language שאילתות מורכבות (בהמשך הקורס). חורף 2017 DBMS - 236363, DDL +DML: SQL
עדכון – UPDATE UPDATE tablename SET column-assignment-list WHERE conditional-expression ; חורף 2017 DBMS - 236363, DDL +DML: SQL
עדכון – UPDATE מטרה: עדכון ערכים ברשומות קיימות במסד הנתונים. אפשרות ראשונה: השמה של ערכים קבועים בעמודות מסוימות בכל הרשומות. דוגמא: העברת כל הספרים לספרייה מרכזית, והגבלת משך ההשאלה לשבוע ימים. UPDATE Books SET Max_Time = 7, Faculty = 'GEN'; חורף 2017 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 חורף 2017 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 חורף 2017 DBMS - 236363, DDL +DML: SQL
UPDATE (המשך...) עדכון חלק מהרשומות: הוספת תנאי WHERE condition דוגמא: הגבלת משך ההשאלה לשבוע ימים לספרים השייכים לספריית מדעי המחשב. UPDATE Books SET Max_Time = 7 WHERE Faculty = 'CS'; חורף 2017 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 חורף 2017 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 חורף 2017 DBMS - 236363, DDL +DML: SQL
UPDATE (המשך...) אפשרות נוספת: השמה של ביטויים. דוגמה: הארכת משך ההשאלה לכל הספרים ביום אחד. UPDATE Books SET Max_Time = Max_Time + 1; חורף 2017 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 חורף 2017 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 חורף 2017 DBMS - 236363, DDL +DML: SQL
הוספה - INSERT INSERT INTO tablename [( column-list )] VALUES ( constant-list ) ; חורף 2017 DBMS - 236363, DDL +DML: SQL
הוספה - INSERT מטרה: הוספת רשומות חדשות אפשרות ראשונה: הוספת רשומה אחת נתונה דוגמא: הוספת לקוח לטבלת Customers. INSERT INTO Customers VALUES (78901, 'Roy Peled', 'EE'); חורף 2017 DBMS - 236363, DDL +DML: SQL
דוגמה - המשך Customers: Faculty Cust_Name Cust_Id CS Moshe Cohen 12345 EE Avi Barak 23456 MED 34567 Lior Edri 45678 56789 67890 חורף 2017 DBMS - 236363, DDL +DML: SQL
דוגמא - תוצאה 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 - 236363, DDL +DML: SQL
INSERT – המשך ניתן לאתחל רק חלק מהשדות. דוגמא: INSERT INTO Customers(Cust_Id,Cust_Name) VALUES (78901, 'Roy Peled'); הערות: שדות לא מאותחלים (Faculty) יקבלו ערך NULL. אם בעמודה Faculty אסור שיופיע NULL, ההוראה INSERT אינה חוקית, ולכן היא לא תתבצע. חורף 2017 DBMS - 236363, DDL +DML: SQL
דוגמה - המשך Customers: Faculty Cust_Name Cust_Id CS Moshe Cohen 12345 EE Avi Barak 23456 MED 34567 Lior Edri 45678 56789 67890 חורף 2017 DBMS - 236363, DDL +DML: SQL
דוגמא - תוצאה 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 - 236363, DDL +DML: SQL
INSERT – שימוש בשאילתות הוספת רשומות המתקבלות כתוצאה של שאילתה. דוגמא: הכנסת כל הלקוחות שהזמינו ספרים לטבלהReaders . INSERT INTO Readers( Id) (SELECT Cust_Id FROM Ordered); הוראה זו חוקית רק אם טבלה Readers קיימת. חורף 2017 DBMS - 236363, DDL +DML: SQL
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 - 236363, DDL +DML: SQL
INSERT – המשך מה יקרה אם נבצע INSERT לטבלה כלשהי עם מידע מתוך אותה הטבלה? INSERT מתבצעת על "העתק" זמני של הטבלה. דוגמא: INSERT INTO Readers (SELECT * FROM Readers); הוראה זו לא תיכנס ללולאה אינסופית אלא רק תכפיל את הטבלה. חורף 2017 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 חורף 2017 DBMS - 236363, DDL +DML: SQL
מחיקה – DELETE DELETE FROM tablename WHERE conditional-expression חורף 2017 DBMS - 236363, DDL +DML: SQL
מחיקה – DELETE ההוראה DELETE מוחקת רשומות מתוך הטבלה. בהוראה זו צריך רק להגדיר אלו רשומות רוצים למחוק. דוגמה: מחיקת כל ההזמנות. DELETE FROM Ordered; הטבלה עצמה אינה נמחקת, אך היא נותרת ריקה. מחיקה עם WHERE: DELETE FROM Ordered WHERE Cust_Id = 12345; חורף 2017 DBMS - 236363, DDL +DML: SQL
יצירת טבלה – CREATE TABLE יצירת טבלה ריקה: CREATE TABLE table (column_name column_type [(length)] [NOT NULL],…); יצירת טבלה המכילה תוצאה של שאילתה: CREATE TABLE table AS SELECT …; חורף 2017 DBMS - 236363, DDL +DML: SQL
דוגמא 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 - 236363, DDL +DML: SQL
טיפוסים ב- PostgreSQL VARCHAR (n) – מחרוזת TEXT – מחרוזת באורך לא מוגבל BOOLEAN – ערך בוליאני DATE – תאריך INTEGER – מספר שלם DECIMAL [(p,s)] – מספר עם דיוק עשרוני נתון טיפוסים נוספים ב-PostgreSQL: http://www.postgresql.org/docs/9.4/static/datatype.html#DATATYPE-TABLE חורף 2017 DBMS - 236363, DDL +DML: SQL
Primary Key CREATE TABLE EXAMPLE (AB VARCHAR(15), CD INTEGER, EF DECIMAL(5), GH DECIMAL(7,2), PRIMARY KEY (AB,CD)); * מפתח ראשי אינו יכול להיות NULL. חורף 2017 DBMS - 236363, DDL +DML: SQL
UNIQUE CREATE TABLE EXAMPLE (AB VARCHAR(15), CD INTEGER, EF DECIMAL(5), GH DECIMAL(7,2), UNIQUE (AB,CD)); UNIQUE (CD,EF)); חורף 2017 DBMS - 236363, DDL +DML: SQL
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 - 236363, DDL +DML: SQL
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 - 236363, DDL +DML: SQL
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 - 236363, DDL +DML: SQL
Check ניתן לכתוב גם כ: CREATE TABLE EXAMPLE (A TEXT, B INTEGER, C INTEGER, CHECK (B > 0), CHECK (B < C)); ניתן לכתוב גם כ: B INTEGER CHECK (B > 0), חורף 2017 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'; חורף 2017 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 חורף 2017 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 חורף 2017 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: חורף 2017 DBMS - 236363, DDL +DML: SQL
מחיקת טבלה – DROP TABLE דוגמה: מחיקת הטבלה CSBooks. חורף 2017 DBMS - 236363, DDL +DML: SQL
מבטים – VIEWS מוטיבציה: להתייחס לפלט של שאילתה כאל טבלה נפרדת (בלי ליצור אותה פיזית). בפועל: השאילתה שמגדירה את המבט נשמרת במסד הנתונים ומופעלת כל פעם מחדש. אינטואיציה: המבט מהווה מעין "חלון" דרכו אפשר להסתכל על חלק ממסד הנתונים. מטרה: הסתרת מידע, פישוט שאילתות... חורף 2017 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. חורף 2017 DBMS - 236363, DDL +DML: SQL
דוגמא – המשך 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 - 236363, DDL +DML: SQL
מבטים – המשך (שאילתות) SELECT Book_Name FROM CSBooks על מבט ניתן לבצע שאילתות ממש כאילו היה טבלה. דוגמה: שליפת כל הספרים של מדעי מחשב שמשך ההשאלה שלהם הוא 7 ימים. SELECT Book_Name FROM CSBooks WHERE Max_Time = 7; חורף 2017 DBMS - 236363, DDL +DML: SQL
מבטים – המשך (מחיקה) מחיקת מבט: DROP VIEW דוגמה: DROP VIEW CSBooks; לטבלה שעליה מבוסס המבט לא קורה כלום. חורף 2017 DBMS - 236363, DDL +DML: SQL