DBMS Queries
DBMS Queries
SOLUTION:
create table e
(
ssn varchar(6),
name varchar(10),
deptno int,
primary key(ssn)
);
Table created.
create table p
(
projectno varchar(10),
projectarea varchar(20),
primary key(projectno)
);
Table created.
create table a
(
usn varchar(6),
projectno varchar(10),
foreign key(usn)references e(ssn),
foreign key(projectno)references p(projectno)
);
Table created.
insert into e
values('01','abc',10);
1 row updated
insert into e
values('02','xyz',20);
1 row updated
insert into e
values('03','pqr',30);
1 row updated
insert into e
values('04','lmn',40);
1 row updated
insert into p
values('100','database');
1 row updated
insert into p
values('200','network');
1 row updated
insert into p
values('300','android');
1 row updated
insert into a
values('01','100');
1 row updated
insert into a
values('02','200');
1 row updated
insert into a
values('03','300');
1 row updated
insert into a
values('01','200');
1 row updated
select *
from e;
01 abc 10
02 xyz 20
03 pqr 30
04 lmn 40
select *
from p;
PROJECTNOPROJECTAREA100database200network300android
select *
from a;
USN PROJECTNO
01 100
02 200
03 300
01 200
SSN
01
select count(ssn),deptno
from e group by deptno;
COUNT(SSN) DEPTNO
1 30
1 20
1 40
1 10
update a
set projectno='200' where
usn='03';
1 row updated
select *
from a;
usn projectno
01 100
02 200
03 200
04 200
SOLUTION:
table created.
table created.
Table created.
1 row(s) inserted.
1 row(s) inserted.
1 row(s) inserted.
1 row(s) inserted.
insert into supply values(2,10,30);1 row(s) inserted.
insert into supply values(1,15,70);1 row(s) inserted.insert into supply values(3,15,40);
1 row(s) inserted.
insert into supply values(1,20,55);1 row(s) inserted.
insert into supply values(2,20,65);1 row(s) inserted.
insert into supply values(3,20,75);1 row(s) inserted.
select *
from part;
select *
from supply ;
PNOSNOQUANTITY
1 10 50
2 10 30
1 15 70
31540
12055
22065
32075
select *
from supplier ;
SNAME PNAME
Anoop bolt
Ram bolt
PNO
1 row(s) deleted.
select *
from part;PNO PNAME COLOUR1 plug black2 bolt blue
select *
from supply;PNO SNO QUANTITY 1 10 50 2 10 30
(
BID varchar(6) NOT NULL,
BNAME varchar(20),
COLOUR varchar(10),
PRIMARY KEY(BID)
);
SNAME varchar(20),
AGE varchar(3),
RATING varchar(2),
PRIMARY KEY(SID)
);
BID varchar(6),
SID varchar(6),
DAY varchar(10),
);
VALUES('01','ABC','RED');
INSERT INTO BOAT
VALUES('02','XYZ','YELLOW');
VALUES('03','PQR','GREEN');
VALUES('04','LMN','BLACK');
VALUES('05','DEF','BLUE');
VALUES('10','RAM','30','5');
VALUES('20','RAVI','25','4');
VALUES('30','MISHRA','22','3');
VALUES('40','CHANDRA','24','2');
VALUES('50','SHIVA','36','1');
VALUES('60','KRISHNA','40','6');
VALUES('01','20','MONDAY');
VALUES('03','50','WEDNESDAY');
VALUES('04','10','THURSDAY');
VALUES('05','20','FRIDAY');
SELECT *
FROM RESERVES
01 20 MONDAY
02 30 TUESDAY
03 50 WEDNESDAY
04 10 THURSDAY
05 20 FRIDAY
SELECT *
FROM SAILOR
10 RAM 30 5
20 RAVI 25 4
30 MISHRA 22 3
40 CHANDRA 24 2
50 SHIVA 36 1
60 KRISHNA 40 6
SELECT *
FROM BOAT
01 ABC RED
02 XYZ YELLOW
03 PQR GREEN
04 LMN BLACK
05 DEF BLUE
ans1
SELECT BID
FROM RESERVES
BID
04
ans2
SELECT BID,SNAME
on (r.SID=s.SID);
BID SNAME
04 RAM
05 RAVI
01 RAVI
02 MISHRA
03 SHIVA
ans 3
SELECT COUNT(BID),SID
FROM RESERVES
GROUP BY SID;
COUNT(BID) SID
1 50
2 20
1 10
1 30
SOLUTION:
SELECT *
FROM PARTT;
SELECT *
FROM WAREHOUSE;
SELECT *
FROM SHIPMENTS;
PNO WNO QUANTITY DATEE
01 20 300 28-FEB-13
02 30 400 30-JAN-13
03 10 00 31-JAN-13
04 40 600 31-MAR-13
05 50 100 31-DEC-13
ans a)
SELECT WNAME FROM WAREHOUSE
WHERE WNO IN(SELECT WNO FROM SHIPMENTS WHERE PNO=(SELECT PNO ROM
PARTT WHERE COLOUR='RED'));
WNAME
BBB
ans b)
SELECT PNO,WNAME
FROM SHIPMENTS s join WAREHOUSE w
on(s.WNO=w.WNO);
PNO WNAME
03 AAA
01 BBB
02 CCC
04 DDD
05 EEE
c)
SELECT COUNT(PNO),WNO
ROM SHIPMENTS
GROUP BY WNO;
COUNT(PNO) WNO
1 50
1 20
1 10
1 40
1 30
5.Consider the relations
BOOK(ISBN, TITLE,AUTHOR,PUBLISHER)
STUDENT(USN, NAME, SEM, DEPTNO),
BORROW(ISBN, USN, DATE)
Create the above tables, insert suitable tuples and perform the following operations in SQL:
a.Obtain the name of the student who has borrowed the book bearing ISBN ‘123’
b. Obtain the Names of students who have borrowed database books.
Find the number of books borrowed by each student
SOLUTION:
Queries:
1: select NAME from student1
where USN=(select USN from borrow where ISBN='001');
NAME
bbb
NAME
ccc
COUNT(ISBN)
1
1
1
1
1
BRANCH CUSTOMER
SOLUTION:
6a)
create table branch(code varchar(2),name varchar(10),assets int,primary key(code));
DECLARE
CURSOR CC IS
SELECT * FROM BRANCH;
V_CC CC%ROWTYPE;
BEGIN
OPEN CC;
LOOP
FETCH CC INTO V_CC ;
EXIT WHEN CC %NOTFOUND;
DBMS_OUTPUT.PUT_LINE('CODE '||V_CC.CODE ||' NAME '||V_CC.NAME ||' ASSETS '||
V_CC.ASSETS);
END LOOP;
CLOSE CC;
END;
/
DECLARE
CURSOR CC1 IS
SELECT * FROM CUSTOMER;
V_CC1 CC1%ROWTYPE;
BEGIN
OPEN CC1;
LOOP
FETCH CC1 INTO V_CC1;
EXIT WHEN CC1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('SSN '||V_CC1.SSN ||' NAME '||V_CC1.CNAME ||' PLACE '||
V_CC1.PLACE);
END LOOP;
CLOSE CC1;
END;
/
DECLARE
CURSOR CC2 IS
SELECT * FROM account;
V_CC2 CC2%ROWTYPE;
BEGIN
OPEN CC2;
LOOP
FETCH CC2 INTO V_CC2;
EXIT WHEN CC2%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('accno '||V_CC2.accno ||' ssn '||V_CC2.ssn ||' code '||V_CC2.code
||’balance’||V_CC2.balance);
END LOOP;
CLOSE CC2;
END;
/
b)DECLARE
V_INC NUMBER:=10;
BEGIN
UPDATE ACCOUNT
SET BALANCE=BALANCE+(BALANCE*0.1)
WHERE ssn=1;
COMMIT;
END;
/
7.(a) Write a PL/SQL program to check whether a given number is prime or not
(b) Using cursors demonstrate the process of copying the contents of one table to a new
table
SOLUTION:
7 a)
SET SERVEROUTPUT ON
DECLARE
n number:=&n;
j number:=2;
counter number:=0;
BEGIN
WHILE(j<=n/2) loop
if mod(n,j)=0 then
dbms_output.put_line(n ||' is not prime number');
counter:=1;
exit ;
else
j:=j+1;
end if;
end loop;
if counter=0 then
dbms_output.put_line( n || ' is a prime number');
end if;
end;
/
7)b)
create table part1(pno int,pname char(20),colour char(20),primary key(pno));
create table copy_part1(pno int,pname char(20),colour char(20),primary key(pno));
insert into part1 values(10,'nuts','black');
set serveroutput on
declare
cursor curr is select *from part1;
counter int;
rows part1%rowtype;
begin
open curr;
loop
fetch curr into rows ;
exit when curr%notfound;
insert into copy_part1 values(rows.pno,rows.pname,rows.colour);
end loop;
counter := curr%rowcount;
close curr;
dbms_output.put_line(counter||' rows inserted into the table copy_part1 ');
end;
/
8.(a) Write a program that gives all employees in department 10 a 15% pay increase. Display a
message displaying how many employees were awarded the increase.
(b) Create a program that accepts two numbers. If the first is larger than the second raise an
exception called e_bigger and display an appropriate message.
SOLUTION:
8)a)set serveroutput on
begin
update employee1
set salary=(1.15*salary) where deptno=10;
end;
/
8)b)
declare
n1 number(10);
n2 number(10);
ebigger exception;
begin
n1:= & sv1;
n2:= & sv2;
if n1<n2 then
dbms_output.put_line('no error because n1 is smaller');
else
raise ebigger;
end if;
9)a)
declare
a number;
b number;
c number;
n number;
i number;
begin
n:=8;
a:=0;
b:=1;
dbms_output.put_line(a);
dbms_output.put_line(b);
for i in 1..n-2
loop
c:=a+b;
dbms_output.put_line(c);
a:=b;
b:=c;
end loop;
end;
/
9)b)
declare
t_date date;
current_day varchar2(9);
begin
t_date:=sysdate;
current_day:=to_char(t_date,'day');
current_day:=initcap(current_day);
current_day:=rtrim(current_day);
dbms_output.put_line('Today is:'||current_day);
end;
/
10.(a) Write a PL/SQL procedure to find the factorial of a given number and a program
to call the same
(b) Consider the following relation schema.
EMPLOYEE (SSN, Name, sal, DeptNo)
Display SSN and name of employees of the department entered by the user as input
SOLUTION:
10)b)
create table employee1(ssn varchar(20),name char(20),deptno number(10),salary int,primary
key(ssn));
insert into employee1 values(1,'pra',10,1000);
insert into employee1values(2,'aaa',20,2000);
insert into employee1 values(3,'bbb',10,4000);
insert into employee1 values(4,'cc',30,10000);
insert into employee1 values(5,'bgg',10,2000);
select *from employee1;
set serveroutput on
declare
cursor cur is select *from employee1;
rows employee1%rowtype;
t int;
begin
open cur;
t:= & t1;
loop
fetch cur into rows;
exit when cur%notfound;
if rows.deptno=t
then
dbms_output.put_line('the ssn and names are '|| rows.ssn ||','||rows.name);
end if;
end loop;
close cur;
end;
/
11.(a) Write a PL/SQL program to check whether a given number is palindrome or not
(b) Consider the following relation schema.
EMPLOYEE (SSN, Name, sal, DeptNo)
Write a trigger to raise an error if the table is modified on a specific day (Eg., Saturday or
Sunday) of the week.
SOLUTION:
11a)
Declare
n number(10);
i number(10);
sum1 number(10);
k number(10);
Begin
sum1:=0;
n:=&n;
k:=n;
sum1:=(sum1*10)+i;
n:=trunc(n/10);
end loop;
if(k=sum1) then
else
end if;
end;