SlideShare a Scribd company logo
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
CHAPTER 7
More SQL: Complex Queries,
Triggers, Views, and Schema
Modification
Slide 7- 2
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Chapter 7 Outline
 More Complex SQL Retrieval Queries
 Specifying Semantic Constraints as Assertions
and Actions as Triggers
 Views (Virtual Tables) in SQL
 Schema Modification in SQL
Slide 7- 3
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
More Complex SQL Retrieval
Queries
 Additional features allow users to specify more
complex retrievals from database:
 Nested queries, joined tables, and outer joins (in
the FROM clause), aggregate functions, and
grouping
Slide 7- 4
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Comparisons Involving NULL
and Three-Valued Logic
 Meanings of NULL
 Unknown value
 Unavailable or withheld value
 Not applicable attribute
 Each individual NULL value considered to be
different from every other NULL value
 SQL uses a three-valued logic:
 TRUE, FALSE, and UNKNOWN (like Maybe)
 NULL = NULL comparison is avoided
Slide 7- 5
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Comparisons Involving NULL
and Three-Valued Logic (cont’d.)
Slide 7- 6
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Comparisons Involving NULL
and Three-Valued Logic (cont’d.)
 SQL allows queries that check whether an
attribute value is NULL
 IS or IS NOT NULL
Slide 7- 7
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Nested Queries, Tuples,
and Set/Multiset Comparisons
 Nested queries
 Complete select-from-where blocks within WHERE
clause of another query
 Outer query and nested subqueries
 Comparison operator IN
 Compares value v with a set (or multiset) of values
V
 Evaluates to TRUE if v is one of the elements in V
Slide 7- 8
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Nested Queries (cont’d.)
Slide 7- 9
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Nested Queries (cont’d.)
 Use tuples of values in comparisons
 Place them within parentheses
Slide 7- 10
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
 Use other comparison operators to compare a
single value v
 = ANY (or = SOME) operator

Returns TRUE if the value v is equal to some value in
the set V and is hence equivalent to IN
 Other operators that can be combined with ANY (or
SOME): >, >=, <, <=, and <>
 ALL: value must exceed all values from nested
query
Nested Queries (cont’d.)
Slide 7- 11
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Nested Queries (cont’d.)
 Avoid potential errors and ambiguities
 Create tuple variables (aliases) for all tables
referenced in SQL query
Slide 7- 12
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Correlated Nested Queries
 Queries that are nested using the = or IN
comparison operator can be collapsed into one
single block: E.g., Q16 can be written as:
 Q16A: SELECT E.Fname, E.Lname
FROM EMPLOYEE AS E, DEPENDENT AS D
WHERE E.Ssn=D.Essn AND E.Sex=D.Sex
AND
E.Fname=D.Dependent_name;
 Correlated nested query
 Evaluated once for each tuple in the outer query
Slide 7- 13
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
The EXISTS and UNIQUE Functions
in SQL for correlating queries
 EXISTS function
 Check whether the result of a correlated nested
query is empty or not. They are Boolean functions
that return a TRUE or FALSE result.
 EXISTS and NOT EXISTS
 Typically used in conjunction with a correlated
nested query
 SQL function UNIQUE(Q)
 Returns TRUE if there are no duplicate tuples in
the result of query Q
Slide 7- 14
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
USE of EXISTS
Q7:
SELECT Fname, Lname
FROM Employee
WHERE EXISTS (SELECT *
FROM DEPENDENT
WHERE Ssn= Essn)
AND EXISTS (SELECT *
FROM Department
WHERE Ssn= Mgr_Ssn)
Slide 7- 15
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
USE OF NOT EXISTS
To achieve the “for all” (universal quantifier- see Ch.8) effect,
we use double negation this way in SQL:
Query: List first and last name of employees who work on
ALL projects controlled by Dno=5.
SELECT Fname, Lname
FROM Employee
WHERE NOT EXISTS ( (SELECT Pnumber
FROM PROJECT
WHERE Dno=5)
EXCEPT (SELECT Pno
FROM WORKS_ON
WHERE Ssn= ESsn)
The above is equivalent to double negation: List names of those
employees for whom there does NOT exist a project managed by
department no. 5 that they do NOT work on.
Slide 7- 16
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Double Negation to accomplish “for
all” in SQL
 Q3B: SELECT Lname, Fname
FROM EMPLOYEE
WHERE NOT EXISTS ( SELECT *
FROM WORKS_ON B
WHERE ( B.Pno IN ( SELECT Pnumber
FROM PROJECT
WHERE Dnum=5 AND
NOT EXISTS (SELECT *
FROM WORKS_ON C
WHERE C.Essn=Ssn
AND C.Pno=B.Pno )));
The above is a direct rendering of: List names of those employees for whom
there does NOT exist a project managed by department no. 5 that they
do NOT work on.
Slide 7- 17
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Explicit Sets and Renaming of
Attributes in SQL
 Can use explicit set of values in WHERE clause
Q17: SELECT DISTINCT Essn
FROM WORKS_ON
WHERE Pno IN (1, 2, 3);
 Use qualifier AS followed by desired new name
 Rename any attribute that appears in the result of
a query
Slide 7- 18
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Specifying Joined Tables in the
FROM Clause of SQL
 Joined table
 Permits users to specify a table resulting from a
join operation in the FROM clause of a query
 The FROM clause in Q1A
 Contains a single joined table. JOIN may also be
called INNER JOIN
Slide 7- 19
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Different Types of JOINed Tables in
SQL
 Specify different types of join
 NATURAL JOIN
 Various types of OUTER JOIN (LEFT, RIGHT,
FULL )
 NATURAL JOIN on two relations R and S
 No join condition specified
 Is equivalent to an implicit EQUIJOIN condition for
each pair of attributes with same name from R and
S
Slide 7- 20
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
NATURAL JOIN
 Rename attributes of one relation so it can be joined with
another using NATURAL JOIN:
Q1B: SELECT Fname, Lname, Address
FROM (EMPLOYEE NATURAL JOIN
(DEPARTMENT AS DEPT (Dname, Dno, Mssn,
Msdate)))
WHERE Dname=‘Research’;
The above works with EMPLOYEE.Dno = DEPT.Dno as an
implicit join condition
Slide 7- 21
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
INNER and OUTER Joins
 INNER JOIN (versus OUTER JOIN)
 Default type of join in a joined table

Tuple is included in the result only if a matching tuple exists in
the other relation
 LEFT OUTER JOIN

Every tuple in left table must appear in result
 If no matching tuple

Padded with NULL values for attributes of right table
 RIGHT OUTER JOIN

Every tuple in right table must appear in result
 If no matching tuple

Padded with NULL values for attributes of left table
Slide 7- 22
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Example: LEFT OUTER JOIN
SELECT E.Lname AS Employee_Name
S.Lname AS Supervisor_Name
FROM Employee AS E LEFT OUTER JOIN EMPLOYEE AS S
ON E.Super_ssn = S.Ssn)
ALTERNATE SYNTAX:
SELECT E.Lname , S.Lname
FROM EMPLOYEE E, EMPLOYEE S
WHERE E.Super_ssn + = S.Ssn
Slide 7- 23
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Multiway JOIN in the FROM clause
 FULL OUTER JOIN – combines result if LEFT
and RIGHT OUTER JOIN
 Can nest JOIN specifications for a multiway join:
Q2A: SELECT Pnumber, Dnum, Lname, Address, Bdate
FROM ((PROJECT JOIN DEPARTMENT ON
Dnum=Dnumber) JOIN EMPLOYEE ON
Mgr_ssn=Ssn)
WHERE Plocation=‘Stafford’;
Slide 7- 24
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Aggregate Functions in SQL
 Used to summarize information from multiple
tuples into a single-tuple summary
 Built-in aggregate functions
 COUNT, SUM, MAX, MIN, and AVG
 Grouping
 Create subgroups of tuples before summarizing
 To select entire groups, HAVING clause is used
 Aggregate functions can be used in the SELECT
clause or in a HAVING clause
Slide 7- 25
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Renaming Results of Aggregation
 Following query returns a single row of computed values
from EMPLOYEE table:
Q19: SELECT SUM (Salary), MAX (Salary), MIN (Salary),
AVG (Salary)
FROM EMPLOYEE;
 The result can be presented with new names:
Q19A: SELECT SUM (Salary) AS Total_Sal, MAX (Salary)
AS Highest_Sal, MIN (Salary) AS Lowest_Sal,
AVG (Salary) AS Average_Sal
FROM EMPLOYEE;
Slide 7- 26
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Aggregate Functions in SQL (cont’d.)
 NULL values are discarded when aggregate
functions are applied to a particular column
Slide 7- 27
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Aggregate Functions on Booleans
 SOME and ALL may be applied as functions on
Boolean Values.
 SOME returns true if at least one element in the
collection is TRUE (similar to OR)
 ALL returns true if all of the elements in the
collection are TRUE (similar to AND)
Slide 7- 28
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Grouping: The GROUP BY Clause
 Partition relation into subsets of tuples
 Based on grouping attribute(s)
 Apply function to each such group independently
 GROUP BY clause
 Specifies grouping attributes
 COUNT (*) counts the number of rows in the
group
Slide 7- 29
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Examples of GROUP BY
 The grouping attribute must appear in the SELECT clause:
Q24: SELECT Dno, COUNT (*), AVG (Salary)
FROM EMPLOYEE
GROUP BY Dno;
 If the grouping attribute has NULL as a possible value,
then a separate group is created for the null value (e.g.,
null Dno in the above query)
 GROUP BY may be applied to the result of a JOIN:
Q25: SELECTPnumber, Pname, COUNT (*)
FROM PROJECT, WORKS_ON
WHERE Pnumber=Pno
GROUP BY Pnumber, Pname;
Slide 7- 30
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Grouping: The GROUP BY and
HAVING Clauses (cont’d.)
 HAVING clause
 Provides a condition to select or reject an entire
group:
 Query 26. For each project on which more than two employees work,
retrieve the project number, the project name, and the number of
employees who work on the project.
Q26: SELECT Pnumber, Pname, COUNT (*)
FROM PROJECT, WORKS_ON
WHERE Pnumber=Pno
GROUP BY Pnumber, Pname
HAVING COUNT (*) > 2;
Slide 7- 31
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Combining the WHERE and the
HAVING Clause
 Consider the query: we want to count the total number of
employees whose salaries exceed $40,000 in each
department, but only for departments where more than
five employees work.
 INCORRECT QUERY:
SELECT Dno, COUNT (*)
FROM EMPLOYEE
WHERE Salary>40000
GROUP BY Dno
HAVING COUNT (*) > 5;
Slide 7- 32
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Combining the WHERE and the
HAVING Clause (continued)
Correct Specification of the Query:
Note: the WHERE clause applies tuple by tuple
whereas HAVING applies to entire group of tuples
Slide 7- 33
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Use of WITH
 The WITH clause allows a user to define a table
that will only be used in a particular query (not
available in all SQL implementations)
 Used for convenience to create a temporary
“View” and use that immediately in a query
 Allows a more straightforward way of looking a
step-by-step query
Slide 7- 34
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Example of WITH
 See an alternate approach to doing Q28:
 Q28’: WITH BIGDEPTS (Dno) AS
( SELECT Dno
FROM EMPLOYEE
GROUP BY Dno
HAVING COUNT (*) > 5)
SELECT Dno, COUNT (*)
FROM EMPLOYEE
WHERE Salary>40000 AND Dno IN BIGDEPTS
GROUP BY Dno;
Slide 7- 35
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Use of CASE
 SQL also has a CASE construct
 Used when a value can be different based on
certain conditions.
 Can be used in any part of an SQL query where a
value is expected
 Applicable when querying, inserting or updating
tuples
Slide 7- 36
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
EXAMPLE of use of CASE
 The following example shows that employees are
receiving different raises in different departments
(A variation of the update U6)
 U6’: UPDATE EMPLOYEE
SET Salary =
CASE WHEN Dno = 5THEN Salary + 2000
WHEN Dno = 4THEN Salary + 1500
WHEN Dno = 1THEN Salary + 3000
Slide 7- 37
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Recursive Queries in SQL
 An example of a recursive relationship between
tuples of the same type is the relationship
between an employee and a supervisor.
 This relationship is described by the foreign key
Super_ssn of the EMPLOYEE relation
 An example of a recursive operation is to retrieve all supervisees of
a supervisory employee e at all levels—that is, all employees e
directly supervised by e, all employees e’ directly supervised by each
employee e, all employees e directly supervised by each employee
e, and so on. Thus the CEO would have each employee in the
company as a supervisee in the resulting table. Example shows such
table SUP_EMP with 2 columns (Supervisor,Supervisee(any level)):
Slide 7- 38
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
An EXAMPLE of RECURSIVE Query
 Q29: WITH RECURSIVE SUP_EMP (SupSsn, EmpSsn) AS
SELECT SupervisorSsn, Ssn
FROM EMPLOYEE
UNION
SELECT E.Ssn, S.SupSsn
FROM EMPLOYEE AS E, SUP_EMP AS S
WHERE E.SupervisorSsn = S.EmpSsn)
SELECT *
FROM SUP_EMP;
 The above query starts with an empty SUP_EMP and
successively builds SUP_EMP table by computing immediate
supervisees first, then second level supervisees, etc. until a
fixed point is reached and no more supervisees can be added
Slide 7- 39
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
EXPANDED Block Structure of SQL
Queries
Slide 7- 40
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Specifying Constraints as Assertions
and Actions as Triggers
 Semantic Constraints: The following are beyond
the scope of the EER and relational model
 CREATE ASSERTION
 Specify additional types of constraints outside
scope of built-in relational model constraints
 CREATE TRIGGER
 Specify automatic actions that database system
will perform when certain events and conditions
occur
Slide 7- 41
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Specifying General Constraints as
Assertions in SQL
 CREATE ASSERTION
 Specify a query that selects any tuples that violate
the desired condition
 Use only in cases where it goes beyond a simple
CHECK which applies to individual attributes and
domains
Slide 7- 42
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Introduction to Triggers in SQL
 CREATE TRIGGER statement
 Used to monitor the database
 Typical trigger has three components which make
it a rule for an “active database “ (more on active
databases in section 26.1) :
 Event(s)
 Condition
 Action
Slide 7- 43
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
USE OF TRIGGERS
 AN EXAMPLE with standard Syntax.(Note : other
SQL implementations like PostgreSQL use a
different syntax.)
R5:
CREATE TRIGGER SALARY_VIOLATION
BEFORE INSERT OR UPDATE OF Salary, Supervisor_ssn ON
EMPLOYEE
FOR EACH ROW
WHEN (NEW.SALARY > ( SELECT Salary FROM EMPLOYEE
WHERE Ssn = NEW. Supervisor_Ssn))
INFORM_SUPERVISOR (NEW.Supervisor.Ssn, New.Ssn)
Slide 7- 44
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Views (Virtual Tables) in SQL
 Concept of a view in SQL
 Single table derived from other tables called the
defining tables
 Considered to be a virtual table that is not
necessarily populated
Slide 7- 45
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Specification of Views in SQL
 CREATE VIEW command
 Give table name, list of attribute names, and a query to
specify the contents of the view
 In V1, attributes retain the names from base tables. In
V2, attributes are assigned names
Slide 7- 46
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Specification of Views in SQL
(cont’d.)
 Once a View is defined, SQL queries can use the
View relation in the FROM clause
 View is always up-to-date
 Responsibility of the DBMS and not the user
 DROP VIEW command
 Dispose of a view
Slide 7- 47
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
View Implementation, View Update,
and Inline Views
 Complex problem of efficiently implementing a
view for querying
 Strategy1: Query modification approach
 Compute the view as and when needed. Do not
store permanently
 Modify view query into a query on underlying base
tables
 Disadvantage: inefficient for views defined via
complex queries that are time-consuming to
execute
Slide 7- 48
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
View Materialization
 Strategy 2: View materialization
 Physically create a temporary view table when the view
is first queried
 Keep that table on the assumption that other queries
on the view will follow
 Requires efficient strategy for automatically updating
the view table when the base tables are updated
 Incremental update strategy for materialized views
 DBMS determines what new tuples must be inserted,
deleted, or modified in a materialized view table
Slide 7- 49
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
View Materialization (contd.)
 Multiple ways to handle materialization:
 immediate update strategy updates a view as
soon as the base tables are changed
 lazy update strategy updates the view when
needed by a view query
 periodic update strategy updates the view
periodically (in the latter strategy, a view query
may get a result that is not up-to-date). This is
commonly used in Banks, Retail store operations,
etc.
Slide 7- 50
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
View Update
 Update on a view defined on a single table without any
aggregate functions
 Can be mapped to an update on underlying base table-
possible if the primary key is preserved in the view
 Update not permitted on aggregate views. E.g.,
UV2: UPDATE DEPT_INFO
SET Total_sal=100000
WHERE Dname=‘Research’;
cannot be processed because Total_sal is a computed value
in the view definition
Slide 7- 51
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
 View involving joins

Often not possible for DBMS to determine which of the
updates is intended
 Clause WITH CHECK OPTION

Must be added at the end of the view definition if a view is to
be updated to make sure that tuples being updated stay in
the view
 In-line view

Defined in the FROM clause of an SQL query (e.g., we saw
its used in the WITH example)
View Update and Inline Views
Slide 7- 52
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Views as authorization mechanism
 SQL query authorization statements (GRANT and
REVOKE) are described in detail in Chapter 30
 Views can be used to hide certain attributes or
tuples from unauthorized users
 E.g., For a user who is only allowed to see
employee information for those who work for
department 5, he may only access the view
DEPT5EMP:
CREATE VIEW DEPT5EMP AS
SELECT*
FROM EMPLOYEE
WHERE Dno = 5;
Slide 7- 53
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Schema Change Statements in SQL
 Schema evolution commands
 DBA may want to change the schema while the
database is operational
 Does not require recompilation of the database
schema
Slide 7- 54
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
The DROP Command
 DROP command
 Used to drop named schema elements, such as
tables, domains, or constraint
 Drop behavior options:
 CASCADE and RESTRICT
 Example:
 DROP SCHEMA COMPANY CASCADE;
 This removes the schema and all its elements
including tables,views, constraints, etc.
Slide 7- 55
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
The ALTER table command
 Alter table actions include:
 Adding or dropping a column (attribute)
 Changing a column definition
 Adding or dropping table constraints
 Example:
 ALTER TABLE COMPANY.EMPLOYEE ADD
COLUMN Job VARCHAR(12);
Slide 7- 56
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Adding and Dropping Constraints
 Change constraints specified on a table
 Add or drop a named constraint
Slide 7- 57
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Dropping Columns, Default Values
 To drop a column
 Choose either CASCADE or RESTRICT
 CASCADE would drop the column from views etc.
RESTRICT is possible if no views refer to it.
ALTER TABLE COMPANY.EMPLOYEE DROP COLUMN
Address CASCADE;
 Default values can be dropped and altered :
ALTER TABLE COMPANY.DEPARTMENT ALTER COLUMN Mgr_ssn
DROP DEFAULT;
ALTER TABLE COMPANY.DEPARTMENT ALTER COLUMN Mgr_ssn SET
DEFAULT ‘333445555’;
Slide 7- 58
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Table 7.2 Summary of SQL
Syntax
continued on next slide
Slide 7- 59
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Table 7.2 (continued)
Summary of SQL Syntax
Slide 7- 60
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
Summary
 Complex SQL:
 Nested queries, joined tables (in the FROM clause),
outer joins, aggregate functions, grouping
 Handling semantic constraints with CREATE
ASSERTION and CREATE TRIGGER
 CREATE VIEW statement and materialization
strategies
 Schema Modification for the DBAs using ALTER
TABLE , ADD and DROP COLUMN, ALTER
CONSTRAINT etc.
Slide 7- 61

More Related Content

PPTX
relational algebra (joins)
PPT
Chapter06.ppt
PPTX
Chapter-5 The Relational Data Model
PPTX
Functions in php
PDF
3 data modeling using the entity-relationship (er) model
PPTX
3 Level Architecture
PPTX
Chapter-7 Relational Calculus
relational algebra (joins)
Chapter06.ppt
Chapter-5 The Relational Data Model
Functions in php
3 data modeling using the entity-relationship (er) model
3 Level Architecture
Chapter-7 Relational Calculus

What's hot (20)

PPTX
Degree of relationship set
PPT
relAlgebra.ppt
PPTX
set operators.pptx
PDF
Final exam in advance dbms
PDF
Relational algebra in dbms
PPT
Using the set operators
PPT
Relational algebra in dbms
PPTX
Relational algebra (basics)
PPTX
structured query language elmarsi and navathe edition 7th SQL Chapter06.pptx
PDF
Integrity constraints in dbms
PPT
Joins in SQL
PPTX
Function in PL/SQL
PPT
Inheritance in java
PPT
ER Diagram
PPTX
Access specifier
PPT
PPT
Database schema architecture.ppt
PPT
Dbms ii mca-ch7-sql-2013
Degree of relationship set
relAlgebra.ppt
set operators.pptx
Final exam in advance dbms
Relational algebra in dbms
Using the set operators
Relational algebra in dbms
Relational algebra (basics)
structured query language elmarsi and navathe edition 7th SQL Chapter06.pptx
Integrity constraints in dbms
Joins in SQL
Function in PL/SQL
Inheritance in java
ER Diagram
Access specifier
Database schema architecture.ppt
Dbms ii mca-ch7-sql-2013
Ad

Similar to Chapter07 database system in computer.ppt (20)

PPT
Module 3 Part I - Bk1 Chapter 07.ppt
PPT
sql ppt of nitj. Jalandhar proffersor mes shefali
PDF
5 the relational algebra and calculus
PPT
relation algebra unit ii notes and their queries
PPT
Database systemhe Relational Alge. goodbra.
PDF
Database management system chapter eigei
PPTX
Chapter 08.pptx
PPT
relational algebra IN DATABASE MANAGEMENT SYSTEM COURSE FOR 4TH SEM VTU
PPT
Sql (DBMS)
PPT
Modules 1basic-sql.ppt for engineering dbms
PPTX
relalgebra-220717082803-22f6cf31_2 - Copy.pptx
PDF
Ch05
PPTX
SQL database management System a brief intro
PPTX
SQL.pptx
PPT
Chapter 5: Database superclass, subclass
PPTX
Relational Algebra.pptx for Module four
PPT
sql statement
PPT
ndnbfgdfgdfgModel and Relational Database Constraints.ppt
PPT
vdocuments.net_copyright-2007-ramez-elmasri-and-shamkant-b-navathe-slide-7-1.ppt
PPT
Chapter08
Module 3 Part I - Bk1 Chapter 07.ppt
sql ppt of nitj. Jalandhar proffersor mes shefali
5 the relational algebra and calculus
relation algebra unit ii notes and their queries
Database systemhe Relational Alge. goodbra.
Database management system chapter eigei
Chapter 08.pptx
relational algebra IN DATABASE MANAGEMENT SYSTEM COURSE FOR 4TH SEM VTU
Sql (DBMS)
Modules 1basic-sql.ppt for engineering dbms
relalgebra-220717082803-22f6cf31_2 - Copy.pptx
Ch05
SQL database management System a brief intro
SQL.pptx
Chapter 5: Database superclass, subclass
Relational Algebra.pptx for Module four
sql statement
ndnbfgdfgdfgModel and Relational Database Constraints.ppt
vdocuments.net_copyright-2007-ramez-elmasri-and-shamkant-b-navathe-slide-7-1.ppt
Chapter08
Ad

More from ubaidullah75790 (20)

PPTX
Chapter20 transaction processing system .pptx
PPTX
Chapter22 database security in dbms.pptx
PPTX
Chapter27 distributed database syst.pptx
PPTX
File Organization in database management.pptx
PPTX
transaction processing databse management.pptx
PPT
physical database design distributed .ppt
PPT
module03-ipaddr ipv6 addressing in net.ppt
PPT
PDBD- Part2 physical database design.ppt
PPT
Physical_Design system development life.PPT
PPT
S3 application and network attacks in.ppt
PPT
Chapter 5 cyber security in computer.ppt
PPTX
1606802425-dba-w7 database management.pptx
PPT
ENCh18 database management system ss.ppt
PPT
Chapter05 database sytem in computer . ppt
PPT
Chapter04 database system in computer.ppt
PPT
Chapter03 database system in computer.ppt
PPT
Chapter02 database system in computer.ppt
PPT
Chapter01 database system in computer.ppt
PPT
MYCH8 database management system in .ppt
PPT
ch1 database management system in data.ppt
Chapter20 transaction processing system .pptx
Chapter22 database security in dbms.pptx
Chapter27 distributed database syst.pptx
File Organization in database management.pptx
transaction processing databse management.pptx
physical database design distributed .ppt
module03-ipaddr ipv6 addressing in net.ppt
PDBD- Part2 physical database design.ppt
Physical_Design system development life.PPT
S3 application and network attacks in.ppt
Chapter 5 cyber security in computer.ppt
1606802425-dba-w7 database management.pptx
ENCh18 database management system ss.ppt
Chapter05 database sytem in computer . ppt
Chapter04 database system in computer.ppt
Chapter03 database system in computer.ppt
Chapter02 database system in computer.ppt
Chapter01 database system in computer.ppt
MYCH8 database management system in .ppt
ch1 database management system in data.ppt

Recently uploaded (20)

PDF
Mark Klimek Lecture Notes_240423 revision books _173037.pdf
PDF
FourierSeries-QuestionsWithAnswers(Part-A).pdf
PDF
Open folder Downloads.pdf yes yes ges yes
PPTX
Microbial diseases, their pathogenesis and prophylaxis
PDF
2.FourierTransform-ShortQuestionswithAnswers.pdf
PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
PDF
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
PPTX
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
PPTX
UNDER FIVE CLINICS OR WELL BABY CLINICS.pptx
PPTX
Open Quiz Monsoon Mind Game Final Set.pptx
PPTX
Pharmacology of Heart Failure /Pharmacotherapy of CHF
PDF
102 student loan defaulters named and shamed – Is someone you know on the list?
PDF
Origin of periodic table-Mendeleev’s Periodic-Modern Periodic table
PDF
English Language Teaching from Post-.pdf
PPTX
Renaissance Architecture: A Journey from Faith to Humanism
PPTX
Pharma ospi slides which help in ospi learning
PPTX
COMPUTERS AS DATA ANALYSIS IN PRECLINICAL DEVELOPMENT.pptx
PDF
TR - Agricultural Crops Production NC III.pdf
PPTX
Open Quiz Monsoon Mind Game Prelims.pptx
PDF
STATICS OF THE RIGID BODIES Hibbelers.pdf
Mark Klimek Lecture Notes_240423 revision books _173037.pdf
FourierSeries-QuestionsWithAnswers(Part-A).pdf
Open folder Downloads.pdf yes yes ges yes
Microbial diseases, their pathogenesis and prophylaxis
2.FourierTransform-ShortQuestionswithAnswers.pdf
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
UNDER FIVE CLINICS OR WELL BABY CLINICS.pptx
Open Quiz Monsoon Mind Game Final Set.pptx
Pharmacology of Heart Failure /Pharmacotherapy of CHF
102 student loan defaulters named and shamed – Is someone you know on the list?
Origin of periodic table-Mendeleev’s Periodic-Modern Periodic table
English Language Teaching from Post-.pdf
Renaissance Architecture: A Journey from Faith to Humanism
Pharma ospi slides which help in ospi learning
COMPUTERS AS DATA ANALYSIS IN PRECLINICAL DEVELOPMENT.pptx
TR - Agricultural Crops Production NC III.pdf
Open Quiz Monsoon Mind Game Prelims.pptx
STATICS OF THE RIGID BODIES Hibbelers.pdf

Chapter07 database system in computer.ppt

  • 1. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe
  • 2. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe CHAPTER 7 More SQL: Complex Queries, Triggers, Views, and Schema Modification Slide 7- 2
  • 3. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Chapter 7 Outline  More Complex SQL Retrieval Queries  Specifying Semantic Constraints as Assertions and Actions as Triggers  Views (Virtual Tables) in SQL  Schema Modification in SQL Slide 7- 3
  • 4. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe More Complex SQL Retrieval Queries  Additional features allow users to specify more complex retrievals from database:  Nested queries, joined tables, and outer joins (in the FROM clause), aggregate functions, and grouping Slide 7- 4
  • 5. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Comparisons Involving NULL and Three-Valued Logic  Meanings of NULL  Unknown value  Unavailable or withheld value  Not applicable attribute  Each individual NULL value considered to be different from every other NULL value  SQL uses a three-valued logic:  TRUE, FALSE, and UNKNOWN (like Maybe)  NULL = NULL comparison is avoided Slide 7- 5
  • 6. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Comparisons Involving NULL and Three-Valued Logic (cont’d.) Slide 7- 6
  • 7. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Comparisons Involving NULL and Three-Valued Logic (cont’d.)  SQL allows queries that check whether an attribute value is NULL  IS or IS NOT NULL Slide 7- 7
  • 8. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Nested Queries, Tuples, and Set/Multiset Comparisons  Nested queries  Complete select-from-where blocks within WHERE clause of another query  Outer query and nested subqueries  Comparison operator IN  Compares value v with a set (or multiset) of values V  Evaluates to TRUE if v is one of the elements in V Slide 7- 8
  • 9. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Nested Queries (cont’d.) Slide 7- 9
  • 10. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Nested Queries (cont’d.)  Use tuples of values in comparisons  Place them within parentheses Slide 7- 10
  • 11. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe  Use other comparison operators to compare a single value v  = ANY (or = SOME) operator  Returns TRUE if the value v is equal to some value in the set V and is hence equivalent to IN  Other operators that can be combined with ANY (or SOME): >, >=, <, <=, and <>  ALL: value must exceed all values from nested query Nested Queries (cont’d.) Slide 7- 11
  • 12. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Nested Queries (cont’d.)  Avoid potential errors and ambiguities  Create tuple variables (aliases) for all tables referenced in SQL query Slide 7- 12
  • 13. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Correlated Nested Queries  Queries that are nested using the = or IN comparison operator can be collapsed into one single block: E.g., Q16 can be written as:  Q16A: SELECT E.Fname, E.Lname FROM EMPLOYEE AS E, DEPENDENT AS D WHERE E.Ssn=D.Essn AND E.Sex=D.Sex AND E.Fname=D.Dependent_name;  Correlated nested query  Evaluated once for each tuple in the outer query Slide 7- 13
  • 14. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe The EXISTS and UNIQUE Functions in SQL for correlating queries  EXISTS function  Check whether the result of a correlated nested query is empty or not. They are Boolean functions that return a TRUE or FALSE result.  EXISTS and NOT EXISTS  Typically used in conjunction with a correlated nested query  SQL function UNIQUE(Q)  Returns TRUE if there are no duplicate tuples in the result of query Q Slide 7- 14
  • 15. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe USE of EXISTS Q7: SELECT Fname, Lname FROM Employee WHERE EXISTS (SELECT * FROM DEPENDENT WHERE Ssn= Essn) AND EXISTS (SELECT * FROM Department WHERE Ssn= Mgr_Ssn) Slide 7- 15
  • 16. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe USE OF NOT EXISTS To achieve the “for all” (universal quantifier- see Ch.8) effect, we use double negation this way in SQL: Query: List first and last name of employees who work on ALL projects controlled by Dno=5. SELECT Fname, Lname FROM Employee WHERE NOT EXISTS ( (SELECT Pnumber FROM PROJECT WHERE Dno=5) EXCEPT (SELECT Pno FROM WORKS_ON WHERE Ssn= ESsn) The above is equivalent to double negation: List names of those employees for whom there does NOT exist a project managed by department no. 5 that they do NOT work on. Slide 7- 16
  • 17. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Double Negation to accomplish “for all” in SQL  Q3B: SELECT Lname, Fname FROM EMPLOYEE WHERE NOT EXISTS ( SELECT * FROM WORKS_ON B WHERE ( B.Pno IN ( SELECT Pnumber FROM PROJECT WHERE Dnum=5 AND NOT EXISTS (SELECT * FROM WORKS_ON C WHERE C.Essn=Ssn AND C.Pno=B.Pno ))); The above is a direct rendering of: List names of those employees for whom there does NOT exist a project managed by department no. 5 that they do NOT work on. Slide 7- 17
  • 18. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Explicit Sets and Renaming of Attributes in SQL  Can use explicit set of values in WHERE clause Q17: SELECT DISTINCT Essn FROM WORKS_ON WHERE Pno IN (1, 2, 3);  Use qualifier AS followed by desired new name  Rename any attribute that appears in the result of a query Slide 7- 18
  • 19. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Specifying Joined Tables in the FROM Clause of SQL  Joined table  Permits users to specify a table resulting from a join operation in the FROM clause of a query  The FROM clause in Q1A  Contains a single joined table. JOIN may also be called INNER JOIN Slide 7- 19
  • 20. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Different Types of JOINed Tables in SQL  Specify different types of join  NATURAL JOIN  Various types of OUTER JOIN (LEFT, RIGHT, FULL )  NATURAL JOIN on two relations R and S  No join condition specified  Is equivalent to an implicit EQUIJOIN condition for each pair of attributes with same name from R and S Slide 7- 20
  • 21. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe NATURAL JOIN  Rename attributes of one relation so it can be joined with another using NATURAL JOIN: Q1B: SELECT Fname, Lname, Address FROM (EMPLOYEE NATURAL JOIN (DEPARTMENT AS DEPT (Dname, Dno, Mssn, Msdate))) WHERE Dname=‘Research’; The above works with EMPLOYEE.Dno = DEPT.Dno as an implicit join condition Slide 7- 21
  • 22. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe INNER and OUTER Joins  INNER JOIN (versus OUTER JOIN)  Default type of join in a joined table  Tuple is included in the result only if a matching tuple exists in the other relation  LEFT OUTER JOIN  Every tuple in left table must appear in result  If no matching tuple  Padded with NULL values for attributes of right table  RIGHT OUTER JOIN  Every tuple in right table must appear in result  If no matching tuple  Padded with NULL values for attributes of left table Slide 7- 22
  • 23. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Example: LEFT OUTER JOIN SELECT E.Lname AS Employee_Name S.Lname AS Supervisor_Name FROM Employee AS E LEFT OUTER JOIN EMPLOYEE AS S ON E.Super_ssn = S.Ssn) ALTERNATE SYNTAX: SELECT E.Lname , S.Lname FROM EMPLOYEE E, EMPLOYEE S WHERE E.Super_ssn + = S.Ssn Slide 7- 23
  • 24. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Multiway JOIN in the FROM clause  FULL OUTER JOIN – combines result if LEFT and RIGHT OUTER JOIN  Can nest JOIN specifications for a multiway join: Q2A: SELECT Pnumber, Dnum, Lname, Address, Bdate FROM ((PROJECT JOIN DEPARTMENT ON Dnum=Dnumber) JOIN EMPLOYEE ON Mgr_ssn=Ssn) WHERE Plocation=‘Stafford’; Slide 7- 24
  • 25. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Aggregate Functions in SQL  Used to summarize information from multiple tuples into a single-tuple summary  Built-in aggregate functions  COUNT, SUM, MAX, MIN, and AVG  Grouping  Create subgroups of tuples before summarizing  To select entire groups, HAVING clause is used  Aggregate functions can be used in the SELECT clause or in a HAVING clause Slide 7- 25
  • 26. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Renaming Results of Aggregation  Following query returns a single row of computed values from EMPLOYEE table: Q19: SELECT SUM (Salary), MAX (Salary), MIN (Salary), AVG (Salary) FROM EMPLOYEE;  The result can be presented with new names: Q19A: SELECT SUM (Salary) AS Total_Sal, MAX (Salary) AS Highest_Sal, MIN (Salary) AS Lowest_Sal, AVG (Salary) AS Average_Sal FROM EMPLOYEE; Slide 7- 26
  • 27. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Aggregate Functions in SQL (cont’d.)  NULL values are discarded when aggregate functions are applied to a particular column Slide 7- 27
  • 28. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Aggregate Functions on Booleans  SOME and ALL may be applied as functions on Boolean Values.  SOME returns true if at least one element in the collection is TRUE (similar to OR)  ALL returns true if all of the elements in the collection are TRUE (similar to AND) Slide 7- 28
  • 29. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Grouping: The GROUP BY Clause  Partition relation into subsets of tuples  Based on grouping attribute(s)  Apply function to each such group independently  GROUP BY clause  Specifies grouping attributes  COUNT (*) counts the number of rows in the group Slide 7- 29
  • 30. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Examples of GROUP BY  The grouping attribute must appear in the SELECT clause: Q24: SELECT Dno, COUNT (*), AVG (Salary) FROM EMPLOYEE GROUP BY Dno;  If the grouping attribute has NULL as a possible value, then a separate group is created for the null value (e.g., null Dno in the above query)  GROUP BY may be applied to the result of a JOIN: Q25: SELECTPnumber, Pname, COUNT (*) FROM PROJECT, WORKS_ON WHERE Pnumber=Pno GROUP BY Pnumber, Pname; Slide 7- 30
  • 31. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Grouping: The GROUP BY and HAVING Clauses (cont’d.)  HAVING clause  Provides a condition to select or reject an entire group:  Query 26. For each project on which more than two employees work, retrieve the project number, the project name, and the number of employees who work on the project. Q26: SELECT Pnumber, Pname, COUNT (*) FROM PROJECT, WORKS_ON WHERE Pnumber=Pno GROUP BY Pnumber, Pname HAVING COUNT (*) > 2; Slide 7- 31
  • 32. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Combining the WHERE and the HAVING Clause  Consider the query: we want to count the total number of employees whose salaries exceed $40,000 in each department, but only for departments where more than five employees work.  INCORRECT QUERY: SELECT Dno, COUNT (*) FROM EMPLOYEE WHERE Salary>40000 GROUP BY Dno HAVING COUNT (*) > 5; Slide 7- 32
  • 33. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Combining the WHERE and the HAVING Clause (continued) Correct Specification of the Query: Note: the WHERE clause applies tuple by tuple whereas HAVING applies to entire group of tuples Slide 7- 33
  • 34. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Use of WITH  The WITH clause allows a user to define a table that will only be used in a particular query (not available in all SQL implementations)  Used for convenience to create a temporary “View” and use that immediately in a query  Allows a more straightforward way of looking a step-by-step query Slide 7- 34
  • 35. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Example of WITH  See an alternate approach to doing Q28:  Q28’: WITH BIGDEPTS (Dno) AS ( SELECT Dno FROM EMPLOYEE GROUP BY Dno HAVING COUNT (*) > 5) SELECT Dno, COUNT (*) FROM EMPLOYEE WHERE Salary>40000 AND Dno IN BIGDEPTS GROUP BY Dno; Slide 7- 35
  • 36. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Use of CASE  SQL also has a CASE construct  Used when a value can be different based on certain conditions.  Can be used in any part of an SQL query where a value is expected  Applicable when querying, inserting or updating tuples Slide 7- 36
  • 37. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe EXAMPLE of use of CASE  The following example shows that employees are receiving different raises in different departments (A variation of the update U6)  U6’: UPDATE EMPLOYEE SET Salary = CASE WHEN Dno = 5THEN Salary + 2000 WHEN Dno = 4THEN Salary + 1500 WHEN Dno = 1THEN Salary + 3000 Slide 7- 37
  • 38. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Recursive Queries in SQL  An example of a recursive relationship between tuples of the same type is the relationship between an employee and a supervisor.  This relationship is described by the foreign key Super_ssn of the EMPLOYEE relation  An example of a recursive operation is to retrieve all supervisees of a supervisory employee e at all levels—that is, all employees e directly supervised by e, all employees e’ directly supervised by each employee e, all employees e directly supervised by each employee e, and so on. Thus the CEO would have each employee in the company as a supervisee in the resulting table. Example shows such table SUP_EMP with 2 columns (Supervisor,Supervisee(any level)): Slide 7- 38
  • 39. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe An EXAMPLE of RECURSIVE Query  Q29: WITH RECURSIVE SUP_EMP (SupSsn, EmpSsn) AS SELECT SupervisorSsn, Ssn FROM EMPLOYEE UNION SELECT E.Ssn, S.SupSsn FROM EMPLOYEE AS E, SUP_EMP AS S WHERE E.SupervisorSsn = S.EmpSsn) SELECT * FROM SUP_EMP;  The above query starts with an empty SUP_EMP and successively builds SUP_EMP table by computing immediate supervisees first, then second level supervisees, etc. until a fixed point is reached and no more supervisees can be added Slide 7- 39
  • 40. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe EXPANDED Block Structure of SQL Queries Slide 7- 40
  • 41. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Specifying Constraints as Assertions and Actions as Triggers  Semantic Constraints: The following are beyond the scope of the EER and relational model  CREATE ASSERTION  Specify additional types of constraints outside scope of built-in relational model constraints  CREATE TRIGGER  Specify automatic actions that database system will perform when certain events and conditions occur Slide 7- 41
  • 42. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Specifying General Constraints as Assertions in SQL  CREATE ASSERTION  Specify a query that selects any tuples that violate the desired condition  Use only in cases where it goes beyond a simple CHECK which applies to individual attributes and domains Slide 7- 42
  • 43. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Introduction to Triggers in SQL  CREATE TRIGGER statement  Used to monitor the database  Typical trigger has three components which make it a rule for an “active database “ (more on active databases in section 26.1) :  Event(s)  Condition  Action Slide 7- 43
  • 44. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe USE OF TRIGGERS  AN EXAMPLE with standard Syntax.(Note : other SQL implementations like PostgreSQL use a different syntax.) R5: CREATE TRIGGER SALARY_VIOLATION BEFORE INSERT OR UPDATE OF Salary, Supervisor_ssn ON EMPLOYEE FOR EACH ROW WHEN (NEW.SALARY > ( SELECT Salary FROM EMPLOYEE WHERE Ssn = NEW. Supervisor_Ssn)) INFORM_SUPERVISOR (NEW.Supervisor.Ssn, New.Ssn) Slide 7- 44
  • 45. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Views (Virtual Tables) in SQL  Concept of a view in SQL  Single table derived from other tables called the defining tables  Considered to be a virtual table that is not necessarily populated Slide 7- 45
  • 46. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Specification of Views in SQL  CREATE VIEW command  Give table name, list of attribute names, and a query to specify the contents of the view  In V1, attributes retain the names from base tables. In V2, attributes are assigned names Slide 7- 46
  • 47. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Specification of Views in SQL (cont’d.)  Once a View is defined, SQL queries can use the View relation in the FROM clause  View is always up-to-date  Responsibility of the DBMS and not the user  DROP VIEW command  Dispose of a view Slide 7- 47
  • 48. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe View Implementation, View Update, and Inline Views  Complex problem of efficiently implementing a view for querying  Strategy1: Query modification approach  Compute the view as and when needed. Do not store permanently  Modify view query into a query on underlying base tables  Disadvantage: inefficient for views defined via complex queries that are time-consuming to execute Slide 7- 48
  • 49. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe View Materialization  Strategy 2: View materialization  Physically create a temporary view table when the view is first queried  Keep that table on the assumption that other queries on the view will follow  Requires efficient strategy for automatically updating the view table when the base tables are updated  Incremental update strategy for materialized views  DBMS determines what new tuples must be inserted, deleted, or modified in a materialized view table Slide 7- 49
  • 50. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe View Materialization (contd.)  Multiple ways to handle materialization:  immediate update strategy updates a view as soon as the base tables are changed  lazy update strategy updates the view when needed by a view query  periodic update strategy updates the view periodically (in the latter strategy, a view query may get a result that is not up-to-date). This is commonly used in Banks, Retail store operations, etc. Slide 7- 50
  • 51. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe View Update  Update on a view defined on a single table without any aggregate functions  Can be mapped to an update on underlying base table- possible if the primary key is preserved in the view  Update not permitted on aggregate views. E.g., UV2: UPDATE DEPT_INFO SET Total_sal=100000 WHERE Dname=‘Research’; cannot be processed because Total_sal is a computed value in the view definition Slide 7- 51
  • 52. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe  View involving joins  Often not possible for DBMS to determine which of the updates is intended  Clause WITH CHECK OPTION  Must be added at the end of the view definition if a view is to be updated to make sure that tuples being updated stay in the view  In-line view  Defined in the FROM clause of an SQL query (e.g., we saw its used in the WITH example) View Update and Inline Views Slide 7- 52
  • 53. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Views as authorization mechanism  SQL query authorization statements (GRANT and REVOKE) are described in detail in Chapter 30  Views can be used to hide certain attributes or tuples from unauthorized users  E.g., For a user who is only allowed to see employee information for those who work for department 5, he may only access the view DEPT5EMP: CREATE VIEW DEPT5EMP AS SELECT* FROM EMPLOYEE WHERE Dno = 5; Slide 7- 53
  • 54. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Schema Change Statements in SQL  Schema evolution commands  DBA may want to change the schema while the database is operational  Does not require recompilation of the database schema Slide 7- 54
  • 55. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe The DROP Command  DROP command  Used to drop named schema elements, such as tables, domains, or constraint  Drop behavior options:  CASCADE and RESTRICT  Example:  DROP SCHEMA COMPANY CASCADE;  This removes the schema and all its elements including tables,views, constraints, etc. Slide 7- 55
  • 56. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe The ALTER table command  Alter table actions include:  Adding or dropping a column (attribute)  Changing a column definition  Adding or dropping table constraints  Example:  ALTER TABLE COMPANY.EMPLOYEE ADD COLUMN Job VARCHAR(12); Slide 7- 56
  • 57. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Adding and Dropping Constraints  Change constraints specified on a table  Add or drop a named constraint Slide 7- 57
  • 58. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Dropping Columns, Default Values  To drop a column  Choose either CASCADE or RESTRICT  CASCADE would drop the column from views etc. RESTRICT is possible if no views refer to it. ALTER TABLE COMPANY.EMPLOYEE DROP COLUMN Address CASCADE;  Default values can be dropped and altered : ALTER TABLE COMPANY.DEPARTMENT ALTER COLUMN Mgr_ssn DROP DEFAULT; ALTER TABLE COMPANY.DEPARTMENT ALTER COLUMN Mgr_ssn SET DEFAULT ‘333445555’; Slide 7- 58
  • 59. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Table 7.2 Summary of SQL Syntax continued on next slide Slide 7- 59
  • 60. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Table 7.2 (continued) Summary of SQL Syntax Slide 7- 60
  • 61. Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe Summary  Complex SQL:  Nested queries, joined tables (in the FROM clause), outer joins, aggregate functions, grouping  Handling semantic constraints with CREATE ASSERTION and CREATE TRIGGER  CREATE VIEW statement and materialization strategies  Schema Modification for the DBAs using ALTER TABLE , ADD and DROP COLUMN, ALTER CONSTRAINT etc. Slide 7- 61