VISVESVARAYA TECHNOLOGICAL UNIVERSITY
“Jnana Sangama”, BELAGAVI – 590014
KARNATAKA
LABORATORY MANUAL ON
“DBMS LABORATORY WITH MINI PROJECT”
For
“Computer Science & Engineering”
By
Mr. Muralidhar B M
Assistant Professor
Department of Computer Science & Engineering
Coorg Institute of Technology – Ponnampet
COORG INSTITUTE OF TECHNOLOGY
PONNAMPET
2020-2021
Prepared by Mr. Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
0
DBMS LABORATORY WITH MINI PROJECT
Sub Code: 18CSL58
Note: Students are required to solve one experiment from PART-A and PART-B is
evaluated for mini project.
PART A Programs
A. 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)
Prepared by Mr. Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
1
Table Creation
CREATE TABLE PUBLISHER (
NAME VARCHAR(25) PRIMARY KEY,
PHONE INT(10),
ADDRESS VARCHAR(50) );
CREATE TABLE BOOK (
BOOK_ID INT PRIMARY KEY,
TITLE VARCHAR(20),
PUB_YEAR VARCHAR(20),
PUBLISHER_NAME VARCHAR(25) REFERENCES PUBLISHER(NAME)
ON DELETE CASCADE );
CREATE TABLE BOOK_AUTHORS (
AUTHOR_NAME VARCHAR(25),
BOOK_ID INT REFERENCES BOOK (BOOK_ID) ON DELETE
CASCADE, PRIMARY KEY (BOOK_ID, AUTHOR_NAME) );
CREATE TABLE LIBRARY_BRANCH (
BRANCH_ID INT PRIMARY KEY,
BRANCH_NAME VARCHAR(20),
ADDRESS VARCHAR (50) );
CREATE TABLE BOOK_COPIES (
NO_OF_COPIES INT,
BOOK_ID INT REFERENCES BOOK (BOOK_ID) ON DELETE CASCADE,
BRANCH_ID INT REFERENCES LIBRARY_BRANCH (BRANCH_ID) ON
DELETE CASCADE,
PRIMARY KEY (BOOK_ID, BRANCH_ID) );
Prepared by Mr. Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
2
CREATE TABLE CARD (
CARD_NO INT PRIMARY KEY );
CREATE TABLE BOOK_LENDING (
DATE_OUT DATE,
DUE_DATE DATE,
BOOK_ID INT REFERENCES BOOK (BOOK_ID) ON DELETE CASCADE,
BRANCH_ID INT REFERENCES LIBRARY_BRANCH (BRANCH_ID) ON
DELETE CASCADE,
CARD_NO INT REFERENCES CARD (CARD_NO) ON DELETE CASCADE,
PRIMARY KEY (BOOK_ID, BRANCH_ID, CARD_NO) );
Insertion of Values to Tables
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, ‘CHENNAI’); INSERT
INTO PUBLISHER VALUES (‘GRUPO PLANETA’, 7756120238, ‘BANGALORE’);
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,’CN’,’SEP-2016’, ‘PEARSON’);
INSERT INTO BOOK VALUES (4,’CG’,’SEP-2015’, ‘GRUPO PLANETA’);
INSERT INTO BOOK VALUES (5,’OS’,’MAY-2016’, ‘PEARSON’);
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);
INSERT INTO LIBRARY_BRANCH VALUES (10,’RR NAGAR’,’BANGALORE’);
INSERT INTO LIBRARY_BRANCH VALUES (11,’CIT’,’COORG’); INSERT INTO
LIBRARY_BRANCH VALUES (12,’DBIT’, ’BANGALORE’);
INSERT INTO LIBRARY_BRANCH VALUES (13,’NITTE’,’MANGALORE’);
INSERT INTO LIBRARY_BRANCH VALUES (14,’MANIPAL’,’UDUPI’);
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);
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);
Prepared by Mr.Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
3
INSERT INTO BOOK_LENDING VALUES (’2017-01-01’,’2017-06-01’, 1, 10, 101);
INSERT INTO BOOK_LENDING VALUES (’2017-01-11’,’2017-03-11’, 3, 14, 101);
INSERT INTO BOOK_LENDING VALUES (’2017-02-21’,’2017-04-21’, 2, 13, 101);
INSERT INTO BOOK_LENDING VALUES (’2017-03-15’,’2017-07-15’, 4, 11, 101);
INSERT INTO BOOK_LENDING VALUES (‘2017-04-12’,’2017-05-12’, 1, 11, 104);
Queries
1a. 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;
1. 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. Delete a book in BOOK table. Update the contents of other tables to reflect
this data manipulation operation.
DELETE FROM BOOK
WHERE BOOK_ID=3;
3. Partition the BOOK table based on year of publication. Demonstrate its working
with a simple query.
CREATE VIEW V_PUBLICATION AS
SELECT PUB_YEAR
FROM BOOK;
4. 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;
Prepared by Mr.Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
4
B. 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)
Prepared by Mr.Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
5
Table Creation
CREATE TABLE SALESMAN (
SALESMAN_ID INT PRIMARY KEY,
NAME VARCHAR(25),
CITY VARCHAR(20),
COMMISSION NUMBER(5,2) );
CREATE TABLE CUSTOMER (
CUSTOMER_ID INT PRIMARY KEY,
CUST_NAME VARCHAR(25),
CITY VARCHAR(20),
GRADE INT,
SALESMAN_ID INT REFERENCES SALESMAN (SALESMAN_ID) ON
DELETE SET NULL );
CREATE TABLE ORDERS (
ORD_NO INT PRIMARY KEY,
PURCHASE_AMT NUMBER (10, 2),
ORD_DATE DATE,
CUSTOMER_ID INT REFERENCES CUSTOMER1 (CUSTOMER_ID) ON
DELETE CASCADE,
SALESMAN_ID INT REFERENCES SALESMAN (SALESMAN_ID) ON
DELETE CASCADE );
Insertion of Values to Tables
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);
INSERT INTO CUSTOMER VALUES (10, ‘PREETHI’,’BANGALORE’, 100, 1000);
INSERT INTO CUSTOMER VALUES (11, ‘VIVEK’,’MANGALORE’, 300, 1000);
INSERT INTO CUSTOMER VALUES (12, ‘BHASKAR’,’CHENNAI’, 400, 2000);
INSERT INTO CUSTOMER VALUES (13, ‘CHETHAN’,’BANGALORE’, 200, 2000);
INSERT INTO CUSTOMER VALUES (14, ‘MAMATHA’,’BANGALORE’, 400,
3000);
INSERT INTO ORDERS VALUES (50, 5000, ‘2017-05-04’, 10, 1000);
INSERT INTO ORDERS VALUES (51, 450, ‘2017-01-20’, 10, 2000);
INSERT INTO ORDERS VALUES (52, 1000, ‘2017-02-24’, 13, 2000);
INSERT INTO ORDERS VALUES (53, 3500, ‘2017-04-13’, 14, 3000);
INSERT INTO ORDERS VALUES (54, 550, ‘2017-03-09’, 12, 2000);
Prepared by Mr.Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
6
Queries
1. Count the customers with grades above Bangalore’s average.
SELECT GRADE, COUNT (DISTINCT CUSTOMER_ID)
FROM CUSTOMER
GROUP BY GRADE
HAVING GRADE > (SELECT AVG(GRADE)
FROM CUSTOMER
WHERE CITY = 'BANGALORE');
2. Find the name and numbers of all salesmen who had more than one customer.
SELECT SALESMAN_ID, NAME
FROM SALESMAN A
WHERE (SELECT COUNT (*)
FROM CUSTOMER
WHERE SALESMAN_ID=A.SALESMAN_ID) > 1;
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, CUSTOMER
WHERE SALESMAN.CITY = CUSTOMER.CITY
UNION
SELECT SALESMAN_ID, NAME, 'NO MATCH', COMMISSION
FROM SALESMAN
WHERE NOT CITY = ANY (SELECT CITY
FROM CUSTOMER);
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);
Prepared by Mr.Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
7
5. Demonstrate the DELETE operation by removing salesman with id 1000. All his
orders must also be deleted.
Use ON DELETE CASCADE at the end of foreign key definitions while creating
child table orders and then execute the following:
Use ON DELETE SET NULL at the end of foreign key definitions while creating child
table customers and then executes the following:
DELETE FROM SALESMAN
WHERE SALESMAN_ID=1000;
Prepared by Mr.Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
8
C. Consider the schema for Movie Database:
ACTOR (Act_id, Act_Name, Act_Gender)
DIRECTOR (Dir_id, Dir_Name, Dir_Phone)
MOVIES (Mov_id, Mov_Title, Mov_Year, Mov_Lang, Dir_id)
MOVIE_CAST (Act_id, Mov_id, Role)
RATING (Mov_id, Rev_Stars)
Prepared by Mr.Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
9
Table Creation
CREATE TABLE ACTOR (
ACT_ID INT PRIMARY KEY,
ACT_NAME VARCHAR (25),
ACT_GENDER CHAR (1) );
CREATE TABLE DIRECTOR (
DIR_ID INT PRIMARY KEY,
DIR_NAME VARCHAR (25),
DIR_PHONE INT (10) );
CREATE TABLE MOVIES (
MOV_ID INT PRIMARY KEY,
MOV_TITLE VARCHAR (25),
MOV_YEAR INT,
MOV_LANG VARCHAR (12),
DIR_ID INT,
FOREIGN KEY (DIR_ID) REFERENCES DIRECTOR (DIR_ID) );
CREATE TABLE MOVIE_CAST (
ACT_ID INT,
MOV_ID INT,
ROLE VARCHAR (15),
PRIMARY KEY (ACT_ID, MOV_ID),
FOREIGN KEY (ACT_ID) REFERENCES ACTOR (ACT_ID),
FOREIGN KEY (MOV_ID) REFERENCES MOVIES (MOV_ID) );
CREATE TABLE RATING (
MOV_ID INT,
REV_STARS VARCHAR (25),
PRIMARY KEY (MOV_ID),
FOREIGN KEY (MOV_ID) REFERENCES MOVIES (MOV_ID) );
Insertion of Values to Tables
INSERT INTO ACTOR VALUES (301,’ANUSHKA’,’F’);
INSERT INTO ACTOR VALUES (302,’PRABHAS’,’M’);
INSERT INTO ACTOR VALUES (303,’PUNITH’,’M’);
INSERT INTO ACTOR VALUES (304,’JERMY’,’M’);
INSERT INTO ACTOR VALUES (305,’KAJAL’,’F’);
INSERT INTO DIRECTOR VALUES (60,’RAJAMOULI’, 8751611001);
INSERT INTO DIRECTOR VALUES (61,’HITCHCOCK’, 7766138911);
INSERT INTO DIRECTOR VALUES (62,’FARAN’, 9986776531);
INSERT INTO DIRECTOR VALUES (63,’STEVEN SPIELBERG’, 8989776530);
INSERT INTO DIRECTOR VALUES (64,’SHEKAR’, 9845032900);
Prepared by Mr.Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
1
0
INSERT INTO MOVIES VALUES (1001,’BAHUBALI-2’, 2017, ‘TELUGU’, 60);
INSERT INTO MOVIES VALUES (1002,’BAHUBALI-1’, 2015, ‘TELUGU’, 60);
INSERT INTO MOVIES VALUES (1003,’AKASH’, 2008, ‘KANNADA’, 61);
INSERT INTO MOVIES VALUES (1004,’WAR HORSE’, 2011, ‘ENGLISH’, 63);
INSERT INTO MOVIES VALUES (1005,’ANAND’, 2011, ‘TELUGU’, 64);
INSERT INTO MOVIE_CAST VALUES (301, 1002, ‘HEROINE’);
INSERT INTO MOVIE_CAST VALUES (301, 1001, ‘HEROINE’);
INSERT INTO MOVIE_CAST VALUES (303, 1003, ‘HERO’);
INSERT INTO MOVIE_CAST VALUES (303, 1002, ‘GUEST’);
INSERT INTO MOVIE_CAST VALUES (304, 1004, ‘HERO’);
INSERT INTO MOVIE_CAST VALUES (305, 1005, ‘HEROINE’);
INSERT INTO RATING VALUES (1001, 4);
INSERT INTO RATING VALUES (1002, 2);
INSERT INTO RATING VALUES (1003, 5);
INSERT INTO RATING VALUES (1004, 4);
INSERT INTO RATING VALUES (1005, 5);
Queries
1. List the titles of all movies directed by ‘Hitchcock’.
SELECT MOV_TITLE
FROM MOVIES
WHERE DIR_ID IN (SELECT DIR_ID
FROM DIRECTOR
WHERE DIR_NAME = ‘HITCHCOCK’);
2. Find the movie names where one or more actors acted in two or more movies.
SELECT MOV_TITLE
FROM MOVIES M, MOVIE_CAST MV
WHERE M.MOV_ID=MV.MOV_ID AND ACT_ID IN (SELECT
ACT_ID
FROM MOVIE_CAST GROUP BY
ACT_ID
HAVING COUNT (ACT_ID)>1)
GROUP BY MOV_TITLE
HAVING COUNT (*)>1;
3. List all actors who acted in a movie before 2000 and also in a movie after 2015
(use JOIN operation).
SELECT ACT_NAME, MOV_TITLE, MOV_YEAR
FROM ACTOR A
JOIN MOVIE_CAST C
ON A.ACT_ID=C.ACT_ID
JOIN MOVIES M
ON C.MOV_ID=M.MOV_ID
Prepared by Mr.Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
11
WHERE M.MOV_YEAR NOT BETWEEN 2000 AND
2015;
-OR-
SELECT A.ACT_NAME, C.MOV_TITLE, C.MOV_YEAR
FROM ACTOR A, MOVIE_CAST B, MOVIES C
WHERE A.ACT_ID=B.ACT_ID
AND B.MOV_ID=C.MOV_ID
AND C.MOV_YEAR NOT BETWEEN 2000 AND 2015;
4. Find the title of movies and number of stars for each movie that has at least
one rating and find the highest number of stars that movie received. Sort the
result by movie title.
SELECT MOV_TITLE, MAX (REV_STARS)
FROM MOVIES
INNER JOIN RATING USING (MOV_ID)
GROUP BY MOV_TITLE
HAVING MAX (REV_STARS)>0
ORDER BY MOV_TITLE;
5. Update rating of all movies directed by ‘Steven Spielberg’ to 5
UPDATE RATING
SET REV_STARS=5
WHERE MOV_ID IN (SELECT MOV_ID FROM MOVIES
WHERE DIR_ID IN (SELECT DIR_ID
FROM DIRECTOR
WHERE DIR_NAME = ‘STEVEN SPIELBERG’));
Prepared by Mr.Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
1
2
D. Consider the schema for College Database:
STUDENT (USN, SName, Address, Phone, Gender)
SEMSEC (SSID, Sem, Sec)
CLASS (USN, SSID)
SUBJECT (Subcode, Title, Sem, Credits)
IAMARKS (USN, Subcode, SSID, Test1, Test2, Test3, FinalIA)
Prepared by Mr.Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
1
3
Table Creation
CREATE TABLE STUDENT (
USN VARCHAR (10) PRIMARY KEY,
SNAME VARCHAR (25),
ADDRESS VARCHAR (50),
PHONE INT (10),
GENDER CHAR (1) );
CREATE TABLE SEMSEC (
SSID VARCHAR (5) PRIMARY KEY,
SEM INT (2),
SEC CHAR (1));
CREATE TABLE CLASS (
USN VARCHAR (10),
SSID VARCHAR (5),
PRIMARY KEY (USN, SSID),
FOREIGN KEY (USN) REFERENCES STUDENT (USN),
FOREIGN KEY (SSID) REFERENCES SEMSEC (SSID));
Prepared by Mr.Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
14
CREATE TABLE SUBJECT (
SUBCODE VARCHAR (8) PRIMARY KEY,
TITLE VARCHAR (20),
SEM INT (2),
CREDITS INT (2) );
CREATE TABLE IAMARKS (
USN VARCHAR (10),
SUBCODE VARCHAR (8),
SSID VARCHAR (5),
TEST1 INT (2),
TEST2 INT (2),
TEST3 INT (2),
FINALIA INT (2),
PRIMARY KEY (USN, SUBCODE, SSID),
FOREIGN KEY (USN) REFERENCES STUDENT (USN),
FOREIGN KEY (SUBCODE) REFERENCES SUBJECT (SUBCODE),
FOREIGN KEY (SSID) REFERENCES SEMSEC (SSID) );
Insertion of values to tables
INSERT INTO STUDENT VALUES ('4CI13CS020','AKSHAY','MANGALURU', 8877881122,'M');
INSERT INTO STUDENT VALUES ('4CI13CS062','SANDHYA','BENGALURU', 7722829912,'F');
INSERT INTO STUDENT VALUES ('4CI13CS091','TREESA','BENGALURU', 7712312312,'F');
INSERT INTO STUDENT VALUES ('4CI13CS066','SUPRIYA','MANGALURU', 8877881122,'F');
INSERT INTO STUDENT VALUES ('4CI14CS010','ABHAY','BENGALURU', 9900211201,'M');
INSERT INTO STUDENT VALUES ('4CI14CS032','BHASKAR','BENGALURU', 923211099,'M');
INSERT INTO STUDENT VALUES ('4CI14CS025','ANU','BENGALURU', 7894737377,'F');
INSERT INTO STUDENT VALUES ('4CI15CS011','AJAY','MYSORE', 9845091341,'M');
INSERT INTO STUDENT VALUES ('4CI15CS029','CHITRA','BELLARY', 7696772121,'F');
INSERT INTO STUDENT VALUES ('4CI15CS045','JEEVA','BELLARY', 9944850121,'M');
INSERT INTO STUDENT VALUES ('4CI15CS091','SANTOSH','MANGALURU', 812332201,'M');
INSERT INTO STUDENT VALUES ('4CI16CS045','ISMAIL','MYSORE', 9900232201,'M');
INSERT INTO STUDENT VALUES ('4CI16CS088','SAMEERA','MYSORE', 9905542212,'F');
INSERT INTO STUDENT VALUES ('4CI16CS122','VINAYAKA','MYSORE', 8800880011,'M');
INSERT INTO SEMSEC VALUES ('CSE8A', 8,'A');
INSERT INTO SEMSEC VALUES (‘CSE8B', 8,'B');
INSERT INTO SEMSEC VALUES (‘CSE8C’, 8,’C’);
INSERT INTO SEMSEC VALUES ('CSE7A', 7,’A’);
INSERT INTO SEMSEC VALUES (‘CSE7B’, 7,'B’);
INSERT INTO SEMSEC VALUES ('CSE7C', 7,'C');
INSERT INTO SEMSEC VALUES (‘CSE6A', 6,'A');
INSERT INTO SEMSEC VALUES (‘CSE6B’, 6,’B’);
INSERT INTO SEMSEC VALUES ('CSE6C’, 6,’C’);
INSERT INTO SEMSEC VALUES (‘CSE5A’, 5,'A’);
INSERT INTO SEMSEC VALUES ('CSE5B', 5,'B');
INSERT INTO SEMSEC VALUES (‘CSE5C', 5,'C');
INSERT INTO SEMSEC VALUES (‘CSE4A’, 4,’A’);
INSERT INTO SEMSEC VALUES ('CSE4B', 4,’B’);
INSERT INTO SEMSEC VALUES (‘CSE4C’, 4,'C’);
INSERT INTO SEMSEC VALUES ('CSE3A', 3,'A');
INSERT INTO SEMSEC VALUES (‘CSE3B', 3,'B');
INSERT INTO SEMSEC VALUES (‘CSE3C’, 3,’C’);
Prepared by Mr.Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
1
5
INSERT INTO SEMSEC VALUES ('CSE2A', 2,’A’);
INSERT INTO SEMSEC VALUES (‘CSE2B’, 2,'B’);
INSERT INTO SEMSEC VALUES ('CSE2C', 2,'C');
INSERT INTO SEMSEC VALUES (‘CSE1A', 1,'A');
INSERT INTO SEMSEC VALUES (‘CSE1B’, 1,’B’);
INSERT INTO SEMSEC VALUES ('CSE1C', 1,’C’);
INSERT INTO CLASS VALUES (‘4CI13CS020’,’CSE8A’);
INSERT INTO CLASS VALUES (‘4CI13CS062’,’CSE8A’);
INSERT INTO CLASS VALUES (‘4CI13CS066’,’CSE8B’);
INSERT INTO CLASS VALUES (‘4CI13CS091’,’CSE8C’);
INSERT INTO CLASS VALUES (‘4CI14CS010’,’CSE7A’);
INSERT INTO CLASS VALUES (‘4CI14CS025’,’CSE7A’);
INSERT INTO CLASS VALUES (‘4CI14CS032’,’CSE7A’);
INSERT INTO CLASS VALUES (‘4CI15CS011’,’CSE4A’);
INSERT INTO CLASS VALUES (‘4CI15CS029’,’CSE4A’);
INSERT INTO CLASS VALUES (‘4CI15CS045’,’CSE4B’);
INSERT INTO CLASS VALUES (‘4CI15CS091’,’CSE4C’);
INSERT INTO CLASS VALUES (‘4CI16CS045’,’CSE3A’);
INSERT INTO CLASS VALUES (‘4CI16CS088’,’CSE3B’);
INSERT INTO CLASS VALUES (‘4CI16CS122’,’CSE3C’);
INSERT INTO SUBJECT VALUES ('10CS81','ACA', 8, 4);
INSERT INTO SUBJECT VALUES ('10CS82','SSM', 8, 4);
INSERT INTO SUBJECT VALUES ('10CS83','NM', 8, 4);
INSERT INTO SUBJECT VALUES ('10CS84','CC', 8, 4);
INSERT INTO SUBJECT VALUES ('10CS85','PW', 8, 4);
INSERT INTO SUBJECT VALUES ('10CS71','OOAD', 7, 4);
INSERT INTO SUBJECT VALUES ('10CS72','ECS', 7, 4);
INSERT INTO SUBJECT VALUES ('10CS73','PTW', 7, 4);
INSERT INTO SUBJECT VALUES ('10CS74','DWDM', 7, 4);
INSERT INTO SUBJECT VALUES (‘10CS75','JAVA', 7, 4);
INSERT INTO SUBJECT VALUES ('10CS76','SAN', 7, 4);
INSERT INTO SUBJECT VALUES ('15CS51', 'ME', 5, 4);
INSERT INTO SUBJECT VALUES ('15CS52','CN', 5, 4);
INSERT INTO SUBJECT VALUES ('15CS53','DBMS', 5, 4);
INSERT INTO SUBJECT VALUES ('15CS54','ATC', 5, 4);
INSERT INTO SUBJECT VALUES ('15CS55','JAVA', 5, 3);
INSERT INTO SUBJECT VALUES ('15CS56','AI', 5, 3);
INSERT INTO SUBJECT VALUES ('15CS41','M4', 4, 4);
INSERT INTO SUBJECT VALUES ('15CS42','SE', 4, 4);
INSERT INTO SUBJECT VALUES ('15CS43','DAA', 4, 4);
INSERT INTO SUBJECT VALUES ('15CS44','MPMC', 4, 4);
INSERT INTO SUBJECT VALUES ('15CS45','OOC', 4, 3);
INSERT INTO SUBJECT VALUES ('15CS46','DC', 4, 3);
INSERT INTO SUBJECT VALUES ('15CS31','M3', 3, 4);
INSERT INTO SUBJECT VALUES ('15CS32','ADE', 3, 4);
INSERT INTO SUBJECT VALUES ('15CS33','DSA', 3, 4);
INSERT INTO SUBJECT VALUES ('15CS34','CO', 3, 4);
INSERT INTO SUBJECT VALUES ('15CS35','USP', 3, 3);
INSERT INTO SUBJECT VALUES ('15CS36','DMS', 3, 3);
Prepared by Mr.Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
1
6
INSERT INTO IAMARKS (USN, SUBCODE, SSID, TEST1, TEST2, TEST3) VALUES
('4CI13CS091','10CS81','CSE8C', 15, 16, 18);
INSERT INTO IAMARKS (USN, SUBCODE, SSID, TEST1, TEST2, TEST3) VALUES
('4CI13CS091','10CS82','CSE8C', 12, 19, 14);
INSERT INTO IAMARKS (USN, SUBCODE, SSID, TEST1, TEST2, TEST3) VALUES
('4CI13CS091','10CS83','CSE8C', 19, 15, 20);
INSERT INTO IAMARKS (USN, SUBCODE, SSID, TEST1, TEST2, TEST3) VALUES
('4CI13CS091','10CS84','CSE8C', 20, 16, 19);
INSERT INTO IAMARKS (USN, SUBCODE, SSID, TEST1, TEST2, TEST3) VALUES
('4CI13CS091','10CS85','CSE8C', 15, 15, 12);
Queries
1. List all the student details studying in fourth semester ‘C’ section.
SELECT S.*, SS.SEM, SS.SEC
FROM STUDENT S, SEMSEC SS, CLASS C
WHERE S.USN = C.USN AND
SS.SSID = C.SSID AND
SS.SEM = 4 AND SS.SEC=’C’;
2. Compute the total number of male and female students in each semester and
in each section.
SELECT SS.SEM, SS.SEC, S.GENDER, COUNT (S.GENDER) AS COUNT
FROM STUDENT S, SEMSEC SS, CLASS C
WHERES.USN = C.USN AND SS.SSID = C.SSID
GROUP BY SS.SEM, SS.SEC, S.GENDER
ORDER BY SEM;
3. Create a view of Test1 marks of student USN ‘1BI15CS101’ in all subjects.
CREATE VIEW STU_TEST1_MARKS_VIEW AS
SELECT TEST1, SUBCODE
FROM IAMARKS
WHERE USN = '4CI13CS091';
4. Calculate the Final IA (average of best two test marks) and update
the corresponding table for all students.
UPDATE IAMARKS SET FINALIA=((TEST1+TEST2+TEST3) - Least (test1, test2, test3))/2;
Prepared by Mr. Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
1
7
5. Categorize students based on the following criterion:
If FinalIA = 17 to 20 then CAT = ‘Outstanding’
If FinalIA = 12 to 16 then CAT = ‘Average’
If FinalIA< 12 then CAT = ‘Weak’
Give these details only for 8th semester A, B, and C section students.
SELECT S.USN,S.SNAME,S.ADDRESS,S.PHONE,S.GENDER,
(CASE
WHEN IA.FINALIA BETWEEN 17 AND 20 THEN 'OUTSTANDING'
WHEN IA.FINALIA BETWEEN 12 AND 16 THEN 'AVERAGE'
ELSE 'WEAK'
END) AS CAT
FROM STUDENT S, SEMSEC SS, IAMARKS IA, SUBJECT
SUB WHERE S.USN = IA.USN AND
SS.SSID = IA.SSID AND
SUB.SUBCODE = IA.SUBCODE AND SUB.SEM = 8;
Prepared by Mr. Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
1
8
E. 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)
Prepared by Mr.Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
19
Table Creation
CREATE TABLE DEPARTMENT
(DNO VARCHAR (20) PRIMARY KEY,
DNAME VARCHAR (20),
MGRSTARTDATE DATE);
CREATE TABLE EMPLOYEE
(SSN VARCHAR (20) PRIMARY KEY,
FNAME VARCHAR (20),
LNAME VARCHAR (20),
ADDRESS VARCHAR (20),
SEX CHAR (1),
SALARY INTEGER,
SUPERSSN REFERENCES EMPLOYEE (SSN),
DNO REFERENCES DEPARTMENT (DNO));
NOTE: Once DEPARTMENT and EMPLOYEE tables are created we must alter
department table to add foreign constraint MGRSSN using sql command
ALTER TABLE DEPARTMENT
ADD MGRSSN REFERENCES EMPLOYEE (SSN);
CREATE TABLE DLOCATION
(DLOC VARCHAR (20),
DNO REFERENCES DEPARTMENT (DNO),
PRIMARY KEY (DNO, DLOC));
CREATE TABLE PROJECT
(PNO INTEGER PRIMARY KEY,
PNAME VARCHAR (20),
PLOCATION VARCHAR (20),
DNO REFERENCES DEPARTMENT (DNO));
CREATE TABLE WORKS_ON
(HOURS NUMBER (2),
SSN REFERENCES EMPLOYEE (SSN),
PNO REFERENCES PROJECT(PNO),
PRIMARY KEY (SSN, PNO));
Prepared by Mr.Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
2
0
Insertion of values to tables
INSERT INTO EMPLOYEE (SSN, FNAME, LNAME, ADDRESS, SEX, SALARY) VALUES
(‘RNSECE01’,’JOHN’,’SCOTT’,’BANGALORE’,’M’, 450000);
INSERT INTO EMPLOYEE (SSN, FNAME, LNAME, ADDRESS, SEX, SALARY) VALUES
(‘RNSCSE01’,’JAMES’,’SMITH’,’BANGALORE’,’M’, 500000);
INSERT INTO EMPLOYEE (SSN, FNAME, LNAME, ADDRESS, SEX, SALARY) VALUES
(‘RNSCSE02’,’HEARN’,’BAKER’,’BANGALORE’,’M’, 700000);
INSERT INTO EMPLOYEE (SSN, FNAME, LNAME, ADDRESS, SEX, SALARY) VALUES
(‘RNSCSE03’,’EDWARD’,’SCOTT’,’MYSORE’,’M’, 500000);
INSERT INTO EMPLOYEE (SSN, FNAME, LNAME, ADDRESS, SEX, SALARY) VALUES
(‘RNSCSE04’,’PAVAN’,’HEGDE’,’MANGALORE’,’M’, 650000);
INSERT INTO EMPLOYEE (SSN, FNAME, LNAME, ADDRESS, SEX, SALARY) VALUES
(‘RNSCSE05’,’GIRISH’,’MALYA’,’MYSORE’,’M’, 450000);
INSERT INTO EMPLOYEE (SSN, FNAME, LNAME, ADDRESS, SEX, SALARY) VALUES
(‘RNSCSE06’,’NEHA’,’SN’,’BANGALORE’,’F’, 800000);
INSERT INTO EMPLOYEE (SSN, FNAME, LNAME, ADDRESS, SEX, SALARY) VALUES
(‘RNSACC01’,’AHANA’,’K’,’MANGALORE’,’F’, 350000);
INSERT INTO EMPLOYEE (SSN, FNAME, LNAME, ADDRESS, SEX, SALARY) VALUES
(‘RNSACC02’,’SANTHOSH’,’KUMAR’,’MANGALORE’,’M’, 300000);
INSERT INTO EMPLOYEE (SSN, FNAME, LNAME, ADDRESS, SEX, SALARY) VALUES
(‘RNSISE01’,’VEENA’,’M’,’MYSORE’,’M’, 600000);
INSERT INTO EMPLOYEE (SSN, FNAME, LNAME, ADDRESS, SEX, SALARY) VALUES
(‘RNSIT01’,’NAGESH’,’HR’,’BANGALORE’,’M’, 500000);
INSERT INTO DEPARTMENT VALUES (‘1’,’ACCOUNTS’,’01-JAN-01’,’RNSACC02’);
INSERT INTO DEPARTMENT VALUES (‘2’,’IT’,’01-AUG-16’,’RNSIT01’);
INSERT INTO DEPARTMENT VALUES (‘3’,’ECE’,’01-JUN-08’,’RNSECE01’);
INSERT INTO DEPARTMENT VALUES (‘4’,’ISE’,’01-AUG-15’,’RNSISE01’);
INSERT INTO DEPARTMENT VALUES (‘5’,’CSE’,’01-JUN-02’,’RNSCSE05’);
Note: update entries of employee table to fill missing fields SUPERSSN and DNO
UPDATE EMPLOYEE SET
SUPERSSN=NULL, DNO=’3’
WHERE SSN=’RNSECE01’;
UPDATE EMPLOYEE SET
SUPERSSN=’RNSCSE02’, DNO=’5’
WHERE SSN=’RNSCSE01’;
UPDATE EMPLOYEE SET
SUPERSSN=’RNSCSE03’, DNO=’5’
WHERE SSN=’RNSCSE02’;
UPDATE EMPLOYEE SET
SUPERSSN=’RNSCSE04’, DNO=’5’
WHERE SSN=’RNSCSE03’;
UPDATE EMPLOYEE SET
DNO=’5’, SUPERSSN=’RNSCSE05’
WHERE SSN=’RNSCSE04’;
Prepared by Mr.Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
2
1
UPDATE EMPLOYEE SET
DNO=’5’, SUPERSSN=’RNSCSE06’
WHERE SSN=’RNSCSE05’;
UPDATE EMPLOYEE SET
DNO=’5’, SUPERSSN=NULL
WHERE SSN=’RNSCSE06’;
UPDATE EMPLOYEE SET
DNO=’1’, SUPERSSN=’RNSACC02’
WHERE SSN=’RNSACC01’;
UPDATE EMPLOYEE SET
DNO=’1’, SUPERSSN=NULL
WHERE SSN=’RNSACC02’;
UPDATE EMPLOYEE SET
DNO=’4’, SUPERSSN=NULL
WHERE SSN=’RNSISE01’;
UPDATE EMPLOYEE SET
DNO=’2’, SUPERSSN=NULL
WHERE SSN=’RNSIT01’;
INSERT INTO DLOCATION VALUES (’BANGALORE’, ‘1’);
INSERT INTO DLOCATION VALUES (’BANGALORE’, ‘2’);
INSERT INTO DLOCATION VALUES (’BANGALORE’, ‘3’);
INSERT INTO DLOCATION VALUES (’MANGALORE’, ‘4’);
INSERT INTO DLOCATION VALUES (’MANGALORE’, ‘5’);
INSERT INTO PROJECT VALUES (100,’IOT’,’BANGALORE’,’5’);
INSERT INTO PROJECT VALUES (101,’CLOUD’,’BANGALORE’,’5’);
INSERT INTO PROJECT VALUES (102,’BIGDATA’,’BANGALORE’,’5’);
INSERT INTO PROJECT VALUES (103,’SENSORS’,’BANGALORE’,’3’);
INSERT INTO PROJECT VALUES (104,’BANK MANAGEMENT’,’BANGALORE’,’1’);
INSERT INTO PROJECT VALUES (105,’SALARY MANAGEMENT’,’BANGALORE’,’1’);
INSERT INTO PROJECT VALUES (106,’OPENSTACK’,’BANGALORE’,’4’); INSERT
INTO PROJECT VALUES (107,’SMART CITY’,’BANGALORE’,’2’);
INSERT INTO WORKS_ON VALUES (4, ‘RNSCSE01’, 100);
INSERT INTO WORKS_ON VALUES (6, ‘RNSCSE01’, 101);
INSERT INTO WORKS_ON VALUES (8, ‘RNSCSE01’, 102);
INSERT INTO WORKS_ON VALUES (10, ‘RNSCSE02’, 100);
INSERT INTO WORKS_ON VALUES (3, ‘RNSCSE04’, 100);
INSERT INTO WORKS_ON VALUES (4, ‘RNSCSE05’, 101);
INSERT INTO WORKS_ON VALUES (5, ‘RNSCSE06’, 102);
INSERT INTO WORKS_ON VALUES (6, ‘RNSCSE03’, 102);
INSERT INTO WORKS_ON VALUES (7, ‘RNSECE01’, 103);
INSERT INTO WORKS_ON VALUES (5, ‘RNSACC01’, 104);
INSERT INTO WORKS_ON VALUES (6, ‘RNSACC02’, 105);
INSERT INTO WORKS_ON VALUES (4, ‘RNSISE01’, 106);
INSERT INTO WORKS_ON VALUES (10, ‘RNSIT01’, 107);
Prepared by Mr.Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
2
2
Queries
1. Make a list of all project numbers for projects that involve an employee whose last
name is ‘Scott’, either as a worker or as a manager of the department that controls
the project.
SELECT DISTINCT P.PNO
FROM PROJECT P, DEPARTMENT D, EMPLOYEE E WHERE
E.DNO=D.DNO AND D.MGRSSN=E.SSN AND
E.LNAME=’SCOTT’
UNION
SELECT DISTINCT P1.PNO
FROM PROJECT P1, WORKS_ON W, EMPLOYEE E1
WHERE P1.PNO=W.PNO AND E1.SSN=W.SSN AND
E1.LNAME=’SCOTT’
2. Show the resulting salaries if every employee working on the ‘IoT’ project is given
a 10 percent raise.
SELECT E.FNAME, E.LNAME, 1.1*E.SALARY AS INCR_SAL
FROM EMPLOYEE E, WORKS_ON W, PROJECT P
WHERE E.SSN=W.SSN AND W.PNO=P.PNO AND P.PNAME=’IOT’;
3. Find the sum of the salaries of all employees of the ‘Accounts’ department, as well
as the maximum salary, the minimum salary, and the average salary in this
department
SELECT SUM (E.SALARY), MAX (E.SALARY), MIN (E.SALARY), AVG
(E.SALARY)
FROM EMPLOYEE E, DEPARTMENT D
WHERE E.DNO=D.DNO AND D.DNAME=’ACCOUNTS’;
4. 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 DISTINCT * FROM PROJECT P, WORKS_ON
W WHERE W.PNO=P.PNO AND P.DNO=5 AND NOT EXISTS
(SELECT * FROM WORKS_ON W1 WHERE E.SSN=W1.SSN AND
W1.PNO=W.PNO));
Prepared by Mr. Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
2
3
5. For each department that has more than five employees, retrieve the department
number and the number of its employees who are making more than Rs. 6, 00,000.
SELECT D.DNO, COUNT (*)
FROM DEPARTMENT D, EMPLOYEE E
WHERE D.DNO=E.DNO AND E.SALARY>600000
AND D.DNO IN (SELECT E1.DNO
FROM EMPLOYEE E1
GROUP BY E1.DNO
HAVING COUNT (*)>5)
GROUP BY D.DNO;
Prepared by Mr.Muralidhar B M, Assistant Professor, Dept. of CSE, C.I.T, Ponnampet.
2
4