Sie sind auf Seite 1von 53

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E.

CS1256 - DBMS LAB MANUAL

Ex. No.1 STUDY OF DDL COMMANDS

AIM: To study the usage of various Data Definition Language commands PROCEDURE: 1. CREATE TABLE 2. ALTER TABLE a. ADD b. MODIFY 3. TRUNCATE TABLE 4. DROP TABLE

OUTPUT: CREATE TABLE COMMAND SQL>create table student(rollno number(2),name varchar2(20),dept varchar2(5),doj date);

SQL> desc student; Name Null? Type ----------------------------------------- -------- ---------------------------ROLLNO NUMBER(2) NAME VARCHAR2(20) DEPT VARCHAR2(5) DOJ DATE

ALTER TABLE COMMAND ADD COMMAND SQL> alter table student add regno number(10); Table altered.

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

SQL> desc student; Name Null? Type ----------------------------------------- -------- ---------------------------ROLLNO NUMBER(2) NAME VARCHAR2(20) DEPT VARCHAR2(5) DOJ DATE REGNO NUMBER(10) MODIFY COMMAND SQL> alter table student modify ( name varchar2(25)); Table altered. SQL> desc student; Name Null? Type ----------------------------------------- -------- ---------------------------ROLLNO NUMBER(2) NAME VARCHAR2(25) DEPT VARCHAR2(5) DOJ DATE REGNO NUMBER(10) TRUNCATE TABLE COMMAND INSERTING DATA INTO TABLE: SQL> insert into student values(1,'ajay','cse','15-aug-06',8082104001); 1 row created SQL> insert into student values(1,'barathi',ece','20-july-06',8083104001); 1 row created SQL> select * from student; ROLLNO NAME DEPT DOJ REGNO ---------- ------------------------- ----- --------- ---------------------------------1 ajay cse 15-AUG-06 8082104001 1 barathi ece 20-JUL-06 8083104001 SQL> truncate table student; Table truncated.

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

SQL> select * from student; no rows selected SQL> desc student; Name Null? Type ----------------------------------------- -------- ---------------------------ROLLNO NUMBER(2) NAME VARCHAR2(25) DEPT VARCHAR2(5) DOJ DATE REGNO NUMBER(10)

DROP TABLE COMMAND SQL> drop table student; Table dropped. SQL> desc student; ERROR: ORA-04043: object student does not exist SQL> select * from student; select * from student * ERROR at line 1: ORA-00942: table or view does not exist

RESULT: Thus the DDL commands are studied and executed. Ex.No. 2
STUDY OF DML COMMANDS

AIM: To study the usage of various Data Manipulation Language commands PROCEDURE: 1.INSERT COMMAND 2.SELECT COMMAND

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

3.UPDATE COMMAND 4.DELETE COMMAND

OUTPUT: CREATING A TABLE: SQL> create table player(name varchar2(20), country varchar2(15), matches number(3), goals number(2), jersey number(2)); Table created. SQL> desc player; Name Null? ----------------------------------------- ---------NAME COUNTRY MATCHES GOALS JERSEY

Type -----------------VARCHAR2(20) VARCHAR2(15) NUMBER(3) NUMBER(2) NUMBER(2)

INSERT COMMAND

SQL> insert into player values('Ronaldo', 'Brazil', 85, 45, 9); 1 row created. SQL> insert into player values('&name', '&country', &matches, &goals, &jersey); Enter value for name: Zidane Enter value for country: France Enter value for matches: 110 Enter value for goals: 34 Enter value for jersey: 10 old 1: insert into player values('&name', '&country', &matches, &goals, &jersey) new 1: insert into player values('Zidane', 'France', 110, 34, 10) 1 row created. SQL> / Enter value for name: Figo Enter value for country: Portugal Enter value for matches: 102 Enter value for goals: 30 Enter value for jersey: 7 old 1: insert into player values('&name', '&country', &matches, &goals, &jersey) new 1: insert into player values('Figo', 'Portugal', 102, 30, 7) 1 row created.

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

SQL> insert into player(name, country,matches) values('Lehmann', 'Germany', 60); 1 row created. SQL> insert into player values('Barthez', 'France', 95, null, null); 1 row created.

SELECT COMMAND SQL> select * from player;

NAME -------------------Ronaldo Zidane Figo Lehmann Barthez

COUNTRY MATCHES GOALS JERSEY --------------- ---------- ---------- ---------Brazil 85 45 9 France 110 34 10 Portugal 102 30 7 Germany 60 France 95

SQL> select name, country from player; NAME -------------------Ronaldo Zidane Figo Lehmann Barthez COUNTRY --------------Brazil France Portugal Germany France

SQL> select distinct country from player; COUNTRY --------------Brazil France Germany Portugal

SQL> select * from player where matches>=100; NAME -------------------Zidane Figo COUNTRY MATCHES GOALS JERSEY --------------- ---------- ---------- ---------France 110 34 10 Portugal 102 30 7

SQL> select * from player order by matches; NAME COUNTRY MATCHES GOALS JERSEY

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

-------------------Lehmann Ronaldo Barthez Figo Zidane

--------------- ---------- ---------- ---------Germany 60 Brazil 85 45 9 France 95 Portugal 102 30 7 France 110 34 10

SQL> select * from player order by matches desc; NAME -------------------Zidane Figo Barthez Ronaldo Lehmann COUNTRY MATCHES GOALS JERSEY --------------- ---------- ---------- ---------France 110 34 10 Portugal 102 30 7 France 95 Brazil 85 45 9 Germany 60

SQL> select * from player where name like 'F%'; NAME COUNTRY MATCHES GOALS JERSEY -------------------- --------------- ---------- ---------- ---------Figo Portugal 102 30 7

SQL> select * from player where name like 'Z____e'; NAME COUNTRY MATCHES GOALS JERSEY -------------------- --------------- ---------- ---------- ---------Zidane France 110 34 10

SQL> select name player , country nation from player; PLAYER -------------------Lehmann Barthez Ronaldo Zidane Figo NATION --------------Germany France Brazil France Portugal

UPDATE COMMAND SQL> update player set jersey=1 where goals is null; 2 rows updated. SQL> select * from player; NAME -------------------Ronaldo Zidane Figo COUNTRY MATCHES GOALS JERSEY --------------- ---------- ---------- ---------Brazil 85 45 9 France 110 34 10 Portugal 102 30 7

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

Lehmann Barthez DELETE COMMAND:

Germany France

60 95

1 1

SQL> delete from player where jersey=1; 2 rows deleted. SQL> select * from player; NAME -------------------Ronaldo Zidane Figo COUNTRY MATCHES GOALS JERSEY --------------- ---------- ---------- ---------Brazil 85 45 9 France 110 34 10 Portugal 102 30 7

SQL> delete from player; 3 rows deleted. SQL> select * from player; no rows selected

RESULT: Thus the DML commands are studied and executed.

Ex.No.3 STUDY OF DCL COMMANDS Aim: To study the usage of various Data Control Language commands. Procedure: Grant command: To grant privileges on a particular table to another user; Revoke command: To revoke privileges on a particular table from another user; Output: System: SQL> create table employee(name varchar2(20), empnumber number(8), designation varchar2(20), salary number(6)); Table created. SQL> desc employee; Name

Null?

Type

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

----------------------------------------- -------- -----------------NAME VARCHAR2(20) EMPNUMBER NUMBER(8) DESIGNATION VARCHAR2(20) SALARY NUMBER(6) SQL> insert into employee values('&name', &empnumber, '&designation', &salary); Enter value for name: Raja Enter value for empnumber: 12345 Enter value for designation: Manager Enter value for salary: 22000 old 1: insert into employee values('&name', &empnumber, '&designation', &salary) new 1: insert into employee values('Raja', 12345, 'Manager', 22000) 1 row created. SQL> / Enter value for Enter value for Enter value for Enter value for old 1: insert '&designation', new 1: insert Trainee', 7000) 1 row created. SQL> / Enter value for Enter value for Enter value for Enter value for old 1: insert '&designation', new 1: insert 15000) 1 row created. SQL> / Enter value for name: Tamilselvan Enter value for empnumber: 25467 Enter value for designation: Programmer Enter value for salary: 10000 old 1: insert into employee values('&name', &empnumber, '&designation', &salary) new 1: insert into employee values('Tamilselvan', 25467, 'Programmer', 10000) 1 row created. SQL> grant select,update on employee to system1; Grant succeeded.

name: Rajesh empnumber: 12678 designation: Programmer Trainee salary: 7000 into employee values('&name', &empnumber, &salary) into employee values('Rajesh', 12678, 'Programmer

name: Shankar empnumber: 12367 designation: Team Leader salary: 15000 into employee values('&name', &empnumber, &salary) into employee values('Shankar', 12367, 'Team Leader',

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

System1: SQL> select * from system.employee; NAME EMPNUMBER DESIGNATION SALARY -------------------- ---------- -------------------- ---------Raja 12345 Manager 22000 Rajesh 12678 Programmer Trainee 7000 Shankar 12367 Team Leader 15000 Tamilselvan 25467 Programmer 10000 SQL> update system.employee set salary=8000 where empnumber=12678; 1 row updated. SQL> select * from system.employee; NAME EMPNUMBER DESIGNATION SALARY -------------------- ---------- -------------------- ---------Raja 12345 Manager 22000 Rajesh 12678 Programmer Trainee 8000 Shankar 12367 Team Leader 15000 Tamilselvan 25467 Programmer 10000

System: SQL> grant ALL on employee to system1; Grant succeeded.

System1: SQL> insert into system.employee values('Naveen', 34521, 'Program Manager', 20000); 1 row created. SQL> select * from system.employee; NAME EMPNUMBER DESIGNATION SALARY -------------------- ---------- -------------------- ---------Raja 12345 Manager 22000 Rajesh 12678 Programmer Trainee 8000 Shankar 12367 Team Leader 15000 Tamilselvan 25467 Programmer 10000 Naveen 34521 Program Manager 20000 System: SQL> grant ALL on employee to system1 with grant option; Grant succeeded.

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

System1: SQL> grant ALL on system.employee to system2; Grant succeeded. System2: SQL> update system.employee set salary=8500 where empnumber=12678; 1 row updated. SQL> select * from system.employee; NAME EMPNUMBER DESIGNATION SALARY -------------------- ---------- -------------------- ---------Raja 12345 Manager 22000 Rajesh 12678 Programmer Trainee 8500 Shankar 12367 Team Leader 15000 Tamilselvan 25467 Programmer 10000 Naveen 34521 Program Manager 20000 System1: SQL> revoke all on system.employee from system2; Revoke succeeded. System2: SQL> select * from system.employee; select * from system.employee * ERROR at line 1: ORA-00942: table or view does not exist System1: SQL> select * from system.employee; NAME EMPNUMBER DESIGNATION SALARY -------------------- ---------- -------------------- ---------Raja 12345 Manager 22000 Rajesh 12678 Programmer Trainee 8500 Shankar 12367 Team Leader 15000 Tamilselvan 25467 Programmer 10000 Naveen 34521 Program Manager 20000 System: SQL> revoke update on employee from system1; Revoke succeeded. System1: SQL> update system.employee set name='Rajesh Kumar' where empnumber=12678; update system.employee set name='Rajesh Kumar' where empnumber=12678

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

* ERROR at line 1: ORA-01031: insufficient privileges SQL> select * from system.employee; NAME EMPNUMBER DESIGNATION SALARY -------------------- ---------- -------------------- ---------Raja 12345 Manager 22000 Rajesh 12678 Programmer Trainee 8500 Shankar 12367 Team Leader 15000 Tamilselvan 25467 Programmer 10000 Naveen 34521 Program Manager 20000 System: SQL> select * from employee; NAME EMPNUMBER DESIGNATION SALARY -------------------- ---------- -------------------- ---------Raja 12345 Manager 22000 Rajesh 12678 Programmer Trainee 8500 Shankar 12367 Team Leader 15000 Tamilselvan 25467 Programmer 10000 Naveen 34521 Program Manager 20000 Result: Thus the DCL commands are studied and executed.

Ex.No: 4 Procedures AIM: To study the usage of procedures in SQL commands. PROCEDURE: 1. 2. 3. 4. OUTPUT: SQL>create table inventory(pcode varcar2(10),pname varcahr2(25),pqty number(3),pprice number(5)); Table created Insert Procedure Command Select Procedure Command Delete Procedure Command Update Procedure Command

SQL> desc inventory; Name Null? Type ----------------------------------------- -------- ----------------------------

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

PCODE PNAME PQTY PPRICE

VARCHAR2(10) VARCHAR2(25) NUMBER(3) NUMBER(5).

SQL>ed ex1

create procedure pro_insert(x1 varchar,x2 varchar,x3 number,x4 number) as procode varchar2(20); proname varchar2(20); pqty number(20); pprice number(20); begin procode :=x1; proname :=x2; pqty :=x3; pprice :=x4; insert into inventory values(procode,proname,pqty,pprice); end;

SQL> @ ex1; 15 / Procedure created.

SQL> exec pro_insert('p1','Book',50,10); PL/SQL procedure successfully completed.

SQL> exec pro_insert('p2','pen',60,20); PL/SQL procedure successfully completed.

SQL> exec pro_insert('p3','book',30,50); PL/SQL procedure successfully completed.

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

SQL> select * from inventory; PCODE PNAME QTY PPRICE ---------- ------------------------- -------- ---------p1 pencil 50 10 p2 pen 60 20 p3 book 30 50

SQL> ed ex2;

create procedure pro_del(x1 varchar) as procode varchar2(20); begin procode :=x1; delete from inventory where pcode=procode; dbms_output.put_line('Record deleted'); end; SQL> @ ex2; 10 / Procedure created.

SQL> exec pro_del('p3'); PL/SQL procedure successfully completed. SQL> select * from inventory; PCODE PNAME PQTY PPRICE ---------- ------------------------- ---------- ---------p1 pencil 50 10 p2 pen 60 20

SQL> ed ex3;

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

create procedure pro_update(x1 varchar, x2 number)as tpcode varchar2(10); tqty number(10); tpqty number(10); begin tpcode:=x1; tqty:=x2; select tqty into tpqty from inventory where pcode = tpcode; if SQL%FOUND Then update inventory set pqty = tpqty where pcode=tpcode; dbms_output.put_line('Record updated successfully'); else dbms_output.put_line('No record found'); end if; end;

SQL> @ ex3; 22 / Procedure created.

SQL> exec pro_update('p1',100); PL/SQL procedure successfully completed.

SQL> select * from inventory; PCODE PNAME PQTY PPRICE ---------- ------------------------- ---------- ---------p1 pencil 100 10 p2 pen 60 20

RESULT: Thus the procedure to insert, update and delete the inventory was create and executed
FUNCTIONS

Ex.No: 5 AIM:

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

Write a PL/SQL using function to check the inventory level. PROCEDURE: 1. 2. 3. 4. OUTPUT: SQL> create table product( pcode varchar2(3),pname varchar2(10),qty_hand number(3),qty_min(3)); Table Created SQL> desc product; Name Null? Type ----------------------------------------- -------- ------PCODE VARCHAR2(3) PNAME VARCHAR2(10) QTY_HAND NUMBER(3) QTY_MIN NUMBER(3) SQL> insert into product values ('RC','Rice', 85,100); 1 row created. SQL> insert into product values ('SG','Sugar', 50,50); 1 row created. SQL> insert into product values ('WH','Wheat, 200,100); 1 row created. SQL> select * from product; PCO --RC SG WH PNAME QTY_HAND QTY_MIN ---------- ---------- ---------Rice 85 100 Sugar 50 50 Wheat 200 100 Create the table- product Insert the values Create the PL/SQL function Run the function in the SQL prompt

REORDER FUNCTION FUN.SQL


create or replace function reorder_fun(code varchar2) return number is reorderqty number;

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

minqty number; handqty number; begin select qty_hand, qty_min into handqty, minqty from product where pcode=code; if handqty < minqty then reorderqty:=minqty-handqty; return reorderqty; else reorderqty:=0; return reorderqty; end if; end; ----------------------------------------------------------------

SQL> @ fun; 16 / Function created. ---------------------------------------------------------------SQL>set serveroutput on; ---------------------------------------------------------------SQL> declare 2 a varchar2(5); 3 b number; 4 begin 5 a:=&a; 6 b:=reorder_fun(a); 7 dbms_output.put_line('QTY TO BE ORDERED IS 8 end; 9 / Enter value for a: 'RC' old 5: a:=&a; new 5: a:='RC'; QTY TO BE ORDERED IS :15 PL/SQL procedure successfully completed.

:'|| b);

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

SQL> declare 2 a varchar2(5); 3 b number; 4 begin

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

5 a:=&a; 6 b:=reorder_fun(a); 7 dbms_output.put_line('QTY TO BE ORDERED IS 8 end; 9 / Enter value for a: 'SG' old 5: a:=&a; new 5: a:='SG'; QTY TO BE ORDERED IS :0 PL/SQL procedure successfully completed.

:'|| b);

Result:
created Thus the PL/SQL function to check the inventory and executed. HIGH LEVEL LANGUAGE EXTENSION WITH TRIGGERS Ex.No: 6 AIM: Write a Trigger program to maintain the inventory level PROCEDURE: 1. 2. 3. 4. 5. 6. OUTPUT: SQL> create table stock(pcode varchar2(3),pname varchar2(10),qty_hand number(4),qty_sales number(4)); Table created. SQL> desc stock; Name Null? Type ----------------------------------------- -------- -----------------PCODE VARCHAR2(3) PNAME VARCHAR2(10) QTY_HAND NUMBER(4) QTY_SALES NUMBER(4) ---------------------------------------------------------------------Create Create Insert Create Create Update Table stock. procedure for inserting values into the table. the values into the table Procedure for updating the table. a trigger point to catch the illegal entry. the table using update procedure. was

SQL> ed t1;
----------------------------------------------------------------------

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

create procedure stock_insert(x1 varchar,x2 varchar,x3 number, x4 number) as procode varchar2(20); proname varchar2(20); pqty number(20); psales number(20); begin procode :=x1; proname :=x2; pqty :=x3; psales :=x4; insert into stock values(procode,proname,pqty,psales); end; ---------------------------------------------------------------------SQL> @ t1; 13 / Procedure created. ---------------------------------------------------------------------SQL> exec stock_insert('p1','oil',5000,0); PL/SQL procedure successfully completed. SQL> exec stock_insert('p2','soap',7000,0); PL/SQL procedure successfully completed. SQL> exec stock_insert('p3','powder',4000,0); PL/SQL procedure successfully completed.

---------------------------------------------------------------------SQL> select * from stock; PCO --p1 p2 p3 PNAME QTY_HAND QTY_SALES ---------- ---------- ---------oil 5000 0 soap 7000 0 powder 4000 0

---------------------------------------------------------------------SQL> ed t2; ---------------------------------------------------------------------create procedure stock_upd(x1 varchar, x4 number) as tqty number(20); thand number(20); begin

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

select qty_hand,qty_sales into thand,tqty from stock where pcode = x1; if SQL%FOUND Then update stock set qty_hand = thand-x4 where pcode= x1; update stock set qty_sales = tqty+x4 where pcode= x1; end if; end; ---------------------------------------------------------------------SQL> @ t2; 9 / Procedure created. ---------------------------------------------------------------------SQL>create or replace trigger tr1 2 before update on stock for each row 3 begin 4 if :new.qty_sales > :old.qty_hand then 5 raise_application_error (-20001,Quantity is Less); 6 end if; 7 end; 8 / Trigger Created. ---------------------------------------------------------------------SQL> exec stock_upd('p1',1000); PL/SQL procedure successfully completed. SQL> select * from stock; PCO --p1 p2 p3 PNAME QTY_HAND QTY_SALES ---------- ---------- ---------oil 4000 1000 soap 7000 0 powder 4000 0

SQL> exec stock_upd('p1',5000); BEGIN stock_upd('p1',5000); END; * ERROR at line 1: ORA-20001: Quantity is Less ORA-06512: at "SYSTEM.TR1", line 3 ORA-04088: error during execution of trigger 'SYSTEM.TR1' ORA-06512: at "SYSTEM.STOCK_UPD", line 9 ORA-06512: at line 1 ----------------------------------------------------------------------

SQL> exec stock_upd('p1',900);

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

PL/SQL procedure successfully completed. SQL> select * from stock; PCO PNAME QTY_HAND QTY_SALES --- ---------- ---------- ---------p1 oil 3100 1900 p2 soap 7000 0 p3 powder 4000 0 ---------------------------------------------------------------------Result: Thus the trigger was written and executed in SQL Plus.

HIGH LEVEL LANGUAGE EXTENSION WITH CURSORS Ex.No: 7

AIM: Write a Cursor program to perform payroll processing. PROCEDURE: 1. Create the employee, attendance table. 2. Enter the values into the tables 3. Create the table salary, into which the payroll process is to be executed. 4. Declare a cursor to fetch values from employee table. 5. Select the workdays, months, years from attendance table for each employee number in the employee table. 6. Calculate the salary for each employee and insert it in the salary table

OUTPUT: SQL> create table employee(eno number(4),ename varchar2(20),esal number(7,2),egrade varchar2(1)); Table created. SQL> desc employee; Name Null? ----------------------------------------- -------ENO ENAME ESAL EGRADE

Type -----------------NUMBER(4) VARCHAR2(20) NUMBER(7,2) VARCHAR2(1)

SQL> create table attendance(eno number(4),workdays number(2),months number(2),years number(4));

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

Table created. SQL> desc attendance; Name Null? ----------------------------------------- -------ENO WORKDAYS MONTHS YEARS

Type -------------NUMBER(4) NUMBER(2) NUMBER(2) NUMBER(4)

SQL> create table salary( eno number(4),ename varchar2(20), egrade varchar2(1),netsal number(7,2),workdays number(2), months number(2),years number(4)); Table created.

SQL> desc salary; Name Null? ----------------------------------------- -------ENO ENAME EGRADE NETSAL WORKDAYS MONTHS YEARS

Type -----------------NUMBER(4) VARCHAR2(20) VARCHAR2(1) NUMBER(7,2) NUMBER(2) NUMBER(2) NUMBER(4)

SQL> insert into employee values(1,'Sham',10000,'C'); 1 row created. SQL> insert into employee values(2,'Raju',9000,'D'); 1 row created. SQL> insert into employee values(3,'Anish',15000,'A'); 1 row created.

SQL> select * from employee; ENO ---------1 2 3 ENAME ESAL EGRADE -------------------- ---------- -----Sham 10000 C Raju 9000 D Anish 15000 A

SQL> insert into attendance values(1,28,8,2006); 1 row created.

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

SQL> insert into attendance values(2,24,8,2006); 1 row created. SQL> insert into attendance values(3,21,8,2006); 1 row created. SQL> select * from attendance; ENO WORKDAYS MONTHS YEARS ---------- ---------- ---------- ---------1 28 8 2006 2 24 8 2006 3 21 8 2006

SQL> 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 20 22 23 24 25 26 27 28

declare cursor emp is select eno,ename,esal,egrade from employee; empname varchar2(20); empno number(4):=0; empsal number(7,2):=0; empgrade varchar2(1); netsalary number(7,2):=0; wd number(2):=0; m number(2):=0; y number(4):=0; begin open emp ; loop fetch emp into empno,empname,empsal,empgrade; exit when emp%notfound; select workdays,months,years into wd,m,y from attendance where eno=empno; netsalary :=(empsal/30)* wd; insert into salary values(empno,empname,empgrade,netsalary,wd,m,y); end loop; close emp; commit; end; /

PL/SQL procedure successfully completed. SQL> select * from salary;

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

ENO ENAME EGRADE NETSAL WORKDAYS MONTHS YEARS ---- -------------------- - ---------- ---------- ---------- --------1 Sham C 9333.33 28 8 2006 2 Raju D 7200 24 8 2006 3 Anish A 10500 21 8 2006

Result: Thus the cursor was implemented to perform the payroll process.

Ex.No.8

EMBEDED SQL
Aim: To write a java program for storing data in Oracle Procedure: i) ii) iii) OUTPUT: SQL> desc student; Name Null? Type ----------------------------------------- -------- ----------------REGNO NUMBER(10) NAME VARCHAR2(15) DEPT VARCHAR2(5) BATCH VARCHAR2(10) Create a table with necessary fields. Write a java program to receive input through forms. Compile and execute the java program

Program: /* Program for Jdbc Connectivity*/ import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*;

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

public class stu extends JFrame { JTextField tf1,tf2,tf3,tf4; stu(String title) { Container con=(JPanel) getContentPane(); con.setLayout(null); setSize(800,500); setVisible(true); JLabel l1=new JLabel("STUDENT INFORMATION"); JLabel l2=new JLabel("Regno"); JLabel l3=new JLabel("Name"); JLabel l4=new JLabel("Dept"); JLabel l5=new JLabel("Batch");

tf1=new JTextField(10); tf2=new JTextField(10); tf3=new JTextField(10); tf4=new JTextField(10); con.add(l1); con.add(l2); con.add(l3); con.add(l4); con.add(l5); con.add(tf1); con.add(tf2); con.add(tf3); con.add(tf4);

l1.setBounds(250,100,300,25); l2.setBounds(100,150,100,25); l3.setBounds(100,200,100,25); l4.setBounds(100,250,100,25); l5.setBounds(100,300,100,25); tf1.setBounds(250,150,100,25); tf2.setBounds(250,200,100,25); tf3.setBounds(250,250,100,25); tf4.setBounds(250,300,100,25); JButton b1 = new JButton("Addnew"); JButton b2 = new JButton("Save"); JButton b3 = new JButton("Find"); JButton b4 = new JButton("Update"); JButton b5 = new JButton("Delete");

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

con.add(b1); con.add(b2); con.add(b3); con.add(b4); con.add(b5); b1.setBounds(100,400,100,25); b2.setBounds(200,400,100,25); b3.setBounds(300,400,100,25); b4.setBounds(400,400,100,25); b5.setBounds(500,400,100,25); b1.addActionListener(new A()); b2.addActionListener(new B()); b3.addActionListener(new C()); b4.addActionListener(new D()); b5.addActionListener(new E()); addWindowListener(new w()); }

class w extends WindowAdapter { public void windowClosing(WindowEvent we){ System.exit(0); } } class A implements ActionListener { public void actionPerformed(ActionEvent ae) { tf1.setText(""); tf2.setText(""); tf3.setText(""); tf4.setText(""); } } class B implements ActionListener { public void actionPerformed(ActionEvent ae) { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con1=DriverManager.getConnection("jdbc:odbc:jcet","system","manager"); PreparedStatement pst=con1.prepareStatement("insert into student values(?,?,?,?)"); int x1=Integer.parseInt(tf1.getText()); String x2=tf2.getText();

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

String x3=tf3.getText(); String x4=tf4.getText(); pst.setInt(1,x1); pst.setString(2,x2); pst.setString(3,x3); pst.setString(4,x4); int temp=pst.executeUpdate(); if(temp>0) { System.out.println("Record inserted"); } } catch(Exception ie) { System.out.println(ie.getMessage()); } } } class C implements ActionListener { public void actionPerformed(ActionEvent ae) { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con1=DriverManager.getConnection("jdbc:odbc:jcet","system","manager"); Statement st=con1.createStatement(); JFrame f= new JFrame(); int x = Integer.parseInt(JOptionPane.showInputDialog(f,"Enter the Register no")); String qry="select * from student where regno="+x; ResultSet rs=st.executeQuery(qry); while(rs.next()) { tf1.setText(String.valueOf(rs.getInt("regno"))); tf2.setText(rs.getString("name")); tf3.setText(rs.getString("dept")); tf4.setText(rs.getString("batch")); } } catch(Exception ie) { System.out.println(ie.getMessage()); } } } class D implements ActionListener { public void actionPerformed(ActionEvent ae)

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

{ try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con1=DriverManager.getConnection("jdbc:odbc:jcet","system","manager"); int x =Integer.parseInt(tf1.getText()); String qry="update student set regno=?,name=?,dept=? , branch=? where regno="+x; PreparedStatement pst=con1.prepareStatement(qry); String x2=tf2.getText(); String x3=tf3.getText(); String x4=tf4.getText(); pst.setInt(1,x); pst.setString(2,x2); pst.setString(3,x3); pst.setString(4,x4); int temp=pst.executeUpdate(); if(temp>0) { JFrame f = new JFrame(); JOptionPane.showMessageDialog(f,"Record Updated"); } }

catch(Exception ie) { System.out.println(ie.getMessage()); } } } class E implements ActionListener { public void actionPerformed(ActionEvent ae) { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con1=DriverManager.getConnection("jdbc:odbc:jcet","system","manager"); int x = Integer.parseInt(tf1.getText()); String qry="delete from student where regno="+x; PreparedStatement pst = con1.prepareStatement(qry); JFrame f= new JFrame(); int temp = pst.executeUpdate(); if (temp > 0 ){

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

tf1.setText(""); tf2.setText(""); tf3.setText(""); tf4.setText(""); JOptionPane.showMessageDialog(f,"Record Deleted"); } else { JOptionPane.showMessageDialog(f,"Record Not Found"); } } catch(Exception ie) { System.out.println(ie.getMessage()); } } } public static void main(String arg[]) throws Exception { stu sd = new stu("STUDENT INFORMATION"); } }

OUTPUT:

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

Result: Thus a java program was written to store data in SQL and executed successfully.
EX NO-9 LIBRARY MANAGEMENT SYSTEM Aim: To develop a package for a library management system Procedure: 1. 2. 3. 4. 5. Create the table for books. Create the table for students. Create the table for lending books. Create the procedure for lending books Create the procedure for returning books and simultaneously removing from lending table.

OUTPUT: SQL> create table books(book_no varchar2(6),book_name varchar2(35),book_author varchar2(20)); Table created. SQL> desc books; Name

Null?

Type

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

------------------------------- -------- ---BOOK_NO VARCHAR2(6) BOOK_NAME VARCHAR2(35) BOOK_AUTHOR VARCHAR2(20) ---------------------------------------------------------------SQL> create table students(reg_no varchar2(12),stu_name varchar2(25),dept varchar2(4),batch varchar2(9)); Table created. SQL> desc students; Name Null? Type ------------------------------- -------- ---REG_NO VARCHAR2(12) STU_NAME VARCHAR2(25) DEPT VARCHAR2(4) BATCH VARCHAR2(9) ---------------------------------------------------------------SQL> insert into books values('cse1','Programming in C','Balagurusamy'); 1 row created. SQL> insert into books values('cse2','Programming in C','Balagurusamy'); 1 row created. SQL> insert into books values('cse3','The Complete ReferenceJava','Patrik Nort 1 row created.

SQL> insert into books values('ece1','Eletron Devices','Ravi Kumar'); 1 row created. SQL> insert into books values('ece2','Communication Enginnering','dheraj shah'); 1 row created. SQL> insert into books values('ece3','Communication Enginnering','dheraj shah'); 1 row created. SQL> select * from books; BOOK_N -----cse1 cse2 cse3 BOOK_NAME ----------------------------------Programming in C Programming in C The Complete Reference-Java BOOK_AUTHOR -------------------Balagurusamy Balagurusamy Patrik Norton

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

ece1 ece2 ece3

Eletron Devices Communication Enginnering Communication Enginnering

Ravi Kumar dheraj shah dheraj shah

6 rows selected. ---------------------------------------------------------------SQL> insert into students values('8080410910','Ajay','CSE','20052009'); 1 row created. SQL> insert into students values('8080410911','Banu','CSE','20042008'); 1 row created. SQL> insert into students values('8080510911','Sreeja','ECE','20042008'); 1 row created. SQL> insert into students values('8080510910','Ram','ECE','20052009'); 1 row created. SQL> select * from students; REG_NO -----------8080410910 8080410911 8080510911 8080510910 STU_NAME ------------------------Ajay Banu Sreeja Ram DEPT ---CSE CSE ECE ECE BATCH --------2005-2009 2004-2008 2004-2008 2005-2009

4 rows selected. ----------------------------------------------------------------

SQL> create table lending(reg_no varchar2(12),stu_name varchar2(25),book_no varchar2(6),book_name va rchar2(35), ddate date); Table created. SQL> desc lending; Name Null? Type ------------------------------- -------- ---REG_NO VARCHAR2(12) STU_NAME VARCHAR2(25) BOOK_NO VARCHAR2(6) BOOK_NAME VARCHAR2(35) DDATE DATE

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

---------------------------------------------------------------sql>create procedure lend(x1 varchar, x2 varchar)as 2 reg varchar2(12); 3 bno varchar2(6); 4 sname varchar2(25); 5 bname varchar2(35); 6 begin 7 reg:=x1; 8 bno:=x2; 9 select stu_name into sname from students where reg_no = reg; 10 if SQL%FOUND Then 11 select book_name into bname from books where book_no = bno; 12 if SQL%FOUND Then 13 insert into lending values(reg,sname,bno,bname,sysdate); 14 dbms_output.put_line('Record updated successfully'); 15 else 16 dbms_output.put_line('No book found'); 17 end if; 18 else 19 dbms_output.put_line('No student found'); 20 end if; 21 end; Procedure created. ---------------------------------------------------------------SQL> exec lend('8080410910','cse1'); PL/SQL procedure successfully completed. SQL> select * from lending; REG_NO STU_NAME BOOK_N BOOK_NAME DDATE ------------ ------------------------ ------ ---------------- ------8080410910 Ajay cse1 Programming in C 01-OCT06 SQL> create table returning(reg_no varchar2(12),stu_name varchar varchar2(35), ddate date,rdate date); Table created.

SQL> desc returning; Name Null? ------------------------------- -------REG_NO STU_NAME BOOK_NO BOOK_NAME DDATE RDATE

Type ---VARCHAR2(12) VARCHAR2(25) VARCHAR2(6) VARCHAR2(35) DATE DATE

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

---------------------------------------------------------------sql>create procedure returns(x1 varchar)as 2 bno varchar2(6); 3 reg varchar2(12); 4 sname varchar2(25); 5 bname varchar2(35); 6 deldate date; 7 begin 8 bno:=x1; 9 select reg_no ,stu_name ,book_name ,ddate into 10 reg,sname,bname,deldate from lending where book_no = bno; 11 if SQL%FOUND Then 12 insert into returning values(reg, sname,bno,bname,deldate,sysdate); 13 delete from lending where book_no=bno; 14 else 15 dbms_output.put_line('No book found'); 16 end if; 17 end; / Procedure created. ---------------------------------------------------------------SQL> exec returns('cse1'); PL/SQL procedure successfully completed. SQL> select * from lending; no rows selected

SQL> select * from returning; REG_NO STU_NAME BOOK_N BOOK_NAME DDATE RDATE ---------------------------------------------------------------8080410910 Result : Thus the procedure for library management system was written and executed. Ajay cse1 Programming in C 01-OCT-06 01-OCT-06

EX NO-10 BANKING MANAGEMENT SYSTEM Aim: To develop the package for the bank management system.
Procedure: 6. Create the table for customer.

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

7. Create the table for transaction. 8. Insert the values in the bankmaster table using procedure. 9. Write the procedure to insert the values in the customer transaction table trans.

OUPTPUT: SQL> create table bankmaster( accno number(15),accname varchar2(20),address varchar2(20),balance num ber(10)); Table created. SQL> desc bankmaster; Name Null? ------------------------------- -------ACCNO ACCNAME ADDRESS BALANCE

Type ---NUMBER(15) VARCHAR2(20) VARCHAR2(20) NUMBER(10)

SQL> create table trans(accno number(15),accname varchar2(20),transdate date, transtype varchar2(1), amt number(10)); Table created. SQL> desc trans; Name Null? ------------------------------- -------ACCNO ACCNAME TRANSDATE TRANSTYPE AMT SQL> set serveroutput on;

Type ---NUMBER(15) VARCHAR2(20) DATE VARCHAR2(1) NUMBER(10)

SQL> ed b1;

create or replace procedure custadd(x1 number, x2 varchar, x3 varchar, x4 number) as acno number; acname varchar2(20); add varchar2(20);

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

bal number; begin acno:= x1; acname:=x2; add:=x3; bal:=x4; insert into bankmaster values(acno,acname,add,bal); dbms_output.put_line('Record Inserted'); end;

SQL> @ b1; 14 / Procedure created.

SQL> exec custadd(8080,'Anish','Trichy',5000); Record Inserted PL/SQL procedure successfully completed. SQL> exec custadd(8081,'Sham','Salem',10000); Record Inserted PL/SQL procedure successfully completed. SQL> exec custadd(8082,'Yugesh','Erode',7000); Record Inserted PL/SQL procedure successfully completed.
SQL> select * from bankmaster; ACCNO ACCNAME --------- -------------------8080 Anish 8081 Sham 8082 Yugesh ADDRESS BALANCE -------------------- --------Trichy 5000 Salem 10000 Erode 7000

SQL> ed b2; create or replace procedure custdelete( x number) as acno number(10); begin acno:=x;

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

delete from bankmaster where accno = acno; delete from bankmaster where accno = acno; dbms_output.put_line('Record Deleted'); end; SQL> @ b2; 9 / Procedure created. SQL> exec custdelete(8080); Record Deleted
SQL> select * from bankmaster; ACCNO --------8081 8082 ACCNAME -------------------Sham Yugesh ADDRESS BALANCE -------------------- --------Salem 10000 Erode 7000

SQL> ed b3; create or replace procedure custtrans( x1 number, x2 varchar2, x3 number) as acno number(15); actype varchar2(20); bal number(10); taccno number(15); taccname varchar2(20); tbalance number(10); tdate date; begin acno:=x1; actype:=x2; bal:=x3; select accno,accname,balance into taccno,taccname,tbalance from bankmaster where accno = acno ; if SQL%FOUND then dbms_output.put_line('Record Found'); tdate:=sysdate; if actype = 'D' then insert into trans values(taccno,taccname,tdate,actype,bal); update bankmaster set balance = tbalance + bal where accno=acno; else insert into trans values(taccno,taccname,tdate,actype,bal); update bankmaster set balance = tbalance - bal where accno=acno; end if; else

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

dbms_output.put_line('No Record Not Found'); end if; end; SQL> @ b3; 28 / Procedure created.

SQL> exec custtrans(8081,'D',2000); Record Found PL/SQL procedure successfully completed. SQL> select * from trans;
ACCNO ACCNAME TRANSDATE T AMT --------- -------------------- --------- - --------8081 Sham 09-OCT-06 D 2000

SQL> exec custtrans(8082,'W',2000); Record Found PL/SQL procedure successfully completed. SQL> select * from trans;
ACCNO --------8081 8082 ACCNAME -------------------Sham Yugesh TRANSDATE --------09-OCT-06 09-OCT-06 T AMT - --------D 2000 W 2000

SQL> select * from bankmaster;


ACCNO --------8081 8082 ACCNAME -------------------Sham Yugesh ADDRESS BALANCE -------------------- --------Salem 12000 Erode 5000

Result: Thus the procedure for bank process was and executed. written

Ex No.11

PAYROLL PROCESSING

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

AIM: To develop a package for Payroll processing. Procedure: 1. Create the table for StaffMaster 2. Insert the values in the StaffMaster table. 3. Write the procedure to insert the values in the payment table after calculating the net salary and gross salary. SQL> Create Table StaffMaster( ID Number(3) , Name Varchar2(10) , Category Varchar2(1), BasicSalary Number(8,2) , HRA Number(2), DA Number(2), EPF Number(5), LIC Number(5) ); Table created. SQL> Desc StaffMaster; Name Null? Type --------------------- -------- ---------------ID NUMBER(3) NAME VARCHAR2(10) CATEGORY VARCHAR2(1) BASICSALARY NUMBER(8,2) HRA NUMBER(2) DA NUMBER(2) EPF NUMBER(5) LIC NUMBER(5) SQL> Insert Into StaffMaster Values( 101, 'Siva','T', 8000, 10, 15, 1000 , 500 ); 1 row created. SQL> Insert Into StaffMaster Values( 102, 'Kumar','N',10000, 10, 15, 800 , 600 ); 1 row created. SQL> Select * from StaffMaster; ID NAME C BASICSALARY HRA DA EPF LIC ---------- ---------- - ----------- ---------- ------------------101 Siva T 8000 10 15 1000 500 102 Kumar N 10000 10 15 800 600

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

SQL> Create Table PayMent( ID Number(3), Name Varchar2(10), 2 GrossSalary Number(10,2), NetSalary Number(10,2) ); Table created. SQL> Desc PayMent; Name Null? Type ----------------------------------------- -------- --------------ID NUMBER(3) NAME VARCHAR2(10) GROSSSALARY NUMBER(10,2) NETSALARY NUMBER(10,2)

SQL> Select * from PayMent; no rows selected SQL> Create or Replace Procedure PayRoll( X Number) As PName Varchar2(10); PID Number(3); PHRA Number(2) := 0; PDA Number(2) := 0; PEPF Number(5) := 0; PLIC Number(5) := 0; PBasicSalary Number(8,2) :=0; PGrossSal Number(10,2) := 0; PNetSal Number(10,2) := 0; Begin PID := X; Select Name, BasicSalary, HRA, DA, EPF, LIC Into PName, PBasicSalary, PHRA, PDA, PEPF, PLIC from StaffMaster Where ID = PID; PGrossSal := PBasicSalary + (PBasicSalary * (PHRA / 100) ) + (PBasicSalary *(PDA / 100) ); PNetSal := PGrossSal - ( PEPF + PLIC ); Insert Into payment Values( PID, PName, PGrossSal, PNetSal ); End; / Procedure created.

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

SQL> Select * from PayMent; no rows selected SQL> EXEC PayRoll(101); PL/SQL procedure successfully completed. SQL> EXEC PayRoll(102); PL/SQL procedure successfully completed. SQL> Select * from PayMent; NAME GROSSSALARY NETSALARY ---------- ----------- ---------Siva 10000 8500 Kumar 12500 11100

ID ---------101 102

Result: Thus the procedure for bank process was written and executed. IMPLEMENTATION OF NORMALIZATION Ex No:12

AIM:
Create a table called customer_order and implement the concept of Normalization.
PROCEDURES:

1NF Eliminates repeating groups-make a separate table for each set of related attributes, and give each table a primary key.
2NF Eliminates redundant data-if an attribute depends on only part of a multi valued key, remove it to separate table. 3NF Eliminates columns not dependent on key-if an attribute do not contribute to a description of the key, remove them to a separate table.

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

BCNF Boyce Codd Normal form If there are non-trivial dependencies between candidate key attributes, separate them out into distinct tables. 4NF Isolate Independent Multiple Relationships No table may contain two or more 1:n or n:m relationships that are not directly related. 5NF Isolate Semantically Related Multiple Relationships There may be practical constrains on information that justify separating logically related many-to- many relationships. ONF Optimal Normal Form- a model limited to only simple (elemental) Facts, as expressed in Object Role Model notation.

DKNF Domain-key Normal Form a model free from all modification anomalies.

ALGORITHM:
Table description: customer_order Column_name Cust_name Cust_order_date Cust_id Order_item Data_type Char(25) Date Number(6) Varchar(35) Constraint Not null Not null Not null -

SQL> CREATE TABLE CUSTOMER_ORDER (CUST_NAME CHAR(25) NOT NULL, CUST_ORDER_DATE DATE NOT NULL, CUST_ID NUMBER(6) NOT NULL, CUST_ORDER_ITEM VARCHAR2(35)); TABLE CREATED. SQL> INSERT INTO CUSTOMER_ORDER VALUES( K.SANJAY, 16FEB-06, 17, CLOTHS,PAPER,UTENSILS); SQL> SELECT * FROM CUSTOMER_ORDER;
CUST_NAME CUST_ORDE CUST_ID CUST_ORDER_ITEM ------------------ ------------------ ------------ --------------------------------K.SANJAY 16-FEB-06 17 CLOTHS,PAPER,UTENSILS

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

SQL> CREATE TABLE CUSTOMER ( CUST_NAME VARCHAR2(15) NOT NULL, CUST_ID NUMBER(6) NOT NULL, PRIMARY KEY(CUST_ID)); TABLE CREATED. SQL> CREATE TABLE ITEM_ORDER (CUST_ID NUMBER(6) NOT NULL, ORDER_ID NUMBER(6) NOT NULL, ORDER_DATE DATE, ORDER_ITEM VARCHAR2(20), PRIMARY KEY(CUST_ID, ORDER_ID), FOREIGN KEY(CUST_ID) REFERENCES CUSTOMER); TABLE CREATED. SQL>INSERT INTO CUSTOMER VALUES ( K.SANJAY, 17); SQL> INSERT INTO ITEM_ORDER VALUES(17, 1001, SYSDATE, CLOTHS); SQL> INSERT INTO ITEM_ORDER VALUES(17, 1002, SYSDATE, PAPER); SQL> INSERT INTO ITEM_ORDER VALUES(17, 1003, SYSDATE, UTENSILS); SQL> SELECT * FROM CUSTOMER;
CUST_NAME CUST_ID --------------- ---------K.SANJAY 17

SQL> SELECT * FROM ITEM_ORDER ;


CUST_ID ---------17 17 17 ORDER_ID ---------1001 1004 1002 ORDER_DAT --------24-FEB-06 22-FEB-06 24-FEB-06 ORDER_ITEM --------------CLOTHES PAPERS UTENSILS

RESULT:
Thus the table was created and normalization was implemented on that table.

Ex No: 13

AIM:

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

To study and execute the all SQL commands.

ALGORITHM:
SQL> create table x05mcs_categoryheader(cat_code number(5), cat_desc varchar2(20)); Table created. SQL> desc x05mcs_categoryheader; Name Null? Type -------------------------------------- -------- ---------------------------CAT_CODE NUMBER(5) CAT_DESC VARCHAR2(20) SQL> create table x05mcs_routeheader ( route_id number(5), route_no number(5), cat_code number(5), origin varchar2(20), destination varchar2(20), fare number(7,2), distance number(3), capacity number(3)); Table created. SQL> create table x05mcs_placeheader ( place_id number(5), place_name varchar2(20), place_address varchar2(20), bus_station varchar2(20)); Table created. SQL> create table x05mcs_fleetheader ( fleet_id number(5), day date, route_id number(5), cat_code number (5)); Table created. SQL> create table x05mcs_ticketheader (fleet_id number(5), ticket_no number(5), doi date, dot date, time_travel char(8), board_place varchar2(20), origin varchar2(20), destination varchar2(20), adults number(3), children number(3), total_fare number(7,2), route_id number(3)); Table created. SQL> create table x05mcs_ticketdetail ( ticket_no number(5), name varchar2(20), sex char(1), age number(5), fare number(5,2)); Table created.

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

SQL> create table x05mcs_item ( ord_id number(4), item_id number(4), actual_price number(5), qty number(5), prod_id number(4)); Table created. SQL> select * from tab;
TNAME TABTYPE CLUSTERID --------------------------------------------------------------------------X05MCS_CATEGORYHEADER TABLE X05MCS_FLEETHEADER TABLE X05MCS_ITEM TABLE X05MCS_PLACEHEADER TABLE X05MCS_ROUTEHEADER TABLE X05MCS_TICKETDETAIL TABLE X05MCS_TICKETHEADER TABLE

8 rows selected. SQL> desc x05mcs_routeheader;


Name Null? Type ---------------------------------- -------- ---------------------------ROUTE_ID NUMBER(5) ROUTE_NO NUMBER(5) CAT_CODE NUMBER(5) ORIGIN VARCHAR2(20) DESTINATION VARCHAR2(20) FARE NUMBER(7,2) DISTANCE NUMBER(3) CAPACITY NUMBER(3)

SQL> desc x05mcs_placeheader;


Name Null? Type ----------------------------------- -------- ---------------------------PLACE_ID NUMBER(5) PLACE_NAME VARCHAR2(20) PLACE_ADDRESS VARCHAR2(20) BUS_STATION VARCHAR2(20)

SQL> desc x05mcs_fleetheader;


Name Null? Type ----------------------------------- -------- ---------------------------FLEET_ID NUMBER(5)

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

DAY ROUTE_ID CAT_CODE

DATE NUMBER(5) NUMBER(5)

SQL> desc x05mcs_ticketheader;


Name Null? Type ----------------------------------- -------- ---------------------------FLEET_ID NUMBER(5) TICKET_NO NUMBER(5) DOI DATE DOT DATE TIME_TRAVEL CHAR(8) BOARD_PLACE VARCHAR2(20) ORIGIN VARCHAR2(20) DESTINATION VARCHAR2(20) ADULTS NUMBER(3) CHILDREN NUMBER(3) TOTAL_FARE NUMBER(7,2) ROUTE_ID NUMBER(3)

SQL> desc x05mcs_ticketdetail;


Name Null? Type ----------------------------------- -------- ---------------------------TICKET_NO NUMBER(5) NAME VARCHAR2(20) SEX CHAR(1) AGE NUMBER(5) FARE NUMBER(5,2)

SQL> desc x05mcs_item;


Name Null? Type -------------------------------------------- ---------------------------ORD_ID NUMBER(4) ITEM_ID NUMBER(4) ACTUAL_PRICE NUMBER(5) QTY NUMBER(5) PROD_ID NUMBER(4)

SQL> insert into x05mcs_categoryheader values(01,'superdeluxe'); 1 row created. SQL> insert into x05mcs_categoryheader values(02,'deluxe'); 1 row created.

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

SQL> insert into x05mcs_categoryheader values(03,'superfast'); 1 row created. SQL> insert into x05mcs_categoryheader values(04,'normal'); 1 row created. SQL> select * from x05mcs_categoryheader;
CAT_CODE CAT_DESC ----------------- -------------------1 SUPERDELUXE 2 DELUXE 3 SUPERFAST 4 NORMAL

SQL> insert into x05mcs_routeheader values (101, 33, 01, 'madurai', 'madras', 35, 250, 50); 1 row created. SQL> insert into x05mcs_routeheader values (102, 25, 02, 'trichy', 'madurai', 40, 159, 50); 1 row created. SQL> insert into x05mcs_routeheader values (103, 15, 03, 'thanjavur', 'madurai', 59, 140, 50); 1 row created. SQL> insert into x05mcs_routeheader values(104,36,04,'madras', 'bangalore', 79,375,50); 1 row created. SQL> insert into x05mcs_routeheader values(105,40,01,'bangalore', 'madras', 80,375,50); 1 row created. SQL> select * from x05mcs_routeheader;
Route_Id Route_No Cat_Code Origin Destination Fare Distance Capacity --------------------------------------------------------------------------------------------------------101 33 1 Madurai Madras 35 250 50 102 25 2 Trichy Madurai 40 159 50 103 15 3 Thanjavur Madurai 59 140 50 104 36 4 Madras Bangalore 79 375 50 105 40 1 Bangalore Madras 80 375 50

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

SQL> insert into x05mcs_placeheader values(01 ,'madras','10,ptc road','parrys'); 1 row created. SQL> insert into x05mcs_placeheader values(02 , 'madurai', '21,canalbank', 'kk nagar'); 1 row created. SQL> insert into x05mcs_placeheader values(03 ,'trichy', '11,firstcrossroad', 'bheltown'); 1 row created. SQL> insert into x05mcs_placeheader values(04 ,'bangalore','15 firstmainroad', 'cubbon park'); 1 row created. SQL> insert into x05mcs_placeheader values(05 ,'hyderabad', '115,lakeviewroad', 'charminar'); 1 row created. SQL> insert into x05mcs_placeheader values(06 , 'thanjavour', '12,templeroad','junction'); 1 row created. SQL> select * from x05mcs_placeheader;
PLACE_ID PLACE_NAME PLACE_ADDRESS BUS_STATION ------------------------------------------------------------------------------------------1 Madras 10,PTC Road Parrys 2 Madurai 21,CanalBank KK Nagar 3 Trichy 11,FirstCrossRoad BhelTown 4 Bangalore 15 FirstMainRoad Cubbon Park 5 Hyderabad 115,LakeViewRoad Charminar 6 Thanjavour 12,TempleRoad Junction

6 rows selected. SQL> insert into x05mcs_fleetheader values(01,'10-apr-96',101,01); 1 row created. SQL> insert into x05mcs_fleetheader values(02,'10-apr-96',101,01); 1 row created. SQL> insert into x05mcs_fleetheader values(03,'10-apr-96',101,01); 1 row created. SQL> insert into x05mcs_fleetheader values(04,'10-apr-96',102,02);

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

1 row created. SQL> insert into x05mcs_fleetheader values(05,'10-apr-96',102,03); 1 row created. SQL>insert into x05mcs_fleetheader values(06,'10-apr-96',103,04); 1 row created. SQL> SELECT * FROM X05MCS_FLEETHEADER;
FLEET_ID DAY ROUTE_ID CAT_CODE ----------------------------------------------------------------------1 10-APR-96 101 1 2 10-APR-96 101 1 3 10-APR-96 101 1 4 10-APR-96 102 2 5 10-APR-96 102 3 6 10-APR-96 103 4

6 rows selected. SQL> insert into x05mcs_ticketheader values(01 ,01 ,'10-apr-96','10-may96','15:00:00','parrys); 1 row created. SQL> insert into x05mcs_ticketheader values(02 ,02 ,'12-apr-96','05-may96','09:00:00','kk nagar); 1 row created. SQL> insert into x05mcs_ticketheader values(03 ,03 ,'21-apr-96','15-may96','21:00:00','cubbon); 1 row created. SQL> insert into x05mcs_ticketheader values(04 ,04 ,'25-apr-96','25-may96','10:00:00','charm); 1 row created. SQL> insert into x05mcs_ticketheader values(05 ,250 ,'30-apr-96','22-may96','15:00:00','parryas); 1 row created. SQL> select * from x05mcs_ticketheader;
Fleet_id Ticket_no DOI DOT time_tra board_place ---------------------------------------------------------------------------------------------------

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

1 2 3 4 5

1 2 3 4 2

10-APR-96 12-APR-96 21-APR-96 25-APR-96 30-APR-96

10-MAY-96 05-MAY-96 15-MAY-96 25-MAY-96 22-MAY-96

15:00:00 09:00:00 21:00:00 10:00:00 15:00:00

Parrys KK Nagar Cubbon Park Charminar Parrys

Origin Destination Adults Children Total_fare Route_id ---------------------------------------------------------------------------------------------------Madras Madurai 1 1 60 101 Madurai Madras 2 1 60 102 Bangalore Madras 4 2 400 101 Hyderabad Madras 10 0 500 103 Madras Cochin 2 2 141 103

SQL>insert into x05mcs_ticketdetail values(01,'charu','f',24,14.00); 1 row created. SQL>insert into x05mcs_ticketdetail values(01,'latha','f',10,15.55); 1 row created. SQL> insert into x05mcs_ticketdetail values(02,'anand','m',28,17.80); 1 row created. SQL> insert into x05mcs_ticketdetail values(02,'gautham','m',24,16.00); 1 row created. SQL>insert into x05mcs_ticketdetail values(02,'x05mcs','m',09,17.65); 1 row created. SQL>insert into x05mcs_ticketdetail values(05,'sandeep','m',30,18.00); 1 row created. SQL> select * from x05mcs_ticketdetail;
TICKET_NO NAME S AGE FARE --------------------------------------------------------------------1 Charu F 24 14 1 Latha F 10 15.55 2 Anand M 28 17.8 2 Gautham M 24 16 2 Bala M 9 17.65 5 Sandeep M 30 18

6 rows selected. SQL> insert into x05mcs_item values(2000,105,5000,500,111 ); 1 row created.

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

SQL> insert into x05mcs_item values(2001,3000,4050,600,112 ); 1 row created. SQL> select * from x05mcs_item;
ORD_ID ITEM_ID ACTUAL_PRICE QTY PROD_ID --------------------------------------------------------------------------------2000 105 5000 500 111 2001 3000 4050 600 112

SQL> alter table x05mcs_routeheader add comments long; Table altered. SQL> desc x05mcs_routeheader;
Name Null? Type ----------------------------------------- -------- ---------------------------ROUTE_ID NUMBER(5) ROUTE_NO NUMBER(5) CAT_CODE NUMBER(5) ORIGIN VARCHAR2(20) DESTINATION VARCHAR2(20) FARE NUMBER(7,2) DISTANCE NUMBER(3) CAPACITY NUMBER(3) COMMENTS LONG

SQL> alter table x05mcs_routeheader drop column comments; Table altered. SQL> desc x05mcs_routeheader;
Name Null? Type ----------------------------------------- -------- ---------------------------ROUTE_ID NUMBER(5) ROUTE_NO NUMBER(5) CAT_CODE NUMBER(5) ORIGIN VARCHAR2(20) DESTINATION VARCHAR2(20) FARE NUMBER(7,2) DISTANCE NUMBER(3) CAPACITY NUMBER(3)
SQL> select distinct cat_code desc; cat_code from x05mcs_routeheader order by

CAT_CODE ---------4 3

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

2 1

SQL> desc x05mcs_routeheader;


Name Null? Type ----------------------------------------- -------- --------------ROUTE_ID NUMBER(5) ROUTE_NO NUMBER(5) CAT_CODE NUMBER(5) ORIGIN VARCHAR2(20) DESTINATION VARCHAR2(20) FARE NUMBER(7,2) DISTANCE NUMBER(3) CAPACITY NUMBER(3)

SQL> alter table x05mcs_routeheader modify distance number(4); Table altered. SQL> desc x05mcs_routeheader;
Name Null? Type ----------------------------------------- -------- --------------ROUTE_ID NUMBER(5) ROUTE_NO NUMBER(5) CAT_CODE NUMBER(5) ORIGIN VARCHAR2(20) DESTINATION VARCHAR2(20) FARE NUMBER(7,2) DISTANCE NUMBER(4) CAPACITY NUMBER(3)

SQL> grant alter,update,insert on x05mcs_routeheader to x05mcs07; Grant succeeded. SQL> revoke alter,update,insert on x05mcs_routeheader from x05mcs07; Revoke succeeded. SQL> create table x05mcs_routedetail (route_id number(5), place_id number(5), nonstop char(1)); Table created. SQL> desc x05mcs_routedetail;
Name Null? Type ----------------------------------------- -------- ---------------------------ROUTE_ID NUMBER(5)

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

PLACE_ID NONSTOP

NUMBER(5) CHAR(1)

SQL>insert into x05mcs_routedetail values(105,01,'n') 1 row created. SQL>insert into x05mcs_routedetail values(102,02,'s') 1 row created. SQL>insert into x05mcs_routedetail values(106,01,'s') 1 row created. SQL>insert into x05mcs_routedetail values(108,05,'n') 1 row created. SQL> select * from x05mcs_categoryheader;
CAT_CODE CAT_DESC ---------- -------------------1 SUPERDELUXE 2 DELUXE 3 SUPERFAST 4 NORMAL

SQL> savepoint sp1; Savepoint created. SQL> insert into x05mcs_categoryheader values(5,'highspeed'); 1 row created. SQL> savepoint sp2; Savepoint created. SQL> delete from x05mcs_categoryheader where cat_code=4; 1 row deleted. SQL> savepoint sp3; Savepoint created. SQL> insert into x05mcs_categoryheader values(16 ,'ultimatespeed'); 1 row created. SQL> select * from x05mcs_categoryheader;
CAT_CODE CAT_DESC ---------- -------------------1 SUPERDELUXE

M.A.M. SCHOOL OF ENGINEERING, SIRUGANUR, TIRUCHIRAPPALLI 621105 DEPARTMENT OF C.S.E. CS1256 - DBMS LAB MANUAL

2 3 5 16

DELUXE SUPERFAST HIGHSPEED ULTIMATESPEED

SQL> rollback to sp2; Rollback complete. SQL> select * from x05mcs_categoryheader;


CAT_CODE CAT_DESC ---------- -------------------1 SUPERDELUXE 2 DELUXE 3 SUPERFAST 4 NORMAL 5 HIGHSPEED

SQL> rollback to sp1; Rollback complete. SQL> select * from x05mcs_categoryheader;


CAT_CODE CAT_DESC ---------- -------------------1 SUPERDELUXE 2 DELUXE 3 SUPERFAST 4 NORMAL

SQL> commit; Commit complete.

RESULT:
Thus the SQL commands are executed and results were verified.

Das könnte Ihnen auch gefallen