SQL Views and Updates cs3431.

Slides:



Advertisements
Similar presentations
Basic SQL Introduction Presented by: Madhuri Bhogadi.
Advertisements

Relational Database. Relational database: a set of relations Relation: made up of 2 parts: − Schema : specifies the name of relations, plus name and type.
Relational Databases Chapter 4.
VIEWS Pertemuan 7 Matakuliah: T0413/Current Popular IT II Tahun: 2007.
Dec 4, 2003Murali Mani SQL B term 2004: lecture 14.
Murali Mani The Relational Model. Murali Mani Why Relational Model? Currently the most widely used Vendors: Oracle, Microsoft, IBM Older models still.
Murali Mani SQL: Updates (DML) and Views (DDL). Murali Mani SQL DML (Updating the Data) Insert Delete Update.
Nov 24, 2003Murali Mani SQL B term 2004: lecture 12.
Murali Mani SQL. Murali Mani SELECT-FROM-WHERE SELECT * FROM Student WHERE sName=“Greg” AND address=“320 FL”  (sName=“Greg” AND address=“320 FL”) (Student)
Cs3431 SQL: Updates (DML) and Views (DDL). cs3431 SQL DML (Updating the Data) Insert Delete Update.
Dec 15, 2003Murali Mani Transactions and Security B term 2004: lecture 17.
Cs3431 Transactions, Logging and Security. cs3431 Transactions: What and Why? A set of operations on a database must appear as one “unit”. Example: Consider.
View and Materialized view. What is a view? Logically represents subset of data from one or more table. In sql, a view is a virtual relation based on.
Chapter 4 Relational Databases Copyright © 2012 Pearson Education 4-1.
Lecture 2 The Relational Model. Objectives Terminology of relational model. How tables are used to represent data. Connection between mathematical relations.
The Relational Model. Review Why use a DBMS? OS provides RAM and disk.
Views: Limiting Access to Data A view is a named select statement that is stored in a database as an object. It allows you to view a subset of rows or.
Constraints, Triggers and Views COMSATS INSTITUTE OF INFORMATION TECHNOLOGY, VEHARI.
DATABASE VIEWS CHAPTER 5 (6/E) CHAPTER 8 (5/E) 1.
IS 230Lecture 6Slide 1 Lecture 7 Advanced SQL Introduction to Database Systems IS 230 This is the instructor’s notes and student has to read the textbook.
Dec 8, 2003Murali Mani Constraints B term 2004: lecture 15.
Views, Algebra Temporary Tables. Definition of a view A view is a virtual table which does not physically hold data but instead acts like a window into.
The Relational Model. 2 Relational Model Terminology u A relation is a table with columns and rows. –Only applies to logical structure of the database,
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Database Management Systems Chapter 5 SQL.
CS34311 The Relational Model. cs34312 Why Relational Model? Currently the most widely used Vendors: Oracle, Microsoft, IBM Older models still used IBM’s.
SQL: Structured Query Language Instructor: Mohamed Eltabakh 1 Part II.
Constraints and Views Chap. 3-5 continued (7 th ed. 5-7)
SQL: Interactive Queries (2) Prof. Weining Zhang Cs.utsa.edu.
SQL: Structured Query Language Instructor: Mohamed Eltabakh 1.
More SQL: Complex Queries, Triggers, Views, and Schema Modification
SQL Query Getting to the data ……..
Tables and Triggers.
Prepared by : Moshira M. Ali CS490 Coordinator Arab Open University
Schema Refinement and Normal Forms
Chapter 4 Relational Databases
SQL : Query Language Part II CS3431.
SQL Views CS542.
What Is a View? EMPNO ENAME JOB EMP Table EMPVU10 View
Chapter 4 The Relational Model Pearson Education © 2009.
Chapter 4 The Relational Model Pearson Education © 2009.
SQL : Query Language CS3431.
Chapter 4 The Relational Model Pearson Education © 2009.
Normalization Murali Mani.
Functional Dependencies and Normalization
Advanced SQL: Views & Triggers
Chapter 2 Views.
Instructor: Mohamed Eltabakh
SQL: Structured Query Language
The Relational Model Transparencies
Instructor: Mohamed Eltabakh
Normalization Part II cs3431.
Functional Dependencies and Normalization
Chapter 2 Views.
Chapter 4 The Relational Model Pearson Education © 2009.
Chapter 4 The Relational Model Pearson Education © 2009.
Normalization cs3431.
Instructor: Mohamed Eltabakh
Chapter 7 Using SQL in Applications
Chapter 8 Advanced SQL.
SQL: Structured Query Language
Chapter 19 (part 1) Functional Dependencies
Views 1.
Chapter 4 The Relational Model Pearson Education © 2009.
SQL: Structured Query Language
SQL: Structured Query Language
IST 318 Database Administration
So What are Views and Triggers anyway?
SQL-Views and External Schemas
Advanced Topics: Indexes & Transactions
SQL: Structured Query Language
Presentation transcript:

SQL Views and Updates cs3431

SQL DML (Updating the Data) Insert Delete Update cs3431

Inserting tuples INSERT INTO Student VALUES (6, ‘Emily’, ‘324 FL’, NULL); INSERT INTO Student (sNumber, sName) VALUES (6, ‘Emily’); INSERT INTO Professor (pNumber) SELECT professor FROM Student; cs3431

Delete and Update Deleting tuples DELETE FROM Student WHERE sNumber=‘6’; Updating tuples UPDATE Student SET professor=‘ER’ WHERE sNumber=‘6’ cs3431

Views NOTE: You can present logical subsets or combinations of the data by creating views of tables. A view is a virtual table based on a table or another view. A view contains no data of its own but is like a window through which data from tables can be viewed or changed. The tables on which a view is based are called base tables. The view is stored as a SELECT statement in the data dictionary. cs3431

Views View is a virtual relation defined by: Named stored SQL query Views can be queried like any “base” relation. cs3431

Views CREATE VIEW <viewName> as <query> CREATE VIEW studentProfessor (student, professor) AS SELECT sName, pName FROM Student, Professor WHERE Student.professor = Professor.pNumber; DROP VIEW studentProfessor cs3431

Views ? Why ? View is a virtual relation ? Convenience: Queries on base relations might be “complex” Logical Data Independence: “Base tables” may change, but still queries using views need not change. Customization: Provide different views of the same data. Security: Expose only necessary data to users cs3431

Views - Example Student Professor sNumber sName address professor 1 Dave 320FL 2 Greg 3 Matt pNumber pName address 1 MM 235FL 2 ER 241FL CREATE VIEW studentProfessor (student, professor) AS SELECT sName, pName FROM Student, Professor WHERE Student.professor = Professor.pNumber; student professor Dave MM Greg Matt ER SELECT * from studentProfessor cs3431

Views - Example Student Professor sNumber sName address professor 1 Dave 320FL 2 Greg 3 Matt pNumber pName address 1 MM 235FL 2 ER 241FL CREATE VIEW studentProfessor (student, professor) AS SELECT sName, pName FROM Student, Professor WHERE Student.professor = Professor.pNumber; student professor Dave MM Greg Matt ER SELECT professor, count(*) FROM studentProfessor GROUPBY professor; cs3431

Querying Views CREATE VIEW studentProfessor (student, professor) AS SELECT sName, pName FROM Student, Professor WHERE Student.professor = Professor.pNumber; student professor Dave MM Greg Matt ER SELECT pnumber as professor, count(*) FROM Student, Professor WHERE Student.professor = Professor.pNumber GROUPBY professor; SELECT professor, count(*) FROM studentProfessor GROUPBY professor; cs3431

Updating Views Consider views defined with only one relation in the FROM clause such as: CREATE VIEW MyStudent (num, name) AS SELECT sNumber, sName FROM Student; Question: Are these views updatable? Answer: Updating these views are done by updating the underlying Student tables. cs3431

Updating Single Relation Views DELETE FROM MyStudent WHERE name=`Dave'; -- This will delete the corresponding row from the Student table DELETE FROM Student WHERE name=`Dave'; The update is valid ! cs3431

Updating Single Relation Views INSERT INTO MyStudent VALUES (4, `Mary’); -- This will be translated to: INSERT INTO Student (sNumber, sName) VALUES (4, `Mary’); cs3431

Inserting into single relation views CREATE VIEW MyStudent1(name) AS SELECT sName FROM Student; INSERT INTO MyStudent1 VALUES (‘Mary’) will be translated to: INSERT INTO Student(sName) VALUES (‘Mary’). This will return an error as sNumber must not be null. cs3431

Updating Single Relation views If the SELECT clause specifies DISTINCT, then the view is not updatable. For instance, the following view is not updatable. CREATE VIEW MyStudent2(num) AS SELECT DISTINCT sNumber FROM Student; cs3431

Updating Single Relation Views WHERE clause may specify subqueries. CREATE VIEW MyStudent3 (num, name) AS SELECT sNumber, sName FROM Student WHERE sNumber NOT IN (SELECT sNumber FROM Student); -- this view will always have 0 tuples. -- Insert into this view will still insert into student table, though that tuple does not appear in the view. cs3431

Multiple relation views: Delete Consider a multi-relation view such as CREATE VIEW studentProf (studentname, profname) AS SELECT sName, pName FROM Student, Professor WHERE SName = PName; -- Ambigious what base table to update ! -- Side effects as other tuples may disappear out of the view ! cs3431

Multiple relation views Consider a multi-relation view such as CREATE VIEW studentProf (studentname, profname) AS SELECT sName, pName FROM Student, Professor WHERE SName = PName; Student Professor sNumber sName address professor 1 MM 320FL 2 3 Matt pNumber pName address 1 MM 235FL 2 ER 241FL cs3431

Multi-Relation View Deletes can be done against multi-relation views if there is a table such that the view and the table have the same key. cs3431

Views - Example Student Professor pNumber is key in Professor sNumber sName address professor 1 Dave 320FL 2 Greg 3 Matt pNumber pName address 1 MM 235FL 2 ER 241FL student professor 1 MM 2 3 ER CREATE VIEW studentProfessor (student, professor) AS SELECT sNumber, pName FROM Student, Professor WHERE Student.professor = Professor.pNumber; pNumber is key in Professor sNumber is key of Student sNumber is key of view cs3431

Deleting from multi-relation views Try the following update statements: DELETE FROM studentProfessor WHERE professor='MM'; -- What will be deleted ? cs3431

Views - Example Student Professor sNumber sName address professor 1 Dave 320FL 2 Greg 3 Matt pNumber pName address 1 MM 235FL 2 ER 241FL student professor 1 MM 2 3 ER CREATE VIEW studentProfessor (student, professor) AS SELECT sNumber, pName FROM Student, Professor WHERE Student.professor = Professor.pNumber; DELETE FROM studentProfessor WHERE professor='MM'; -- This will actually delete the two rows in the student table. cs3431

Views - Example Student Professor sNumber sName address professor 1 Dave 320FL 2 Greg 3 Matt pNumber pName address 1 MM 235FL 2 ER 241FL CREATE VIEW studentProfessor (student, professor) AS SELECT sNumber, pName FROM Student, Professor WHERE Student.professor = Professor.pNumber; Now delete will fail because there is no table whose key is the key of the view. Suppose we drop key constraint on the professor table for this view. cs3431

Inserting into multi-relation views Consider view definition: CREATE VIEW studentProf(student, professor) AS SELECT sNumber, pName FROM Student, Professor WHERE professor=pNumber; INSERT INTO Studentprof VALUES (4, 'ER'); -- THIS ABOVE INSERT WILL FAIL AS IT TRIES TO INSERT INTO Professor TABLE AS WELL. INSERT INTO Studentprof(student) VALUES (4); -- THIS ABOVE INSERT WILL SUCCEED. cs3431

Inserting into multi-relation views Insert will succeed only if The insert translates to insert into only one table. The key for the table to be inserted will also be a key for the view. cs3431

Views Conclusion Views are useful – Virtual relations Querying through views is always possible Updating through views has limitations DBA can set up INSTEAD OF triggers cs3431