0% found this document useful (0 votes)
20 views21 pages

Dbms Record 1 7 PROG

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

Dbms Record 1 7 PROG

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

SQL and PL/SQL LAB

PAGE
S.NO DATE CONTENT NO SIGNATURE

SQL

1. a) CREATION OF TABLES

b) DISPLAYING THE EMPLOYEES


WORKING IN A PARTICULAR
COMPANY

c) FINDING THE NAMES AND CITY OF


EMPLOYEES

d) FINDING DETAILS OF EMPLOYEE


USING NESTED SUBQUERY

e) FINDING THE EMPLOYEE NAMES


USING GROUP BY

f) CREATING SUBQUERY WITH


REGARD TO SALARY

g) FINDING TOTAL AND AVERAGE OF


SALARY USING GROUP BY

h) LISTING THE EMPLOYEES WITH


REGARD TO PAY USING SUBQUERY

i) FINDING THE EMPLOYEE WORKING


FOR A PARTICULAR MANAGER

j) UPDATING THE NAME OF EMPLOYEE

PL/SQL

CHECKING ODD OR EVEN AND INSERT


2. VALUES

DISPLAYING FIVE HIGHEST PAID


3. EMPLOYEES

4. UPDATING A TABLE FROM ANOTHER


TABLE
CREATING PACKAGE TO HIRE AND FIRE
5. AN EMPLOYEE

CALCULATING THE EMPLOYEE’S


6. EXPERIENCE USING CURRENT DATE

SELECTION AND UPDATION OF


7. PRODUCT PRICE

PROCEDURE

8. CALCULATING SIMPLE INTEREST

UPDATING FARE BY ACCEPTING ROUTE


9. ID

FUNCTION
FUNCTION THAT RETURNS EMPLOYEE
10. WORKING IN ADMIN DEPARTMENT

FUNCTION THAT FINDS THE RESULT OF


11. A STUDENT

TRIGGER

12. MANIPULATION USING WEEK DAYS

MAINTAINING THE HISTORY OF


13. PRODUCT PRICES

RAILWAY RESERVATION AND


14. CANCELLATION

(A) QUERIES THAT SHOWS HOW TO CREATE A TABLE AND INSERT


VALUES INTO IT:
● Create table employee(eid varchar2(7)not null primary key,ename
varchar2(15),street varchar2(15),city varchar2(10));

● Insert into employee values(‘e01’,’smith’,’R.K.Street’,’Chennai’);


● Insert into employee values(‘e02’,’john’,’M.M.Street’,’Chennai’);
● Insert into employee values(‘e03’,’sunny’,’Rajiv Street’,’Mumbai’);
● Insert into employee values(‘e04’,’rex’,’K.K.Street’,’Delhi’);
● Insert into employee values(‘e05’,’ramu’,’Ram nagar’,’Chennai’);
● Insert into employee values(‘e06’,’ragu’,’Kalki nagar’,’Delhi’);

EID ENAME STREET CITY


---- --------------- ----------- -----
E01 smith R.K.Street Chennai
E02 john M.M.Street Chennai
E03 sunny Rajiv Street Mumbai
E04 rex K.K Street Delhi
E05 ramu Ram nagar Chennai
E06 ragu Kalki nagar Delhi

● Create table works(wid varchar2(7)not null primary key,ename


varchar2(15),cname varchar2(15),salary number(10),eid varchar2(7));
● Alter table works add foreign key (eid) references employee(eid);
● Insert into works values(‘w01’,’smith’,’TCS’,50000,’e01’);
● Insert into works values(‘w02’,’john’,’TCS’,40000,’e02’);
● Insert into works values(‘w03’,’sunny’,’CTS’,125000,’e03’);
● Insert into works values(‘w04’,’rex’,’INFOSYS’,20000,’e04’);
● Insert into works values(‘w05’,’ramu’,’TCS’,265000,’e05’);
● Insert into works values(‘w06’,’ragu’,’TCS’,150000,’e06’);

WID Ename Cname Salary EID


W01 Smith TCS 50000 E01
W02 John TCS 40000 E02
W03 Sunny CTS 125000 E03
W04 Rex INFOSYS 20000 E04
W05 Ramu TCS 265000 E05
W06 Ragu TCS 150000 E06

● Create table company(cid varchar2(7)not null primary key, cname


varchar2(15),city varchar2(15),eid varchar2(7));
● Alter table company add foreign key (eid) references employee(eid);
● Insert into company values(‘c01’,’TCS’,’Chennai’,’e01’);
● Insert into company values(‘c02’,’TCS’,’Mumbai’,’e02’);
● Insert into company values(‘c03’,’CTS’,’Chennai’,’e03’);
● Insert into company values(‘c04’,’INFOSYS’,’Chennai’,’e04’);
● Insert into company values(‘c05’,’TCS’,’Delhi’,’e05’);
● Insert into company values(‘c06’,’TCS’,’Kolkatta’,’e06’);

CID CNAME CITY EID


------------------------- ------------- -----
C01 TCS Chennai E01
C02 TCS Mumbai E02
C03 CTS Chennai E03
C04 INFOSYS Chennai E04
C05 TCS Delhi E05
C06 TCS kolkatta E06

● Create table manager(mid varchar2(7)not null primary key,ename


varchar2(15),mname varchar2(15),eid varchar2(7));
● Alter table manager add foreign key (eid) references employee(eid);
● Insert into manager values(‘m01’,‘smith’,’blake’,’e01’);
● Insert into manager values(‘m02’,‘john’,’blake’,’e02’);
● Insert into manager values(‘m03’,’sunny’,’blake’,’e03’);
● Insert into manager values(‘mo4’,’rex’,’rock’,’e04’);
● Insert into manager values(‘m05’,‘ramu’,’rock’,’e05’);
● Insert into manager values(‘m06’,’ragu’,’rock’,’e06’);

MID ENAME MNAME EID


----- ----------- ------------ ------
M01 Smith Blake E01
M02 John Blake E02
M03 Sunny Blake E03
M04 Rex Rock E04
M05 Ramu Rock E05
M06 Ragu Rock E06

CREATING TABLE WITH PRIMARY KEY:


● Create table employee(eid number(5),ename varchar2(15),street varchar2(15),city
varchar2(10),primary key(eid));

CREATING TABLE WITH FOREIGN KEY:

● Create table company(eid number(5),cname varchar2(15),city varchar2(15),foreign


key(eid) references employee(eid));

ALTERING TABLE WITH PRIMARY KEY:

● Create table employee(eid number(5),ename varchar2(15),street varchar2(15),city


varchar2(15));

● Alter table employee add primary key(eid);

ALTERING TABLE WITH FOREIGN KEY:

● Create table company(eid number(5),cname varchar2(15),city varchar2(15));

● Alter table company add foreign key(eid) references employee(eid);

DROP PRIMARY KEY AND FOREIGN KEY:

● Alter table employee drop primary key;

● Alter table company drop foreign key;


(B)FIND THE NAMES OF ALL EMPLOYEES WHO WORK FOR A PARTICULAR
COMPANY

EMPLOYEE

SQL> select * from employee;

EID ENAME STREET CITY


---- --------------- ----------- -----
E01 smith R.K.Street Chennai
E02 john M.M.Street Chennai
E03 sunny Rajiv Street Mumbai
E04 rex K.K Street Delhi
E05 ramu Ram nagar Chennai
E06 ragu Kalki nagar Delhi

COMPANY
SQL>select * from company;

CID CNAME CITY EID


------------------------- ------------- -----
C01 TCS Chennai E01
C02 TCS Mumbai E02
C03 CTS Chennai E03
C04 INFOSYS Chennai E04
C05 TCS Delhi E05
C06 TCS kolkatta E06

QUERY:

SQL>select employee.ename from employee ,company where


employee.eid=company.eid and company.cname='TCS';

OUTPUT:

ENAME
smith
john
ramu
ragu
(C)FIND THE NAME AND CITY OF RESIDENCE FOR ALL EMPLOYEES WHO
WORK FOR A PARTICULAR COMPANY

EMPLOYEE

SQL>select * from employee;

EID ENAME STREET CITY


---- --------------- ----------- -----
E01 smith R.K.Street Chennai
E02 john M.M.Street Chennai
E03 sunny Rajiv Street Mumbai
E04 rex K.K Street Delhi
E05 ramu Ram nagar Chennai
E06 ragu Kalki nagar Delhi

COMPANY
SQL>Select * from company;

CID CNAME CITY EID


------------------------- ------------- -----
C01 TCS Chennai E01
C02 TCS Mumbai E02
C03 CTS Chennai E03
C04 INFOSYS Chennai E04
C05 TCS Delhi E05
C06 TCS kolkatta E06

QUERY:

SQL> select e.ename,e.city from employee e,company c where e.eid=c.eid and cname='TCS';

OUTPUT:

ENAME CITY
smith chennai
john chennai
ramu Chennai
ragu Delhi
D) FIND NAMES,STREET,ADDRESS AND CITY OF RESIDENCE OF ALL
EMPLOYEES WHO WORK FOR A PARTICULAR COMPANY AND EARN MORE
THAN RS.2,00,000 PER ANNUM

SQL>select * from works;

WID Ename Cname Salary EID


W01 Smith TCS 50000 E01
W02 John TCS 40000 E02
W03 Sunny CTS 125000 E03
W04 Rex INFOSYS 20000 E04
W05 Ramu TCS 265000 E05
W06 Ragu TCS 150000 E06

SQL>select * from employee;

EID ENAME STREET CITY


---- --------------- ----------- -----
E01 smith R.K.Street Chennai
E02 john M.M.Street Chennai
E03 sunny Rajiv Street Mumbai
E04 rex K.K Street Delhi
E05 ramu Ram nagar Chennai
E06 ragu Kalki nagar Delhi

SQL>select * from employees where ename in (select ename from works where cname='cts'
and salary>200000);

OUTPUT:

CNAME ENAME EID STREET CITY

----------- ----------- ----- ----------- ---------

TCS Ramu E05 Ram nagar Chennai

(E)FIND THE NAMES OF EMPLOYEES WHO ARE LIVING IN A PARTICULAR CITY


FOR A PARTICULAR COMPANY (USE GROUP BY)
SQL> create table employee(ename varchar2(15),street varchar2(20),city varchar2(15));

SQL> create table works(ename varchar2(15),cname varchar2(15),salary number(10));

SQL> select * from employee;

EID ENAME STREET CITY


---- --------------- ----------- -----
E01 smith R.K.Street Chennai
E02 john M.M.Street Chennai
E03 sunny Rajiv Street Mumbai
E04 rex K.K Street Delhi
E05 ramu Ram nagar Chennai
E06 ragu Kalki nagar Delhi

SQL>select * from company;

CID CNAME CITY EID


------------------------- ------------- -----
C01 TCS Chennai E01
C02 TCS Mumbai E02
C03 CTS Chennai E03
C04 INFOSYS Chennai E04
C05 TCS Delhi E05
C06 TCS kolkatta E06

SQL>select * from works;

WID Ename Cname Salary EID


W01 Smith TCS 50000 E01
W02 John TCS 40000 E02
W03 Sunny CTS 125000 E03
W04 Rex INFOSYS 20000 E04
W05 Ramu TCS 265000 E05
W06 Ragu TCS 150000 E06
QUERY:
SQL> select employee.ename,avg(salary) from employee,works where
employee.city='chennai' and works.cname='TCS' and employee.eid=works.eid group by
employee.ename;
OUTPUT:

ENAME AVG(SALARY)
john 126250
smith 126250
(F)FIND THE NAMES OF EMPLOYEES WHOSE SALARY IS GREATER THAN THE
AVERAGE SALARY OF A PARTICULAR COMPANY(SUBQUERY)
SQL> select * from works;

WID Ename Cname Salary EID


W01 Smith TCS 50000 E01
W02 John TCS 40000 E02
W03 Sunny CTS 125000 E03
W04 Rex INFOSYS 20000 E04
W05 Ramu TCS 265000 E05
W06 Ragu TCS 150000 E06

SQl>select * from employee;

EID ENAME STREET CITY


---- --------------- ----------- -----
E01 smith R.K.Street Chennai
E02 john M.M.Street Chennai
E03 sunny Rajiv Street Mumbai
E04 rex K.K Street Delhi
E05 ramu Ram nagar Chennai
E06 ragu Kalki nagar Delhi

SQL> select ename,salary fro m works w1 where salary>(select avg(salary) from works w2
where w1.cname=w1.cname and cname='infosys');
OUTPUT:

ENAME SALARY

---------- ---------------

Rex 20000
(G)FIND THE TOTAL AND AVERAGE OF EACH COMPANY EMPLOYEES (GROUP
BY)

SQL>select * from employee;

EID ENAME STREET CITY


---- --------------- ----------- -----
E01 smith R.K.Street Chennai
E02 john M.M.Street Chennai
E03 sunny Rajiv Street Mumbai
E04 rex K.K Street Delhi
E05 ramu Ram nagar Chennai
E06 ragu Kalki nagar Delhi

SQL>select * from works;

WID Ename Cname Salary EID


W01 Smith TCS 50000 E01
W02 John TCS 40000 E02
W03 Sunny CTS 125000 E03
W04 Rex INFOSYS 20000 E04
W05 Ramu TCS 265000 E05
W06 Ragu TCS 150000 E06

QUERY:

SQL> select cname,sum(salary),avg(salary) from works group by cname;

OUTPUT:

CNAME SUM(SALARY) AVERAGE(SALARY)

TCS 505000 126250

CTS 125000 125000

INFOSYS 20000 20000


(H)FIND THE NAME OF ALL EMPLOYEES WHOSE PAY IS GREATER THAN THE
AVERAGE PAY OF THEIR RESPECTIVE COMPANY

SQL>select * from employee;

EID ENAME STREET CITY


---- --------------- ----------- -----
E01 smith R.K.Street Chennai
E02 john M.M.Street Chennai
E03 sunny Rajiv Street Mumbai
E04 rex K.K Street Delhi
E05 ramu Ram nagar Chennai
E06 ragu Kalki nagar Delhi

SQL>select * from works;

WID Ename Cname Salary EID


W01 Smith TCS 50000 E01
W02 John TCS 40000 E02
W03 Sunny CTS 125000 E03
W04 Rex INFOSYS 20000 E04
W05 Ramu TCS 265000 E05
W06 Ragu TCS 150000 E06

QUERY:

SQL> select ename,cname,salary from works where salary>(select avg(salary) from works
where cname='TCS');

OUTPUT:

ENAME CNAME SALARY

ragu TCS 150000

ramu TCS 265000


(I)FIND THE NAME OF THE EMPLOYEE AND THE CITY THEY WORK UNDER A
PARTICULAR MANAGER

SQL>select * from employee;

EID ENAME STREET CITY


---- --------------- ----------- -----
E01 smith R.K.Street Chennai
E02 john M.M.Street Chennai
E03 sunny Rajiv Street Mumbai
E04 rex K.K Street Delhi
E05 ramu Ram nagar Chennai
E06 ragu Kalki nagar Delhi

SQL>Select * from works;

WID Ename Cname Salary EID


W01 Smith TCS 50000 E01
W02 John TCS 40000 E02
W03 Sunny CTS 125000 E03
W04 Rex INFOSYS 20000 E04
W05 Ramu TCS 265000 E05
W06 Ragu TCS 150000 E06

QUERY:

SQL> select e.ename,e.city,m.mname from employee e,manager m where mname='rock' and


e.ename=m.ename;

OUTPUT:

ENAME CITY MNAME


____________________________
rex Delhi rock
ramu Chennai rock
ragu Delhi rock
(J)UPDATE COMPANY NAME FOR AN EMPLOYEE:

● Create table works(ename varchar2(15),cname varchar2(15),salary number(5));

● Insert into works values(‘smith’,’TCS’,50000);


● Insert into company values(‘john’,’TCS’,40000);
● Insert into company values(‘sunny’,’CTS’,125000);
● Insert into company values(‘rex’,’INFOSYS’,20000);
● Insert into company values(‘ramu’,’TCS’,265000);
● Insert into company values(‘ragu’,’TCS’,150000);

ENAME CNAME SALARY


_______________________________
smith TCS 50000
John TCS 40000
sunny CTS 125000
rex INFOSYS 20000
ramu TCS 265000
ragu TCS 150000

QUERY:

SQL> update works set cname='TCS' where ename='sunny';

OUTPUT:

ENAME CNAME
SALARY

_______________________________

smith TCS 50000

John TCS 40000

sunny TCS 125000

rex INFOSYS 20000

ramu TCS 265000

ragu TCS 150000


PL/SQL PROGRAM TO CHECK ODD OR EVEN AND TO INSERT TEN VALUES IN A
TABLE:

SQL>create table tem(no1 number(5),col1 varchar2(15));

Table created

PROGRAM:
declare
i number;
begin
for i in 1..10 loop
if mod(i,2)=0 then
insert into tem values(i,'is even');
else
insert into tem values(i,'is odd');
end if;
end loop;
end;
/
OUTPUT:
SQL> select * from tem;
1 is odd
2 is even
3 is odd
4 is even
5 is odd
6 is even
7 is odd
8 is even
9 is odd
10 is even
PL/SQL PROOGRAM TO SELECT FIVE HIGHEST PAID EMPLOYEES:
SQL> select * from employee order by salary;
ENO ENAME SALARY
---------- --------------- ----------
100 smith 5000
300 rock 8000
200 kelly 12000
400 jack 13000
700 brake 15000
500 gem 18000
600 john 22000

SQL> create table temp1(myno number(5),myname varchar2(15),mysalary number(15));


PROGRAM:
declare
cursor c1 is
select eno,ename,salary from employee order by salary desc;
myno number(5);
myname varchar2(15);
mysalary number(15);
begin
open c1;
for i in 1..5
loop
fetch c1 into myno,myname,mysalary;
exit when c1%notfound;
insert into values(myno,myname,mysalary);
commit;
end loop;
close c1;
end;
/
PL/SQL procedure successfully completed.

OUTPUT:

SQL> select * from temp1;

MYNO MYNAME MYSALARY

400 jack 13000


200 kelly 12000
600 john 22000
500 gem 18000
700 brake 15000
SAL EMPNO ENAME DNAME
---------- ---------- --------------- ---------------
3000 1 smith Testing

PROGRAM TO CREATE MASTER AND TRANSACTION TABLE AND UPDATE


MASTER US ING TRANSACTION TABLE
SQL> create table emp(sal number(10),empno number(5),ename varchar2(15),deptno
number(5));

SQL> create table dept(deptno number(5),dname varchar2(15));

SQL> insert into emp values(5000,1,'smith',100);

SQL> insert into dept values(100,'finance');

PROGRAM:

SQL> declare
2 cursor get_data is
3 select e.sal,e.empno,e.ename,e.deptno,d.dname from dept d,emp e where empno=1 and
e.deptno=d.deptno;
4 begin
5 for i IN get_data loop
6 update emp set sal=3000 where empno=i.empno;
7 update dept set dname='Testing' where deptno=i.deptno;
8 end loop;
9 commit;
10 end;
11 /

PL/SQL procedure successfully completed.

OUTPUT:

SQL> select e.sal,e.empno,e.ename,d.dname from dept d,emp e where empno=1 and d.


deptno=e.deptno;
PL/SQL PROGRAM WITH PACKAGE SHOWS HOW TO HIRE AND FIRE AN
EMPLOYEE IN DATABASE:

SQL>create table empl(eno number(5),ename varchar2(15));

PROGRAM:
SQL> create or replace package emp_actions
2 as
3 cursor desc_salary return empl%rowtype;
4 procedure hire_employee(e_id number,e_name varchar2);
5 procedure fire_employee(e_id number);
6 end emp_actions;
7 /
Package created.

SQL> create or replace package body emp_actions


2 as
3 cursor desc_salary return empl%rowtype
4 is
5 select eno,ename from empl;
6 procedure hire_employee(e_id number,e_name varchar2)
7 is
8 begin
9 insert into empl values(e_id,e_name);
10 end hire_employee;
11 procedure fire_employee(e_id number)
12 is
13 begin
14 delete from empl where eno=e_id;
15 end fire_employee;
16 end emp_actions;
17 /
Package body created.
SQL> exec emp_actions.hire_employee(1001,'smith');
PL/SQL procedure successfully completed.

SQL> exec emp_actions.hire_employee(1002,'rock');


PL/SQL procedure successfully completed.

SQL> select * from empl;

ENO ENAME
1001 smith
1002 rock

SQL> exec emp_actions.fire_employee(1002);


PL/SQL procedure successfully completed.

SQL> select * from empl;

ENO ENAME
1001 smith
PL/SQL PROGRAM TO CALCULATE THE EXPERIENCE USING CURRENT DATE:

SQL> create table experience(eno number(5),ename varchar2(15),dept varchar2(15),doj


date,exp number(5));
Table created.

SQL> insert into experience values(1,'smith','finance','09-aug-2000','');


1 row created.

PROGRAM:
SQL> set serveroutput on
SQL> declare
2 hiredate experience.doj%type;
3 c number(5);
4 begin
5 select doj into hiredate from experience where eno=&empnov;
6 c:=months_between(sysdate,hiredate)/12;
7 dbms_output.put_line(c);
8 update experience set exp=c where eno=&empnov;
9 end;
10 /

Enter value for empnov: 1


old 5: select doj into hiredate from experience where eno=&empnov;
new 5: select doj into hiredate from experience where eno=1;
Enter value for empnov: 1
old 8: update experience set exp=c where eno=&empnov;
new 8: update experience set exp=c where eno=1;
15

PL/SQL procedure successfully completed.

OUTPUT:

SQL> select * from experience;

ENO ENAME DEPT DOJ EXP

---------- --------------- --------------- --------- ----------

1 smith finance 09-AUG-00 15


UPDATION OF PRICE TO BE THREE TIMES OF THE QUANTITY

SQL> create table items(itemno number(10),item_name varchar2(15),quantity number

(7),price number(9,2))

Table created.

SQL> insert into items values(1000,'pen',5,50);

SQL> insert into items values(2000,'pencil',8,72);

SQL> insert into items values(3000,'sketch',10,20);

SQL> insert into items values(4000,'scale',15,10);

SQL> select * from items;

ITEMNO ITEM_NAME QUANTITY PRICE


---------- ------------------ --------------- ---------
1000 pen 5 50
2000 pencil 8 72
3000 sketch 10 20
4000 scale 15 10

PROGRAM:
begin
update items set price=price*(quantity*3) where itemno=2000;
end;
/
SQL> @item;

SQL> select * from items;

ITEMNO ITEM_NAME QUANTITY PRICE


---------- ------------- ---------- ----------
1000 pen 5 50
2000 pencil 8 1728
3000 sketch 10 20
4000 scale 15 10

You might also like