Book Publication Database (Sample Queries & Solutions Using Basic Commands)
Book Publication Database (Sample Queries & Solutions Using Basic Commands)
(2022-2023)
▪ DEMONSTRATION: 1
▪ BASIC SQL COMMANDS
▪ BOOK PUBLICATION DATABASE
Book Publication Database
Schema Diagram:
Sample Queries:
1. Display the author who has not published any book
2. Display the titles for which the price of book is more than the average price of
book published by WILLEY publications.
3.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.
4.Retrieve the names of author who have published more than 2 books in the
chronological order.
5. Display the title id of books for which the author details are not known. [use Set
Theory Operator]
6. Retrieve the author name and books written by that author where the author has
email-id but did not have phone number.
7. Display the book title and the discounted price, for those books which are written
by HERBERT SHILD and a 5% discount is given on its purchase.
CREATE TABLES
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)
);
EXAMPLE:
▪ UPDATE Statement
▪ SYNTAX:
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
UPDATE AUTHORS
SET AGE = 18
WHERE roll_no = 101;
UPDATE AUTHORS
SET AGE = 19
WHERE roll_no = 102;
UPDATE AUTHORS
SET AGE = 19
▪ DELETE Statement:
The DELETE statement is used to delete existing records/rows/tuples in a table.
▪ SYNTAX:
DELETE FROM table_name WHERE condition;
EXAMPLE: Deleting all rows from a table DISCOUNTS
DELETE FROM DISCOUNTS;
DELETE
FROM Sales
WHERE stor_id = ‘6380’
▪ SELECT Statement:
▪ SYNTAX:
SELECT column1, column2, ...
FROM table_name;
Syntax:
Example: DISPLAY THE TITLE OF THE BOOKS WHOSE PRICE IS GREATER THAN 500
SELECT *
FROM TITLES
WHERE Price > 500;
JOIN TABLES:
EXAMPLE: DISPLAY THE DETAILS FROM TABLES TITLES AND TITLEAUTHORS
SELECT *
FROM TITLES, TITLEAUTHORS
WHERE TITLES.TITLEID=TITLEAUTHORS.TITLEID;
▪ BETWEEN:
Syntax:
SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2;
EXAMPLE: DISPLAY THE DETAILS OF THE TABLE WHERE THE PRICE EXIST BETWEEN 400 AND 500
EXAMPLE: DISPLAY THE TITLE OF THE BOOK WHOSE PRICE DOES NOT RANGE FROM 450 TO 550
EXAMPLE: DISPLAY THE PUBLISHER AND TITLE OF THE BOOK WHOSE SUBID IS ASP OR JAVA.
▪ LIKE PATTERN:
▪ LIKE: Search for a pattern (%-Any string of zero or more characters)
SYNTAX:
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;
WHERE CustomerName LIKE 'a%' : Finds any values that start with "a"
WHERE CustomerName LIKE '%a' : Finds any values that end with "a"
WHERE CustomerName LIKE 'a_%' : Finds any values that start with "a" and are at least 2 characters in
length.
EXAMPLE: DISPLAY THE DETAILS OF THE PUBLISHER WHOSE NAME STARTS WITH W
SELECT *
FROM PUBLISHERS
WHERE PNAME LIKE 'W%';
EXAMPLE: DISPLAY THE DETAILS OF THE PUBLISHERS MATCHING THE CHARACTER W IN THIER
NAME
SELECT *
FROM PUBLISHERS
WHERE PNAME LIKE '%W%';
▪ IN Operator:
To specify multiple possible values for a column. The IN operator allows you to specify multiple values
in a WHERE clause.
SYNTAX:
-- or --
EXAMPLE:
EXAMPLE: DISPLAY THE TITLE, PUBDATE, COVER, PRICE WHOSE PRICE INCLUDE 540 AND 475
select ANAME
from AUTHORZ
where AUID IN
(select AUID from AUTHORZ minus select AUID from TITLEAUTHORS);
EXAMPLE (USING IN OPERATOR):: Display the PUBLISHER who DOES NOT HAVE ANY TITLE FOR
THE BOOK.
select PNAME
FROM PUBLISHERS
WHERE PUBID IN
(SELECT PUBID FROM PUBLISHERS MINUS SELECT PUBID FROM TITLES);
EXAMPLE (USING IN OPERATOR):: DISPLAY THE BOOK TITLES AND PRICE OF THE BOOKS WHOSE
IMPORTANCE IS EQUAL TO 1.
OR
EXAMPLE (USING IN OPERATOR): DISPLAY THE BOOK TITLES AND PRICE OF THE BOOKS WHOSE
IMPORTANCE IS NOT EQUAL TO 1.
SELECT PNAME
FROM PUBLISHERS
WHERE PUBID IN(
SELECT PUBID FROM TITLES
WHERE COVER='P');
SELECT ANAME
FROM AUTHORZ
WHERE PHONE IS NULL;
EXAMPLE (NOT NULL): RETRIEVE THE NAME OF THE AUTHOR THAT DOES NOT CONTAIN NULL
VALUES FOR EMAIL ID
SELECT ANAME
FROM AUTHORZ
WHERE EMAIL IS NOT NULL;
▪ AVG() Syntax:
SELECT AVG(column_name)
FROM table_name
WHERE condition;
▪ SUM() Syntax:
SELECT SUM(column_name)
FROM table_name
WHERE condition;
SYNTAX:
SELECT MIN(column_name) SELECT MAX(column_name)
FROM table_name FROM table_name
WHERE condition; WHERE condition;
EXAMPLE:
SELECT AVG(PRICE)
FROM TITLES
WHERE PRICE>400;
EXAMPLE:
SELECT MAX(PRICE)
FROM TITLES
WHERE PUBID=3;
▪ AND OPERATOR:
Syntax:
SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;
EXAMPLE: DISPLAY NAMES OF THE AUTHOR WHOSE COVER IS EQAUL TO P AND SHOW THE
IMPORTANCE FOR THE SAME AUTHOR
SELECT PNAME, COVER, IMPORTANCE
FROM PUBLISHERS,TITLES, TITLEAUTHORS
WHERE PUBLISHERS.PUBID=TITLES.PUBID AND TITLEAUTHORS.TITLEID=TITLES.TITLEID
AND COVER='P';
EXAMPLE: DISPLAY THE DETAILS OF THE TITLE WHOSE IMPORTANCE IS NOT EQUAL TO 1
SELECT TITLE, IMPORTANCE
FROM TITLES, TITLEAUTHORS
WHERE TITLEAUTHORS.TITLEID=TITLES.TITLEID
AND NOT IMPORTANCE=1;
EXAMPLE: DISPLAY THE NAME AND COVER OF THE PUBLISHER WHOSE IMPORTANCE IS NOT
EQUAL TO 1
SELECT PNAME, COVER, IMPORTANCE
FROM PUBLISHERS,TITLES, TITLEAUTHORS
WHERE PUBLISHERS.PUBID=TITLES.PUBID AND TITLEAUTHORS.TITLEID=TITLES.TITLEID
AND NOT IMPORTANCE=1;
▪ ORDER BY :
ASCENDING AND DESCENDING ORDER
The ORDER BY keyword sorts the records in ascending order by default.
To sort the records in descending order, use the DESC keyword.
SYNTAX:
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
SAMPLE QUERIES:
EXAMPLE: Display the titles for which the price of book is more than the average price of book
published by WILLEY publications.
select TITLE
from TITLES
where PRICE>(
select avg(PRICE)
from TITLES ,PUBLISHERSS
where TITLES.PUBID=PUBLISHERSS.PUBID and PNAME='WILLEY');
OR
select TITLE
from TITLES
where PRICE>(
select avg(PRICE)
from TITLES t,PUBLISHERSS p
where t.PUBID=p.PUBID and PNAME='WILLEY');
EXAMPLE: RETRIVE THE NAME OF THE AUTHOR where the author has email-id but did not had
phone number.
SELECT ANAME
FROM AUTHORS
where phone IS NULL and EMAIL IS NOT NULL;
EXAMPLE: Retrieve the author name and books written by that author where the author has
email-id but did not had phone number.
OR
select aname,title
from titles t,authors a,titleauthors ta
where a.auid=ta.auid and t.titleid=ta.titleid and a.phone IS NULL AND A.EMAIL IS NOT NULL;
EXAMPLE: Display the book title and the price, for those books which are written by HERBERT
SCHILD
EXAMPLE: Display the publisher name, book title and the price, for those books which are written
by JAMES GOODWILL.
select TITLE,(PRICE-PRICE*0.05)
from TITLES t,AUTHORS a,TITLEAUTHORS ta
where t.TITLEID=ta.TITLEID and ta.AUID=a.AUID and ANAME='KEVIN LONEY';
EXAMPLE: Display the book title and the discounted price, for those books which are written by
any author having the name that includes character ‘a’ and a 5% discount is given on its purchase.
SELECT TITLE,(PRICE-PRICE*0.05)
FROM TITLES T,TITLEAUTHORS TA,AUTHORS A
WHERE T.TITLEID=TA.TITLEID AND TA.AUID=A.AUID AND ANAME LIKE '%A%
EXAMPLE: Display the author who has written the costliest book.
SELECT *
FROM AUTHORZ
WHERE AUID IN(
SELECT AUID
FROM TITLEAUTHORS
WHERE TITLEID IN(SELECT TITLEID FROM TITLES WHERE PRICE =(
SELECT MAX(PRICE)
FROM TITLES )));