DBMS-II Practical Solutions
DBMS-II Practical Solutions
1
Person-Area Database
A)
1]person_area=# select pname from person,area where area.ano=person.ano and
aname='pimpri';
pname
----------
ghansham
ram
sham
aname count
------- --------
aundh road 1
pimpri 3
baramati 2
B)
person_area=# create or replace function se()
person_area-# returns text as'
person_area'# declare
person_area'# c1 cursor for select pname from person,area where area.ano=person.ano
and atype=''urban'';
person_area'# name text;
person_area'# te text;
person_area'# begin
person_area'# open c1;
person_area'# loop
person_area'# fetch c1 into name;
person_area'# update person set income=income + income*01 where pname=name;
person_area'# exit when not found;
person_area'# te:=''updated'';
person_area'# raise notice '' % '',te;
person_area'# end loop;
person_area'# close c1;
person_area'# return null;
person_area'# end;'
person_area-# language 'plpgsql';
CREATE FUNCTION
C)
1]person_area=# create or replace view v_p as
person_area-# select person.* from person order by pname ;
CREATE VIEW
D)
person_area=# create or replace function pet()
person_area-# returns opaque as'
person_area'# begin
person_area'# if(old.ano=411018)then
person_area'# raise exception '' person of this area cannot be deleted'';
person_area'# end if;
person_area'# return new;
person_area'# end;'
person_area-# language 'plpgsql';
CREATE FUNCTION
E)
person_area=# create or replace function peq()
person_area-# returns int as'
person_area'# declare
person_area'# cnt int;
person_area'# begin
person_area'# select into cnt count (pno) from person where bdate=''12-5-1976'';
person_area'# return cnt;
person_area'# end;'
person_area-# language 'plpgsql';
CREATE FUNCTION
person_area=# select *from peq();
peq
-----
2
(1 row)
ASignment-2
Movie- Actor Database
movie=# create table movies(m_name varchar(25) primary key,release_year int,budget
integer);
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index
"movies_pkey" for table "movies"
CREATE TABLE
movie=#
movie=# create table producer(p_id int primary key,name char(30),padd varchar(30));
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index
"producer_pkey" for table "producer"
CREATE TABLE
movie=#
A)
1. select mo_ac.a_name,mo_ac.m_name from actor,movies,mo_ac where
actor.a_name=mo_ac.a_name and movies.m_name= mo_ac.m_name and mo_ac.m_name
IN(select m_name from mo_ac where mo_ac.a_name='salman');
a_name | m_name
--------------------------------+-------
salman | kick
karan | kick
amitabh | kick
(3 rows)
2.
movie=# select m_name,budget from movies where budget=(select max(budget) from
movies);
m_name | budget
------------+-------
kick | 150000
bhoothnath | 150000
(2 rows)
3.
movie=# select actor.a_name,charges,movies.m_name,release_year from
movies,actor,mo_ac where movies.m_name=mo_ac.m_name and
actor.a_name=mo_ac.a_name and charges(select max(charges) from actor);
4.
movie=# select m_name,release_year from movies where release_year>2000;
m_name | release_year
------------+-------------
Alone | 2015
kick | 2014
bhoothnath | 2014
(3 rows)
5.
movie=# select a_name from actor where role='villan';
a_name
--------------------------------
amitabh
(1 row)
6.
movie=# select count(budget),sum(budget) from movies where release_year=2014;
count | sum
-------+-------
2 | 300000
(1 row)
B)
no_act
--------
(1 row)
c)
1.
movie=# create view vprod as select distinct(producer.name) from producer,prod_mo
where producer.p_id=prod_mo.p_id and m_name in(select movies.m_name from
movies,producer,prod_mo where movies.m_name=prod_mo.m_name and
producer.p_id=prod_mo.p_id and name='karan' );
CREATE VIEW
O/P:-
movie=#
movie=# select * from vprod;
name
--------------------------------
sajid
karan
(2 rows)
2)
movie=# create view v_add as select a_name,address from actor where address NOT
IN(select address from actor where address='punjab' or address='thane');
CREATE VIEW
o/p:-
movie=# select * from v_add;
a_name | address
--------------------------------+--------
bipasha | mumbai
salman | galaxy
(2 rows)
D)
movie=# create or replace function movie_nm(text)
movie-# returns text as'
movie'# declare
movie'# pname alias for $1;
movie'# aname actor.a_name%type;
movie'# mname movies.m_name%type;
movie'# cnt int;
movie'# c1 cursor for select movies.m_name from movies,producer,prod_mo where
movies.m_name=prod_mo.m_name and producer.p_id=prod_mo.p_id and name=pname;
movie'# begin
movie'# select into cnt count(movies.m_name)from movies,producer,prod_mo where
movies.m_name=prod_mo.m_name and producer.p_id=prod_mo.p_id and name=pname;
movie'# if cnt=0 then
movie'# raise exception''producer name is invalid'';
movie'# else
movie'# open c1;
movie'# loop
movie'# fetch c1 into mname;
movie'# exit when not found;
movie'# raise notice''%'',mname;
movie'# end loop;
movie'# close c1;
movie'# end if;
movie'# return null;
movie'# end;'
movie-# language 'plpgsql';
CREATE FUNCTION
O/P:----------
movie=# select movie_nm('karan');
NOTICE: Alone
NOTICE: kick
movie_nm
----------
(1 row)
E)
movie=# create or replace function mcharges()
movie-# returns text as'
movie'# declare
movie'# mname movies.m_name%type;
movie'# cost actor.charges%type;
movie'# c1 cursor for select movies.m_name,charges from movies,actor,mo_ac where
movies.m_name=mo_ac.m_name and actor.a_name=mo_ac.a_name
movie'# and actor.a_name=''amitabh'' order by m_name;
movie'# begin
movie'# open c1;
movie'# loop
movie'# fetch c1 into mname,cost;
movie'# exit when not found;
movie'# raise notice'' % %'',mname,cost;
movie'# end loop;
movie'# close c1;
movie'# return null;
movie'# end;'
movie-# language 'plpgsql';
CREATE FUNCTION
O/P:-
movie=# select mcharges();
NOTICE: bhoothnath 12000
NOTICE: kick 12000
mcharges
----------
(1 row)
…………………….
Asignment 3
Database :- Bank
1)
bank=# select customer.*, brname from branch,customer,bcl where branch.bid=bcl.bno
and customer.cno=bcl.cno and brname='Aundh';
cno | cname | caddr | city | brname
-----+---------------------+------------------+------------
201 | Vishal | pimpri | pune | Aundh
203 | Amar | Dadar | mumbai | Aundh
(2 rows)
2)
bank=# select cname,lamtrequired,lamtapproved from customer, loan_application,bcl
where customer.cno=bcl.cno and loan_application.lno=bcl.lno and lamtapproved <
lamtrequired ;
cname | lamtrequired | lamtapproved
----------------------+-------------+-------------
Vishal | 500000 | 250000
Amar | 30000 | 8000
Vishal | 50000 | 45000
Vikas | 500000 | 450000
(4 rows)
3.
bank=# select cname, brname,l_date from branch, customer,loan_application,bcl where
customer.cno=bcl.cno and branch.bid=bcl.bno and loan_application.lno=bcl.lno
and to_char(l_date,'month')='september';
cname | brname | l_date
----------------------+-------------------------------+---------
Vishal | M.G. road | 2013-09-12
Vikas | M.G. road | 2013-09-22
Vikas | Sadashiv Peth | 2013-09-25
(3 rows)
4.
bank=# select customer.*,lamtrequired from customer,loan_application,bcl where
bcl.cno=customer.cno and bcl.lno=loan_application.lno and lamtrequired >100000;
cno | cname | caddr | city | lamtrequired
-----+---------------------+-----------------------------------
201 | Vishal | pimpri | pune | 600000
202 | Vikas | kalyan | mumbai | 480000
202 | Vikas | kalyan | mumbai | 600000
202 | Vikas | kalyan | mumbai | 600000
(4 rows)
5.
bank=# select max(lamtapproved) from loan_application;
max
--------
720000
(1 row)
6.
bank=# select customer.*,brcity from customer, branch,bcl where bcl.bno=branch.bid and
bcl.cno=customer.cno and city=brcity;
cno | cname | caddr | city | brcity
-----+---------------------+------------------------------------
201 | Vishal | pimpri | pune | pune
204 | Ashi | nigdi pune | pune
202 | Vikas | kalyan | mumbai | mumbai
(3 rows)
B)
bank=# create or replace function total_cust()
bank-# returns integer as'
bank'# declare
bank'# cnt integer;
bank'# tot_loan_approved integer;
bank'# c1 cursor for select count(distinct(cno)), sum(lamtapproved) from
loan_application,bcl where loan_application.lno=bcl.lno ;
bank'# begin
bank'# open c1;
bank'# loop
bank'# fetch c1 into cnt,tot_loan_approved;
bank'# exit when not found;
bank'# raise notice ''% %'',cnt,tot_loan_approved;
bank'# end loop;
bank'# close c1;
bank'# return null;
bank'# end;'
bank-# language 'plpgsql';
CREATE FUNCTION
O/P:-
bank=# select total_cust();
NOTICE: 4 2466720
total_cust
------------
(1 row)
C) 1)
bank=# create view v_account as select cname,branch.* from customer, branch,bcl where
customer.cno=bcl.cno and branch.bid=bcl.bno order by cname;
CREATE VIEW
2)
bank=# create or replace view v_loan_apply as select loan_application.* from
loan_application,branch,bcl
bank-# where branch.bid=bcl.bno and loan_application.lno=bcl.lno and
brname='Sadashiv Peth';
CREATE VIEW
O/P :--
bank=# select * from v_loan_apply;
lno | lamtrequired | lamtapproved | l_date
-----+-------------+-------------+-----------
307 | 600000 | 648000 | 2013-09-25
(1 row)
D)
O/P:-
bank=# insert into loan_application values(308,600000,650000,'2013-08-12');
ERROR: loan amount approved should be less then loan amount required
bank=#
E)
bank=# create or replace function tot_cust(text)
bank-# returns integer as'
bank'# declare
bank'# bname alias for $1;
bank'# cnt integer;
bank'# begin
bank'# select into cnt count(*) from bcl,branch where branch.bid=bcl.bno and
brname=bname;
bank'# return cnt;
bank'# end;'
bank-# language 'plpgsql';
CREATE FUNCTION
O/P:-
bank=# select tot_cust ('Deccan');
tot_cust
----------
2
(1 row)
………………………
Asignment 4
Student-Teacher Database
sybcs=# create table student(sno int primary key,sname text,class text,add text);
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index
"student_pkey" for table "student"
CREATE TABLE
A.
1.
stud_teacher=# select count(*) from teacher where qualification='Phd';
count
-------
1
(1 row)
2)
stud_teacher=# select distinct(sname) from student,teacher,stuteach where
student.sno=stuteach.sno and teacher.tno=stuteach.tno and tname='mr patil';
sname
----------
sham
ghansham
ram
(3 rows)
3.
stud_teacher=# select tname,subject,count(*) from student,teacher,stuteach where
student.sno=stuteach.sno and teacher.tno=stuteach.tno group by tname,subject;
tname | subject | count
-------------+-----------+------
mrs sonawne | eletronics | 1
mr patil | computer | 1
mr shah | maths | 1
mr patil | eletronics | 1
mr patil | maths | 2
mrs sonawne | english | 1
(6 rows)
4.
stud_teacher=# select count(*) from student where add='pune' group by add;
count
-------
3
(1 row)
5.
stud_teacher=# select distinct(tname) from teacher,stuteach where
teacher.tno=stuteach.tno and subject='maths';
tname
----------
mr shah
mr patil
(2 rows)
6.
stud_teacher=# select sname,tname from teacher,student,stuteach where
teacher.tno=stuteach.tno and stuteach.sno=student.sno and experience=(select
max(experience) from teacher);
sname | tname
-------+--------
ram | mr shah
(1 row)
B)
stud_teacher=# create or replace function stud_details(text)
stud_teacher-# returns text as'
stud_teacher'# declare
stud_teacher'# stud_name alias for $1;
stud_teacher'# stud_no integer;
stud_teacher'# stud_class text;
stud_teacher'# address text;
stud_teacher'# c1 cursor for select * from student where sname=stud_name;
stud_teacher'# begin
stud_teacher'# open c1;
stud_teacher'# loop
stud_teacher'# fetch c1 into stud_no,stud_class,address;
stud_teacher'# exit when not found;
stud_teacher'# raise notice ''% % %'',stud_no,stud_class,address;
stud_teacher'# end loop;
stud_teacher'# close c1;
stud_teacher'# return null;
stud_teacher'# end;'
stud_teacher-# language 'plpgsql';
CREATE FUNCTION
O/P :-
stud_teacher=# select stud_details('sham');
NOTICE: 2 sham s.y.bcs
stud_details
--------------
(1 row)
C)
1.)
stud_teacher=# create view v1 as select tname from teacher where experience = (select
min(experience) from teacher);
o/p:-
stud_teacher=# select * from v1;
tname
-------------
mrs sonawne
(1 row)
2)
stud_teacher=# create view v2 as select tname,subject from teacher,stuteach where
stuteach.tno=teacher.tno order by tname;
o/p:-
stud_teacher=# select * from v2;
tname | subject
-------------+-----------
mr patil | maths
mr patil | computer
mr patil | eletronics
mr patil | maths
mr shah | maths
mrs sonawne | eletronics
mrs sonawne | english
(7 rows)
D)
E)
stud_teacher=# create or replace function teach_nm(text)
stud_teacher-# returns text as'
stud_teacher'# declare
stud_teacher'# stud_name alias for $1;
stud_teacher'# teacher_nm text;
stud_teacher'# c1 cursor for select distinct(tname) from teacher,student,stuteach where
teacher.tno=stuteach.tno and stuteach.sno=student.sno and sname=stud_name;
stud_teacher'# begin
stud_teacher'# open c1;
stud_teacher'# loop
stud_teacher'# fetch c1 into teacher_nm ;
stud_teacher'# exit when not found;
stud_teacher'# raise notice ''% '',teacher_nm;
stud_teacher'# end loop;
stud_teacher'# close c1;
stud_teacher'# return null;
stud_teacher'# end;'
stud_teacher-# language 'plpgsql';
CREATE FUNCTION
O/P:-
stud_teacher=# select teach_nm('ram');
NOTICE: mr shah
NOTICE: mr patil
NOTICE: mrs sonawne
teach_nm
----------
(1 row)
…………………………
Asignment no. 5
Project-Employee
project=# create table PROJECT
project-# (PNO INTEGER primary key,
project(# P_NAME CHAR(30),
project(# PTYPE CHAR(20),
project(# DURATION INTEGER);
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index
"project_pkey" for table "project"
CREATE TABLE
(4 rows)
A.
1
tejaswini=# select e_name from employee order by e_name;
e_name
----------------------
Amar
radha
Rakesh
sanjay
(4 rows)
2
tejaswini=# select employee.eno,e_name from employee,project,proj_emp
tejaswini-# where project.pno=proj_emp.pno and employee.eno=proj_emp.eno and
p_name='system';
eno | e_name
------+---------------------
2001 | Rakesh
(1 row)
3.
tejaswini=# select e_name,p_type,p_name from employee,project,proj_emp
tejaswini-# where project.pno=proj_emp.pno and employee.eno=proj_emp.eno and
e_name like'A%';
4.
tejaswini=# select e_name from employee,proj_emp where employee.eno=proj_emp.eno
and no_of_hours_worked>20;
e_name
----------------------
Rakesh
sanjay
(2 rows)
5
tejaswini=# select project.* from project where p_type='robotics';
pno | p_name | p_type | duration
-----+-------------------------------+---------------------+-
102 | system | robotics | 7
(1 row)
6.
tejaswini=# select e_name from employee,proj_emp where employee.eno=proj_emp.eno
and qualification='M.Tech' and start_date='1/1/2014';
e_name
----------------------
Amar
(1 row)
B)
O/P :-
tejaswini=#
tejaswini=# select join_date(‘2010-04-12’);
Rakesh
join_date
-----------
(1 row)
C.
1
tejaswini=# create view v_emp
tejaswini-# as select e_name from employee where(now()::date-joidate)>3;
CREATE VIEW
O/P:-
Select * from v_emp;
e_name
----------------------
Amar
Rakesh
sanjay
radha
(4 rows)
C.2
tejaswini=# create view v_noemp
as select employee.eno from employee,project,proj_emp where
project.pno=proj_emp.pno and employee.eno=proj_emp.eno and p_type!='robotics';
CREATE VIEW
tejaswini=# select * from v_noemp;
eno
------
2000
2002
2003
(3 rows)
D)
O/P :-
tejaswini=# insert into proj_emp values(104,2000,'1/1/2014',-1);
ERROR: no of hours worked should be greater than zero
E)
O/P:-
sybcs=# select emp();
NOTICE: 2000
NOTICE: 2002
emp
-----
(1 row)
………………………..
Assignment-6
A)
1.
business=# select trip.*,amount from trip,expense where tno=eid and amount > '$10000';
2.
business=# update expense set amount=amount+'$5000';
UPDATE 6
o/p:-
business=# select * from expense;
eid | amount
-----+------------
1 | $17,000.00
2 | $25,000.00
3 | $14,000.00
4 | $19,000.00
5 | $21,000.00
6 | $20,000.00
(6 rows)
4)
business=# select * from salesman where start_year<2008;
sno | s_name | start_year | deptno
-----+--------------------------------+------------+--------
105 | Raju | 2005 | 20
(1 row)
5.
business=# select * from salesman where s_name like 'A%';
sno | s_name | start_year | deptno
-----+--------------------------------+------------+--------
101 | Amit | 2008 | 10
103 | Ajay | 2010 | 10
(2 rows)
6.
business=# select dept_name,count(*) from dept,salesman,trip where
dept.deptno=salesman.deptno and salesman.sno=trip.sno
group by dept_name having count(*) >=all (select count(*) from dept,salesman,trip
where dept.deptno=salesman.deptno and salesman.sno=trip.sno group by dept_name);
dept_name | count
----------------------+-------
western | 3
(1 row)
B)
business=# create or replace function salesman_info()
business-# returns text as'
business'# declare
business'# sales_nm text;
business'# trno integer;
business'# tr_frm_cty text;
business'# tr_to_cty text;
business'# tr_dp_date date;
business'# tr_return date;
business'# amt money;
business'# c1 cursor for select s_name, tno, from_city, to_city, dparture_date,
return,amount from salesman,trip,expense where salesman.sno=trip.sno
and trip.tno=expense.eid;
business'# begin
business'# raise notice '' salesman trip No from city to city
departure date return amount'';
business'# raise notice '' ................................ '';
business'# open c1;
business'# loop
business'# fetch c1 into sales_nm,trno,tr_frm_cty,tr_to_cty,tr_dp_date,tr_return,amt;
business'# exit when not found;
business'# raise notice ''% % % % % %
%'',sales_nm,trno,tr_frm_cty,tr_to_cty,tr_dp_date,tr_return,amt;
business'# end loop;
business'# close c1;
business'# return null;
business'# end;'
business-# language 'plpgsql';
CREATE FUNCTION
O/P:-
business=# select salesman_info();
NOTICE: salesman trip Nofrom city to city departure_date return amount
NOTICE: .................................................
NOTICE: Vishal 1 pune mumbai 2008-07-22 2008-07-25 $12,000.00
NOTICE: Amit 2 pune banglore 2012-09-12 2012-09-14 $20,000.00
NOTICE: Vishal 3 nashik calcutta 2014-06-25 2014-06-29 $9,000.00
NOTICE: Ajay 4 pune calcutta 2014-07-15 2014-07-20 $14,000.00
NOTICE: Mr.Patil 5 pune mumbai 2014-07-15 2014-07-20 $16,000.00
NOTICE: Raju 6 pune Nashik 2014-08-12 2014-08-15 $15,000.00
salesman_info
---------------
(1 row)
c)
1.
dept_name | count
----------------------+-------
western | 3
(1 row)
2.
business=# create view v2 as select sum(amount) from salesman,trip,expense where
salesman.sno=trip.sno and trip.tno=expense.eid and s_name='Vishal';
CREATE VIEW
D)
B)
business=# create or replace function dept_salesman(text)
business-# returns text as'
business'# declare
business'# dname alias for $1;
business'# sales_nm text;
business'# cnt integer;
business'# c1 cursor for select s_name,count(*) from dept,salesman,trip where
dept.deptno=salesman.deptno and salesman.sno=trip.sno and dept_name=dname group
by s_name;
business'# begin
business'# open c1;
business'# loop
business'# fetch c1 into sales_nm,cnt;
business'# exit when not found;
business'# raise notice ''% % '',sales_nm,cnt;
business'# end loop;
business'# close c1;
business'# return null;
business'# end;'
business-# language 'plpgsql';
CREATE FUNCTION
O/P:-
business=# select dept_salesman('western');
NOTICE: Raju 1
NOTICE: Vishal 2
dept_salesman
---------------
(1 row)
c)
business=# create or replace function salesman_calcutta()
business-# returns text as'
business'# declare
business'# s_no integer;
business'# sales_nm text;
business'# cnt integer;
business'# c1 cursor for select salesman.sno,s_name from salesman,trip where
salesman.sno=trip.sno and to_city=''calcutta'';
business'# begin
business'# open c1;
business'# loop
business'# fetch c1 into s_no,sales_nm;
business'# exit when not found;
business'# raise notice ''% % '',s_no,sales_nm;
business'# end loop;
business'# close c1;
business'# return null;
business'# end;'
business-# language 'plpgsql';
CREATE FUNCTION
O/P:-
business=# select salesman_calcutta();
NOTICE: 102 Vishal
NOTICE: 103 Ajay
salesman_calcutta
(1 row)
Assignment-7
Warehouse
Create Table
^
sybcs=# select * from customer;
cno | cname | caddr | city
-----+---------------------+--------------------------
201 | Vishal | pimpri | pune
202 | Vikas | kalyan | mumbai
203 | Amar | Dadar | mumbai
(3 rows)
A) Queries
B)
sybcs=# create or replace function city_ware(text)
sybcs-# returns text as'
sybcs'# declare
sybcs'# cty alias for $1;
sybcs'# ware_nm text;
sybcs'# c1 cursor for select wname from cities, warehouses where
cities.city=warehouses.city and warehouses.city=cty;
sybcs'# begin
sybcs'# open c1;
sybcs'# loop
sybcs'# fetch c1 into ware_nm;
sybcs'# exit when not found;
sybcs'# raise notice ''% '',ware_nm;
sybcs'# end loop;
sybcs'# close c1;
sybcs'# return null;
sybcs'# end;'
sybcs-# language 'plpgsql';
CREATE FUNCTION
O/P :-
sybcs=# select city_ware('pune');
NOTICE: vtrans
NOTICE: u_courier
city_ware
-----------
(1 row)
C)View
D)
sybcs=# create or replace function del_state()
sybcs-# returns opaque as'
sybcs'# begin
sybcs'# if (old.state=''ms'') then
sybcs'# raise exception ''can not delete city from Maharashtra
state'';
sybcs'# end if;
sybcs'# return new;
sybcs'# end;'
sybcs-# language 'plpgsql';
CREATE FUNCTION
sybcs=# create trigger trig_del_state
sybcs-# before delete on cities
sybcs-# for each row
sybcs-# execute procedure del_state();
WARNING: changing return type of function del_state from
"opaque" to "trigger"
CREATE TRIGGER
O/P :-
sybcs=# delete from cities where state='ms';
ERROR: can not delete city from Maharashtra state
sybcs=#
E)
O/P :-
sybcs=# select ware_pune();
NOTICE: deep
NOTICE: renuka
ware_pune
-----------
(1 row)
Assignment-8
passanger_name
----------------
vishal
(1 row)
A.3
tejaswini=# select train_name from train where
no_of_res_bogies=30 and source_stn='mumbai' and dest_stn='pune';
train_name
-------------
yamuna fast
(1 row)
A.4
tejaswini=# select count(ticket.passanger_id) from
passanger,train,ticket where train.train_no=ticket.train_no and
tejaswini-# passanger.passanger_id=ticket.passanger_id and
train_name='hawara';
count
-------
2
(1 row)
A.5
tejaswini=# update ticket set status='c'from train,passanger
where train.train_no=ticket.train_no and
passanger.passanger_id=ticket.passanger_id and
train_name='shatabdi' and date='11/09/2009';
UPDATE 1
tejaswini=# select * from ticket;
train_no | passanger_id | ticket_no | bogie_no | no_of_berths | date |
ticket_amt | status
----------+-------------+----------+---------+-------------+-----------
+-----------+-------
101 | 1 | 5001 | 8 | 23 | 2009-05-13 |
2000.00 | c
103 | 3 | 5003 | 10 | 15 | 2009-12-15 |
5000.00 | w
104 | 4 | 5004 | 11 | 3 | 2009-04-03 |
4000.00 | c
102 | 2 | 5002 | 9 | 27 | 2009-11-09 |
3000.00 | c
(4 rows)
A.6)
tejaswini=# select passanger_name from passanger,train,ticket
where train.train_no=ticket.train_no and
passanger.passanger_id=ticket.passanger_id and
source_stn='mumbai' and dest_stn='pune' and date between
'4/3/2009' and '12/15/2009';
passanger_name
----------------
radhika
kunal
swati
(3 rows)
B)
C)
C.1
C.) 2
create view v_travel
as select passanger_name from passanger,train,ticket
where train.train_no=ticket.train_no and
passanger.passanger_id=ticket.passanger_id and source_stn='pune'
and dest_stn='mumbai';
CREATE VIEW
passanger_name
----------------
vishal
(1 row)
D)
tejaswini=# create or replace function arrive_dept()
tejaswini-# returns opaque as'
tejaswini'# begin
tejaswini'# if(new.Arrival_time>new.depart_time) then
tejaswini'# raise exception''arrival time should be less than
departure time'';
tejaswini'# end if;
tejaswini'# return new;
tejaswini'# end;'
tejaswini-# language 'plpgsql';
CREATE FUNCTION
O/P :-
tejaswini=# insert into train values
(104,'hawara','12:00:00','12:30:00','nagpur','satara',15,40);
ERROR: arrival time should be less than departure time
E)
tejaswini=# create or replace function ticket_amt(text,date)
tejaswini-# returns decimal as'
tejaswini'# declare
tejaswini'# train_nm for $1;
tejaswini'# t_date alias for $2;
tejaswini'# tamt decimal;
tejaswini'# begin
tejaswini'# select into tamt sum(ticket_amt) from ticket,train
where train.train_no=ticket.train_no and train_name=train_nm and
date=t_date;
tejaswini'# return tamt;
tejaswini'# end;'
tejaswini-# language 'plpgsql';
CREATE FUNCTION
O/P:-
tejaswini=# select ticket_amt(‘shatabdi’,'11/09/2009');
ticket_amt
------------
8000.00
(1 row)
Assignment-9
bus=# create table route(route_no int primary key,source
char(20),destination char(20),no_of_stations int );
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index
"route_pkey" for table "route"
CREATE TABLE
ANS :-
bus=# (select driver.driver_no,driver_name from driver,bus_driver where
driver.driver_no=bus_driver.driver_no and shift=1 and date='03/10/2015' )
intersect(select driver.driver_no,driver_name from driver,bus_driver
where driver.driver_no=bus_driver.driver_no and shift=2 and
date='03/10/2015');
driver_no | driver_name
-----------+---------------------
6 | ashish
(1 row)
/* table names and column names and output rows are different from above table,
but queries are correct.*/
4.
rv167=# update driv set sal=sal+sal*0.5 where dage>40;
UPDATE 1
rv167=#
rv167=# select * from driv;
dno | drname | lic | addr | dage | sal
-----+--------+-----+--------+------+-------
21 | karu | 101 | pimp | 30 | 15000
23 | sharma | 103 | fcrd | 40 | 25000
24 | patil | 104 | mjrd | 25 | 20000
22 | raj | 102 | chinch | 45 | 37500
(4 rows)
5:
rv167=# select rou.* from bus,rou where rou.rno=bus.rno and cap=20;
rno | src | dest | nos
-----+-------+------+-----
20 | nasik | mum | 5
(1 row)
6:
rv167=# (select driv.dno,drname from driv,bd1 where driv.dno=bd1.dno and
shift=1 and dod='1990/01/30')intersect(select driv.dno,drname from
driv,bd1 where driv.dno=bd1.dno and shift=2 and dod='1990/01/30');
dno | drname
-----+--------
21 | karu
(1 row)
B) Write a stored function using cursors to display the ditails
of driver. (Accept driver name as input parameter).
O/P :-
bus=# select driver_details('ashok');
NOTICE: 4 ashok 254896 sant_tukaram_nagar 32 15200
driver_details
----------------
(1 row)
C) create a view
O/P :-
bus=# select * from bus_details;
bus_no | capacity | depot_name | route_no
--------+---------+-----------+---------
13 | 45 | pune | 1
14 | 35 | khed | 2
(2 rows)
D)
sybcs=# create or replace function driver_age()
sybcs-# returns opaque as'
sybcs'# begin
sybcs'# if (new.d_age<18 or new.d_age >50) then
sybcs'# raise exception '' Drivers age should be between 18 and 50'';
sybcs'# end if;
sybcs'# return new;
sybcs'# end;'
sybcs-# language 'plpgsql';
CREATE FUNCTION
o/p :-
select d(12,’2015-03-15’);
Assignment-10
company-person
/*person*/
s9=# create table per(pid int primary key,pname text,pcity text);
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "per_pkey"
for table "per"
CREATE TABLE
/*cp*/
s9=# create table cp(cname text references comp(cname),pid int references
per(pid),nos int);
CREATE TABLE
/*A-QUERRY*/
1]
s9=# select cname from comp where cname like 't%';
cname
---------------
techmahindras
tcs
(2 rows)
2]
s9=# select pname,pcity from per where pcity='pune';
pname | pcity
---------+------
pooja | pune
madhuri | pune
(2 rows)
3]
5]
Select pcity, comp.cname, per.pname
from comp,per,cp
where per.pid=cp.pid
and comp.cname=cp.cname
order by pcity desc;
6.
B.)
s9=# create or replace function ccpname(text)
s9-# returns int as'
s9'# declare
s9'# ccname alias for $1;
s9'# cnt int;
s9'# c1 cursor for select count(*)
s9'# from comp,cp where comp.cname=cp.cname and comp.cname=ccname;
s9'# begin
s9'# open c1;
s9'# loop
s9'# fetch c1 into cnt;
s9'# exit when not found;
s9'# raise notice ''%'',cnt;
s9'# end loop;
s9'# close c1;
s9'# return null;
s9'# end;'
s9-# language 'plpgsql';
CREATE FUNCTION
s9=#
(1 row)
/*C-view*/
1]
s9=# create or replace view ccmp_name as select * from comp where
city='pune';
CREATE VIEW
O/P :-
s9=# select * from comp_name;
cname | add | city | phone | sharev
---------+----------+-----+-----------+-------
infosis | hinjawadi | pune | 9921345670 | 50000
wipro | mg road | pune | 9011378520 | 25000
(2 rows)
2]
s9=# create or replace view v_share as select cname,sharev from comp where
sharev>=50000;
CREATE VIEW
O/P :-
s9=# select * from v_share;
cname | sharev
---------+-------
bajaj | 250000
tcs | 150000
infosis | 50000
(3 rows)
/* D trigger */
s9=# create or replace function share()
s9-# returns opaque as'
s9'# begin
s9'# if(new.sharev<=0)then
s9'# raise exception ''NO OF SHARES CAN NOT BE ZERO'';
s9'# end if;
s9'# return new;
s9'# end;'
s9-# language 'plpgsql';
CREATE FUNCTION
O/P :-
/*E-FUNCTION*/
s9=# create or replace function sha()
s9-# returns text as'
s9'# declare
s9'# p_name text;
s9'# tot int;
s9'# c1 cursor for select pname,sum(nos)
s9'# from per,cp where per.pid=cp.pid
s9'# group by pname;
s9'# begin
s9'# open c1;
s9'# loop
s9'# fetch c1 into p_name,tot;
s9'# exit when not found;
s9'# raise notice ''% %'',p_name,tot;
s9'# end loop;
s9'# close c1;
s9'# return null;
s9'# end;'
s9-# language 'plpgsql';
CREATE FUNCTION
s9=# select sha();
NOTICE: raj 150
NOTICE: pooja 50
NOTICE: pratiksha 650
NOTICE: madhuri 450
NOTICE: jaya 1050
NOTICE: sneha 1600
sha
-----
(1 row)
Assignment-11
/student database
1]
104=# select name, sum(marks_scored)from student,st_su where
student.rollno=st_su.rollno group by name having sum(marks_scored)
>=all ( select sum(marks_scored)from student,st_su where
student.rollno=st_su.rollno group by name)
name
-------
rakesh
(1 row)
2]
104=# select distinct subject_name from subject1;
subject_name
--------------
stat
rdbms
dbms
maths
(4 rows)
3]
104=# select class,subject_name, name from subject1,student,st_su
where student.rollno=st_su.rollno and subject1.scode=st_su.scode order
by class,subject_name,name;
class | subject_name | name
-------+--------------|--------
fybcs | dbms
sybcs | rdbms
sybcs | maths
fybcs | maths
sybcs | dbms
(5 rows)
4]
104=# select count(*) from student,subject1,st_su where
student.rollno=st_su.rollno and subject1.scode=st_su.scode and
class='sybcs' and subject_name='rdbms';
count
-------
1
(1 row)
5]
104=# select distinct subject_name from student,subject1,st_su where
student.rollno=st_su.rollno and subject1.scode=st_su.scode and
class='fybcs';
subject_name
--------------
dbms
maths
(2 rows)
B]
O/P :-
104=# select sdetails('pune');
NOTICE: pratu dbms 40
NOTICE: rakesh rdbms 60
sdetails
----------
(1 row)
C]
1}
104=# create view v_sname as select name,class,sum(marks_scored)from
student,st_su where student.rollno=st_su.rollno group by name,class
order by name;
CREATE VIEW
O/P :-
104=# select * from v_sname;
name | class | sum
--------+-------+-----
merin | fybcs | 85
pooja | fybcs | 79
pratu | sybcs | 40
rakesh | sybcs | 60
sonal | sybcs | 90
(5 rows)
2}
104=# create view v_marks as select name,subject_name,marks_scored
from student,subject1,st_su where student.rollno=st_su.rollno and
subject1.scode=st_su.scode and marks_scored >40;
CREATE VIEW
O/P :-
104=# select * from v_marks;
name | subject_name | marks_scored
--------+--------------+--------------
sonal | maths | 90
rakesh | rdbms | 60
pooja | dbms | 79
merin | maths | 85
(4 rows)
[D]
O/P :-
teju275=# delete from student where rollno=101;
ERROR: STUDENT RECORD IS BEING DELETED
E]
O/P :-
104=# select tot_persent();
NOTICE: rollno totalmarks percent
NOTICE: 4 79 24
NOTICE: 1 90 28
NOTICE: 5 85 26
NOTICE: 3 60 18
NOTICE: 2 40 12
tot_persent
-------------
Asg-12
rv167=#create table np(name varchar(20) primary key,lang
varchar(20),pub varchar(20),cost money);
NOTICE: CREATE TABLE
QUERIES:
o/p:
rv167=# select np2();
NOTICE: 90 eng
NOTICE: 180 mara
np2
-----
(1 row)
C:VIEW
(1)rv167=# create view v_n as select np.name,lang,pub,cost,daily from
np,nc where np.name=nc.name and np.name='sakal';
CREATE VIEW
o/p:
rv167=# select * from v_n;
name | lang | pub | cost | daily
-------+------+----------+---------+-------
sakal | mara | mr.patil | $100.00 | 100
(1 row)
D:
rv167=# create or replace function t2()
rv167-# returns opaque as'
rv167'# declare
rv167'# len int;
rv167'# begin
rv167'# select into len length(new.pc) from cities1;
rv167'# if(len>6 or len<6) then
raise exception''PINCODE MUST B OF 6 DIGit'';
rv167'# end if;
rv167'# return new;
rv167'# end;'
rv167-# language 'plpgsql';
CREATE FUNCTION
o/p:
rv167=# insert into cities1 values(41101,'mum','maharashtra');
ERROR: PINCODE MUST B OF 6 DIGit
E:
rv167=# create or replace function e2()
rv167-# returns text as'
rv167'# declare
rv167'# c text;
rv167'# pay money;
rv167'# c1 cursor for select city,sum(cost) from np,cities1,nc where
np.name=nc.name and cities1.pc=nc.pc group by city;
rv167'# begin
rv167'# open c1;
rv167'# loop
rv167'# fetch c1 into c,pay;
rv167'# exit when not found;
rv167'# raise notice'' % %'',c,pay;
rv167'# end loop;
rv167'# close c1;
rv167'# return null;
rv167'# end;'
rv167-# language 'plpgsql';
CREATE FUNCTION
o/p:
rv167=# select e2();
NOTICE: pune $250.00
NOTICE: nasik $80.00
e2
----
(1 row)
Asg-13
Item-supplier database
Queries :-
1)
item_sup=# select * from item;
ino | iname | quantity
-----+-------------+---------
1 | keyboard | 28
2 | mouse | 15
(2 rows)
2)
item_sup=# select * from supplier;
sno | sname | address | city
-----+------+--------+-----
11 | Yash | pimpri | pune
12 | Akash | Nigadi | pune
13 | sagar | Thane | Mumbai
(2 rows)
3)
item_sup=# select iname, sname from item,supplier,item_sup where
supplier.sno = item_sup.sno and item.ino = item_sup.ino order by
iname;
iname | sname
--------------+------
keyboard | Akash
keyboard | yash
keyboard | sagar
mouse | Akash
(4 rows)
4)
item_sup=# select * from item where quantity=(select
max(quantity) from item);
ino | iname | quantity
-----+-------------+---------
1 | keyboard | 28
(1 row)
5)
item_sup=# select city,sname from supplier order by city;
city | sname |
-----+------+---+
mumbai | sagar |
pune | Yash |
pune | Akash |
6)
item_sup=# select sname from item_sup, supplier where
item_sup.sno=supplier.sno and rate = (select min(rate) from
item_sup, item where item_sup.ino=item.ino and iname='keyboard');
sname
-------
Yash
(1 row)
B)
item_sup=# create or replace function item_sup_qty()
item_sup-# returns text as'
item_sup'# declare
item_sup'# snm text;
item_sup'# inm text;
item_sup'# quantity integer;
item_sup'# c1 cursor for select sname, iname, qty from
item,supplier,item_sup where supplier.sno = item_sup.sno and
item.ino = item_sup.ino;
item_sup'# begin
item_sup'# open c1;
item_sup'# raise notice '' supp Name Item Name Qty '';
item_sup'# loop
item_sup'# fetch c1 into snm,inm,quantity;
item_sup'# exit when not found;
item_sup'# raise notice ''% % %'',snm,inm,quantity;
item_sup'# end loop;
item_sup'# close c1;
item_sup'# return null;
item_sup'# end;'
item_sup-# language 'plpgsql';
CREATE FUNCTION
O/P :-
item_sup=# select item_sup_qty();
NOTICE: supp Name Item Name Qty
NOTICE: Akash mouse 15
NOTICE: Akash keyboard 10
NOTICE: Yash keyboard 10
NOTICE: Sagar keyboard 8
C)1)
item_sup=# create view v_supp as select supplier.* from
item,supplier,item_sup where supplier.sno = item_sup.sno and
item.ino = item_sup.ino and iname='keyboard';
CREATE VIEW
item_sup=# select * from v_supp;
sno | sname | address | city
-----+------+--------+-----
12 | Akash | Nigadi | pune
11 | Yash | pimpri | pune
13 | sagar | Thane | mumbai
(3 rows)
2)
item_sup=# create or replace view v_item as select
distinct(iname) from item,supplier,item_sup where supplier.sno =
item_sup.sno and item.ino = item_sup.ino and city='pune';
CREATE VIEW
D:)) /* column names and table names are different for this prog */
(1 row)
E)
item_sup=# create or replace function count_supp(text)
item_sup-# returns int as'
item_sup'# declare
item_sup'# cty alias for $1;
item_sup'# cnt integer;
item_sup'# begin
item_sup'# select into cnt count(*) from supplier where
city=cty;
item_sup'# return cnt;
item_sup'# end;'
item_sup-# language 'plpgsql';
CREATE FUNCTIOn
O/P:-
item_sup=# select count_supp('pune');
count_supp
------------
2
(1 row)
**** End 2015-16 *****