0% found this document useful (0 votes)
53 views28 pages

DBMS

Uploaded by

rathodpankaj304
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
53 views28 pages

DBMS

Uploaded by

rathodpankaj304
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 28

--slip1

create table branch(


bid int primary key,
brname char(30),
brcity char(10)
);
insert into branch values(1,'mg Road','pune');
insert into branch values(2,'deccan','mumbai');
insert into branch values(3,'aundh','solapur');
insert into branch values(4,'swarget','nagpur');
insert into branch values(5,'parvati','konkan');
create table customer(
cno int primary key,
cname char(20),
caddr char(35),
city char(20)
);
insert into customer values(101,'raj','satara road','pune');
insert into customer values(102,'shreya','nagar road','solapur');
insert into customer values(103,'jaya','sahakar nagar','konkan');
insert into customer values(105,'sunny','kothrud','pune');
insert into customer values(106,'joya','swarget','Nagpur');
insert into customer values(107,'taran','parvati','konkan');
insert into customer values(108,'neha','aundh','solapur');
create table loan_application(
lno int primary key,
lamtrequired numeric(10,2),
lamtapproved numeric(10,2),
l_date date
);
insert into loan_application values(1111,300000,250000,'2019-01-02');
insert into loan_application values(2222,400000,300000,'2019-12-15');
insert into loan_application values(3333,200000,200000,'2019-05-23');
insert into loan_application values(4444,10000,15000,'2020-02-02');
insert into loan_application values(5555,900000,900000,'2018-01-01');
create table ternary(
bid int references branch(bid)
on delete cascade on update cascade,
cno int references customer(cno)
on delete cascade on update cascade,
lno int references loan_application(lno)
on delete cascade on update cascade
);
insert into ternary values(1,101,1111);
insert into ternary values(2,103,3333);
insert into ternary values(3,102,5555);
insert into ternary values(4,105,4444);
insert into ternary values(5,101,2222);
select * from branch;
select * from customer;
select * from loan_application;
select * from ternary;
--view
create view v1 as select * from customer where cno=(select cno from ternary where
bid=(select bid from branch where brcity='pimpri'));
select * from v1;

create view v2 as select cname from customer,branch where city=brcity;


select * from v2;

--trigger
create or replace function f1() returns trigger as
$$
begin
if old.cno<>new.cno then
raise exception 'you cant updarte customer number';
else
return new;
end if;
end;
$$
language plpgsql;

create trigger check_cno before update on customer for each row execute procedure
f1();
update customer set cno=2 where cno=101;

--funciotn
create or replace function f2(br_name varchar(20)) returns void as
$$
declare
rec record;
begin
for rec in select * from loan_application where lno=(select lno from ternary where
bid=(select bid from branch where brname=br_name))
loop
raise notice '%',rec;
end loop;
end;
$$
language plpgsql;

select f2('deccan');
--slip 2
create view v3 as select cname from customer where cno=(select cno from ternary
where lno=(select lno from loan_application where lamtrequired=500000));
select * from v3;

create view v4 as select * from loan_application where lno=(select lno from ternary
where bid=(select bid from branch where brcity='Aundh'));
select * from v4;

--trigger
create or replace function f3() returns trigger as
$$
begin
if new.lamtapproved>=new.lamtrequired then
raise exception 'loan amout should be less then required';
else
return new;
end if;
end;
$$
language plpgsql;

create trigger check_amount before insert on loan_application for each row execute
procedure f3();
insert into loan_application values(7777,300000,300000,'2019-01-02');

--function
create or replace function f4(branch_name text)
returns integer as $$
declare
brid integer;
customer_count integer;
begin
select bid into brid from branch where brname = branch_name;

if not found then


raise exception 'Invalid branch name';
end if;

select count(*) into customer_count from customer where cno = (select cno from
ternary where bid=brid);

return customer_count;
end;
$$
language plpgsql;

select f4('deccan');
--slipp 3
create view v5 as select cname from customer where cno=some(select cno from ternary
where lno=some(select lno from loan_application where lamtrequired>200000));
select * from v5;
drop view v5;

create view v6 as select cname,brname from customer,branch,ternary where


customer.cno=ternary.cno and branch.bid=ternary.bid order by brname;
select * from v6;
drop view v6;

--trigger
create or replace function f5() returns trigger as
$$
begin
if new.cno<=0 then
raise exception 'customer number should not be less than or zero';
else
return new;
end if;
end;
$$
language plpgsql;

create trigger check_cnos before insert on customer for each row execute procedure
f5();

insert into customer values(0,'sunny','kothrud','pune');

--function
create or replace function f6() returns void as $$
declare
cur cursor for select customer.cno, customer.cname, loan_application.lamtapproved
from customer,ternary,loan_application where customer.cno=ternary.cno and
loan_application.lno=ternary.lno;
rec record;
begin
open cur;
loop
fetch cur into rec;
exit when not found;

raise notice '%',rec;


end loop;

close cur;
end;
$$ language plpgsql;

select f6();
select customer.cno, customer.cname, loan_application.lamtapproved from
customer,ternary,loan_application where customer.cno=ternary.cno and
loan_application.lno=ternary.lno;

--slip 4
create table route
(
route_no int primary key,
source varchar(20),
destination varchar(20),
no_of_stations int
);
insert into route values(1,'aundh','warje',3);
insert into route values(2,'deccan','katraj',2);
insert into route values(3,'pashan','sangvi',2);
insert into route values(4,'kothrud','deccan',1);
insert into route values(5,'kothurd','deccan',1);
select * from route;

create table bus


(
bus_no int primary key,
bus_cap int NOT NULL,
dep_name varchar(20),
route_no int,
foreign key (route_no) references route(route_no)
);
insert into bus values(101,30,'aundh',1);
insert into bus values(102,20,'katraj',2);
insert into bus values(103,32,'deccan',3);
insert into bus values(104,25,'kothrud',4);
insert into bus values(105,15,'kothurd',5);
select * from bus;
drop table driver;
create table driver
(
d_no int primary key,
d_nm char(20),
lic_no int unique,
address char(20),
d_age int,
sal float
);
insert into driver values(100,'arun',10,'pune',40,15000.00);
insert into driver values(200,'bob',20,'pune',60,25000.00);
insert into driver values(300,'karan',30,'pune',30,5000.00);
insert into driver values(400,'ram',40,'pune',53,7000.00);
select * from driver;

create table bus_driver


(
bus_no int references bus(bus_no),
d_no int references driver(d_no),
route_no int references route(route_no),
date_of_duty date,
shift integer CHECK(shift in (1,2))
);
insert into bus_driver values(101,100,1,'2020-07-20',1);
insert into bus_driver values(102,200,2,'2020-06-20',2);
insert into bus_driver values(103,300,3,'2020-07-20',2);
insert into bus_driver values(104,400,4,'2020-06-02',2);
select * from bus_driver;

create view v1 as select * from driver where driver.d_no=(select bus_driver.d_no


from bus_driver where shift=1);
select * from v1;

create view v2 as select * from driver where sal>20000;


select * from v2;

--trigers
CREATE OR REPLACE FUNCTION check_driver_age()
RETURNS TRIGGER AS $$
BEGIN
IF NEW.d_age < 18 OR NEW.d_age > 35 THEN
RAISE EXCEPTION 'Invalid input: Driver age must be between 18 and 35';
END IF;
RETURN NEW;
END;$$
language plpgsql;

CREATE TRIGGER check_driver_age_trigger BEFORE INSERT ON driver FOR EACH ROW


EXECUTE PROCEDURE check_driver_age();
insert into driver values(800,'sham',80,'pune',50,50000);

create or replace function fun2(route_source varchar(20),route_destination


varchar(20)) returns void as
$$
declare
rec record;
begin
for rec in select * from bus where bus.route_no=
(select route.route_no from route where route.source=route_source and
route.destination=route_destination) loop
raise notice '%',rec;
end loop;
end;
$$
language plpgsql;

select fun2('aundh','warje');

--slip 5
--same database
create view v3 as select * from bus,driver where driver.d_no=(select
bus_driver.d_no from bus_driver where bus_driver.bus_no=101) and bus.bus_no=101;
drop view v3;
select * from v3;

create view v4 as select * from route where route.route_no=(select route_no from


bus where bus_cap=30);
select * from v4;

CREATE OR REPLACE FUNCTION check_salary()


RETURNS TRIGGER AS $$
BEGIN
IF NEW.sal<=0 THEN
RAISE EXCEPTION 'Invalid input: salary cannot be negatuive or xero';
END IF;
RETURN NEW;
END;$$
language plpgsql;

CREATE TRIGGER check_salary_trigger BEFORE INSERT ON driver FOR EACH ROW EXECUTE
PROCEDURE check_salary();

insert into driver values(900,'sham',90,'pune',20,0);

drop function dates();


CREATE OR REPLACE FUNCTION datee(driver_name VARCHAR(20)) RETURNS table(date_driven
date) AS $$
DECLARE
date_driven date;
-- driver_no integer;
cur cursor FOR
SELECT date_of_duty
FROM bus_driver
WHERE d_no = (select d_no from driver where d_nm=driver_name);
BEGIN
-- SELECT d_no INTO driver_no FROM driver WHERE d_nm = driver_name;
OPEN cur;
LOOP
FETCH cur INTO date_driven;
EXIT WHEN NOT FOUND;
return next;
END LOOP;
CLOSE cur;
END;
$$ LANGUAGE plpgsql;
select datee('ram');

CREATE OR REPLACE FUNCTION dat(driver_name VARCHAR) RETURNS void AS $$


DECLARE

d_sal float;
cur CURSOR FOR
select sal from driver where d_nm=driver_name;
BEGIN
-- SELECT d_no INTO driver_no FROM driver WHERE d_nm = driver_name;
OPEN cur;
LOOP
FETCH cur INTO d_sal;
EXIT WHEN NOT FOUND;
raise Notice '%',d_sal;
END LOOP;
CLOSE cur;
END;
$$ LANGUAGE plpgsql;

select dat('ram');
SELECT d.date_of_duty
FROM bus_driver AS d
WHERE d.d_no = (select d_no from driver where d_nm='ram');

SELECT date_of_duty
FROM bus_driver
WHERE d_no = (select d_no from driver where d_nm='ram');

--slip 7
postgres=# create database railway_reservation;
CREATE DATABASE
postgres=# create table train(train_no integer primary key,train_name
varchar(20),depart_time time,arrival_time time,source_stn varchar(20),dest_stn
varchar(20),no_of_res_bogies integer,bogie_capacity integer);
CREATE TABLE
postgres=# create table passenger(passenger_id integer primary key,passenger_name
varchar(20),address varchar(20),age integer,gender varchar(20));
CREATE TABLE
postgres=# create table ticket(train_no integer references
train(train_no),passenger_id integer references passenger(passenger_id),ticket_no
integer primary key,bogie_no integer,no_of_berths integer,tdate date,ticket_amt
numeric(7,2),ticket_status varchar(20) check(ticket_status in ('w','c')));
CREATE TABLE
postgres=# insert into train
values(101,'rajdhani','10:00:00','10:20:00','delhi','pune',5,2);
INSERT 0 1
postgres=# insert into train
values(102,'express','11:00:00','1:20:00','mumbai','pune',5,2);
INSERT 0 1
postgres=# insert into train
values(103,'bullet_train','11:00:00','1:20:00','amhendabad','pune',5,2);
INSERT 0 1
postgres=# insert into passenger values(201,'priya','delhi',30,'female');
INSERT 0 1
postgres=# insert into passenger values(202,'aditya','delhi',20,'male');
INSERT 0 1
postgres=# insert into passenger values(203,'pankaj','amritsar',19,'male');
INSERT 0 1
postgres=# insert into ticket values(101,201,301,1,2,'2023-06-06',50000.00,'c');
INSERT 0 1
postgres=# insert into ticket values(101,202,302,1,2,'2023-06-06',40000.00,'w');
INSERT 0 1
postgres=# insert into ticket values(102,203,303,2,3,'2023-07-09',35000.00,'c');
INSERT 0 1
postgres=# select * from ticket;
train_no | passenger_id | ticket_no | bogie_no | no_of_berths | tdate |
ticket_amt | ticket_status
----------+--------------+-----------+----------+--------------+------------
+------------+---------------
101 | 201 | 301 | 1 | 2 | 2023-06-06 |
50000.00 | c
101 | 202 | 302 | 1 | 2 | 2023-06-06 |
40000.00 | w
102 | 203 | 303 | 2 | 3 | 2023-07-09 |
35000.00 | c
(3 rows)

postgres=# select * from passenger;


passenger_id | passenger_name | address | age | gender
--------------+----------------+----------+-----+--------
201 | priya | delhi | 30 | female
202 | aditya | delhi | 20 | male
203 | pankaj | amritsar | 19 | male
(3 rows)

postgres=# select * from train;


postgres=# select * from train;
postgres=# select * from train;
train_no | train_name | depart_time | arrival_time | source_stn | dest_stn |
no_of_res_bogies | bogie_capacity
----------+--------------+-------------+--------------+------------+----------
+------------------+----------------
101 | rajdhani | 10:00:00 | 10:20:00 | delhi | pune |
5 | 2
102 | express | 11:00:00 | 01:20:00 | mumbai | pune |
5 | 2
103 | bullet_train | 11:00:00 | 01:20:00 | amhendabad | pune |
5 | 2
(3 rows) create view v1 as select passenger_name from passenger where
passenger_id=(select ^[[Dpassenger_id )
postgres-#
postgres-# \gselect * from train;lect passenger_name from passenger where
passenger_id=(select passenger_id )
invalid command \gselect
Try \? for help.
postgres-# \g
ERROR: syntax error at or near "
postgres=# create view v1 as select passenger_name from passenger where
passenger_id=(select passenger_id from ticket where train_no=(select train_no from
train where train_name='rajdhani') and ticket_status='w');
CREATE VIEW
postgres=# select * from v1;
passenger_name
----------------
aditya
(1 row)

postgres=# ^C
postgres=# create view v1 as select passenger_name from passenger where
passenger_id=(select passenger_id from ticket where train_no=(select train_no from
train where train_name='rajdhani') and ticket_status='w' and tdate='2023-06-06');
ERROR: relation "v1" already exists
postgres=# drop view v1;
DROP VIEW
postgres=# create view v1 as select passenger_name from passenger where
passenger_id=(select passenger_id from ticket where train_no=(select train_no from
train where train_name='rajdhani') and ticket_status='w' and tdate='2023-06-06');
CREATE VIEW
postgres=# select * from v1;
passenger_name
----------------
aditya
(1 row)

postgres=# create view v2 as select * from ticket where train_no=(select train_no


from train where train_name='rajdhani') and tdate='2023-06-06' limit 3;
CREATE VIEW
postgres=# select * from v2;
train_no | passenger_id | ticket_no | bogie_no | no_of_berths | tdate |
ticket_amt | ticket_status
----------+--------------+-----------+----------+--------------+------------
+------------+---------------
101 | 201 | 301 | 1 | 2 | 2023-06-06 |
50000.00 | c
101 | 202 | 302 | 1 | 2 | 2023-06-06 |
40000.00 | w
(2 rows)

postgres=#
postgres=# create or replace function fun1() returns trigger as
postgres-# $$
postgres$# declare
postgres$# if new.bogie_capacity>25 then
postgres$# raise exception 'bogie_capacity should not exceed more the 25';
postgres$# else
postgres$# return new;
postgres$# end if;
postgres$# end;
postgres$# $$
postgres-# language plpgsql;
ERROR: syntax error at or near "if"
LINE 4: if new.bogie_capacity>25 then

postgres=# create or replace function fun1() returns trigger as


postgres-# $$
postgres$# begin
postgres$# if new.bogie_capacity>25 then
postgres$# raise exception 'bogie_capacity should not exceed more the 25';
postgres$# else
postgres$# return new;
postgres$# end if;
postgres$# end;
postgres$# $$
postgres-# language plpgsql;
CREATE FUNCTION
postgres=#
postgres=# create trigger trigger_1 before insert on train for each row execute
procedure fun1();
CREATE TRIGGER
postgres=# insert into train
values(104,'express','11:00:00','1:20:00','mumbai','pune',5,50);
ERROR: bogie_capacity should not exceed more the 25
CONTEXT: PL/pgSQL function fun1() line 4 at RAISE
postgres=# insert into train
values(104,'express','11:00:00','1:20:00','mumbai','pune',5,20);
INSERT 0 1

postgres=# create or replace function fun2() returns void as


postgres-# $$
postgres$# declare
postgres$# rec record;
postgres$# cur cursor for select
train_no,train_no,passenger_id,ticket_no,bogie_no,no_of_berths,tdate,ticket_amt,tic
ket_status from ticket where tdate='2023-06-06' and ticket_status='c' order by
train_no ;
postgres$# begin
postgres$# open cur;
postgres$# loop
postgres$# fetch cur into rec;
postgres$# exit when not found;
postgres$# raise Notice '%',rec;
postgres$# end loop;
postgres$# close cur;
postgres$# end;
postgres$# $$
postgres-# language plpgsql;
CREATE FUNCTION
postgres=# select fun2();
NOTICE: (101,101,201,301,1,2,2023-06-06,50000.00,c)
slip 8

same database

postgres=# create view v3 as select passenger_name from passenger where


passenger_id=some(select passenger_id from ticket where ticket_status='c' and
tdate='2023-06-06' and train_no=some(select train_no from train where
train_name='express'));
CREATE VIEW
postgres=# select * from v3;

postgres=# create view v4 as select count(ticket_status) from ticket where


ticket_status='c' and tdate='2023-06-06';
CREATE VIEW
postgres=# select * from v4;
count
-------
1
(1 row)

create or replace function fun1() returns trigger as


$$
begin
if new.age>5 then
raise notice 'passengers obove 5 years will have full fare';
end if;
return new;
end;
$$
language plpgsql;

create trigger check_age after insert on passenger for each row execute procedure
fun1();
insert into passenger values(204,'omkar','delhi',30,'male');

create or replace function fun2() returns void as


$$
declare
rec record;
begin
for rec in select * from ticket where tdate='2023-06-06' and ticket_status='w'
order by train_no
loop
raise notice '%',rec;
end loop;
end;
$$
language plpgsql;

select fun2();

--slip 9
CREATE TABLE project (
pno INTEGER PRIMARY KEY,
pname TEXT NOT NULL,
ptype TEXT NOT NULL,
duration integer
);

-- insert
INSERT INTO project VALUES (0001, 'ERP', 'computer networks', 96);
INSERT INTO project VALUES (0002, 'cloud', 'Accounting', 48);
INSERT INTO project VALUES (0003, 'amazon', 'Sales', 128);

CREATE TABLE EMPLOYEE (


eno INTEGER PRIMARY KEY,
ename TEXT NOT NULL,
qualification TEXT NOT NULL,
joining_date date,
pno integer,
foreign key (pno) references project(pno)
);

-- insert
INSERT INTO EMPLOYEE VALUES (0001, 'Clark', 'MCA', '2002/12/31', 0001);
INSERT INTO EMPLOYEE VALUES (0002, 'Dave', 'Accounting', '2003/11/30', 0002);
INSERT INTO EMPLOYEE VALUES (0003, 'Ava', 'BBA', '2004/10/29', 0003);

CREATE TABLE Ternary (


pno integer,
eno integer,
foreign key (pno) references project(pno),
foreign key (eno) references EMPLOYEE(eno),
start_date date,
no_of_hours_worked integer
);

-- insert
INSERT INTO Ternary VALUES (0001, 0001, '2002/12/31', 20);
INSERT INTO Ternary VALUES (0002, 0002, '2003/11/30', 3000);
INSERT INTO Ternary VALUES (0003, 0003, '2005/10/29', 4000);

select * from ternary;

--views;

create view v1 as select pname,ptype,start_date from project,ternary where


project.pno=ternary.pno order by start_date;
select * from v1;

create view v2 as select * from employee where eno=(select eno from ternary where
pno=(select pno from project where pname='robotics'));
select * from v2;

--trigger

create or replace function f1() returns trigger as


$$
begin
if new.duration<=0 then
raise exception 'duration cannot be zero or less';
else
return new;
end if;
end;
$$
language plpgsql;

create trigger t1 before insert on project for each row execute procedure f1();

INSERT INTO project VALUES (0004, 'cloud', 'Accounting', 0);

create or replace function f2(p_name varchar(20)) returns void as


$$
declare
rec record;
cur cursor for select * from employee where eno=(select eno from ternary where
pno=(select pno from project where pname=p_name));
begin
open cur;
loop
fetch cur into rec;
exit when not found;
raise notice 'sd%',rec;
end loop;
close cur;
end;
$$
language plpgsql;

select f2('erp');

--slip10
--same database;

create view v3 as select * from employee order by joining_date desc;


select * from v3;

create view v4 as select employee.ename,project.pname from employee,project,ternary


where employee.eno=ternary.eno and project.pno=ternary.pno and
no_of_hours_worked<100;
select * from v4;

--trigger
create or replace function fun3() returns trigger as
$$
begin
if new.joining_date>=current_date then
raise exception 'joining date should be less then current date';
else
return new;
end if;
end;
$$
language plpgsql;

create trigger check_join_date before insert on employee for each row execute
procedure fun3();

INSERT INTO EMPLOYEE VALUES (0005, 'Ava', 'BBA', '2023/10/15', 0003);

--funciton
create or replace function fun4(p_name varchar(20)) returns integer as
$$
declare
pcunt integer;
cunt integer;
begin
select count(pno) into pcunt from project where pname=p_name;
select count(eno) into cunt from ternary where pno=(select pno from project where
pname=p_name);
if pcunt<=0 then
raise exception 'invalid name';
else
return cunt;
end if;
end;
$$
language plpgsql;

select fun4('ERP');

--slip 11;

--same database
create view v5 as select * from employee where pno=(select pno from project where
pname='ERP');
select * from v5;

create view v6 as select employee.ename,project.pname from employee,project,ternary


where employee.eno=ternary.eno and project.pno=ternary.pno and
no_of_hours_worked>100;
select * from v6;

--trigger
create or replace function fun5() returns trigger as
$$
begin
raise notice 'record deleted succesfully';
end;
$$
language plpgsql;

create trigger del_rec after delete on project for each row execute procedure
fun5();

delete from project where pno=0003;

--funciton
create or replace function fun6() returns void as
$$
declare
rec record;
begin
for rec in select * from employee where joining_date<'2022/10/03' loop
raise notice '%',rec;
end loop;
end;
$$
language plpgsql;

select fun6();
--slip12
create table student(
s_no int primary key,
s_name varchar(20),
s_class varchar(10) NOT NULL,
s_addr varchar(30));
insert into student values (1,'Avinash','SYBCA','Kothrud');
insert into student values (2,'Yogesh','SYBCS','Pune');
insert into student values (3,'Aaryan','SYBBA-CA','Ravivar Peth');
insert into student values (4,'Atul','SYBCA','Sadashiv Peth');
insert into student values (5,'Ashutosh','SYBCS','Pune');
insert into student values (6,'Gaurav','SYBBA-CA','Nanded City');
create table teacher(
t_no int primary key,
t_name varchar(20),
t_qul varchar(15),
t_exp int
);
insert into teacher values (11,'Suresh','Ph.D.',24);
insert into teacher values (12,'Mukesh','Ph.D.',24);
insert into teacher values (13,'Sanket','MCS',2);
insert into teacher values (14,'Tejas','BCS',3);
insert into teacher values (15,'Tushar','BCA',7);
insert into teacher values (16,'Vaibhav','Ph.D.',12);
create table stu_teach (
s_no int references student(s_no),
t_no int references teacher(t_no),
subject varchar(30));
insert into stu_teach values (1,11,'Java');
insert into stu_teach values (2,12,'RDBMS');
insert into stu_teach values (3,13,'C');
insert into stu_teach values (4,14,'C++');
insert into stu_teach values (5,15,'HTML');
insert into stu_teach values (6,16,'PHP');
insert into stu_teach values (1,16,'PHP');
insert into stu_teach values (2,15,'HTML');
insert into stu_teach values (3,14,'C++');
insert into stu_teach values (4,13,'C');
insert into stu_teach values (5,12,'RDBMS');
insert into stu_teach values (6,11,'Java');
select * from student;
select * from teacher;
select * from stu_teach;

--views
create view v1 as select * from student where s_no=some(select s_no from stu_teach
where t_no=some(select t_no from teacher where t_exp=some(select max(t_exp) from
teacher)));
select * from v1;
create view v2 as select distinct subject,t_name from teacher,stu_teach where
teacher.t_no=stu_teach.t_no order by t_name;
select * from v2;
drop view v2;

--trigger
create or replace function fun1() returns trigger as
$$
begin
if new.s_no<=0 then
raise exception 'invalid input';
else
return new;
end if;
end;
$$
language plpgsql;

create trigger check_stud before insert on student for each row execute procedure
fun1();

insert into student values (0,'Gaurav','SYBBA-CA','Nanded City');


select * from student;

--funciotn
create or replace function fun2(sub_name varchar(20)) returns integer as
$$
declare
cunt integer;
begin
select count(s_no) into cunt from stu_teach where subject=sub_name;
return cunt;
end;
$$
language plpgsql;

select fun2('PHP');

--slip 13

--same database
--views
create view v3 as
select * from teacher where t_qul ='Ph.D.';
select * from v3;

create view v4 as
select * from student where s_addr = 'Pune';
select * from v4;

--trigger
create or replace function fun3() returns trigger as $$
declare
begin
if new.t_exp < 5 then
raise exception 'Experience should be min 5 years' ;
end if;
end;
$$
language plpgsql;

create trigger checkexp


before insert on teacher
for each row execute procedure fun3();

insert into teacher values (17,'Vaibhav','Ph.D.',4);


select * from teacher;

-- funciotn
create or replace function fun4(stud_name varchar(20)) returns void as
$$
declare
rec record;
cur cursor for select * from teacher where t_no=some(select t_no from stu_teach
where s_no=some(select s_no from student where s_name=stud_name));
begin
open cur;
loop
fetch cur into rec;
exit when not found;
raise notice '%',rec;
end loop;
close cur;
end;
$$
language plpgsql;

select fun4('Gaurav');

--slip 14
create view v5 as select * from teacher where t_exp>5;
select * from v5;
create view v6 as select * from teacher where t_name like 'S%';
select * from v6;

--trigger
create or replace function f5() returns trigger as
$$
begin
if new.s_class='' then
raise exception 'class should not be empty';
else
return new;
end if;
end;
$$
language plpgsql;

create trigger trg_update before update on student for each row execute procedure
f5();

update student set s_class='SYBBA' where s_no=1;

--funciton
create or replace function fun6(stud_name varchar(20)) returns integer as
$$
declare
cunt integer;
begin
select count(t_no) into cunt from stu_teach where s_no=(select s_no from student
where s_name=stud_name);
return cunt;
end;
$$
language plpgsql;

select fun6('Gaurav');

--slip 15
create table students(rollno integer primary key,s_name varchar(20),city
varchar(20),class varchar(20));
create table subject(scode varchar(20) primary key,subject_name varchar(20));
create table student_subject(rollno integer references students(rollno),scode
varchar(20) references subject(scode),marks integer);

insert into students values(1,'shivam','pune','SYBBA');


insert into students values(2,'harshal','pune','SYBBA-CA');
insert into students values(3,'aryan','pune','SYBCA');
insert into students values(4,'sahil','pune','FYBCA');
insert into students values(5,'sneha','pune','FYBBA');
insert into students values(6,'sumit','pune','SYBBA');

insert into subject values('s1','DBMS');


insert into subject values('s2','PYTHON');
insert into subject values('s3','JAVA');
insert into subject values('s4','RDBMS');

insert into student_subject values(1,'s1',80);


insert into student_subject values(1,'s2',80);
insert into student_subject values(1,'s3',90);
insert into student_subject values(2,'s1',90);
insert into student_subject values(2,'s4',100);
insert into student_subject values(3,'s1',80);
insert into student_subject values(3,'s2',77);

create view view1 as select * from students where class='FYBCA';


select * from view1;

create view v2 as select s_name,subject_name,marks from


students,subject,student_subject where students.rollno=student_subject.rollno and
subject.scode=student_subject.scode and marks=90;
select * from v2;

--trigger
create or replace function f1() returns trigger as
$$
begin
if new.rollno<=0 then
raise exception 'rollno should not be less than or equal to zero';
else
return new;
end if;
end;
$$
language plpgsql;

create trigger trg_insert before insert on student_subject for each row execute
procedure f1();
insert into students values(0,'sumit','pune','SYBBA');

--funciton
create or replace function f2() returns void as
$$
declare
rec record;
cur cursor for select rollno,sum(marks) from student_subject group by rollno;
begin
open cur;
loop
fetch cur into rec;
exit when not found;
raise notice '%',rec;
end loop;
end;
$$
language plpgsql;

select f2();

--slip 16
create view v3 as select s_name from students where rollno=(select rollno from
student_subject where scode=(select scode from subject where subject_name='DBMS')
and marks>80);
select * from v3;

create view v4 as select * from students where class='TYBCA';


select * from v4;

--trigger

create or replace function f3() returns trigger as


$$
begin
raise exception 'record has been deleted succesfully';
end;
$$
language plpgsql;

create trigger check_stud after delete on students for each row execute procedure
f3();
delete from students where rollno=6;

--funciotn
create or replace function f4(stud_name varchar(20)) returns void as
$$
declare
rec record;
begin
for rec in select * from subject where scode=some(select scode from student_subject
where rollno=some(select rollno from students where s_name=stud_name))
loop
raise notice '%',rec;
end loop;
end;
$$
language plpgsql;
select f4('harshal');

select * from subject where scode=some(select scode from student_subject where


rollno=some(select rollno from students where s_name='harshal'));

--slip 17
create view v5 as select * from students where s_name like 'a';
select * from v5;

create view v6 as select * from students where rollno=(select rollno from


student_subject where marks<40);
select * from v6;

--trigger
create or replace function f5() returns trigger as
$$
begin
if new.marks<0 or new.marks>100 then
raise exception 'marks should mw in th range of 1 to 100';
else
return new;
end if;
end;
$$
language plpgsql;

create trigger check_mark before insert on student_subject for each row execute
procedure f5();

--funciton
create or replace function f6(c_ity varchar(20)) returns void as
$$
declare
rec record;
begin
for rec in select * from students where city=c_ity
loop
raise notice '%',rec;
end loop;
end;
$$
language plpgsql;

select f6('pune');
--slip18 create table Movie
( mname varchar(25) primary key,relyear int not null, mbudget money);
insert into Movie values
('Raid',2017,210000),
('Padmavat',2016,130000),
('kkhh',2009,120000),
('ddlj',2004,150000),
('balh',2002,110000);
create table Actor
(aname char(30) primary key, acity varchar(30));
insert into Actor values
('Ajay','Mumbai'),
('Deepeka','delhi'),
('Kajol','Indore'),
('Khan','Mumbai'),
('Priya','Pune');
create table Producer
(pid int primary key,pname varchar(30),padd varchar(30));
insert into producer values
(01,'Rushi','Pune'),
(02,'Dhruv','Surat'),
(03,'Khashi','delhi'),
(04,'Omkar','ooty'),
(05,'Rushi','Pune');
create table movie_actor
(mname varchar(25) references movie(mname),aname char(20) references
Actor(aname),role varchar(20),charges int);
insert into movie_actor values
('Raid','Ajay','Hero', 500),
('Padmavat','Deepeka','Heroine',600),
('kkhh','Kajol','Villen',300),
('ddlj','Khan','Hero',400),
('balh','Priya','Main',600);
create table movie_pro
(mname varchar(25) references movie(mname),pid int references producer(pid));
insert into movie_pro values
('Raid',01),
('Padmavat',02),
('kkhh',03),
('ddlj',04),
('balh',05);
select * from Movie;
select * from Actor;
select * from Producer;
select * from movie_actor;
select * from movie_pro;

--views

create View v1 as select aname from Actor where acity = 'Mumbai';


select * from v1;

create view view2 as select *,mname from Actor where aname=some(select aname from
movie_actor order by mname);
select * from view2;

--trigger
create or replace function f1() returns trigger as
$$
begin
if new.mbudget<'6000000' then
raise exception 'movie budget should be minimum 60 lakh';
else
return new;
end if;
end;
$$
language plpgsql;

create trigger check_budget before insert on movie for each row execute procedure
f1();

insert into Movie values('uri',2017,'210000');

--funciotn
create or replace function f2(p_name varchar(20)) returns integer as
$$
declare
cunt integer;
begin
select count(mname) into cunt from movie_pro where pid=(select pid from producer
where pname=p_name);
return cunt;
end;
$$
language plpgsql;

select f2('Omkar');

--slip 19
create view v3 as select * from actor where aname=(select aname from movie_actor
where mname='sholey');
select * from v3;

create view v4 as select * from producer where pid=(select pid from movie_pro group
by pid having count(mname)>2);
select * from v4;
--trigger

create or replace function f3() returns trigger as


$$
begin
if new.charges>3000000 then
raise exception 'charge should not exceed 30 lakh';
else
return new;
end if;
end;
$$
language plpgsql;

create trigger check_budget before insert on movie_actor for each row execute
procedure f3();

insert into movie_actor values('Raid','Ajay','Hero',50000000)

--funciotn
create or replace function f4(actor_name varchar(20)) returns void as
$$
declare
m_name varchar(20);
rec record;
begin
select * into rec from actor;
if rec.aname<>actor_name then
raise exception 'invalid actor name';
else
for rec in select * from movie_actor where aname=actor_name
loop
raise notice '%',rec;
end loop;
end if;
end;
$$
language plpgsql;

select f4('Ajay');

--slip 20
--vie \
create view v5 as select mname from movie_pro where pid=(select pid from producer
where pname='mr.subhash ghai');
select * from v5;

create View v6 as select aname from Actor where acity <> 'Mumbai' and acity
<>'Pune';
select * from v6;
drop view v6;
--trigger

create or replace function f5() returns trigger as


$$
begin
if new.relyear>2023 then
raise exception 'release date should not be ggreate then current date';
else
return new;
end if;
end;
$$
language plpgsql;

create trigger check_date before insert on movie for each row execute procedure
f5();
insert into Movie values('om',2024,7000000);

--fucntion
create or replace function f4() returns void as
$$
declare
rec record;
cur cursor for select charges,mname from movie_actor where aname='Amitab bachan'
order by mname;
begin
open cur;
loop
fetch cur into rec;
exit when not found;
raise notice '%',rec;
end loop;
close cur;
end;
$$
language plpgsql;

select f4();

select charges,mname from movie_actor where aname='Ajay' order by mname;


select * from movie_actor;

You might also like