Presentation is loading. Please wait.

Presentation is loading. Please wait.

Your Logo Fundamentals of Database Systems Fourth Edition El Masri & Navathe Instructor: Mr. Ahmed Al Astal Chapter 8 (Cont.) SQL-99: Schema Definition,

Similar presentations


Presentation on theme: "Your Logo Fundamentals of Database Systems Fourth Edition El Masri & Navathe Instructor: Mr. Ahmed Al Astal Chapter 8 (Cont.) SQL-99: Schema Definition,"— Presentation transcript:

1 Your Logo Fundamentals of Database Systems Fourth Edition El Masri & Navathe Instructor: Mr. Ahmed Al Astal Chapter 8 (Cont.) SQL-99: Schema Definition, Basic Constraints, and Queries

2 Your Logo 2 SQL: USE OF DISTINCT To eliminate duplicate tuples in a query result, the keyword DISTINCT is used For example, the result of Q12 may have duplicate SALARY values whereas Q12A does not have any duplicate values Q12:SELECT SALARY FROMEMPLOYEE Q12A: SELECT DISTINCT SALARY FROMEMPLOYEE

3 Your Logo 3 SET OPERATIONS SQL has directly incorporated some set operations There is a union operation (UNION), and in some versions of SQL there are set difference (MINUS) and intersection (INTERSECT) operations The resulting relations of these set operations are sets of tuples; duplicate tuples are eliminated from the result The set operations apply only to union compatible relations ; the two relations must have the same attributes and the attributes must appear in the same order

4 Your Logo 4 SET OPERATIONS (Cont.) Query 13: Make a list of all project numbers for projects that involve an employee whose last name is 'Smith' as a worker or as a manager of the department that controls the project. (SELECT PNAME FROMPROJECT, DEPARTMENT, EMPLOYEE WHEREDNUM=DNUMBER AND MGRSSN=SSN ANDLNAME='Smith') UNION (SELECT PNAME FROMPROJECT, WORKS_ON, EMPLOYEE WHERE PNUMBER=PNO AND ESSN=SSN ANDLNAME='Smith')

5 Your Logo 5 SET OPERATIONS (Cont.) Query 14: Retrieve the name of each employee who is either a manger or has some dependent. (SELECT FAME, MINIT, LNAME FROMEMPLOYEE, DEARTMENT WHERESSN=MGRSSN') UNION (SELECT FAME, MINIT, LNAME FROMEMPLOYEE, DEPENDENT WHERE SSN=ESSN)

6 Your Logo 6 SET OPERATIONS (Cont.) Query 15: Retrieve the name of each manager who has dependents. (SELECT FAME, MINIT, LNAME FROMEMPLOYEE, DEARTMENT WHERESSN=MGRSSN') INTERSECT (SELECT FAME, MINIT, LNAME FROMEMPLOYEE, DEPENDENT WHERE SSN=ESSN)

7 Your Logo 7 SET OPERATIONS (Cont.) Query 15: Retrieve the name of each manager who has dependents. (SELECT FAME, MINIT, LNAME FROMEMPLOYEE, DEARTMENT WHERESSN=MGRSSN') MINUS (SELECT FAME, MINIT, LNAME FROMEMPLOYEE, DEPENDENT WHERE SSN=ESSN)

8 Your Logo 8 SET OPERATIONS (Cont.) Query 16: Retrieve the name of each employee who has some dependent and not a manger. (SELECT FAME, MINIT, LNAME FROMEMPLOYEE, DEPENDENT WHERE SSN=ESSN) MINUS (SELECT FAME, MINIT, LNAME FROMEMPLOYEE, DEARTMENT WHERESSN=MGRSSN')

9 Your Logo 9 SET OPERATIONS (Cont.) Query 17: Retrieve the names of non manager employees. (SELECT FAME, MINIT, LNAME FROMEMPLOYEE) MINUS (SELECT FAME, MINIT, LNAME FROMEMPLOYEE, DEARTMENT WHERESSN=MGRSSN')

10 Your Logo 10 SET OPERATIONS (Cont.) Query 18: Retrieve the name of departments that don’t have any project located in “Huston”. (SELECT DNAME FROMDEPARTMENT) MINUS (SELECT DNAME FROMDEPARTMENT, PROJECT WHEREDNUMBER=DNUM ANDPLOCATION=“Huston”)

11 Your Logo 11 NESTING OF QUERIES A complete SELECT query, called a nested query, can be specified within the WHERE-clause of another query, called the outer query Many of the previous queries can be specified in an alternative form using nesting. Query 19: Retrieve the name and address of all employees who work for the 'Research' department. SELECTFNAME, LNAME, ADDRESS FROM EMPLOYEE WHEREDNO IN (SELECT DNUMBER FROM DEPARTMENT WHERE DNAME='Research' )

12 Your Logo 12 NESTING OF QUERIES (Cont.) The nested query selects the number of the 'Research' department The outer query select an EMPLOYEE tuple if its DNO value is in the result of either nested query The comparison operator IN compares a value v with a set (or multi-set) of values V, and evaluates to TRUE if v is one of the elements in V In general, we can have several levels of nested queries

13 Your Logo 13 CORRELATED NESTING OF QUERIES If a condition in the WHERE-clause of a nested query references an attribute of a relation declared in the outer query, the two queries are said to be correlated The result of a correlated nested query is different for each tuple (or combination of tuples) of the relation(s) the outer query

14 Your Logo 14 CORRELATED NESTING OF QUERIES Query 20: Retrieve the name of each employee who has a dependent with the same first name as the employee. SELECT E.FNAME, E.LNAME FROMEMPLOYEE AS E WHEREESSN IN (SELECTESSN FROMDEPENDENT WHEREESSN=E.SSN AND E.FNAME=DEPENDENT_NAME)

15 Your Logo 15 NESTING OF QUERIES Query 21: Retrieve the Names of Managers SELECT E.FNAME, MINIT, LNAME FROMEMPLOYEE AS E WHERE ESSN IN (SELECTMGRSSN FROMDEPARTMENT) Query 22: Retrieve the Names of Supervisors SELECT E.FNAME, MINIT, LNAME FROMEMPLOYEE AS E WHERE ESSN IN (SELECTSUPERSSN FROMEMPLOYEE)

16 Your Logo 16 THE EXISTS FUNCTION EXISTS is used to check whether the result of a correlated nested query is empty (contains no tuples) or not We can formulate Query 20in an alternative form that uses EXISTS as Q20A below Query 20A: Retrieve the name of each employee who has a dependent with the same first name as the employee. SELECT FNAME, LNAME FROMEMPLOYEE WHEREEXISTS (SELECT * FROMDEPENDENT WHERESSN=ESSN AND FNAME=DEPENDENT_NAME)

17 Your Logo 17 EXPLICIT SETS It is also possible to use an explicit (enumerated) set of values in the WHERE-clause rather than a nested query. Query 23: Retrieve the social security numbers of all employees who work on project number 1, 2, or 3. SELECT DISTINCT ESSN FROMWORKS_ON WHEREPNO IN (1, 2, 3)

18 Your Logo 18 NULLS IN SQL QUERIES SQL allows queries that check if a value is NULL (missing or undefined or not applicable) SQL uses IS or IS NOT to compare NULLs because it considers each NULL value distinct from other NULL values, so equality comparison is not appropriate. Query 24: Retrieve the names of all employees who do not have supervisors. SELECT FNAME, LNAME FROMEMPLOYEE WHERESUPERSSN IS NULL

19 Your Logo 19 AGGREGATE FUNCTIONS Include COUNT, SUM, MAX, MIN, and AVG Query 25: Find the maximum salary, the minimum salary, and the average salary among all employees. SELECT MAX(SALARY), MIN(SALARY), AVG(SALARY) FROMEMPLOYEE Some SQL implementations may not allow more than one function in the SELECT-clause

20 Your Logo 20 AGGREGATE FUNCTIONS (Cont.) Query 26: Find the maximum salary, the minimum salary, and the average salary among employees who work for the 'Research' department. SELECT MAX(SALARY), MIN(SALARY), AVG(SALARY) FROMEMPLOYEE, DEPARTMENT WHEREDNO=DNUMBER AND DNAME='Research'

21 Your Logo 21 AGGREGATE FUNCTIONS (Cont.) Queries 27: Retrieve the total number of employees in the 'Research' department SELECT COUNT (*) FROMEMPLOYEE, DEPARTMENT WHEREDNO=DNUMBER AND DNAME='Research’

22 Your Logo 22 GROUPING In many cases, we want to apply the aggregate functions to subgroups of tuples in a relation Each subgroup of tuples consists of the set of tuples that have the same value for the grouping attribute(s) The function is applied to each subgroup independently SQL has a GROUP BY-clause for specifying the grouping attributes, which must also appear in the SELECT-clause

23 Your Logo 23 GROUPING (Cont.) Query 28: For each department, retrieve the department number, the number of employees in the department, and their average salary. SELECT DNO, COUNT (*), AVG (SALARY) FROMEMPLOYEE GROUP BYDNO


Download ppt "Your Logo Fundamentals of Database Systems Fourth Edition El Masri & Navathe Instructor: Mr. Ahmed Al Astal Chapter 8 (Cont.) SQL-99: Schema Definition,"

Similar presentations


Ads by Google