61
MCS -043 DBMS LAB DBMS LAB Lab Manual MCSL-45 Page 1

Dbms Lab Manual

Embed Size (px)

DESCRIPTION

ignou

Citation preview

Page 1: Dbms Lab Manual

MCS -043 DBMS LAB

DBMS LAB

Lab Manual MCSL-45 Page 1

Page 2: Dbms Lab Manual

MCS -043 DBMS LAB

Session I

1) Please attempt the following problems for the teacher, class and pay scale relations given in this section. Table Creation-

Lab Manual MCSL-45 Page 2

Page 3: Dbms Lab Manual

MCS -043 DBMS LAB

Create table TEACHER (

T_NO VARCHAR2(3) not null, F_NAME VARCHAR2(50), L_NAME VARCHAR2(25), SALARY NUMBER, SUPERVISIOR VARCHAR2(3), JOININGDATE DATE, BIRTHDATE DATE, TITLE VARCHAR2(3), INC NUMBER

INC

T_no

F_name

L_name

Salary

Supervisor

Join_Date

DOB Qualification

101 111 Angad

kamat 20 khan 04/06/2012

11/03/1992

BSc-It

102

112 shyam

lanke 5 Rahul 06/06/2010

11/12/1980

MCA

103

113 naufil siddiqui

10 sharma 11/03/2009

23/05/1985

BCA

104

114 rohit kadam

15 dubey 11/03/2009

11/03/1989

Ph.D

)

Create/Recreate primary, unique and foreign key constraints alter table TEACHER add constraint TEACHER_PK primary key (T_NO) Create table create table CLA( CLASS_NO VARCHAR2(3) not null, T_NO VARCHAR2(3), ROOM_NO VARCHAR2(3))

Create/Recreate primary, unique and foreign key constraints alter table CLASS add constraint CLASS_PK primary key (CLASS_NO)

Lab Manual MCSL-45 Page 3

Page 4: Dbms Lab Manual

MCS -043 DBMS LAB

alter table CLASS add constraint CLASS_FK foreign key (T_NO) references TEACHER (T_NO);

Class _no

T_no Room_no

1001 111 1

1002 112 2

1003 113 3

1004 114 41005 115 5

Create table create table PAYSCALE ( MIN_LIMIT NUMBER, MAX_LIMIT NUMBER, GRADE VARCHAR2(5) not null)

Create/Recreate primary, unique and foreign key constraints alter table PAYSCALE add constraint PAYSCALE_PK primary key (GRADE).

Min_limit

Max_limit Number

Grade

Lab Manual MCSL-45 Page 4

Page 5: Dbms Lab Manual

MCS -043 DBMS LAB

Number

10 5 A

11 6 B

60 45 C

60 34 D

55 76 E

a) Display the name of the teacher(s) who is (are) the youngest among all the teachers.

Ans. Select * from teacher Where birthdate = (select max (birthdate) from teacher);

b) Display details of all the teachers who have the same job title as that of ‘Angad’

Ans. Select * from teacher where title = (select title from teacher where upper(f_name)=’Angad’;

c) Display the list of all the teachers who have joined after ‘10-Jul-2009’ and whose salary is equal to that of any of the teachers who joined before ‘10-Jul-2012’.

Ans. Select * from teacher where join_date > ’10-jul-2009’ and salary in (select salary from teacher where joining date < ’10-jul-2012’;

d) Use a correlated query to determine the teachers who are not class teachers.

Lab Manual MCSL-45 Page 5

Page 6: Dbms Lab Manual

MCS -043 DBMS LAB

Ans. Select t.* from teacher t, payscale s where t.salary between s.min_limit and s.max_limit and s.grade = ’B’.

e) Identify all those teachers who are in grade ‘B’. Ans. Select t.* from teacher t , payscale s where exists (select * from class c where t.t_no = c.t_no) and (t.salary between s.min_limit and s.max_limit) and t.grade=C’;

f) Display the names and numbers of all teachers who are class teachers and are in grade ‘C’.

Ans. Select t.* from teacher t, payscale s where t.salary between s.min_limit and s.max_limit and s.grade = ’B’;

g) Display the names of all teachers who are supervisors.Ans. Select * from teacher where supervisor =’YES’;

h) Display the teacher id and salaries of all those teachers who are in grade ‘A’ or ‘C’ and who have at least two L’s in their names.

Ans. Select t.*, s.* from teacher t, payscale s where (t.salary between s.min_limit and s.max_limit) and (s.grade ‘C’ or s.grade =’B’) and (t.f_name like ‘%L%L%’);

i) Display details of all those teachers who are class teachers of classes 1 to 5.

Ans. Select t.*, c.* from teacher t, class c where t.t_no=c.t_no and c.class_no between 1 and 5;

j) Display the names of all teachers along with their dates of birth whose birthday is in the current month.

Ans. Select * from teacher

Lab Manual MCSL-45 Page 6

Page 7: Dbms Lab Manual

MCS -043 DBMS LAB

where to_char(to_date(birthdate,’MM’)) = to_char(to_date(sysdate,’MM’));

2) In an Open University a student’s data is to be maintained using relations. The university maintains data of all the students, their batches, Regional Centers and study center details. Each batch of students has one or more representative students. The batches are taught by same or different faculty.

(a)Design and implement the suitable relations for the University. Make and state suitable assumptions.

Ans. Create table Student

STDID VARCHAR2(10) PRIMARY KEY,NAME VARCHAR2(20),ADDRESS VARCHAR2(40),COURSEID VARCHAR2(10),BATCHID VARCHAR2(10),CONSTRAINTS STUDENT_FK FOREIGN KEY(COURSEID) REFERENCES COURSE(COURSEID));

Lab Manual MCSL-45 Page 7

STD_ID Name Address Course _ID

Batch _ID

5001 Angad kamat Dombivali 0001 7001

5002 Shyam Lanke Thane 0002 7002

5003 Naufil Siddiqui

Bhiwandi 0003 7003

5004 Sandeep B Badalapur 0004 7004

5005 Ajinkya Pune 0005 7005

Page 8: Dbms Lab Manual

MCS -043 DBMS LAB

CREATE TABLE BATCH

BATCHID VARCHAR2(10), RCID VARCHAR2(10), SDYID VARCHAR2(10), COURSEID VARCHAR2(10), REPSTDID VARCHAR2(10),

CONSTRAINT BATCH_FK FOREIGN KEY(RCID) REFERENCES REGCENT(RCID), FOREIGN KEY(SDYID) REFERENCES SDYCENT(SDYID), FOREIGN KEY(COURSEID) REFERENCES COURSE(COURSEID), * FOREIGN KEY(REPSTDID) REFERENCES STUDENT(STDID));

Batch_ID RC_ID Course_ID SDY_ID Repstd_ID

111 49 101 1 009

112 50 102 2 010

113 51 103 3 011

114 52 104 4 012

115 53 105 5 013

Lab Manual MCSL-45 Page 8

Page 9: Dbms Lab Manual

MCS -043 DBMS LAB

ALTER TABLE BATCH ADD CONSTRAINT BATCH_PK PRIMARY KEY(BATCHID);

CREATE TABLE TEACHERS

TCHID VARCHAR2(10) primary key,TNAME VARCHAR2(20),COURSEID VARCHAR2(10),BATCHID VARCHAR2(10),

CONSTRAINTS TEACHER_FK FOREIGN KEY(COURSEID) REFERENCES OURSE(COURSEID),FOREIGN KEY(BATCHID) REFERENCES BATCH(BATCHID));

T_ID T_Name Course_ID Batch_ID

88001 Asin 001 1111

88002 preeti 002 112

88003 sonal 003 1131

88004 Prinyanka 004 1141

88005 Shruti 005 115

Teacher table

T_ID T_Name Batch_ID

101 preeti 1111

102 Niran 112

103 Shruti 113

Lab Manual MCSL-45 Page 9

Page 10: Dbms Lab Manual

MCS -043 DBMS LAB

Course Table

Course_ID

Course_Name

Course_fees

1001 MBA 10000

10021 MCA 25000

1003 Msc-IT 15000

1004 BBA 7000

Regional Center Table

R_ID R_Name State Address

1 mulund Maharashtra

N.M towers

2 Mumbai Maharashtra

Indira Towers

3 Pune Maharashtra

A.k Soceity

4 Bhopal M.P D.k road

b) Write at least 15 queries (they must include at least one query of

Lab Manual MCSL-45 Page 10

Page 11: Dbms Lab Manual

MCS -043 DBMS LAB

each type given in this section 2.2) for the database. Implement these queries using SQL. Also explain the purpose of each query.

Ans.

1. Display the details of study centre where a student named ’Sanzaya’ reads;

Ans. SELECT * FROM SDYCENT WHERE SDYID=(SELECT SDYID FROM BATCH WHERE BATCHID=(SELECT BATCHID FROM STUDENT WHERE UPPER(NAME) LIKE 'SANZAYA%'`

2. Display the course fee where makhunu singh is admitted.Ans. BATCHID FROM STUDENT WHERE UPPER(NAME)='MAKHUNU SINGH'));

3. Display the list of all teachers who take classes for batch ‘B004’Ans. SELECT TNAME FROM TEACHERS WHERE BATCHID='B004';

4. Display the name of teachers who were working in regional centre ‘BBSR’

Ans. SELECT TNAME FROM TEACHERS WHERE BATCHID IN(SELECT BATCHID FROM BATCH WHERE RCID=(SELECT RCID FROM REGCENT WHERE RCNAME='BBSR'));

5. Display the name of teachers who teach in delhi and have atleast two ‘a’ in their name.

Ans. SELECT TNAME FROM TEACHERS WHEREUPPER(TNAME) LIKE '%A%A%' ANDBATCHID IN(SELECT BATCHID FROM BATCH WHERERCID=(SELECT RCID FROM REGCENT WHEREUPPER(RCNAME)='NDLS'));

6. Display the name of student whose teachers name starts with ‘S’.

Ans. SELECT NAME FROM STUDENT WHERE BATCHID IN (SELECT BATCHID FROM BATCH WHERE BATCHID IN (SELECT BATCHID FROM TEACHERS WHERE UPPER(TNAME) LIKE 'S%'));

7. Display the name of the teachers with the batch details.

Lab Manual MCSL-45 Page 11

Page 12: Dbms Lab Manual

MCS -043 DBMS LAB

Ans. SELECT TNAME,B.BATCHID,RCID,SDYID,COURSEID,REPSTDID * FROM TEACHERS T,BATCH B WHERE B.BATCHID=T.BATCHID

8. Display the name of students along with course details.

Ans. SELECT NAME,C.COURSEID,COURSENAME,COURSEFEE FROM STUDENT S, COURSE C, BATCH B WHERE S.BATCHID=B.BATCHID AND * B.COURSEID=C.COURSEID;

9. Display the teachers name along with the students they teach.Ans. SELECT TNAME,NAME FROM TEACHERS T,STUDENT S WHERE T.BATCHID=S.BATCHID;

10. Display course and study centers that offer themAns. SELECT COURSENAME,SDYNAME FROM COURSE C,SDYCENT S,BATCH B WHERE B.SDYID=S.SDYID AND * B.COURSEID=C.COURSEID;

11. Display students name who read under teacher whose last name is ‘sehgal’.

Ans. ELECT NAME FROM STUDENT WHERE BATCHID IN( SELECT BATCHID FROM TEACHERS WHERE * UPPER(TNAME) LIKE '%SEHGAL%');12 .Display students and related regional centers.Ans. SELECT NAME, RCNAME FROM STUDENT S,REGCENT R,BATCH B WHERE R.RCID=B.RCID AND S.BATCHID=B.BATCHID;

13 Display STUDENTID of students and teachers id.Ans. SELECT STDID,TCHID FROM STUDENT S, TEACHERS T WHERE S.BATCHID=T.BATCHID;

14. Display student, teacher and rc.Ans. SELECT NAME,TNAME,RCNAME FROM STUDENT S,TEACHERS T,REGCENT R,BATCH B WHERE S.BATCHID=T.BATCHID

Lab Manual MCSL-45 Page 12

Page 13: Dbms Lab Manual

MCS -043 DBMS LAB

AND T.BATCHID=B.BATCHID AND B.RCID=R.RCID;

3) Design a suitable database system for a bank along with 20 possible queries to the database (the queries should be such that their solution involves subqueries or joins or both). Implement the database and the queries in a commercial DBMS using SQL.

Ans. Bank database – create table acco_master (accno number(10) primary key,name * varchar2(10),balance number(10))

SQL>insert into acco_master values(&accno,'&name',&balance)Enter value for accno:111Enter value for name:farazEnter value for balance:200000.

SQL>create table acco_trans(accno number(10),trans_date date,deb_crevarchar2(10),check(deb_cre IN('debit','credit')),amount number(10), process varchar2(10)check(process IN('yes','no')) foreign key (accno)references acco_master);

SQL> insert into acco_trans values(&accno,'sysdate,'&deb_cre',&amount, '&process');

Lab Manual MCSL-45 Page 13

Page 14: Dbms Lab Manual

MCS -043 DBMS LAB

Enter value for accno:111Enter value for deb_cre:debitEnter value for amount:1000Enter value for process:yes.

Session II

Lab Manual MCSL-45 Page 14

Page 15: Dbms Lab Manual

MCS -043 DBMS LAB

1) Please attempt the following problems for the teacher, class and pay scale relations given in this section. (a) Create a view named ‘supervisor_details’ that stores the

names and numbers of all the supervisors.

Ans. CREATE VIEW SUPERVISOR_DETAIL ASSELECT F_NAME ||' '|| L_NAME AS NAME FROM TEACHER WHERE TITLE='SUPERVISOR';

SELECT * FROM SUPERVISOR_DETAIL.

b) Create a non-unique index on the foreign key column of the ‘class’ table.

Ans. CREATE INDEX SCOTT.class_index ON SCOTT.CLASS (CLASS_NO) LOGGING NOPARALLEL;

c) Modify the view created in (a) and add details like salary, job title, joining date, birth date etc. of all supervisors.

Ans. CREATE OR REPLACE VIEW SCOTT.SUPERVISOR_DETAIL(NAME,SALARY,JOBTITLE,BIRTHDATE)ASSELECT F_NAME || ' ' || L_NAME AS NAME ,SALARY AS SALARY ,TITLE AS JOBTITLE , BIRTHDATE AS BIRTHDATEFROM TEACHERWHERE TITLE = 'SUPERVISOR';

d) Using the view created in (c) display details of all supervisors who have worked for more than 15 years.

Ans. SELECT * FROM SUPERVISOR_DETAIL WHERE TO_CHAR(SYSDATE,'YYYY') _ CHAR(JOININGDATE,'YYYY') >=15

e) Using the view created in (c) display details of all supervisors who have worked for more than 15 years.

Ans. CREATE OR REPLACE VIEW SCOTT.TECHER_DETAIL AS

Lab Manual MCSL-45 Page 15

Page 16: Dbms Lab Manual

MCS -043 DBMS LAB

SELECT * FROM teacher WHERE title = 'TGT' and salary>12000;

f) Create a view that stores the details of all the teachers who are TGT and earning more than Rs.12000/-.

Ans . CREATE OR REPLACE VIEW SCOTT.SUPERVISOR_DETAIL(NAME,salary,jobtitle,birthdate)ASSELECT f_name || ' ' || l_name AS NAME ,salary as salary ,title as jobtitle , birthdate as birthdateFROM teacherWHERE title = 'supervisor';

g) Drop the view created in (e). Ans. Drop view SCOTT.TECHER_DETAIL.

h) Create a non-unique index on the names of teachers in the ‘teachers’ table.

Ans. CREATE INDEX T_NAME_INDEX ON TEACHER(F_NAME)

i) Create a view named ‘teacher_info’ that only allows users to view the teacher id, name, salary and grade of the teachers. It should not allow any user to change/update any information.

Ans. CREATE VIEW TEACHER_INFO AS SELECT T_NO, F_NAME ||' '|| L_NAME AS NAME, SALARY FROM TEACHER;

SELECT * FROM TEACHER_INFO; GRANT SELECT

ON TEACHER_INFO TO SYSTEM;j) Create a view that displays details of all teachers who are in

grade ‘B’ and are more than 40 years old. Ans. CREATE OR REPLACE VIEW SCOTT.TECHER_DETAIL1 AS SELECT T_NO ,F_NAME||' '||L_NAME AS NAME,TITLE,SALARY,

TRUNC(MONTHS_BETWEEN(SYSDATE,BIRTHDATE)/12,0) AGE , GRADE FROM TEACHER, PAYSCALE

WHERE SALARY BETWEEN MIN_LIMIT AND MAX_LIMIT ; SELECT * FROM TECHER_DETAIL1 WHERE AGE>40.

Lab Manual MCSL-45 Page 16

Page 17: Dbms Lab Manual

MCS -043 DBMS LAB

2) Design suitable views and indexes for the Bank database system (Exercise 1, question. Create at least 5 suitable queries on each of the views. Explain how the indexes created by you would enhance the performance of the database system. Implement the above in a commercial DBMS using SQL.

Ans, EXPLICIT CURSORDECLARE

C_T_NO TEACHER.T_NO%TYPE; C_F_NAME TEACHER.F_NAME%TYPE; C_L_NAME TEACHER.L_NAME%TYPE; C_SALARY TEACHER.SALARY%TYPE; CURSOR C1 IS

SELECT T_NO,F _NAME, L_NAME, SALARY FROM TEACHER;

BEGIN OPEN C1; LOOP

FETCH C1 INTO C_T_NO, C_F_NAME, C_L_NAME, C_SALARY ; EXIT WHEN NOT C1%FOUND;

UPDATE TEACHER SET SALARY = SALARY * 1.10 WHERE SALARY > 20000; END LOOP;CLOSE C1;

END;

Lab Manual MCSL-45 Page 17

Page 18: Dbms Lab Manual

MCS -043 DBMS LAB

Session III

Lab Manual MCSL-45 Page 18

Page 19: Dbms Lab Manual

MCS -043 DBMS LAB

1) Please perform the following using the following relations: Teacher(t_no, f_name, l_name, salary, supervisor, joiningdate, birthdate, title) Class(class_no, t_no, room_no)Payscale(Min_limit, Max_limit, grade).

a) Calculate the bonus amount to be given to a teacher depending on the following conditions:

if salary > 10000 then bonus is 10% of the salary. if salary is between 10000 and 20000 then bonus is 20% of the salary. if salary is between 20000 and 25000 then bonus is 25% of the salary. IV. if salary exceeds 25000 then bonus is 30% of the salary.

Ans. CREATE OR REPLACE PROCEDURE CALCULATE_BONUS(T_NO IN INT) IS VBONUS INT; VTNO INT :=0; VSAL INT :=0; BEGIN VBONUS :=0; VTNO :=T_NO; SELECT SALARY INTO VSAL FROM TEACHER1 WHERE T_NO=VTNO; IF(VSAL<10000) THEN VBONUS :=VSAL*(10/100); ELSIF(VSAL BETWEEN 10000 AND 20000) THEN VBONUS :=VSAL*(20/100); ELSIF(VSAL BETWEEN 20000 AND 25000) THEN VBONUS :=VSAL*(25/100); ELSIF(VSAL >25000) THEN VBONUS :=VSAL*(30/100); END IF; DBMS_OUTPUT.PUT_LINE(VBONUS); -- BONUS :=VBONUS; END CALCULATE_BONUS;

Lab Manual MCSL-45 Page 19

Page 20: Dbms Lab Manual

MCS -043 DBMS LAB

b) Using a simple LOOP structure, list the first 10 records of the ‘teachers’ table.

Ans. FETCHTEN TEACHER%ROWTYPE; CNT NUMBER :=0; CURSOR CURR IS SELECT * FROM TEACHER; BEGIN OPEN CURR; LOOP EXIT WHEN CURR%NOTFOUND OR CNT=10; FETCH CURR INTO FETCHTEN; DBMS_OUTPUT.PUT_LINE(FETCHTEN.T_NO||' '||FETCHTEN.F_NAME||' '||FETCHTEN.L_NAME); CNT :=CNT+1; END LOOP; CLOSE CURR; END;

c) Create a procedure that selects all teachers who get a salary of Rs.20, 000 and if less than 5 teachers are getting Rs.20, 000 then give an increment of 5%.

Ans. FETCHTEN TEACHER%ROWTYPE; CNT NUMBER :=0; CURSOR CURR IS SELECT * FROM TEACHER; BEGIN OPEN CURR; LOOP EXIT WHEN CURR%NOTFOUND ; FETCH CURR INTO FETCHTEN; IF FETCHTEN.SALARY>20000 THEN DBMS_OUTPUT.PUT_LINE(FETCHTEN.T_NO||' '||FETCHTEN.F_NAME||' '||FETCHTEN.L_NAME); ELSE CNT :=CNT+1; END IF; END LOOP; IF CNT<5 THEN UPDATE TEACHER SET SALARY=SALARY*1.05 WHERE

Lab Manual MCSL-45 Page 20

Page 21: Dbms Lab Manual

MCS -043 DBMS LAB

SALARY<20000; DBMS_OUTPUT.PUT_LINE('UPDATED SALARY'); END IF; CLOSE CURR; END;

d) Create a procedure that finds whether a teacher given by user exists or not and if not then display “teacher id not exists”.

Ans. create or replace procedure findteacher(teach in varchar2)isc_t_no teacher.t_no%type;cnt number :=0;cursor curr isselect t_no from teacher where f_name=teach;begin

open curr; fetch curr into c_t_no; if curr%notfound then dbms_output.put_line('The teacher you enquired does not exist'); else dbms_output.put_line('The teachers id you enquired is '||c_t_no); end if; close curr;end;

e) Using FOR loop, display name and id of all those teachers who are more than 58 years old.

Ans. CREATE OR REPLACE PROCEDURE SHOWABOVEF8 IS

C_F_NAME TEACHER.F_NAME%TYPE; C_L_NAME TEACHER.L_NAME%TYPE; BEGIN

SELECT F_NAME,L_NAME INTO C_F_NAME,C_L_NAME FROM TEACHER WHEREMONTHS_BETWEEN(SYSDATE,BIRTHDAT DBMS_OUTPUT.PUT_LINE(C_F_NAME||'

'||C_L_NAME);* END;

Lab Manual MCSL-45 Page 21

Page 22: Dbms Lab Manual

MCS -043 DBMS LAB

f) Using while loop, display details of all those teachers who are in grade ‘A’

Ans. EXCEPTION DECLAREC_ID TEACHER.T_NO%TYPE; C_F_NAME TEACHER.F_NAME%TYPE; WANT_ID NUMBER := 110;

BEGINSELECT T_NO, F_NAME INTO C_T_NO, C_F_NAME FROM TEACHER WHERE T_NO = WANT_ID;

DBMS_OUTPUT.PUTLINE ( “TEACHER : “|| C_T_NO ||’ ‘||C_F_NAME) EXCEPTION

WHEN INVALID_NUMBER THEN DBMS_OUTPUT.PUTLINE(WANT_ID || ‘ NOT A VALID TEACHER ID’);

g) Create a procedure that displays the names of all those teachers whose supervisor is ‘Suman’.

Ans. CREATE OR REPLACE PROCEDURE STAFFUNDER(SUPERV IN VARCHAR2) IS

TEMPHOLD TEACHER%ROWTYPE;CURSOR CURR ISSELECT * FROM TEACHER WHERE SUPERVISOR=SUPERV;BEGINOPEN CURR;LOOP

FETCH CURR INTO TEMPHOLD; EXIT WHEN CURR%NOTFOUND; DBMS_OUTPUT.PUT_LINE(TEMPHOLD.F_NAME);END LOOP;CLOSE CURR;END;

h) Calculate the tax to be paid by all teachers depending on following conditions:

I. IF ANNUAL SALARY > 1,00,000 THEN NO TAX.

Lab Manual MCSL-45 Page 22

Page 23: Dbms Lab Manual

MCS -043 DBMS LAB

II. IF ANNUAL SALARY IS BETWEEN 1,00,001 AND 1,50,000 THEN TAX IS 20% OF THE ANNUAL SALARY.

III. IF ANNUAL SALARY IS BETWEEN 1,50,001 AND 2,50,000 THEN TAX IS 30% OF THE ANNUAL SALARY.

IV. IF SALARY EXCEEDS 2,50,000 THEN TAX IS 40% OF THE ANNUAL SALARY.

Ans. CREATE OR REPLACE PROCEDURE TAXCALC IS T_F_NAME TEACHER.F_NAME%TYPE; T_SALARY TEACHER.SALARY%TYPE; TAX TEACHER.SALARY%TYPE; CURSOR CURR IS SELECT F_NAME,SALARY*12 FROM TEACHER; BEGIN OPEN CURR; LOOP FETCH CURR INTO T_F_NAME,T_SALARY ; EXIT WHEN CURR%NOTFOUND; IF T_SALARY<100000 THEN TAX:=0; ELSIF T_SALARY<150000 THEN TAX:=(T_SALARY-100000)*0.20; ELSIF T_SALARY<250000 THEN TAX:=(T_SALARY-150000)*0.30+50000*0.20; ELSE TAX:=(T_SALARY-250000)*0.40+100000*0.30+50000*0.20; END IF; DBMS_OUTPUT.PUT_LINE(T_F_NAME||' OWES '||TAX||' AS TAX '); END LOOP; CLOSE CURR; END;

i) Create a procedure that finds the names of all teachers with the job title ‘PRT’ and if the number of teachers returned is more than 10 than change the job title to ‘TGT’ for the top 3 ‘PRT’ teachers based on their hire date.

Lab Manual MCSL-45 Page 23

Page 24: Dbms Lab Manual

MCS -043 DBMS LAB

Ans. CREATE OR REPLACE PROCEDURE CHECKTGTEXCEED IS VCOUNT INT ; VMAXDATE DATE ; BEGIN LOOP SELECT COUNT(*) INTO VCOUNT FROM TEACHER1 WHERE TITLE='TGT' ; SELECT MAX(JOININGDATE) INTO VMAXDATE FROM TEACHER1 WHERE TITLE='TGT'; IF(VCOUNT>2) THEN UPDATE TEACHER1 SET TITLE='PRT' WHERE JOININGDATE=VMAXDATE AND TITLE='TGT'; ELSE EXIT; END IF; END LOOP; END CHECKTGTEXCEED;

2) Identify the need of procedures for the University database system; for example, you can create a procedure that awards 2% grace marks for those students who have got 48% marks. Design at least 5 such procedures. Implement these procedures using an embedded SQL.

Ans. DECLAREQTY NUMBER := 1; SANCTIONED _AMT NUMBER := 1000; UNIT_PRICE NUMBER := 10; TOT_AMT NUMBER := 0;

BEGINWHILE TOT_AMT < SANCTIONED_AMT LOOP

TOT_AMT := UNIT _PRICE * QTY; QTY := QTY + 1;

END LOOP; END;

Lab Manual MCSL-45 Page 24

Page 25: Dbms Lab Manual

MCS -043 DBMS LAB

3) Implement at least five procedures for the Bank Database system using embedded SQL.

Ans. SQL>SET SERVEROUTPUT ON SQL>DECLARECURSOR C_BANK IS SELECT * FROM ACCO_TRANS; V_BANK C_BANK%ROWTYPE; BALANCE NUMBER(5); BEGINOPEN C_BANK;LOOPFETCH C_BANK INTO V_BANK;EXIT WHEN C_BANK%NOTFOUND;IF V_BANK.PROCESS='NO' THENUPDATE ACCO_TRANS SET PROCESS='YES' WHEREACCNO=V_BANK.ACCNO;IF V_BANK .DEB_CRE='CREDIT' THENUPDATE ACCO_MASTER SET BALANCE=BALANCE+V_BANK.AMOUNTWHERE V_BANK.ACCNO=ACCO_MASTER.ACCNO;ELSIF V_BANK.DEB_CRE='DEBIT' THENUPDATE ACCO_MASTER SET BALANCE=BALANCE-V_BANK.AMOUNTWHERE V_BANK.ACCNO=ACCO_MASTER.ACCNO;ELSIF BALANCE<=0 THENDBMS_OUTPUT.PUT_LINE('TRANSACTION NOT POSSIBLE');END IF;END IF;END LOOP;CLOSE C_BANK;END;

SQL>select * from acco_trans;

Acc No

Trans_Date

Deb_Cre

Amt Pro

10121210241

Jan-08Feb-08Dec-07

debitcreditcredit

50001001000

yesye

Lab Manual MCSL-45 Page 25

Page 26: Dbms Lab Manual

MCS -043 DBMS LAB

4198704234517

Mar-08 credit 20000 syesyes

CURSOR FOR BANK DATABASESQL > CREATE TABLE DEPOSITOR (ACCNO PRIMARY KEY , CNAME CHAR(10))TABLE CREATED.SQL > CREATE TABLE BORROWER (LOANNO NUMBER , CNAME CHAR(10))TABLE CREATED.SQL > CREATE TABLE LOAN( LOANNO NUMBER , BRNAME CHAR(10),AMT NUMBER)TABLE CREATED.SQL > CREATE TABLE ACCT-T( ACCTNO NUMBER , BAL NUMBER, BRNAME CHAR(10), FOREIGN KEY (ACCTNO)REFERENCES DEPOSITOR (ACCTNO)TABLE CREATED.SQL > INSERT INTO DEPOSITOR VALUES (&ACCNO , &CNAME );ENTER VALUE FOR ACCNO: 101ENTER THE VALUE FOR CNAME : ALAN

SQL > INSERT INTO ACCT-T VALUES( &ACCTNO , &BAL , '&BRNAME ');ENTER VALUE FOR ACCNO: 101ENTER THE VALUE FOR BAL: 20000ENTER THE VALUE FOR BRNAME : TVM

SQL > SELECT * FROM DEPOSITOR;ACCNOCNAME 101ALAN102ANN103BEN

SQL > INSERT INTO ACCT-T VALUES( &ACCTNO , &BAL , '&BRNAME ');ENTER VALUE FOR ACCNO: 101ENTER THE VALUE FOR BAL: 20000ENTER THE VALUE FOR BRNAME : TVM

Lab Manual MCSL-45 Page 26

Page 27: Dbms Lab Manual

MCS -043 DBMS LAB

SQL > SELECT * FROM ACCT-T;ACCNOBALBRNAME------------- ------------------- ----------------10120000TVM10210500EKM1035000TCR

SQL > CREATE OR REPLACE TRIGGERDECLARE C VARCHAR2 (20)BEGINIF (:NEW.BAL < :OLD.BAL) THEN INSERT INTO LOAN VALUES (:NEW.ACCNO, :NEW.BRNAME , :OLD.BAL-:NEW.BAL); SELECT CNAME INTO C FROM DEPOSITOR WHERE ACCNO = NEW.ACCNO; INSERT INTO BORROWER VALUES (:NEW.ACCNO,C);ENDIF;END;

SESSION IV

Lab Manual MCSL-45 Page 27

Page 28: Dbms Lab Manual

MCS -043 DBMS LAB

1) Please perform the following using the following relations:

Teacher(t_no, f_name, l_name, salary, supervisor, joiningdate, birthdate, title) Class(class_no, t_no, room_no)Payscale(Min_limit, Max_limit, grade).

a) Create a host language block to declare a cursor for displaying teacher numbers and their names for all teachers having title ‘PGT’.

Ans. CREATE OR REPLACE PROCEDURE E4A ISVNO INT ;VNAME VARCHAR2(30);VREC VARCHAR2(100);CURSOR C1 IS SELECT T_NO,F_NAME FROM TEACHER WHERE

TITLE='TGT';BEGIN

--VNO :=0;--VNAME :='';VREC :='';

OPEN C1; LOOP EXIT WHEN C1%NOTFOUND; FETCH C1 INTO VNO,VNAME; VREC :=VNO ||' '|| VNAME; DBMS_OUTPUT.PUT_LINE(VREC); END LOOP; CLOSE C1;

Lab Manual MCSL-45 Page 28

Page 29: Dbms Lab Manual

MCS -043 DBMS LAB

END E4A * ;PROCEDURE CREATED.SQL> EXEC E4A 6 JATIN 6 BBB 6 BBB PL/SQL PROCEDURE SUCCESSFULLY COMPLETED.

b) Create a host language block using a cursor to calculate bonus for teachers as 5% of their salary. Display on screen the teacher details along with the bonus given.

Ans. DECLARE VNO INT ; VNAME VARCHAR2(30); BONUS INT ; CURSOR C1 IS SELECT F_NAME,SALARY FROM TEACHER; BEGIN VNO :=0; VNAME :=''; OPEN C1; DBMS_OUTPUT.PUT_LINE('NAME BONUS'); DBMS_OUTPUT.PUT_LINE('-------------'); LOOP EXIT WHEN C1%NOTFOUND; FETCH C1 INTO VNAME,VNO; BONUS :=VNO*(5/100); -- DBMS_OUTPUT.PUT_LINE(VNO||VNAME); DBMS_OUTPUT.PUT_LINE(VNAME||', BONUS: '||BONUS); END LOOP; CLOSE C1; * END;

c) Write a host language block to delete all the rows from the ‘teacher’ table where the salary is less than Rs.5000.

Ans. DECLARE C_T_NO TEACHER.T_NO%TYPE; C_F_NAME TEACHER.F_NAME%TYPE; C_L_NAME TEACHER.L_NAME%TYPE; C_SALARY TEACHER.SALARY%TYPE; CURSOR C1 IS SELECT t_no,f_name, l_name, salary FROM teacher;

BEGIN

Lab Manual MCSL-45 Page 29

Page 30: Dbms Lab Manual

MCS -043 DBMS LAB

OPEN c1; LOOP FETCH c1 INTO c_t_no, c_f_name, c_l_name, c_salary ; EXIT WHEN NOT c1%FOUND; UPDATE teacher SET salary = salary * 1.10 WHERE salary < 5000; END LOOP; CLOSE c1;END;

d) Write a host language code to insert the supervisor information from ‘teacher’ table to another table called ‘supervisor’. The new table should have only those records where the job title is ‘supervisor’.

Ans. DECLARE CURSOR C2 IS

SELECT T_NO,F_NAME, L_NAME, SALARY FROM TEACHER ; TEACHER_REC C2%ROWTYPE;

BEGIN OPEN C2; FOR TEACHER_REC IN C2 LOOP I F TEACHER_REC.SALARY > 20000 TEACHER_REC.TITLE = “SUPERVISOR”; ENDIF; END LOOP; CLOSE C2;END;

Lab Manual MCSL-45 Page 30

Page 31: Dbms Lab Manual

MCS -043 DBMS LAB

Session V

1) Write an embedded SQL block along with exceptions to select the name of the teacher with a given salary. If more than one row is returned than display more than one row retrieved. If no row is returned then display ‘no teacher with this salary’.

Ans. CREATE OR REPLACE PROCEDURE E5A(TID IN INT) IS VSAL INT; VFNAME VARCHAR2(30); VRC INT ; BEGIN SELECT F_NAME, SALARY,COUNT(*)AS SASA INTO VFNAME,VSAL,VRC FROM TEACHER WHERE T_NO=TID GROUP BY F_NAME,SALARY; IF(VRC>=1) THEN DBMS_OUTPUT.PUT_LINE('RECOED FOUND'); ELSE DBMS_OUTPUT.PUT_LINE('RECOED NOT FOUND'); END IF; EXCEPTIONWHEN NO_DATA_FOUND THENRAISE_APPLICATION_ERROR(-20100,'NOT TID FOUND ENTER THE

Lab Manual MCSL-45 Page 31

Page 32: Dbms Lab Manual

MCS -043 DBMS LAB

VALID TEACHER ID ') ; DBMS_OUTPUT.PUT_LINE('ENVALID TEACHER ID '); WHEN NO_DATA_FOUND THEN NULL; WHEN OTHERS THEN CONSIDER LOGGING THE ERROR AND THEN RE-RAISE RAISE;END E5A;

2) Create a program that updates a record into the ‘teacher’ table. Trap and handle the exception if the teacher id is not available in the ‘teacher’ table.

Ans. CREATE OR REPLACE PROCEDURE UPDATESAL(TEACHERNAME IN VARCHAR2) IS CNT NUMBER:=0; TF_NAME TEACHER.F_NAME%TYPE; NOTEACHERFOUND EXCEPTION; CURSOR CURR IS SELECT SALARY FROM TEACHER WHERE F_NAME=TEACHERNAME; BEGIN OPEN CURR; LOOP FETCH CURR INTO TF_NAME; EXIT WHEN CURR%NOTFOUND; CNT:=CNT+1; END LOOP; CLOSE CURR; IF CNT<1 THEN RAISE NOTEACHERFOUND; ELSE UPDATE TEACHER SET SALARY=1.05*SALARY WHERE F_NAME=TEACHERNAME; END IF; EXCEPTION WHEN NOTEACHERFOUND THEN

Lab Manual MCSL-45 Page 32

Page 33: Dbms Lab Manual

MCS -043 DBMS LAB

RAISE_APPLICATION_ERROR('-20003','NO TEACHER WITH THIS NAME'); END;

3) Write a program with exceptions that displays the details of all those teachers who have reached maximum limit of their grade. If no row is retrieved then raise the exception “no teacher reached max limit of grade”.

Ans. DECLARE FETCHTEN TEACHER%ROWTYPE; CNT NUMBER :=0; CURSOR CURR IS SELECT * FROM TEACHER; BEGIN OPEN CURR; LOOP EXIT WHEN CURR%NOTFOUND ; FETCH CURR INTO FETCHTEN; IF FETCHTEN.SALARY>20000 THEN DBMS_OUTPUT.PUT_LINE(FETCHTEN.T_NO||' '||FETCHTEN.F_NAME||' '||FETCHTEN.L_NAME); ELSE CNT :=CNT+1; END IF; END LOOP; IF CNT<5 THEN UPDATE TEACHER SET SALARY=SALARY*1.05 WHERE SALARY<20000; DBMS_OUTPUT.PUT_LINE('UPDATED SALARY'); END IF; CLOSE CURR; END;

4) Insert at least 5 new rows in the ‘teacher’ table and then try to

Lab Manual MCSL-45 Page 33

Page 34: Dbms Lab Manual

MCS -043 DBMS LAB

rollback last 3 rows inserted to the table. (Here, you are required to use save points).

Ans. create or replace procedure findteacher(teach in varchar2)isc_t_no teacher.t_no%type;cnt number :=0;cursor curr isselect t_no from teacher where f_name=teach;begin open curr; fetch curr into c_t_no; if curr%notfound then dbms_output.put_line('The teacher you enquired does not exist'); else dbms_output.put_line('The teachers id you enquired is '||c_t_no); end if; close curr;end;

5) Write a program with exceptions that displays the names of all teachers who will attain the age of 60 years in the current year. If no row is retrieved than display suitable exception.

Ans. IF(VSAL<10000) THEN VBONUS :=VSAL*(10/100); ELSIF(VSAL BETWEEN 10000 AND 20000) THEN VBONUS :=VSAL*(20/100); ELSIF(VSAL BETWEEN 20000 AND 25000) THEN VBONUS :=VSAL*(25/100); ELSIF(VSAL >25000) THEN VBONUS :=VSAL*(30/100); END IF; DBMS_OUTPUT.PUT_LINE(VBONUS);-- BONUS :=VBONUS;END CALCULATE_BONUS;

6) Write a PL/SQL block that displays all the rows from ‘teacher’ table if the teacher was hired for more than 10 years and still a ‘PRT’. If no result than display suitable message.

Ans. CREATE OR REPLACE PROCEDURE TAXCALC IS

Lab Manual MCSL-45 Page 34

Page 35: Dbms Lab Manual

MCS -043 DBMS LAB

T_F_NAME TEACHER.F_NAME%TYPE; T_SALARY TEACHER.SALARY%TYPE; TAX TEACHER.SALARY%TYPE; CURSOR CURR IS SELECT F_NAME,SALARY*12 FROM TEACHER; BEGIN OPEN CURR; LOOP FETCH CURR INTO T_F_NAME,T_SALARY ; EXIT WHEN CURR%NOTFOUND; IF T_SALARY<100000 THEN TAX:=0; ELSIF T_SALARY<150000 THEN TAX:=(T_SALARY-100000)*0.20; ELSIF T_SALARY<250000 THEN TAX:=(T_SALARY-150000)*0.30+50000*0.20; ELSE TAX:=(T_SALARY-250000)*0.40+100000*0.30+50000*0.20; END IF; DBMS_OUTPUT.PUT_LINE(T_F_NAME||' OWES '||TAX||' AS TAX '); END LOOP; CLOSE CURR; END;

7) In all the embedded SQL program segments that you have created so far for the University and Bank database system, create suitable error handling features.

Ans. CREATE OR REPLACE PROCEDURE FINDTEACHER(TEACH IN VARCHAR2)ISC_T_NO TEACHER.T_NO%TYPE;CNT NUMBER :=0;CURSOR CURR ISSELECT T_NO FROM TEACHER WHERE F_NAME=TEACH;BEGIN OPEN CURR; FETCH CURR INTO C_T_NO; IF CURR%NOTFOUND THEN DBMS_OUTPUT.PUT_LINE('THE TEACHER YOU ENQUIRED DOES NOT EXIST');

Lab Manual MCSL-45 Page 35

Page 36: Dbms Lab Manual

MCS -043 DBMS LAB

ELSE DBMS_OUTPUT.PUT_LINE('THE TEACHERS ID YOU ENQUIRED IS '||C_T_NO); END IF; CLOSE CURR;END;

Session VI

Lab Manual MCSL-45 Page 36

Page 37: Dbms Lab Manual

MCS -043 DBMS LAB

1) Write a trigger that is fired before the DML statement’s execution on the TEACHER table. The trigger checks the school timings based on SYSDATE. Beyond the School working hours the trigger raise an exception, which does not allow any work to be happened.

Ans. CREATE OR REPLACE TRIGGER Q1BEFORE INSERT OR UPDATE OR DELETE ON TEACHER

FOR EACH ROWWHEN (TO_CHAR (SYSDATE,'HH24') BETWEEN 9 AND 23)BEGIN

DBMS_OUTPUT.PUT_LINE('CANT DO ANY JOB OUTSIDE SCHOOL TIMINGS');

END;

2) Write a trigger that is fired before an UPDATE statement is executed for the teacher table. The trigger should write the name of teacher, user name and system date in an already created table called UPDATE_TABLE

Ans.. CREATE TABLE UPDATE_TABLE( TEACHER_NAME VARCHAR2(20),USER_NAME VARCHAR2(20)DEFAULT 'STUDENT', SYS_DATE DATE);CREATE OR REPLACE TRIGGER :BEFORE UPDATE ON TEACHERFOR EACH ROWDECLARE

Lab Manual MCSL-45 Page 37

Page 38: Dbms Lab Manual

MCS -043 DBMS LAB

BEGIN INSERT INTO UPDATE_TABLE VALUES(:OLD.F_NAME,USER,SYSDATE);END;ON EXECUTING:UPDATE TEACHER SET F_NAME=’A’ WHERE F_NAME=’PARAG’;UPDATE TEACHER SET L_NAME=’A’ WHERE L_NAME=’PATEL’;

3) Write a trigger that is fired before any row is inserted in the ‘teacher’ table.

Ans. BEFORE UPDATE ON TEACHERBEGINIF UPDATING THENDBMS_OUTPUT.PUT_LINE('YOU ARE GOING TO UPDATE THE TEACHER TABLE');END IF;END;

4) Write a function and pass a job title to it. If the TEACHER table does not contain any row corresponding to that title then return false otherwise true.

Ans. CREATE OR REPLACE FUNCTION CHK_FUCT(F_TITLE IN VARCHAR(20))

IS FF_NAME VARCHAR(20); CNT INT; BEGIN SELECT F_NAME, COUNT(*) INTO FF_NAME,CNT FROM TEACHER WHERE TITLE=F_TITLE; IF (CNT>=1) THEN RETURN 'SUCESS'; ELSE RETURN 'NOT SUCESS'; END IF;

END CHK_FUCT;

Lab Manual MCSL-45 Page 38

Page 39: Dbms Lab Manual

MCS -043 DBMS LAB

5) Write a trigger that verifies the joining date when a new row is inserted in the ‘teacher’ table. Joining date should be greater or equal to current date.

Ans. ED WROTE FILE AFIEDT.BUF

CREATE TRIGGER E6_5 AFTER INSERT ON TEACHER FOR EACH ROW DECLARE JDATE TEACHER.JOININGDATE%TYPE; CDATE DATE; BEGIN JDATE:=NEW.JOININGDATE; CDATE:=SYSDATE; IF JDATE>=CDATE THEN DBMS_OUTPUT.PUT_LINE('JOINING DATE IS FINE'); COMMIT; ELSE ROLLBACK; END IF; END;

6) Write a function that gets the teacher id as parameter and returns the class number associated with that teacher. If the teacher is not a class teacher then give suitable message

Ans. DECLARE C_ID TEACHER.T_NO%TYPE; C_F_NAME TEACHER.F_NAME%TYPE;

WANT_ID NUMBER := 110; BEGIN SELECT T_NO, F_NAME INTO C_T_NO, C_F_NAME FROM TEACHER WHERE T_NO = WANT_ID; DBMS_OUTPUT.PUTLINE ( “TEACHER : “|| C_T_NO ||’ ‘||C_F_NAME) EXCEPTION WHEN INVALID_NUMBER THEN DBMS_OUTPUT.PUTLINE(WANT_ID || ‘ NOT A VALID TEACHER ID’); END;

Lab Manual MCSL-45 Page 39

Page 40: Dbms Lab Manual

MCS -043 DBMS LAB

CREATE OR REPLACE TRIGGER NEW_TEACHER _ID AFTER INSERT ON TEACHER FOR EACH ROW DECLARE O_T_NO TEACHER.T_NO%TYPE; O_JOININGDATE TEACHER.JOININGDATE%TYPE; BEGIN SELECT T_NO_SEQUENCE.NEXTVAL INTO O_T_NO FROM DUAL; :NEW.T_NO := O_T_NO; :NEW.JOININGDATE := SYSDATE; END;

7) Write a function and pass a teacher id to it. If the TEACHER table does not contain that id then return false otherwise true.

Ans. CREATE OR REPLACE PROCEDURE E4G(TID IN INT) IS VID INT ;

VMSAL INT ; VYSAL INT; TAX INT ; VTSAL INT ; CURSOR C1 IS SELECT SALARY FROM TEACHER WHERE T_NO=TID; BEGIN OPEN C1 ; LOOP EXIT WHEN C1%NOTFOUND; FETCH C1 INTO VTSAL; VYSAL :=VTSAL*12; IF(VYSAL<100000) THEN DBMS_OUTPUT.PUT_LINE('NO TAX'); ELSIF(VYSAL BETWEEN 100001 AND 150000) THEN TAX := VYSAL*(20/100); ELSIF(VYSAL BETWEEN 150001 AND 250000) THEN TAX := VYSAL*(30/100); ELSIF(VYSAL>250000) THEN TAX := VYSAL*(40/100); END IF; END LOOP; DBMS_OUTPUT.PUT_LINE(TAX);

Lab Manual MCSL-45 Page 40

Page 41: Dbms Lab Manual

MCS -043 DBMS LAB

CLOSE C1; END E4G;

8) Write a function that takes teacher id as parameter and returns back the name and joining date of the teacher.

Ans. DECLARECURSOR C2 ISSELECT T_NO,F_NAME, L_NAME, SALARY FROM TEACHER ; TEACHER_REC C2%ROWTYPE;BEGIN OPEN C2; FOR TEACHER_REC IN C2 LOOP I F TEACHER_REC.SALARY > 20000 TEACHER_REC.TITLE = “SUPERVISOR”; ENDIF; END LOOP; CLOSE C2;END;

9) Write appropriate triggers and functions for the University and Bank database systems.

Ans. CREATE OR REPLACE TRIGGER E6_9AFTER INSERT ON TEACHER ON UNIVFOR EACH ROWBEGIN DBMS_OUTPUT.PUT_LINE(‘DATA INSERTED SUCESSFULLY’);END

Lab Manual MCSL-45 Page 41

Page 42: Dbms Lab Manual

MCS -043 DBMS LAB

Session VII

Lab Manual MCSL-45 Page 42

Page 43: Dbms Lab Manual

MCS -043 DBMS LAB

1) Assuming that in the teacher relation an attribute of object type called dependent is added. Make dependent a type that may consist of only one dependent. Add few records in the tables and output them using a query on teacher name. Find if you can search on a dependent name.

Ans. SQL> CREATE TYPE DEPENDENT AS OBJECT ( NAME VARCHAR(20) ); TYPE CREATED.SQL> ED WROTE FILE AFIEDT.BUFCREATE TABLE TEACHER(T_NO INT,F_NAME VARCHAR(30),L_NAME VARCHAR(30),SALARY INT,SUPERVISOR VARCHAR(50),JOININGDATE DATE, BIRTHDATE DATE,TITLE VARCHAR(50)D_NAME DEPENDENTTABLE CREATED.SQL> INSERT INTO TEACHER VALUES( (10101, ‘MP’, ‘JOSHI’, 30000, ‘MOHAN’, ’10-DEC-08’, ’10-FEB-07’, ‘TGT’, DEPENDENT(‘SITA’) );

1 ROW CREATED.

2)Create at least two object types in both the University and Bank database systems. Use these object types in few relations and enter some data into these relations. Query these databases.

Ans. EDWROTE FILE AFIEDT.BUF

Lab Manual MCSL-45 Page 43

Page 44: Dbms Lab Manual

MCS -043 DBMS LAB

CREATE TYPE TYPE4UNIV AS OBJECT ( NAME VARCHAR(20), PHONE NUMBER(10)* );TYPE CREATED.SQL> CREATE TYPE TYPE4BANK AS OBJECT ( BRANCH VARCHAR(20), MANAGER VARCHAR(20) ); TYPE CREATED.

Lab Manual MCSL-45 Page 44

Page 45: Dbms Lab Manual

MCS -043 DBMS LAB

Session VIII

1) Add a nested table in the teacher relation. Do some queries using nested tables?

Ans. CREATE TABLE STUDENT_CREDITS(ROLLNO NUMBER(5), S_NAME VARCHAR2(25), SUBJECT_CREDITS NEW_TYPE)NESTED TABLE SUBJECT_CREDITS STORE AS NEW_TYPE_TABLE;INSERT INTO STUDENT_CREDITSVALUES (100, ‘SUMAN’ , NEW_TABLE ( NEW_TYPE (‘ENGLISH’ , 30), NEW_TABLE ( NEW_TYPE(‘HINDI’, 35)));SELECT S.CREDIT_HOURS FROM THE (SELECT SUBJECTS_CREDIT FROM STUDENT_CREDITS WHERE S_NAME = ‘SUMAN’) SWHERE S.SUBJECT_NAME = ‘ENGLISH’;

2) Create at least two nested tables for both the University and Bank database systems. Use these tables and enter some data into these relations. Query these databases

Ans. CREATE TYPE ADDRESS_T AS OBJECT (STREET VARCHAR2(30),CITY VARCHAR2(20),STATE CHAR(2),ZIP CHAR(5) );

Lab Manual MCSL-45 Page 45

Page 46: Dbms Lab Manual

MCS -043 DBMS LAB

/CREATE TYPE ADDRESS_TAB IS TABLE OF ADDRESS_T;

/CREATE TABLE CUSTOMERS (CUSTID NUMBER,ADDRESS ADDRESS_TAB )NESTED TABLE ADDRESS STORE AS CUSTOMER_ADDRESSES

Session IX

Lab Manual MCSL-45 Page 46

Page 47: Dbms Lab Manual

MCS -043 DBMS LAB

1) Identify the use of large object types in the teacher’s table. Do some queries using these objects.

Ans. CREATE TABLE message ( msg_id NUMBER(8) NOT NULL PRIMARY KEY,

email_addVARCHAR(200), nameVARCHAR (200), messageCLOB, posting_time DATE, sort_keyVARCHAR (600));

DECLAREImage10BLOB;

image_number INTEGER := 101;BEGIN SELECT item_blob INTO image10 FROM lob_table10 WHERE key_value = image_number; DBMS_OUTPUT.PUT_LINE('Image size is:'||DBMS_LOB.GETLENGTH(image10));END;

2) Create at least two large objects for both the University and Bank database systems. Enter some data into these relations. Query these databases.

Ans. SQL> EDWROTE FILE AFIEDT.BUFDECLAREIMAGE10 BLOB;IMAGE_NO INTEGER:=101;BEGIN SELECT ITEM_BLOB INTO IMAGE10 FROM UNIVERSITIES WHERE T_NO=IMAGE_NO; DBMS_OUTPUT.PUT_LINE('IMAGE SIZE IS:'||DBMS_LOB.GETLENGTH(IMAGE10);END;SQL> EDWROTE FILE AFIEDT.BUFDECLAREIMAGE11 BLOB;IMAGE_NUM INTEGER:=01;BEGIN SELECT ITEM_BLOB INTO IMAGE11 FROM BANK

Lab Manual MCSL-45 Page 47

Page 48: Dbms Lab Manual

MCS -043 DBMS LAB

WHERE B_NO=IMAGE_NUM;DBMS_OUTPUT.PUT_LINE('IMAGE SIZE IS:'||DBMS_LOB.GETLENGTH(IMAGE11);END;

Lab Manual MCSL-45 Page 48

Page 49: Dbms Lab Manual

MCS -043 DBMS LAB

Session X

1) Create a user account “class” and give privileges related to table/view creation, deletion, updating and dropping.

Ans. CREATE USER classIDENTIFIED BY pass;GRANT CREATE TABLE, DROP TABLE, CREATE VIEW, DROP VIEWTO class;

2) Create a student account and give permission to this account for only viewing the information on the relation Class (class_no, t_no, room_no

Ans.. DENY UPDATE, DELETE, INSERT ON employee TO studentGOCREATE USER student

@Eclass_no int, @St_no money, @room_no int

GRANT EXECUTE ON student TO ClassGO.

Lab Manual MCSL-45 Page 49

Page 50: Dbms Lab Manual

MCS -043 DBMS LAB

3) Create at least 3 to 4 different types of users for each of the database systems: University and Bank. Design suitable access privileges for the users. Grant these permissions to the users.

Ans. SQL> CREATE USER MURALI IDENTIFIED BY MPJOSHI; USER CREATED.

SQL> CREATE USER BIKU IDENTIFIED BY DEEPAK;SQL> CREATE USER SAMIR IDENTIFIED BY RAJAK;USER CREATED.USER CREATEDSQL> CREATE USER PRASHANT IDENTIFIED BY JAIN;USER CREATED.CREATING ACCESS PRIVILEGES:

T SELECT, INSERT, UPDATE TO MURALIGRANT OPTIONS;GRANT SUCCEEDED.T SELECT, INSERT, UPDATE TO BIKUGRANT OPTIONS;GRANT SUCCEEDEDT SELECT, INSERT, UPDATE TO SAMIRGRANT OPTIONS;GRANT SUCCEEDED.T SELECT, INSERT, UPDATE TO PRASHANTGRANT OPTIONS;GRANT SUCCEEDED.

.4) Define different types of users for the Bank database and

provide them suitable access rights. Ans. USER CREATION:CREATE USER MANAGER IDENTIFIED BY MGR1;USER CREATED.CREATE USER CASHIER IDENTIFIED BY CASH1;USER CREATED.USER CREATEDCREATE USER GENERAL_MANAGER IDENTIFIED BY GM;USER CREATED.USER RIGHTS ASSIGNMENTGRANT CREATE TABLE, UPDATE TABLE,DROP TABLE, CREATE VIEW, UPDATE VIEW,DROP VIEW TO GENERAL_MANAGER;GRANT SUCCEEDED.

Lab Manual MCSL-45 Page 50

Page 51: Dbms Lab Manual

MCS -043 DBMS LAB

GRANT CREATE TABLE, UPDATE TABLE,DROP TABLE, CREATE VIEW, UPDATE VIEW,DROP VIEW TO MANAGER;GRANT SUCCEEDED.GRANT UPDATE TABLE,CREATE VIEW, UPDATE VIEW, TO CLASS;GRANT SUCCEEDED.GRANT , UPDATE TABLE,DROP TABLE, , UPDATE VIEW,TO CLERK;GRANT SUCCEEDED.

Lab Manual MCSL-45 Page 51