DBMS Lab
DBMS Lab
QUERIES
GET THE PARTICULARS OF BORROWERS WHO HAVE BORROWED MORE THAN 3 BOOKS,BUT FROM JAN
T0 JUN 2017
SELECT CARD_NO
FROM BOOK_LENDING
WHERE DATE_OUT BETWEEN '01-JAN-2017' AND 01-JUN-2017'
GROUP BY CARD_NO
HAVING COUNT)*)>3;
DELETE A BOOK TABLE. UPDATE THE CONTENTS OF OTHER TABLES TO REFLECT THIS DATA
MANIPULATION OPERATION
PARTITION THE BOOK TABLE BASED ON YEAR OF PUBLICATION.DEMONSTRATE ITS WORKING WITH
A SIMPLE QUERY
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;
INSERTION OF VALUES;
QUERIES
2.FIND THE NAME AND NUMBER OF ALL SALESMAN WHO HAD MORE THAN ONE CUSTOMER
SELECT SALESMAN_ID,NAME
FROM SALESMAN A
WHERE 1<(SELECT COUNT(*)
FROM CUSTOMER
WHERE SALESMAN_ID=A.SALESMAN_ID);
3.LIST ALL SALESMAN AND INDICATE THOSE WHO HAVE AND DONT HAVE CUSTOMERS IN THEIR
CITIES
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)
ORDER BY 2 DESC;
4.CREATE A VIEW THAT FINDS THE SALESMAN WHO HAS THE CUSTOMER WITH THE HIGHEST ORDER
OF A DAY
INSERTION ;
Queries:
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).
OR
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.
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'));
4.Table Creation
INSERTION;
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.
4. Calculate the FinalIA (average of best two test marks) and update the
corresponding
table for all students.
OPEN C_IAMARKS;
LOOP
FETCH C_IAMARKS INTO C_A, C_B, C_C;
EXIT WHEN C_IAMARKS%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(C_A || ' ' || C_B || ' ' || C_C);
IF (C_A != C_B) THEN
C_SM:=C_A+C_B;
ELSE
C_SM:=C_A+C_C;
END IF;
C_AV:=C_SM/2;
DBMS_OUTPUT.PUT_LINE('SUM = 'C_SM);
DBMS_OUTPUT.PUT_LINE('AVERAGE = 'C_AV);
UPDATE IAMARKS SET FINALIA=C_AV WHERE CURRENT OF C_IAMARKS;
END LOOP;
CLOSE C_IAMARKS;
END;
/
Below SQL code is to invoke the PL/SQL stored procedure from the command line:
BEGIN
AVGMARKS;
END;
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;
5. Table Creation
INSERTION;
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.
2. Show the resulting salaries if every employee working on the �IoT� project is
given a 10
percent raise.
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
4. Retrieve the name of each employee who works on all the projects Controlled by
department number 5 (use NOT EXISTS operator).
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 SALESMAN_ID,NAME
FROM SALESMAN2 A
WHERE 1<(SELECT COUNT(1)
FROM CUSTOMER1
WHERE SALESMAN_ID=A.SALESMAN_ID);
SELECT SALESMAN_ID,NAME
FROM SALESMAN2 A
WHERE 1<(SELECT COUNT(*)
FROM CUSTOMER1
WHERE SALESMAN_ID=A.SALESMAN_ID);
SELECT SALESMAN_ID,NAME
FROM SALESMAN2 A
WHERE 1<(SELECT COUNT(*)
FROM CUSTOMER1
WHERE SALESMAN_ID=A.SALESMAN_ID);
SELECT SALESMAN2.SALESMAN_ID,NAME,CUST_NAME,COMMISSION
FROM SALESMAN2,CUSTOMER1
WHERE SALESMAN2.CITY=CUSTOMER1.CITY
UNION
SELECT SALESMAN_ID ,NAME ,'NO MATCH',COMMISSION
FROM SALESMAN2
WHERE NOT CITY=ANY
(SELECT CITY
FROM CUSTOMER1)
ORDER BY 2 DESC;