DATABASE MANAGEMENT
SYSTEM
Practical
File
Submitted To: Submitted By:
ARUN SHARMA RAJESH KUMAR SINGH
LECTURER ROLL NO: - A1000708016
Amity Institute of Information Technology MCA (SEM – III), (08-11)
1|Page
Amity Institute of Information Technology
Amity University, Uttar Pradesh
INDEX
SL NO QUESTION PAGE NO SIGNATURE
1 QUERY 1 3
2 QUERY 2 7
3 QUERY 3 11
4 QUERY 4 16
5 QUERY 5 17
6 QUERY 6 18
7 QUERY 7 19
8 QUERY 8 20
9 QUERY 9 21
10 QUERY 10 22
11 QUERY 11 23
12 QUERY 12 24
13 QUERY 13 25
14 QUERY 14 26
15 QUERY 15 28
16 PROCEDURE 34
17 FUNCTION 35
18 EXCEPTION 37
19 CURSOR 39
20 TRIGGER 40
2|Page
Program -1
Q1. Given the table STUDENT :
Student No. Class Name GAME Grade1 SUPW Grade2
22 7 Sameer Cricket B Photography A
11 8 Sujit Tennis A Gardening C
12 7 Kamal Swimming B Photography B
13 7 Veena Tennis C Cooking A
14 9 Archana BasketBall A Literature A
15 10 Arpit Cricket A Gardening C
(i) Display the names of the students who are getting a grade C in either GAME or SUPW.
(ii) Display the number of students getting grade A in cricket.
(iii) Display the different games offered in the school.
(iv) Display the SUPW taken by the students, whose name starts with ‘A’.
(v) Add a new column named ‘Marks’.
(vi) Assign a value 200 for Marks for all those who are getting grade B or above in GAME.
(vii) Arrange the whole table in alphabetical order to SUPW.
Ans (1) : - Create table STUDENT
3|Page
values (Student_no number (10),
Class number(10),
Name varchar2(10),
GAME varchar2(10),
(i) Select name from STUDENT
where Grade1 = ‘C’ or Grade2 = ’C’ ;
STUDENT_NO CLASS NAME GAME GRADE1 SUPW GRADE2
13 8kanjar Tennis A Gardening C
23 7teena Tennis C playing A
Sardar
16 10 Cricket A Gardening C
(ii) Select COUNT(Name) from STUDENT
where Grade1=’A’ and Game= ’Cricket’;
COUNT(*)
(iii) Select distinct(Games) from STUDENT;
GAME
baseball
Cricket
4|Page
badminton
Tennis
Literature
Gardening
(iv) Alter table STUDENT
Add (Marks number(10));
(v) Update STUDENT
Set Marks= 200 where Grade1=’B’ or ‘A’ ;
STUDENT_NO CLASS NAME GAME GRADE1 SUPW GRADE2 MARKS
10 7Sameer Cricket B Photography A 200
11 8Sujit Tennis A Gardening C
12 7kamal Swimming B Photography B 200
13 7Veena Tennis C Cooking A 200
5|Page
14 9Archana Basket Ball A Literature A
15 10Arpit Cricket A Gardening C
(vi) Select * from STUDENT
order by SUPW desc ;
STUDENT_NO CLASS NAME GAME GRADE1 SUPW GRADE2 MARKS
13 7teena Tennis C Cooking A 200
11 8meena Tennis A Gardening C
15 10sood Cricket A Gardening C
14 9Archana Basket Ball A Literature A
10 7Sameer Cricket B Photography A 200
12 7kamal Swimming B Photography B 200
Program-2
6|Page
Q2. Given the table SPORTS :
Student No. Class Name GAME1 Grade1 GAME2 Grade2
10 7 Sameer Cricket B Swimming A
11 8 Sujit Tennis A Skating C
12 7 Kamal Swimming B Football B
13 7 Veena Tennis C Tennis A
14 9 Archana Basket A Cricket A
Ball
15 10 Arpit Cricket A Atheletics C
(i) Display the names of the students who are getting a grade C in either GAME1 or GAME2.
(ii) Display the number of students getting grade A in cricket.
(iii) Display the names of the students who have same game for both GAME1 and GAME2.
(iv) Display the games taken by the students, whose name starts with ‘A’.
(v) Add a new column named ‘Marks’.
(vi) Assign a value 200 for Marks for all those who are getting grade B or above in GAME.
(vii) Arrange the whole table in alphabetical order of GAME.
Ans(2) :- Create table SPORTS
values (Student_no number (10),
7|Page
Class number(10),
GAME2 varchar2(10),
Grade2 varchar2(2)
);
Insert into SPORTS
values ( &Student_no , &Class, ’& Name’, ‘&GAME1’ , ‘&Grade1’ , ‘ &GAME2 ’, ‘&Grade2’) ;
(i) Select name from SPORTS
where Grade1 = ‘C’ or Grade2 = ’C’ ;
NAME
Sujit
Veena
Arpit
(ii) Select COUNT(Student_no) from SPORTS
where (Grade1 = ‘A’ OR Grade2 = ‘A’) AND (Game1 = ‘Cricket’ OR Game2 = ‘Cricket’);
COUNT(*)
(iii) Select distinct(GAME1 & Game2) from SPORTS ;
NAME
Veena
8|Page
(iv) Alter table SPORTS
Add (Marks number(10));
(v) Update SPORTS
Set Marks= 200 where Grade1>’B’ or Grade2 > ‘B’ ;
STUDENT_NO CLASS NAME GAME1 GRADE1 GAME2 GRADE2 MARKS
10 7Sameer Cricket B swimming A 200
11 8Sujit Tennis A skating C
12 7kamal Swimming B football B 200
13 7Veena Tennis C Tennis A 200
14 9Archana Basket Ball A Cricket A 200
15 10Arpit Cricket A Athletics C
(vi) Select name from SPORTS
order by name desc ;
9|Page
STUDENT_NO CLASS NAME GAME1 GRADE1 GAME2 GRADE2 MARKS
14 9Archana Basket Ball A Cricket A 200
15 10Arpit Cricket A Athletics C
10 7Sameer Cricket B swimming A 200
11 8Sujit Tennis A skating C
13 7Veena Tennis C Tennis A 200
12 7Kamal Swimming B Football B 200
Program-3
Q3. Given the table STUDENT :
Student No. Name Stipend Stream Avg.Marks Grade Class
1 Karan 400.00 Medical 78.5 B 12B
10 | P a g e
2 Divakar 450.00 Commerce 89.2 A 11C
3 Divya 300.00 Commerce 68.6 C 12C
4 Arun 350.00 Humanities 73.1 B 12C
5 Sabina 500.00 Nonmedical 90.6 A 11A
6 John 400.00 Medical 75.4 B 12B
7 Robert 250.00 Humanities 64.4 C 11A
8 Rubina 450.00 Nonmedical 88.5 A 12A
9 Vikas 500.00 Nonmedical 92.0 A 12A
10 Mohan 300.00 Commerce 67.5 C 12C
(i) Select all the Nonmedical stream students from STUDENT.
(ii) List the names of those students who are in class 12 sorted by stipend.
(iii) List all students sorted by Avg. Marks in descending order.
(iv) Display a report listing Name, Stipend, Stream, and Amount of Stipend received in a year
assuming that the stipend is paid every month.
(v) Count the number of students with Grade ’A’.
(vi) Insert a new student in the STUDENT table and fill all the columns with some values.
(vii) Give the output of the following SQL statement:
a) Select MIN (Avg. Marks) from STUDENT where Avg. Marks >75.
b) Select SUM (Stipend) from STUDENT where Grade =’ B’.
c) Select AVG (Stipend) from STUDENT where Class = ‘12A’.
d) Select COUNT (DISTINCT).
Ans(3) :- Create table STUDENT
values (Student_no number (10),
Name varchar2 (10),
Stipend number (10),
11 | P a g e
Stream varchar2 (10),
Insert into STUDENT
values ( &Student_no , ’& Name’, &Stipend , ‘&Stream’ , &Avg_marks, ‘&Grade’, ‘&Class’);
(i) Select name from STUDENT
where stream = ‘Nonmedical’ ;
STUDENT_NO NAME STIPEND STREAM AVGMARKS GR CLAS
5Sabina 500Nonmedical 90.6A 11A
8Rubina 450Nonmedical 88.5A 12A
9Vikas 500Nonmedical 92A 12A
(ii) Select name from STUDENT
NAME
Divya
Mohan
Arun
John
Rubina
Vikas
12 | P a g e
(iii) Select name from STUDENT
order by Avg_marks desc ;
STUDENT_NO NAME STIPEND STREAM AVGMARKS GR CLAS
9Vikas 500Nonmedical 92a 12A
5Sabina 500Nonmedical 90.6A 11A
2Divakar 450Commerce 89.2A 11C
8Rubina 450Nonmedical 88.5A 12A
6John 400Medical 75.4B 12B
4Arun 350Humanities 73.1B 12C
3Divya 300Commerce 68.6C 12C
10Mohan 300Commerce 67.5C 12C
7Robert 250Humanities 64.4c 11A
(iv) Select count (name) from STUDENT
where grade=’A ’;
COUNT(*)
(v) Insert into STUDENT
STUDENT_NO NAME STIPEND STREAM AVGMARKS GR CLAS
1karan 400medical 78.5B 12B
2Divakar 450Commerce 89.2A 11C
3Divya 300Commerce 68.6C 12C
4Arun 350Humanities 73.1B 12C
13 | P a g e
5Meena 150Commerce 65.3C 11A
6John 400Medical 75.4B 12B
7Robert 250Humanities 64.4c 11A
8Rubina 450Nonmedical 88.5A 12A
9Vikas 500Nonmedical 92a 12A
10Mohan 300Commerce 67.5C 12C
11Sumit 350Humanities 74.5B 12C
(vi)
(a) Select MIN(Avg_marks)
from STUDENT
where Avg_marks >75;
MIN(AVGMARKS)
75.4
(b) Select SUM(Stipend)
SUM(STIPEND)
14 | P a g e
1500
(c) Select AVG(Stipend)
from STUDENT
where class=’12A’;
AVG(STIPEND)
475
(d) Select count distinct (Stream)
from STUDENT ;
COUNT(DISTINCTSTREAM)
Program-4
Q4. Write SQL statement to create EMPLOYEE relations which contain EmpNo, Name, Skill, Pay
Rate.
Ans(4) :- CREATE table EMPLOYEE
( EmpNo number(5) NOT NULL PRIMARY KEY,
15 | P a g e
Name char(20),
DESC EMPLOYEE;
Name Null? Type
EMPNO NOT NULL NUMBER(5)
NAME CHAR(20)
SKILL CHAR(15)
PAYRATE NUMBER(8)
Program-5
Q5. Create a table with the under-mentioned structure.(Table name is Emp)
EmpNo Number(4)
DeptNo Number(2)
EmpName Char(10)
Job Char(10)
16 | P a g e
Manager Number(4)
HireDate Date
Salary Number(7,2)
Commission Number(7,2)
Ans5 :- Create table Emp
( Emp_No number (4),
Dept_No number(2),
Hire_Date date,
Salary number(7,2),
Commission number(7,2));
Name Null? Type
EMP_NO NUMBER(4)
DEPT_NO NUMBER(2)
EMP_NAME CHAR(10)
JOB CHAR(10)
MANAGER NUMBER(4)
HIRE_DATE DATE
SALARY NUMBER(7,2)
COMMISSION NUMBER(7,2)
Program-6
Q6. Find the number of employees having manager as job.
Ans 6 :-SELECT COUNT(*)
FROM EMP
17 | P a g e
WHERE Job = ‘Manager’;
JOB
Program-7
Q7. Display only the jobs with maximum salary greater than or equal to 3000.
Ans 7 :- SELECT Job
WHERE MAX(SALARY)>=3000;
18 | P a g e
JOB
CHAIRMAN
VICE PRESIDENT
SENIOR VICE PRESIDENT
PRESIDENT
Program-8
Q8. Find all those employees whose job does not start with ‘M’.
Ans 8 :-SELECT Empname,Job
FROM EMP
WHERE Job NOT LIKE ‘M%’;
19 | P a g e
JOB
CHAIRMAN
VICE PRESIDENT
SENIOR VICE PRESIDENT
PRESIDENT
DIRECTOR
EXECUTIVE SENIOR DIRECTOR
CEO
Program-9
Q9. List the minimum and maximum salary of each job type.
Ans 9 :- SELECT MAX(SALARY)
FROM EMP ;
MAX(SALARY)
SELECT MIN(SALARY) 9000
FROM EMP ;
MIN(SALARY)
3000
20 | P a g e
Program-10
Q10. Find all the employees who have no manager.
Ans .: FROM EMP
WHERE JOB !='MANAGER';
EMPNO DEPTNO EMPNAME JOB MANAGER HIREDATE SALARY COMMISION
1 13012RAJ CHAIRMAN 101-JAN-10 9000.55 1000
VICE
24 23015NAMIT 1609-OCT-10 8550.45 100
PRESIDENT
32 1200SHIPRA SENIOR VP 201-FEB-10 7545.50 0
35 33422AKASH PRESIDENT 1710-OCT-10 3900.45 900
43 34890POOJA DIRECTOR 302-DEC-10 3300.90 4500.75
EX.SENIOR
64 1236NEHA 402-DEC-10 4500.45 0
DIRECTOR
95 2390 VIKAS CEO 510-DEC-10 3000.00 0
7 rows selected.
21 | P a g e
Program-11
Q11. Create a table with the under-mentioned structure. (Table name is Dept.)
DeptNo. Number (2)
DeptName Char (12)
Location Char (12)
Ans 11 :- CREATE table DEPT
(Dept_No number(2) NOT NULL PRIMARY KEY,
Dept_name char(12),
Location char(12));
DESC DEPT;
Name Null? Type
DEPT_NO NOT NULL NUMBER(2)
DEPT_NAME CHAR(12)
22 | P a g e
LOCATION CHAR(12)
Program-12
Q12. Create a table PROJECT with the given structure.
Ans 12 :- CREATE table PROJECT
(Pro_Id number(4) NOT NULL PRIMARY KEY,
Pro_End_Dt date,
Budget_Amt number(7),
Max_No_staff number (2));
DESC PROJECT;
Name Null? Type
PRO_ID NUMBER(4)
PROJ_DESIGN CHAR(20)
PRO_START_DT DATE
PRO_END_DT DATE
BUDGET_AMT NUMBER(7)
MAX_NO_STAFF NUMBER(2)
23 | P a g e
Program-13
Q13. Create a table SALGRADE with the given structure.
Ans 13 :- CREATE table SALGRADE
Highsal number(7,2),
Grade number(2));
DESC SALGRADE;
Name Null? Type
LOWSAL NUMBER(7,2)
HIGHSAL NUMBER(7,2)
GRADE NUMBER(2)
24 | P a g e
Program-14
Q14. Write SQL statements to list all employees in the following format:
Ans 14 :- EMPLOYEE WORKS IN DEPARTMENT Dept No
SMITH WORKS IN DEPARTMENT 20
SMITHS WORKS IN DEPARTMENT 30
SANTOSH WORKS IN DEPARTMENT 30
CREATE table EMP (Emp_name varchar2(30),
DESC EMP;
Name Null? Type
EMP_NAME VARCHAR2(30)
DEPTNO NUMBER(4)
25 | P a g e
SELECT emp_name” works in department ”, deptno
FROM EMP;
EMP_NAME WORKS IN DEPARTMENT DEPTNO
Smith works in department 20
Sudhir works in department 20
Raj works in department 10
Smiths works in department 30
Santosh works in department 30
26 | P a g e
Program-15
Q15. Given the table MOV :
NO TITLE TYPE RATIN STARS QTY PRICE TOTAL
1Gone with the Wind Drama G Grable 4 40 160
2Friday the 13th Horror R Jason 2 70 140
3Top Gun Drama PG Cruise 7 50 350
4Splash Comedy PG13 Hanks 3 30 90
5Independence Day Drama R Turner 3 20 60
6Risky Business Comedy R Cruise 2 45 90
7Cocoon Scifi PG Amche 2 32 64
8Crocodile Dundee Comedy PG13 Harris 2 70 140
9101 Dalmations Comedy G 3 60 180
10Tootsie Comedy PG Hoffman 1 30 30
(i) Find the total value of cassettes available in the library.
SELECT SUM(Total)
FROM MOV;
SUM(TOTAL)
1304
27 | P a g e
(ii) Display a list of all movies with Price over 20 and sorted by Price.
SELECT Title, Price
FROM MOV
WHERE Price > 20
ORDER BY Price;
TITLE PRICE
Splash 30
Tootsie 30
Cocoon 32
Gone With The Wind 40
Risky Business 45
Top Gun 50
101 Dalmations 60
Friday The 13th 70
Crocodile Dundee 70
28 | P a g e
(iii) Display all the movies sorted by Qty in descending order.
SELECT Title,Qty
FROM MOV
ORDER BY Qty DESC;
TITLE QTY
Top Gun 7
Gone with the Wind 4
Splash 3
101 Dalmations 3
Independence Day 3
Friday the 13th 2
Risky Business 2
Cocoon 2
Crocodile Dundee 2
Tootsie 1
29 | P a g e
(iv) Display a report listing a movie number, current value and replacement value for each
movie in the above table. Calculate the replacement value for all movies as
Qty*Price*1.15.
SELECT No, Price, “Replacement Value’=Qty*Prcie*1.15
FROM MOV;
NO PRICE REPLACEMENT PRICE
1 39.95 183.77
2 69.95 160.89
3 49.95 402.1
4 29.95 103.33
5 19.95 68.83
6 44.95 103.39
7 31.95 73.49
8 69.95 160.89
9 59.95 206.83
10 29.95 34.44
(v) Count the number of movies where rating is not ‘G’.
SELECT COUNT(*)
FROM MOV
WHERE Rating <> ‘G’;
COUNT(*)
30 | P a g e
8
(vi) Insert a new movie in the table. Fill in all the columns with some values.
INSERT INTO MOV values(11 , ‘Tokyo Drift’ , ‘Drama’ , ‘G’ , ‘Nelson’ , 5 , 50);
NO TITLE TYPE RATIN STARS QTY PRICE TOTAL
1Gone with the Wind Drama G Grable 4 40 160
2Friday the 13th Horror R Jason 2 70 140
3Top Gun Drama PG Cruise 7 50 350
4Splash Comedy PG13 Hanks 3 30 90
5Independence Day Drama R Turner 3 20 60
6Risky Business Comedy R Cruise 2 45 90
7Cocoon Scifi PG Amche 2 32 64
8Crocodile Dundee Comedy PG13 Harris 2 70 140
9101 Dalmations Comedy G 3 60 180
10Tootsie Comedy PG Hoffman 1 30 30
11Tokyo Drift Drama G Nelson 5 50 250
31 | P a g e
(vii) Give the output of the following SQL Statements :
a. SELECT AVG(Price) FROM MOV WHERE Price < 30;
AVG(PRICE)
26.6166667
b. SELECT MAX(Price) FROM MOV WHERE Price > 30;
MAX(PRICE)
69.95
c. SELECT SUM(Price*Qty) FROM MOV WHERE Qty < 4;
SUM(PRICE*QTY)
843.05
d. SELECT COUNT(DISTINCT Type);
COUNT(DISTINCT TYPE)
32 | P a g e
PL/SQL
Write a procedure which will update the
i> ha=30% of basic,
Ii> ta=300
Iii> Ca=300
IV> da=15% of basic * (64%)
v> total
Depending on the empno.
SOLUTION
create table employee(eno number, basic number, ha number, ta number, ca number, d number, total
number);
insert into employee (eno) values (8001);
select * from employee;
ENO BASIC HA TA CA D TOTAL
8001 1000
8002 10000
create or replace procedure total_8001(empno in number)
is
bas number;
h number;
t number;
c number;
d number;
tot number;
33 | P a g e
begin
select basic into bas from employee where empno=eno;
h:=.3*bas;
t:=300;
c=:=800;
da:=1.5*bas*.64;
tot:=bas+h+t+c+da;
update employee set ha=h,ta=t,ca=c,d=da,tottal=tot where empno=eno;
end;
begin
total_8001 (8002);
end;
ENO BASIC HA TA CA D TOTTAL
8001 1000 300 300 800 960 3360
8002 10000 3000 300 800 9600 23700
34 | P a g e
Write a function which will update the
i> ha=30% of basic,
Ii> ta=300
Iii> Ca=300
IV> da=15% of basic * (64%)
v> total
Depending on the empno.
SOLUTION
create table employee(eno number, basic number, ha number, ta number, ca number, d number, total
number);
insert into employee (eno) values (8001);
select * from employee;
ENO BASIC HA TA CA D TOTAL
8001 1000
8002 10000
create or replace function total1_8001(empno in number)
return number
is
bas number;
h number;
t number;
c number;
da number;
tot number;
begin
35 | P a g e
select basic into bas from employee where eno=empno;
h:=.3*bas;
t:=300;
c:=800;
da:=1.5*bas*.64;
tot:=bas+h+t+c+da;
update employee set ha=h,ta=t,ca=c,d=da,tottal=tot where eno=empno;
return tot;
end;
declare
a number;
begin
a:=total1_8001(8003);
end;
ENO BASIC HA TA CA D TOTTAL
8001 1000 300 300 800 960 3360
8002 10000 3000 300 800 9600 23700
8003 30000 9000 300 800 28800 68900
36 | P a g e
Demonstrate Exception :-
declare
num number;
k number;
begin
num:=10;
k:=num/0;
dbms_output.put_line(k);
exception
when zero_divide then
dbms_output.put_line('division by zero');
end;
OUTPUT
division by zero
Statement processed.
37 | P a g e
Demonstrate cursor
WRITE a programme that will display the basic and the total amount .
ENO BASIC HA TA CA D TOTTAL
8001 1000 300 300 800 960 3360
8002 10000 3000 300 800 9600 23700
8003 30000 9000 300 800 28800 68900
declare
cursor cur is select * from employee;
x employee% rowtype;
begin
open cur;
loop
fetch cur into x;
exit when cur%notfound ;
dbms_output.put_line(x.basic);
dbms_output.put_line(x.tottal);
end loop;
close cur;
end;
output
1000
3360
10000
23700
30000
68900
Statement processed.
38 | P a g e
Demonstrate Trigger
ENO BASIC HA TA CA D TOTTAL
8001 1000 300 300 800 960 3360
8002 10000 3000 300 800 9600 23700
8003 30000 9000 300 800 28800 68900
create or replace trigger tig before insert on employee for each row
begin
if :new.basic>5000 then
raise_application_error(-20001,'invalid entry');
end if;
end;
Trigger created.
insert into employee (basic) values (7000);
ORA-20001: invalid entry
ORA-06512: at "SYSTEM.TIG", line 3
ORA-04088: error during execution of trigger 'SYSTEM.TIG'
1. insert into employee (basic) values (7000);
39 | P a g e