Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
9 views18 pages

Nested Correlated Views Examples Dbs

Uploaded by

pimer65876
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)
9 views18 pages

Nested Correlated Views Examples Dbs

Uploaded by

pimer65876
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/ 18

NESTED, CORRELATED QUERIES AND VIEWS FOR DIFFERENT DBs

1. Consider the following schema for a Library Database:

BOOK (Book_id, Title, Publisher_Name, Pub_Year)


BOOK_AUTHORS (Book_id, Author_Name)
PUBLISHER (Name, Address, Phone)
BOOK_COPIES (Book_id, Branch_id, No-of_Copies)
BOOK_LENDING (Book_id, Branch_id, Card_No, Date_Out, Due_Date)
LIBRARY_BRANCH (Branch_id, Branch_Name, Address)

TABLE CREATION Library_DB

CREATE TABLE PUBLISHER


(
NAME VARCHAR2 (20) PRIMARY KEY,
PHONE INTEGER,
ADDRESS VARCHAR2 (20));

CREATE TABLE BOOK


(
BOOK_ID INTEGER PRIMARY KEY,
TITLE VARCHAR2 (20),
PUB_YEAR VARCHAR2 (20),
PUBLISHER_NAME REFERENCES PUBLISHER (NAME) ON DELETE CASCADE);

CREATE TABLE BOOK_AUTHORS


(
AUTHOR_NAME VARCHAR2 (20),
BOOK_ID REFERENCES BOOK (BOOK_ID) ON DELETE CASCADE,
PRIMARY KEY (BOOK_ID, AUTHOR_NAME));

CREATE TABLE LIBRARY_BRANCH


(
BRANCH_ID INTEGER PRIMARY KEY,
BRANCH_NAME VARCHAR2 (50),
ADDRESS VARCHAR2 (50));

CREATE TABLE BOOK_COPIES


(NO_OF_COPIES INTEGER,
BOOK_ID REFERENCES BOOK (BOOK_ID) ON DELETE CASCADE,
BRANCH_ID REFERENCES LIBRARY_BRANCH (BRANCH_ID) ON DELETE
CASCADE,
PRIMARY KEY (BOOK_ID, BRANCH_ID));

CREATE TABLE CARD


(CARD_NO INTEGER PRIMARY KEY);

CREATE TABLE BOOK_LENDING


(DATE_OUT DATE,
DUE_DATE DATE,
BOOK_ID REFERENCES BOOK (BOOK_ID) ON DELETE CASCADE,
BRANCH_ID REFERENCES LIBRARY_BRANCH (BRANCH_ID) ON DELETE
CASCADE,
CARD_NO REFERENCES CARD (CARD_NO) ON DELETE CASCADE,
PRIMARY KEY (BOOK_ID, BRANCH_ID, CARD_NO));

INSERT VALUES Library_DB

INSERT INTO PUBLISHER VALUES ('MCGRAW-HILL', 9989076587, 'BANGALORE');


INSERT INTO PUBLISHER VALUES ('PEARSON', 9889076565, 'NEWDELHI');
INSERT INTO PUBLISHER VALUES ('RANDOM HOUSE', 7455679345, 'HYDRABAD');
INSERT INTO PUBLISHER VALUES ('HACHETTE LIVRE', 8970862340, 'CHENAI');
INSERT INTO PUBLISHER VALUES ('GRUPO PLANETA', 7756120238, 'BANGALORE');
SELECT * FROM PUBLISHER

INSERT INTO BOOK VALUES (1,'DBMS','JAN-2017', 'MCGRAW-HILL');


INSERT INTO BOOK VALUES (2,'ADBMS','JUN-2016', 'MCGRAW-HILL');
INSERT INTO BOOK VALUES (3,'C','SEP-2016', 'PEARSON');
INSERT INTO BOOK VALUES (4,'CG','SEP-2015', 'GRUPO PLANETA');
INSERT INTO BOOK VALUES (5,'OS','MAY-2016', 'PEARSON');
SELECT * FROM BOOK

INSERT INTO BOOK_AUTHORS VALUES ('NAVATHE', 1);


INSERT INTO BOOK_AUTHORS VALUES ('NAVATHE', 2);
INSERT INTO BOOK_AUTHORS VALUES ('TANENBAUM', 3);
INSERT INTO BOOK_AUTHORS VALUES ('EDWARD ANGEL', 4);
INSERT INTO BOOK_AUTHORS VALUES ('GALVIN', 5);
SELECT * FROM BOOK_AUTHORS

INSERT INTO LIBRARY_BRANCH VALUES (10,'RR NAGAR','BANGALORE');


INSERT INTO LIBRARY_BRANCH VALUES (11,'RNSIT','BANGALORE');
INSERT INTO LIBRARY_BRANCH VALUES (12,'RAJAJI NAGAR', 'BANGALORE');
INSERT INTO LIBRARY_BRANCH VALUES (13,'NITTE','MANGALORE');
INSERT INTO LIBRARY_BRANCH VALUES (14,'MANIPAL','UDUPI');
SELECT * FROM LIBRARY_BRANCH

INSERT INTO BOOK_COPIES VALUES (10, 1, 10);


INSERT INTO BOOK_COPIES VALUES (5, 1, 11);
INSERT INTO BOOK_COPIES VALUES (2, 2, 12);
INSERT INTO BOOK_COPIES VALUES (5, 2, 13);
INSERT INTO BOOK_COPIES VALUES (7, 3, 14);
INSERT INTO BOOK_COPIES VALUES (1, 5, 10);
INSERT INTO BOOK_COPIES VALUES (3, 4, 11);
SELECT * FROM BOOK_COPIES

INSERT INTO CARD VALUES (100);


INSERT INTO CARD VALUES (101);
INSERT INTO CARD VALUES (102);
INSERT INTO CARD VALUES (103);
INSERT INTO CARD VALUES (104);
SELECT * FROM CARD

INSERT INTO BOOK_LENDING VALUES ('01-JAN-17','01-JUN-17', 1, 10, 101);


INSERT INTO BOOK_LENDING VALUES ('11-JAN-17','11-MAR-17', 3, 14, 101);
INSERT INTO BOOK_LENDING VALUES ('21-FEB-17','21-APR-17', 2, 13, 101);
INSERT INTO BOOK_LENDING VALUES ('15-MAR-17','15-JUL-17', 4, 11, 101);
INSERT INTO BOOK_LENDING VALUES ('12-APR-17','12-MAY-17', 1, 11, 104);
SELECT * FROM BOOK_LENDING

QUERIES Library DB:

1. Partition the BOOK table based on year of publication. Demonstrate its working with a simple
query using view.

CREATE VIEW V_PUBLICATION AS


SELECT PUB_YEAR
FROM BOOK;

SELECT * FROM V_PUBLICATION

2. Create a view of all books and its number of copies that are currently available in the Library.

CREATE VIEW V_BOOKS AS


SELECT B.BOOK_ID, B.TITLE, C.NO_OF_COPIES
FROM BOOK B, BOOK_COPIES C, LIBRARY_BRANCH L
WHERE B.BOOK_ID=C.BOOK_ID
AND C.BRANCH_ID=L.BRANCH_ID;

SELECT * FROM V_BOOKS

3. Retrieve details of all books in the library – id, title, name of publisher, authors, number
of copies in each branch, etc.

SELECT B.BOOK_ID, B.TITLE, B.PUBLISHER_NAME, A.AUTHOR_NAME,


C.NO_OF_COPIES, L.BRANCH_ID
FROM BOOK B, BOOK_AUTHORS A, BOOK_COPIES C, LIBRARY_BRANCH L
WHERE B.BOOK_ID=A.BOOK_ID
AND B.BOOK_ID=C.BOOK_ID
AND L.BRANCH_ID=C.BRANCH_ID;

4. Get the particulars of borrowers who have borrowed more than 3 books, but from
Jan 2017 to Jun 2017.

SELECT CARD_NO
FROM BOOK_LENDING
WHERE DATE_OUT BETWEEN ’01-JAN-2017’ AND ’01-JUL-2017’
GROUP BY CARD_NO
HAVING COUNT (*)>3;
2. Consider the following schema for Order Database:
SALESMAN (Salesman_id, Name, City, Commission)
CUSTOMER (Customer_id, Cust_Name, City, Grade, Salesman_id)
ORDERS (Ord_No, Purchase_Amt, Ord_Date, Customer_id, Salesman_id)

CREATING TABLES SALES_DB:

CREATE TABLE SALESMAN


(SALESMAN_ID NUMBER (4),
NAME VARCHAR2 (20),
CITY VARCHAR2 (20),
COMMISSION VARCHAR2 (20),
PRIMARY KEY (SALESMAN_ID));

CREATE TABLE CUSTOMER1


(CUSTOMER_ID NUMBER (4),
CUST_NAME VARCHAR2 (20),
CITY VARCHAR2 (20),
GRADE NUMBER (3),
PRIMARY KEY (CUSTOMER_ID),
SALESMAN_ID REFERENCES SALESMAN (SALESMAN_ID) ON DELETE SET NULL);

CREATE TABLE ORDERS


(ORD_NO NUMBER (5),
PURCHASE_AMT NUMBER (10, 2),
ORD_DATE DATE,
PRIMARY KEY (ORD_NO),
CUSTOMER_ID REFERENCES CUSTOMER1 (CUSTOMER_ID) ON DELETE CASCADE,
SALESMAN_ID REFERENCES SALESMAN (SALESMAN_ID) ON DELETE CASCADE);

INSERT INTO SALESMAN VALUES (1000, 'JOHN','BANGALORE','25 %');


INSERT INTO SALESMAN VALUES (2000, 'RAVI','BANGALORE','20 %');
INSERT INTO SALESMAN VALUES (3000, 'KUMAR','MYSORE','15 %');
INSERT INTO SALESMAN VALUES (4000, 'SMITH','DELHI','30 %');
INSERT INTO SALESMAN VALUES (5000, 'HARSHA','HYDRABAD','15 %');

SELECT * FROM SALESMAN

INSERT INTO CUSTOMER1 VALUES (10, 'PREETHI','BANGALORE', 100, 1000);


INSERT INTO CUSTOMER1 VALUES (11, 'VIVEK','MANGALORE', 300, 1000);
INSERT INTO CUSTOMER1 VALUES (12, 'BHASKAR','CHENNAI', 400, 2000);
INSERT INTO CUSTOMER1 VALUES (13, 'CHETHAN','BANGALORE', 200, 2000);
INSERT INTO CUSTOMER1 VALUES (14, 'MAMATHA','BANGALORE', 400, 3000);
SELECT * FROM CUSTOMER1

INSERT INTO ORDERS VALUES (50, 5000, '04-MAY-17', 10, 1000);


INSERT INTO ORDERS VALUES (51, 450, '20-JAN-17', 10, 2000);
INSERT INTO ORDERS VALUES (52, 1000, '24-FEB-17', 13, 2000);
INSERT INTO ORDERS VALUES (53, 3500, '13-APR-17', 14, 3000);
INSERT INTO ORDERS VALUES (54, 550, '09-MAR-17', 12, 2000);
SELECT * FROM ORDERS

QUERIES: ORDERS_DB
1. Count the customers with grades above Bangalore’s average.(CORRELATED QUERY)
SELECT GRADE, COUNT (DISTINCT CUSTOMER_ID)
FROM CUSTOMER1
GROUP BY GRADE
HAVING GRADE > (SELECT AVG(GRADE)
FROM CUSTOMER1
WHERE CITY='BANGALORE');

2. Find the name and numbers of all salesmen who had more than one
customer.(CORRELATED QUERY)

SELECT SALESMAN_ID, NAME


FROM SALESMAN A
WHERE 1 < (SELECT COUNT (*)
FROM CUSTOMER1
WHERE SALESMAN_ID=A.SALESMAN_ID);

3. List all salesmen and indicate those who have and don’t have customers in their cities
(Use UNION operation.)
SELECT SALESMAN.SALESMAN_ID, NAME, CUST_NAME, COMMISSION
FROM SALESMAN, CUSTOMER1
WHERE SALESMAN.CITY = CUSTOMER1.CITY
UNION
SELECT SALESMAN_ID, NAME, 'NO MATCH', COMMISSION
FROM SALESMAN
WHERE NOT CITY = ANY
(SELECT CITY
FROM CUSTOMER1)
ORDER BY 2 DESC;

4. Create a view that finds the salesman who has the customer with the highest order of a
day.
CREATE VIEW ELITSALESMAN AS
SELECT B.ORD_DATE, A.SALESMAN_ID, A.NAME
FROM SALESMAN A, ORDERS B
WHERE A.SALESMAN_ID = B.SALESMAN_ID
AND B.PURCHASE_AMT=(SELECT MAX (PURCHASE_AMT)
FROM ORDERS C
WHERE C.ORD_DATE = B.ORD_DATE);

SELECT * FROM ELITSALESMAN


3. Consider the schema for Company Database:
EMPLOYEE (SSN, Name, Address, Sex, Salary, SuperSSN, DNo)
DEPARTMENT (DNo, DName, MgrSSN, MgrStartDate)
DLOCATION (DNo,DLoc)
PROJECT (PNo, PName, PLocation, DNo)
WORKS_ON (SSN, PNo, Hours)
DEPENDENT(ESSN, DEPENDENT_NAME,SEX,BDATE, RELATIONSHIP)
CREATING TABLES EMPLOYEE _DB

CREATE TABLE employee(


fname varchar2(15) not null,
minit varchar2(1),
lname varchar2(15) not null,
ssn char(9),
bdate date,
address varchar2(30),
sex char,
salary number(10,2),
superssn char(9),
dno number(4),
primary key (ssn),
foreign key (superssn) references employee(ssn)
--foreign key (dno) references department(dno)
);

CREATE TABLE department (


dname varchar2(15) not null,
dnumber number(4),
mgrssn char(9) not null,
mgrstartdate date,
primary key (dnumber),
unique (dname),
foreign key (mgrssn) references employee(ssn)
);

alter table employee add (


foreign key (dno) references department(dnumber)
);

CREATE TABLE dept_locations (


dnumber number(4),
dlocation varchar2(15),
primary key (dnumber,dlocation),
foreign key (dnumber) references department(dnumber)
);

CREATE TABLE project (


pname varchar2(15) not null,
pnumber number(4),
plocation varchar2(15),
dnum number(4) not null,
primary key (pnumber),
unique (pname),
foreign key (dnum) references department(dnumber)
);

CREATE TABLE works_on (


essn char(9),
pno number(4),
hours number(4,1),
primary key (essn,pno),
foreign key (essn) references employee(ssn),
foreign key (pno) references project(pnumber)
);

CREATE TABLE dependent (


essn char(9),
dependent_name varchar2(15),
sex char,
bdate date,
relationship varchar2(8),
primary key (essn,dependent_name),
foreign key (essn) references employee(ssn)
);

INSERTING VALUES SALES_DB

INSERT INTO employee VALUES ('James', 'E', 'Borg',


'888665555', '10-NOV-27', 'Houston,TX', 'M', 55000, null, null);
INSERT INTO employee VALUES ('Frank', 'T', 'Wong',
'333445555', '08-DEC-45', 'Houston,TX', 'M', 40000, '888665555', null);
INSERT INTO employee VALUES ('Jennifer', 'S', 'Wallace',
'987654321', '20-JUN-31', 'Bellaire,TX', 'F', 43000, '888665555', null);

INSERT INTO department VALUES ('Research', 5, '333445555', '22-MAY-78');


INSERT INTO department VALUES ('Administration', 4, '987654321', '01-JAN-85');
INSERT INTO department VALUES ('Headquarters', 1, '888665555', '19-JUN-71');

UPDATE employee SET DNO = 5 WHERE ssn = '333445555';


UPDATE employee SET DNO = 4 WHERE ssn = '987654321';
UPDATE employee SET DNO = 1 WHERE ssn = '888665555';

INSERT INTO employee VALUES ('John', 'B', 'Smith',


'123456789', '09-Jan-55', 'Houston,TX', 'M', 30000, '333445555', 5);
INSERT INTO employee VALUES ('Alicia', 'J', 'Zelaya',
'999887777', '19-JUL-58', 'Spring,TX', 'F', 25000, '987654321', 4);
INSERT INTO employee VALUES ('Ramesh', 'K', 'Narayan',
'666884444', '15-SEP-52', 'Humble,TX', 'M', 38000, '333445555', 5);
INSERT INTO employee VALUES ('Joyce', 'A', 'English',
'453453453', '31-JUL-62', 'Houston, TX', 'F', 25000, '333445555', 5);
INSERT INTO employee VALUES ('Ahmad', 'V', 'Jabbar',
'987987987', '29-MAR-59', 'Houston,TX', 'M', 25000, '987654321', 4);

INSERT INTO project VALUES ('ProductX', 1, 'Bellaire', 5);


INSERT INTO project VALUES ('ProductY', 2, 'Sugarland', 5);
INSERT INTO project VALUES ('ProductZ', 3, 'Houston', 5);
INSERT INTO project VALUES ('Computerization', 10, 'Stafford', 4);
INSERT INTO project VALUES ('Reorganization', 20, 'Houston', 1);
INSERT INTO project VALUES ('Newbenefits', 30, 'Stafford', 4);

INSERT INTO dept_locations VALUES (1, 'Houston');


INSERT INTO dept_locations VALUES (4, 'Stafford');
INSERT INTO dept_locations VALUES (5, 'Bellaire');
INSERT INTO dept_locations VALUES (5, 'Sugarland');
INSERT INTO dept_locations VALUES (5, 'Houston');

INSERT INTO dependent VALUES ('333445555','Alice','F','05-APR-76','Daughter');


INSERT INTO dependent VALUES ('333445555','Theodore','M','25-OCT-73','Son');
INSERT INTO dependent VALUES ('333445555','Joy','F','03-MAY-48','Spouse');
INSERT INTO dependent VALUES ('987654321','Abner','M','29-FEB-32','Spouse');
INSERT INTO dependent VALUES ('123456789','Michael','M','01-JAN-78','Son');
INSERT INTO dependent VALUES ('123456789','Alice','F', '31-DEC-78','Daughter');
INSERT INTO dependent VALUES ('123456789','Elizabeth','F','05-MAY-57','Spouse');

INSERT INTO works_on VALUES ('123456789', 1, 32.5);


INSERT INTO works_on VALUES ('123456789', 2, 7.5);
INSERT INTO works_on VALUES ('666884444', 3, 40.0);
INSERT INTO works_on VALUES ('453453453', 1, 20.0);
INSERT INTO works_on VALUES ('453453453', 2, 20.0);
INSERT INTO works_on VALUES ('333445555', 2, 10.0);
INSERT INTO works_on VALUES ('333445555', 3, 10.0);
INSERT INTO works_on VALUES ('333445555', 10, 10.0);
INSERT INTO works_on VALUES ('333445555', 20, 10.0);
INSERT INTO works_on VALUES ('999887777', 30, 30.0);
INSERT INTO works_on VALUES ('999887777', 10, 10.0);
INSERT INTO works_on VALUES ('987987987', 10, 35.0);
INSERT INTO works_on VALUES ('987987987', 30, 5.0);
INSERT INTO works_on VALUES ('987654321', 30, 20.0);
INSERT INTO works_on VALUES ('987654321', 20, 15.0);
INSERT INTO works_on VALUES ('888665555', 20, null);

QUERIES SALES_DB:

1. Retrieve the names of employees who have no dependents.

SELECT FNAME, LNAME FROM EMPLOYEE


WHERE NOT EXISTS
(SELECT * FROM DEPENDENT WHERE SSN=ESSN)

2. Retrieve the name of each employee who has a dependent with the same first name as
the employee.
SELECT FNAME, LNAME FROM EMPLOYEE
WHERE EXISTS (SELECT * FROM DEPENDENT WHERE SSN=ESSN
AND FNAME=DEPENDENT_NAME)

or

SELECT E.FNAME, E.LNAME FROM EMPLOYEE E, DEPENDENT D


WHERE E.SSN=D.ESSN AND E.FNAME=D.DEPENDENT_NAME

3. Retrieve the names of all employees who have one or more dependents.
SELECT LNAME, FNAME
FROM EMPLOYEE WHERE ((SELECT COUNT (*) FROM DEPENDENT
WHERE SSN=ESSN) ≥ 1);

4. List the names of managers who have least one dependent.


SELECT FNAME, LNAME
FROM EMPLOYEE
WHERE EXISTS (SELECT * FROM DEPENDENT WHERE SSN=ESSN)
AND EXISTS ( SELECT * FROM DEPARTMENT WHERE SSN=MGRSSN );
5. Retrieve the name of each employee who works on all the projects Controlled by
department number 5 (use NOT EXISTS operator).
SELECT E.FNAME, E.LNAME
FROM EMPLOYEE E
WHERE NOT EXISTS((SELECT PNUMBER
FROM PROJECT
WHERE DNUM='5')
MINUS (SELECT PNO
FROM WORKS_ON
WHERE E.SSN=SSN));

BOOK_PUBLISHER_DB

CREATING TABLES BOOK_PUBLISHER:

CREATE TABLE PUBLISHERS


(
PUBID NUMBER(3) CONSTRAINT PUBLISHERS_PK PRIMARY KEY,
PNAME VARCHAR2(30),
EMAIL VARCHAR2(50) CONSTRAINT PUBLISHERS_EMAIL_U UNIQUE,
PHONE VARCHAR2(30)
);
SELECT * FROM PUBLISHERS

CREATE TABLE SUBJECTS


(
SUBID VARCHAR2(5) CONSTRAINT SUBJECTS_PK PRIMARY KEY,
SNAME VARCHAR2(30)
);

CREATE TABLE AUTHORZ


(
AUID NUMBER(5) CONSTRAINT AUTHORZ_PK PRIMARY KEY,
ANAME VARCHAR2(30),
EMAIL VARCHAR2(50) CONSTRAINT AUTHORZ_EMAIL_U UNIQUE,
PHONE VARCHAR2(30)
);
SELECT * FROM AUTHORZ

CREATE TABLE TITLES


(
TITLEID NUMBER(5) CONSTRAINT TITLES_PK PRIMARY KEY,
TITLE VARCHAR2(30),
PUBID NUMBER(3) CONSTRAINT TITLES_PUBID_FK REFERENCES PUBLISHERS(PUBID),
SUBID VARCHAR2(5) CONSTRAINT TITLES_SUBID_FK REFERENCES SUBJECTS(SUBID),
PUBDATE DATE,
COVER CHAR(1) CONSTRAINT TITLES_COVER_CHK CHECK ( COVER IN ('P','H','p','h')),
PRICE NUMBER(4)
);

CREATE TABLE TITLEAUTHORZ


(
TITLEID NUMBER(5) CONSTRAINT TITLESAUTHORZ_TITLEID_FK REFERENCES
TITLES(TITLEID),
AUID NUMBER(5) CONSTRAINT TITLESAUTHORZ_AUTHID_FK REFERENCES
AUTHORZ(AUID),
IMPORTANCE NUMBER(2),
CONSTRAINT TITLESAUTHORZ_PK PRIMARY KEY(TITLEID,AUID)
);
INSERTING VALUES BOOK_PUBLISHER:
INSERT INTO SUBJECTS VALUES ('ORA','ORACLE DATABASE 12c');
INSERT INTO SUBJECTS VALUES ('JAVA','JAVA LANGUAGE');
INSERT INTO SUBJECTS VALUES ('JEE','JAVA ENTEPRISE EDITION');
INSERT INTO SUBJECTS VALUES ('VB','VISUAL BASIC.NET');
INSERT INTO SUBJECTS VALUES ('ASP','ASP.NET');

INSERT INTO PUBLISHERS VALUES (1,'WILLEY','[email protected]','91-23260877');


INSERT INTO PUBLISHERS VALUES (2,'WROX','[email protected]',NULL);
INSERT INTO PUBLISHERS VALUES (3,'TATA MCGRAW-
HILL','[email protected]','91-33333322');
INSERT INTO PUBLISHERS VALUES (4,'TECHMEDIA','[email protected]','91-
33257660');

INSERT INTO AUTHORZ VALUES (101, 'HERBERT SCHILD','[email protected]',NULL);


INSERT INTO AUTHORZ VALUES (102, 'JAMES
GOODWILL','[email protected]',NULL);
INSERT INTO AUTHORZ VALUES (103, 'DAVAID HUNTER','[email protected]',NULL);
INSERT INTO AUTHORZ VALUES (104, 'STEPHEN WALTHER','[email protected]',NULL);
INSERT INTO AUTHORZ VALUES (105, 'KEVIN LONEY','[email protected]',NULL);
INSERT INTO AUTHORZ VALUES (106, 'ED.
ROMANS','[email protected]',NULL);

SELECT * FROM AUTHORZ

INSERT INTO TITLES VALUES (1001,'ASP.NET UNLEASHED',4,'ASP','12-FEB-17','P',540);


INSERT INTO TITLES VALUES (1002,'ORACLE10G COMP. REF.',3,'ORA','10-JAN-17','P',575);
INSERT INTO TITLES VALUES (1003,'MASTERING EJB',1,'JEE','30-DEC-16','H',475);
INSERT INTO TITLES VALUES (1004,'JAVA COMP. REF',3,'JAVA','3-APR-16','P',499);
INSERT INTO TITLES VALUES (1005,'PRO. VB.NET',2,'VB',null,'P',450);

INSERT INTO TITLEAUTHORZ VALUES (1001,101,1);


INSERT INTO TITLEAUTHORZ VALUES (1002,105,1);
INSERT INTO TITLEAUTHORZ VALUES (1002,106,1);
INSERT INTO TITLEAUTHORZ VALUES (1004,101,1);
INSERT INTO TITLEAUTHORZ VALUES (1005,103,1);
INSERT INTO TITLEAUTHORZ VALUES (1005,102,2);
QUERY_PUBLICATION_DB

1. Display the titles for which the price of book is more than the average price of book
published by WILLEY publications.(CORRELATED QUERY)

select TITLE
from TITLES
where PRICE>(
select avg(PRICE)
from TITLES t,PUBLISHERS p
where t.PUBID=p.PUBID and PNAME='WILLEY');

2. Display the 2nd highest priced book from bookstore.(CORRELATED QUERY)

SELECT TITLE FROM TITLES WHERE PRICE =


(SELECT MAX (price)
FROM titles
WHERE price NOT IN(SELECT Max (price) FROM titles))

3. Display the author who has written the costliest book.(CORRELATED QUERY)

SELECT *
FROM AUTHORZ
WHERE AUID IN(
SELECT AUID
FROM TITLEAUTHORZ WHERE
TITLEID IN(SELECT TITLEID FROM TITLES WHERE PRICE =(
SELECT MAX(PRICE)
FROM TITLES )))

4. Display the titles that are written by any author who wrote more than 2 books.

select TITLE
from AUTHORZ a,TITLES t,TITLEAUTHORZ ta
where a.AUID=ta.AUID and t.TITLEID=ta.TITLEID and ANAME in
(select ANAME
from AUTHORZ a,TITLEAUTHORZ ta
where a.AUID=ta.AUID
having count(ANAME)>2
group by ANAME);
Display the titles that are written by any author who wrote more than 1 books.

select TITLE
from AUTHORZ a,TITLES t,TITLEAUTHORZ ta
where a.AUID=ta.AUID and t.TITLEID=ta.TITLEID and ANAME in
(select ANAME
from AUTHORZ a,TITLEAUTHORZ ta
where a.AUID=ta.AUID
having count(ANAME)>1
group by ANAME);

5. Display authors name AND email-id who have written any title with author 'HERBERT
SCHILD'

select DISTINCT ANAME, EMAIL


from AUTHORZ a,TITLES t,TITLEAUTHORZ ta
where a.AUID=ta.AUID and t.TITLEID=ta.TITLEID and TITLE in
(select TITLE
from AUTHORZ a,TITLES t,TITLEAUTHORZ ta
where a.AUID=ta.AUID and t.TITLEID=ta.TITLEID and ANAME=’HERBERT SCHILD’);

6. Display the publishers who published a book on ORACLE but no book on JAVA.

UPDATE TITLES SET PRICE =100 WHERE TITLEID=1006


UPDATE TITLES SET PRICE =80 WHERE TITLEID=1007

SELECT PNAME
FROM PUBLISHERS
WHERE PUBID IN
(select pubid
from titles
where title LIKE '%ORACLE%')
AND PUBID NOT IN
(select pubid
from titles
where title LIKE '%JAVA%')

7. Display the author who has not published any book.

select ANAME
from AUTHORz
where AUID IN
(select AUID from AUTHORz minus select AUID from TITLEAUTHORz);
8. Display the book title and the discounted price, for those books which are written by
KEVIN LONEY SHILD and a 5% discount is given on its purchase.

Select TITLE,(PRICE-PRICE*0.05)
from TITLES t,AUTHORZ a,TITLEAUTHORZ ta
where t.TITLEID=ta.TITLEID and ta.AUID=a.AUID and ANAME=’KEVIN LONEY’;

9. Display the title id of books for which the author details are not known. [use Set Theory
Operator]

select titleid
from titles
minus
select titleid
from titleauthorZ

You might also like