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

DBMS_Mod 4_Part1 (1)

Module 4 covers advanced SQL topics including complex retrieval queries, nested queries, triggers, views, and schema modification. It discusses handling NULL values, using aggregate functions, and the importance of the GROUP BY and HAVING clauses. Additionally, it explains how to create assertions and triggers for semantic constraints, as well as schema change commands like ALTER and DROP.

Uploaded by

nainitharao.b
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
23 views

DBMS_Mod 4_Part1 (1)

Module 4 covers advanced SQL topics including complex retrieval queries, nested queries, triggers, views, and schema modification. It discusses handling NULL values, using aggregate functions, and the importance of the GROUP BY and HAVING clauses. Additionally, it explains how to create assertions and triggers for semantic constraints, as well as schema change commands like ALTER and DROP.

Uploaded by

nainitharao.b
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 51

Module – 4

More SQL: Complex Queries, Triggers, Views,


and Schema Modification
• 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
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
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
Comparisons Involving NULL
and Three-Valued Logic (cont’d.)

Slide 7- 6
Three-Valued
Logic

Slide 1- 6
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
• All examples discussed below refer to the COMPANY database shown
here.
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
Nested Queries (cont’d.)

Make a list of all project numbers for projects that involve


employee Smith either as worker or as a manager of the
department that controls the project:
Nested Queries (cont’d.)

• Use tuples of values in comparisons


• Place them within parentheses
Nested Queries (cont’d.)
• Use other comparison operators to compare a single value v
• = ANY (or = SOME) operator [equivalent to IN]
• Returns TRUE if the value v is equal to some value in the set
• Other operators that can be combined with ANY (or SOME): >, >=, <, <=, and <>
• ALL: value must exceed all values from nested query
General Form of ALL, ANY, SOME

SELECT [column_name ]
FROM [table_name]
WHERE expression operator
{ALL | ANY | SOME} ( subquery )
Nested Queries (cont’d.)

• Avoid potential errors and ambiguities


• Create tuple variables (aliases) for all tables referenced in SQL query
Understanding a nested (correlated query

For each E tuple,


Evaluate the nested query
which retrieves the Essn values of all D tuples
with the same sex and name as E tuple
If the Ssn value of E tuple is in the result,
then select the E tuple
Correlated Nested Queries

• Queries that are nested using the = or IN comparison


operator can be collapsed into one single block:
• 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
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
USE of EXISTS

List the managers who have at least one dependent

Q7:

SELECT Fname, Lname


FROM Employee
WHERE EXISTS (SELECT *
FROM DEPENDENT
WHERE Ssn= Essn)

AND EXISTS (SELECT *


FROM Department
WHERE Ssn= Mgr_Ssn)
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
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
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
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
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
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
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;
Aggregate Functions in SQL (cont’d.)
• NULL values are discarded when aggregate functions are applied to a
particular column
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
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: SELECT Pnumber, Pname, COUNT (*)
FROM PROJECT, WORKS_ON
WHERE Pnumber=Pno
GROUP BY Pnumber, Pname;
Grouping: The GROUP BY and HAVING Clauses

• 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;
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;
Combining the WHERE and the HAVING Clause
Correct Specification of the Query:
• Note: the WHERE clause applies tuple by tuple whereas HAVING
applies to entire group of tuples
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
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 WHENDno = 5 THEN Salary + 2000
WHENDno = 4 THEN Salary + 1500
WHENDno = 1 THEN Salary + 3000
EXPANDED Block Structure of SQL Queries
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
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
• Salary of an employee must be less than the manager
Introduction to Triggers in SQL
• CREATE TRIGGER
• Specify automatic actions that database system will perform
when certain events and conditions occur

• CREATE TRIGGER statement


• Used to monitor the database
• Typical trigger has three components which make it a
rule for an “active database “
• Event(s)
• Condition
• Action
USE OF TRIGGERS

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)
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


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
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
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
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.
• RESTRICT: drops only nothing in it
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);
Adding and Dropping Constraints

• Change constraints specified on a table


• Add or drop a named constraint
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’;
Table 7.2 Summary of SQL
Syntax

continued on next slide


Table 7.2 (continued) Summary
of SQL Syntax
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
• Schema Modification for the DBAs using ALTER TABLE , ADD
and DROP COLUMN, ALTER CONSTRAINT etc.
Thankyou

You might also like