0% found this document useful (0 votes)
26 views

Module-3 Complex Queries

The document discusses advanced SQL features including more complex queries, triggers, views, and schema modifications. Complex queries allow features like nested queries, joins, outer joins, and aggregation. Triggers allow automatic actions to be performed in response to events. Views define virtual tables derived from other tables. Schema changes allow modifying the structure of tables and databases.

Uploaded by

who knows
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
26 views

Module-3 Complex Queries

The document discusses advanced SQL features including more complex queries, triggers, views, and schema modifications. Complex queries allow features like nested queries, joins, outer joins, and aggregation. Triggers allow automatic actions to be performed in response to events. Views define virtual tables derived from other tables. Schema changes allow modifying the structure of tables and databases.

Uploaded by

who knows
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 40

Chapter 5

More SQL:
Complex
Queries,
Triggers, Views,
and Schema
Modification

Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley


Chapter 5 Outline
 More Complex SQL Retrieval Queries
 Specifying Constraints as Assertions and
Actions as Triggers
 Views (Virtual Tables) in SQL
 Schema Change Statements in SQL

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


More Complex SQL Retrieval
Queries
 Additional features allow users to specify
more complex retrievals from database:
 Nested queries, joined tables, outer joins,
aggregate functions, and grouping

Copyright © 2011 Ramez Elmasri and Shamkant 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

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


Comparisons Involving NULL
and Three-Valued Logic (cont’d.)

Copyright © 2011 Ramez Elmasri and Shamkant 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

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


Nested Queries, Tuples,
and Set/Multiset Comparisons
 Nested queries
 Complete select-from-where blocks within
WHERE clause of another query
 Outer query
 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

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


Nested Queries (cont’d.)

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


Nested Queries (cont’d.)
 Use tuples of values in comparisons
 Place them within parentheses

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


Nested Queries (cont’d.)
 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 <>

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


Nested Queries (cont’d.)
 Avoid potential errors and ambiguities
 Create tuple variables (aliases) for all tables
referenced in SQL query

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


Correlated Nested Queries
 Correlated nested query
 Evaluated once for each tuple in the outer
query

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


The EXISTS and UNIQUE
Functions in SQL
 EXISTS function
 Check whether the result of a correlated
nested query is empty or not
 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

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


Explicit Sets and Renaming of
Attributes in SQL
 Can use explicit set of values in WHERE
clause
 Use qualifier AS followed by desired new
name
 Rename any attribute that appears in the result
of a query

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


Joined Tables in SQL and Outer
Joins
 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

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


Joined Tables in SQL and Outer
Joins (cont’d.)
 Specify different types of join
 NATURAL JOIN
 Various types of OUTER JOIN
 NATURAL JOIN on two relations R and S
 No join condition specified
 Implicit EQUIJOIN condition for each pair of
attributes with same name from R and S

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


Joined Tables in SQL and Outer
Joins (cont’d.)
 Inner 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

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


Joined Tables in SQL and Outer
Joins (cont’d.)
 RIGHT OUTER JOIN
 Every tuple in right table must appear in result
 If no matching tuple
• Padded with NULL values for the attributes of left
table
 FULL OUTER JOIN
 Can nest join specifications

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


Aggregate Functions in SQL
 Used to summarize information from
multiple tuples into a single-tuple summary
 Grouping
 Create subgroups of tuples before
summarizing
 Built-in aggregate functions
 COUNT, SUM, MAX, MIN, and AVG
 Functions can be used in the SELECT
clause or in a HAVING clause
Copyright © 2011 Ramez Elmasri and Shamkant Navathe
Aggregate Functions in SQL
(cont’d.)
 NULL values discarded when aggregate
functions are applied to a particular column

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


Grouping: The GROUP BY and
HAVING Clauses
 Partition relation into subsets of tuples
 Based on grouping attribute(s)
 Apply function to each such group
independently
 GROUP BY clause
 Specifies grouping attributes
 If NULLs exist in grouping attribute
 Separate group created for all tuples with a
NULL value in grouping attribute
Copyright © 2011 Ramez Elmasri and Shamkant Navathe
Grouping: The GROUP BY and
HAVING Clauses (cont’d.)
 HAVING clause
 Provides a condition on the summary
information

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


Discussion and Summary of SQL
Queries

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


Specifying Constraints as
Assertions and Actions as
Triggers
 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

Copyright © 2011 Ramez Elmasri and Shamkant 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 is not possible to
use CHECK on attributes and domains

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


Introduction to Triggers in SQL
 CREATE TRIGGER statement
 Used to monitor the database
 Typical trigger has three components:
 Event(s)
 Condition
 Action
Syntax:
CREATE TRIGGER trigger_name <BEFORE/AFTER
INSERT/UPDATE/DELETE> on table_name for each row <Query>

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


Managing MySQL triggers
•Create triggers – describe steps of how to create a trigger in MySQL.
•Drop triggers – show you how to drop a trigger.
•Create a BEFORE INSERT trigger – show you how to create a BEFORE INSERT trigger to maintain a
summary table from another table.
•Create an AFTER INSERT trigger – describe how to create an AFTER INSERT trigger to insert data into
a table after inserting data into another table.
•Create a BEFORE UPDATE trigger – learn how to create a BEFORE UPDATE trigger that validates data
before it is updated to the table.
•Create an AFTER UPDATE trigger – show you how to create an AFTER UPDATE trigger to log the
changes of data in a table.
•Create a BEFORE DELETE trigger – show how to create a BEFORE DELETE trigger.
•Create an AFTER DELETE trigger – describe how to create an AFTER DELETE trigger.
•Create multiple triggers for a table that have the same trigger event and time – MySQL 8.0 allows
you to define multiple triggers for a table that have the same trigger event and time.
•Show triggers – list triggers in a database, table by specific patterns.
Copyright © 2011 Ramez Elmasri and Shamkant Navathe
Views (Virtual Tables) in SQL
 Concept of a view in SQL
 Single table derived from other tables
 Considered to be a virtual table

Copyright © 2011 Ramez Elmasri and Shamkant 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

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


Specification of Views in SQL
(cont’d.)
 Specify SQL queries on a view
 View always up-to-date
 Responsibility of the DBMS and not the user
 DROP VIEW command
 Dispose of a view

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


View Implementation, View
Update, and Inline Views
 Complex problem of efficiently
implementing a view for querying
 Query modification approach
 Modify view query into a query on underlying
base tables
 Disadvantage: inefficient for views defined via
complex queries that are time-consuming to
execute

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


View Implementation
 View materialization approach
 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

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


View Implementation (cont’d.)
 Incremental update strategies
 DBMS determines what new tuples must be
inserted, deleted, or modified in a materialized
view table

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


View Update and Inline Views
 Update on a view defined on a single table
without any aggregate functions
 Can be mapped to an update on underlying
base table
 View involving joins
 Often not possible for DBMS to determine
which of the updates is intended

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


View Update and Inline Views
(cont’d.)
 Clause WITH CHECK OPTION
 Must be added at the end of the view definition
if a view is to be updated
 In-line view
 Defined in the FROM clause of an SQL query

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


Schema Change Statements in
SQL
 Schema evolution commands
 Can be done while the database is operational
 Does not require recompilation of the database
schema

Copyright © 2011 Ramez Elmasri and Shamkant 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;

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


The ALTER 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);
 To drop a column
 Choose either CASCADE or RESTRICT
Copyright © 2011 Ramez Elmasri and Shamkant Navathe
The ALTER Command (cont’d.)
 Change constraints specified on a table
 Add or drop a named constraint

Copyright © 2011 Ramez Elmasri and Shamkant Navathe


Summary
 Complex SQL:
 Nested queries, joined tables, outer joins,
aggregate functions, grouping
 CREATE ASSERTION and CREATE
TRIGGER
 Views
 Virtual or derived tables

Copyright © 2011 Ramez Elmasri and Shamkant Navathe

You might also like