Top Banner
COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick
22

COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick.

Dec 14, 2015

Download

Documents

Faith Redmon
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick.

COP-5725PRACTICE EXERCISES

Chapter 5: Queries, Triggers, Constraints

(up to, but not including aggregation)

M. Amanda Crick

Page 2: COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick.

Exercise 5.2

Problem Consider the following schema

Suppliers(sid: integer, sname: string, address: string)

Parts(pid: integer, pname: string, color: string)

Catalog(sid: integer, pid: integer, cost: real) The Catalog relation lists the prices

charged for parts by Suppliers. Write the following queries in SQL:

Page 3: COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick.

Exercise 5.2

ProblemSuppliers(sid: integer, sname: string, address: string)Parts(pid: integer, pname: string, color: string)Catalog(sid: integer, pid: integer, cost: real)

1. Find the pnames of parts for which there is some supplier.

Page 4: COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick.

Exercise 5.2

Solution for (1)

SELECT DISTINCT P.pnameFROM Parts P, Catalog CWHERE P.pid = C.pid

Page 5: COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick.

Exercise 5.2

ProblemSuppliers(sid: integer, sname: string, address: string)Parts(pid: integer, pname: string, color: string)Catalog(sid: integer, pid: integer, cost: real)

4. Find the pnames of parts supplied by Acme Widget Suppliers and no one else.

Page 6: COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick.

Exercise 5.2

Solution for (4)

SELECT P.pnameFROM Parts P, Catalog C, Suppliers SWHERE P.pid = C.pid AND C.sid = S.sidAND S.sname = ‘Acme Widget Suppliers’AND NOT EXISTS ( SELECT *

FROM Catalog C1, Suppliers S1 WHERE P.pid = C1.pid AND C1.sid = S1.sid AND S1.sname <> ‘Acme Widget Suppliers’ )

Page 7: COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick.

Exercise 5.2

ProblemSuppliers(sid: integer, sname: string, address: string)Parts(pid: integer, pname: string, color: string)Catalog(sid: integer, pid: integer, cost: real)

6. For each part, find the sname of the supplier who charges the most for that part.

Page 8: COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick.

Exercise 5.2

Solution for (6)

SELECT P.pid, S.snameFROM Parts P, Suppliers S, Catalog CWHERE C.pid = P.pidAND C.sid = S.sidAND C.cost >= ALL (SELECT C1.cost)

FROM Catalog C1 WHERE C1.pid = P.pid)

Page 9: COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick.

Exercise 5.2

ProblemSuppliers(sid: integer, sname: string, address: string)Parts(pid: integer, pname: string, color: string)Catalog(sid: integer, pid: integer, cost: real)

8. Find the sids of suppliers who supply a red part and a green part.

Page 10: COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick.

Exercise 5.2

Solution for (8)

SELECT DISTINCT C.sidFROM Catalog C, Parts PWHERE C.pid = P.pid AND P.color = ‘Red’INTERSECTSELECT DISTINCT C1.sidFROM Catalog C1, Parts P1WHERE C1.pid = P1.pid AND P1.color = ‘Green’

Page 11: COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick.

Exercise 5.2

ProblemSuppliers(sid: integer, sname: string, address: string)Parts(pid: integer, pname: string, color: string)Catalog(sid: integer, pid: integer, cost: real)

9. Find the sids of suppliers who supply a red part or a green part.

Page 12: COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick.

Exercise 5.2

Solution for (9)

SELECT DISTINCT C.sidFROM Catalog C, Parts PWHERE C.pid = P.pid AND P.color = ‘Red’UNIONSELECT DISTINCT C1.sidFROM Catalog C1, Parts P1WHERE C1.pid = P1.pid AND P1.color = ‘Green’

Page 13: COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick.

Exercise 5.4

Problem Consider the following relational schema. An

employee can work in more than one department; the pct_time field of the Works relation shows the percentage of time that a given employee works in a given department. Emp(eid: integer, ename: string, age: integer,

salary: real) Works(eid: integer, did: integer, pct_time: integer) Dept(did: integer, dname: string, budget: real,

managerid: integer) Write the following queries in SQL:

Page 14: COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick.

Exercise 5.4

ProblemEmp(eid: integer, ename: string, age: integer, salary:

real)Works(eid: integer, did: integer, pct_time: integer)Dept(did: integer, dname: string, budget: real,

managerid: integer)

1. Print the names and ages of each employee who works in both the Hardware department and the Software department.

Page 15: COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick.

Exercise 5.4

Solution for (1)

SELECT E.ename, E.ageFROM Emp E, Works W1, Works W2, Dept D1, Dept D2WHERE E.eid = W1.eid AND W1.did = D1.did AND D1.dname = ‘Hardware’ AND E.eid = W2.eid AND W2.did = D2.did AND D2.dname = ‘Software’

Page 16: COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick.

Exercise 5.4

ProblemEmp(eid: integer, ename: string, age: integer, salary:

real)Works(eid: integer, did: integer, pct_time: integer)Dept(did: integer, dname: string, budget: real,

managerid: integer)

3. Print the name of each employee whose salary exceeds the budget of all of the departments that he or she works in.

Page 17: COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick.

Exercise 5.4

Solution for (3)

Page 18: COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick.

Exercise 5.4

ProblemEmp(eid: integer, ename: string, age: integer, salary:

real)Works(eid: integer, did: integer, pct_time: integer)Dept(did: integer, dname: string, budget: real,

managerid: integer)

5. Find the enames of managers who manage the departments with the largest budgets.

Page 19: COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick.

Exercise 5.4

Solution for (5)

SELECT E.enameFROM Emp EWHERE E.eid IN (SELECT D.managerid

FROM Dept DWHERE D.budget >= ALL (SELECT D2.budget

FROM Dept D2))

Page 20: COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick.

Exercise 5.4

ProblemEmp(eid: integer, ename: string, age: integer, salary:

real)Works(eid: integer, did: integer, pct_time: integer)Dept(did: integer, dname: string, budget: real,

managerid: integer)

8. Find the enames of managers who manage the departments with the largest budgets.

Page 21: COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick.

Exercise 5.4

Solution for (8)

SELECT M.enameFROM Emp MWHERE M.sid IN (SELECT M2.sid

FROM Emp M2, Dept DWHERE M2.sid = D.managerid AND D.budget

< 5000000EXCEPTSELECT M3.sidFROM Emp M3, Dept D2WHERE M3.sid = D2.managerid ANDD2.budget <= 5000000)

Page 22: COP-5725 PRACTICE EXERCISES Chapter 5: Queries, Triggers, Constraints (up to, but not including aggregation) M. Amanda Crick.

This is the end of the lecture!I hope you enjoyed it.