0% found this document useful (0 votes)
24 views38 pages

DBMS Part B

Dbms part b lablist.

Uploaded by

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

DBMS Part B

Dbms part b lablist.

Uploaded by

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

CLASS: II BCA I BATCH PART-B ORACLE LAB

1. Create the following tables by identifying primary and foreign keys. Specify the not null
property for mandatory keys.
SUPPLIERS (SUPPLIER_NO, SNAME, SADDRESS, SCITY)
COMPUTER_ITEMS (ITEM_NO, SUPPLIER_NO, ITEM_NAME, IQUANTITY)
Consider three suppliers. A supplier can supply more than one type of items.
Write the SQL queries for the following:
a) List ITEM and SUPPLIER details in alphabetical order of city name and in each city decreasing
order of IQUANTITY.
b) List the name and address, city of the suppliers who are supplying keyboard.
c) List the supplier name, items supplied by the suppliers ‘Cats’ and ‘Electrotech’.
d) Find the items having quantity less than five and insert the details of supplier and items of these
into another table NEWORDER.

CREATING SUPPLIER TABLE:

SQL> CREATE TABLE SUPPLIER

2 (

3 S_NO VARCHAR2(10)PRIMARY KEY,

4 S_NAME VARCHAR2(20)NOT NULL,

5 S_ADDRESS VARCHAR2(20)NOT NULL,

6 S_CITY VARCHAR2(10)NOT NULL

7 );

Table created.

DESCRIBING THE STRUCTURE:

SQL> DESC SUPPLIER;

Name Null? Type

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

S_NO NOT NULL VARCHAR2(10)

S_NAME NOT NULL VARCHAR2(20)

S_ADDRESS NOT NULL VARCHAR2(20)

S_CITY NOT NULL VARCHAR2(10)

Page 35
CLASS: II BCA I BATCH PART-B ORACLE LAB

INSERTING THE VALUES INTO TABLE:

METHOD 1:

SQL> INSERT INTO SUPPLIER VALUES('S101','ELECTROTECH','YASHWANTH


NAGAR','BANGALORE');

1 row created.

METHOD2:

SQL> INSERT INTO SUPPLIER VALUES('&S_NO','&S_NAME','&S_ADDRESS','&S_CITY');

Enter value for s_no: S108

Enter value for s_name: CATS

Enter value for s_address: VIJAYPUR

Enter value for s_city: BANGALORE

old 1: INSERT INTO SUPPLIER VALUES('&S_NO','&S_NAME','&S_ADDRESS','&S_CITY')

new 1: INSERT INTO SUPPLIER VALUES('S108','CATS','VIJAYPUR','BANGALORE')

1 row created.

VIEWING THE TABLE DATA:

SQL> SELECT * FROM SUPPLIER;

S_NO S_NAME S_ADDRESS S_CITY

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

S101 ELECTROTECH YASHWANTH NAGAR BANGALORE

S102 MICROTECH BANGHALORE BANGALORE

S103 CATS MANGALORE MANGALORE

S104 ELECTROTECH UDUPI STORE UDUPI

S105 MICROTECH VIJAY NAGAR BANGALORE

S106 CATS BHAVISH NAGHAR MANGALORE


Page 36
CLASS: II BCA I BATCH PART-B ORACLE LAB

S107 ELECTROTECH MANGALORE MANGALORE

S108 CATS VIJAYPUR BANGALORE

8 rows selected.

CREATING COMPUTER_ITEMS TABLE:

SQL> CREATE TABLE COMPUTER_ITEMS

2 (

3 I_NO VARCHAR2(5),

4 S_NO VARCHAR2(10)REFERENCES SUPPLIER(S_NO),

5 I_NAME VARCHAR2(15)NOT NULL,

6 I_QTY NUMBER(5)NOT NULL

7 );

Table created.

DESCRIBING THE STRUCTURE:

SQL> DESC COMPUTER_ITEMS;

Name

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

I_NO

S_NO

I_NAME

I_QTY

Page 37
CLASS: II BCA I BATCH PART-B ORACLE LAB

INSERTING RECORDS:

METHOD1:

SQL> INSERT INTO COMPUTER_ITEMS VALUES('C101','S101','KEYBOARD',4);

1 row created.

METHOD2:

SQL> INSERT INTO COMPUTER_ITEMS VALUES('&I_NO','&S_NO','&I_NAME',&I_QTY);


Enter value for i_no: C108
Enter value for s_no: S107
Enter value for i_name: MOUSE
Enter value for i_qty: 4
old 1: INSERT INTO COMPUTER_ITEMS VALUES('&I_NO','&S_NO','&I_NAME',&I_QTY)
new 1: INSERT INTO COMPUTER_ITEMS VALUES('C108','S107','MOUSE',4)
1 row created.

VIEWING TABLE DATA:

SQL> SELECT * FROM COMPUTER_ITEMS;


I_NO S_NO I_NAME I_QTY

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

C101 S101 KEYBOARD 4

C102 S102 MOUSE 5

C103 S103 KEYBOARD 3

C104 S104 CPU 5

C105 S105 KEYBOARD 2

C106 S106 MOUSE 4

C107 S108 KEYBOARD 5

C108 S107 MOUSE 4

8 rows selected.

Page 38
CLASS: II BCA I BATCH PART-B ORACLE LAB

QUERIES:

a) List ITEM and SUPPLIER details in alphabetical order of city name and in each city
decreasing order of IQUANTITY.

SQL> SELECT SUPPLIER.S_NO,S_NAME,S_ADDRESS,S_CITY,I_NO,I_NAME,I_QTY FROM


SUPPLIER,COMPUTER_ITEMS WHERE SUPPLIER.S_NO=COMPUTER_ITEMS.S_NO ORDER
BY S_CITY,I_QTY DESC;

S_NO S_NAME S_ADDRESS S_CITY I_NO I_NAME I_QTY

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

S102 MICROTECH BANGHALORE BANGALORE C102 MOUSE 5

S108 CATS VIJAYPUR BANGALORE C107 KEYBOARD 5

S101 ELECTROTECH YASHWANTH NAGAR BANGALORE C101 KEYBOARD 4

S105 MICROTECH VIJAY NAGAR BANGALORE C105 KEYBOARD 2

S107 ELECTROTECH MANGALORE MANGALORE C108 MOUSE 4

S106 CATS BHAVISH NAGHAR MANGALORE C106 MOUSE 4

S103 CATS MANGALORE MANGALORE C103 KEYBOARD 3

S104 ELECTROTECH UDUPI STORE UDUPI C104 CPU 5

8 rows selected.

b) List the name and address, city of the suppliers who are supplying keyboard.

SQL> SELECT S_NAME,S_CITY ,S_ADDRESS FROM SUPPLIER,COMPUTER_ITEMS WHERE


SUPPLIER.S_NO=COMPUTER_ITEMS.S_NO AND I_NAME='KEYBOARD';
S_NAME S_CITY S_ADDRESS

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

ELECTROTECH BANGALORE YASHWANTH NAGAR

CATS MANGALORE MANGALORE

MICROTECH BANGALORE VIJAY NAGAR

CATS BANGALORE VIJAYPUR

Page 39
CLASS: II BCA I BATCH PART-B ORACLE LAB

c) List the supplier name, items supplied by the suppliers ‘Cats’ and ‘Electrotech’.

SQL> SELECT S_NAME,I_NAME FROM SUPPLIER,COMPUTER_ITEMS WHERE


SUPPLIER.S_NO=COMPUTER_ITEMS.S_NO AND S_NAME IN('CATS','ELECTROTECH');

S_NAME I_NAME

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

ELECTROTECH KEYBOARD

CATS KEYBOARD

ELECTROTECH CPU

CATS MOUSE

CATS KEYBOARD

ELECTROTECH MOUSE

6 rows selected.

d) Find the items having quantity less than five and insert the details of supplier and items of these
into another table NEWORDER.

SQL> CREATE TABLE NEWORDER AS SELECT


SUPPLIER.S_NO,S_NAME,S_ADDRESS,S_CITY,I_NO,I_NAME,I_QTY FROM SU
PPLIER,COMPUTER_ITEMS WHERE SUPPLIER.S_NO=COMPUTER_ITEMS.S_NO AND
I_QTY<5;

Table created.

SQL> SELECT * FROM NEWORDER;


S_NO S_NAME S_ADDRESS S_CITY I_NO I_NAME I_QTY

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

S101 ELECTROTECH YASHWANTH NAGAR BANGALORE C101 KEYBOARD 4

S103 CATS MANGALORE MANGALORE C103 KEYBOARD 3

S105 MICROTECH VIJAY NAGAR BANGALORE C105 KEYBOARD 2

S106 CATS BHAVISH NAGHAR MANGALORE C106 MOUSE 4

S107 ELECTROTECH MANGALORE MANGALORE C108 MOUSE 4

Page 40
CLASS: II BCA I BATCH PART-B ORACLE LAB

2. Create the following tables by identifying primary and foreign keys. Specify the not null
property for mandatory keys.
EMPLOYEE_MASTER (EMP_ID, EMP_NAME, EMAIL_ID , EMP_ADDRS, PHONE)
ATTENDANCE (EMP_ID, MONTH, WOM, MHRS, THRS, WHRS, TRHRS, FHRS, SHRS,
SUHRS). (Valid values for WOM<=5, MONTH can be 1-12). Apply appropriate constraints.
Consider 3 employees. And attendance records for at least two months.

Write the SQL queries for the following:


a) Display EMP_ID, EMP_NAME and EMAIL_ID of all employees who are working on every
Sunday of 2nd or 4th week in a month.
b) Display total hours worked by each employee in each month with EMP_ID,
c) Display the names of the employees who never attended the duty so far (attendances not given
so far).
d) Display the employee name, month, week, total hours worked for employees who have total
number of hours more than 20 hours a week.

EMPLOYEE_MASTER TABLE CREATION:

SQL> CREATE TABLE EMPLOYEE_MASTER

2 (

3 EMP_ID VARCHAR2(5)PRIMARY KEY,

4 EMP_NAME VARCHAR2(10)NOT NULL,

5 EMAIL_ID VARCHAR2(20)NOT NULL,

6 EMP_ADDRESS VARCHAR2(10)NOT NULL,

7 PHONE NUMBER(10)NOT NULL

8 );

Table created.

DESCRIBING THE STRUCTURE:

SQL> DESC EMPLOYEE_MASTER;

Name Null? Type

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

EMP_ID NOT NULL VARCHAR2(5)

Page 41
CLASS: II BCA I BATCH PART-B ORACLE LAB

EMP_NAME NOT NULL VARCHAR2(10)

EMAIL_ID NOT NULL VARCHAR2(20)

EMP_ADDRESS NOT NULL VARCHAR2(10)

PHONE NOT NULL NUMBER(10)

INSERTING RECORDS:

SQL> INSERT INTO EMPLOYEE_MASTER


VALUES('E1001','NAGESH','[email protected]','UDUPI',9876543219);

1 row created.

VIEWING RECORDS:

SQL> SELECT * FROM EMPLOYEE_MASTER;

EMP_ID EMP_NAME EMAIL_ID EMP_ADDRES PHONE

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

E1001 NAGESH [email protected] UDUPI 9876543219

E1002 PRANITHA [email protected] KAUP 7654328719

E1003 PAVITHRA [email protected] BRAHMAVAR 9876345209

E1004 CHAITHRA [email protected] UDYAVARA 7654329803

E1005 SUNIL [email protected] MANGALORE 9845367282

ATTENDANCE TABLE CREATION:

SQL> CREATE TABLE ATTENDANCE

2 (

3 EMP_ID VARCHAR(5)REFERENCES EMPLOYEE_MASTER(EMP_ID),

4 MONTH NUMBER(2)CHECK(MONTH BETWEEN 1 AND 12),

5 WOM NUMBER(1)CHECK(WOM BETWEEN 1 AND 5),

6 MHRS NUMBER(1)NOT NULL,


Page 42
CLASS: II BCA I BATCH PART-B ORACLE LAB

7 TUHRS NUMBER(1)NOT NULL,

8 WHRS NUMBER(1)NOT NULL,

9 TRHRS NUMBER(1)NOT NULL,

10 FHRS NUMBER(1)NOT NULL,

11 SHRS NUMBER(1)NOT NULL,

12 SUHRS NUMBER(1)NOT NULL

13 );

Table created.

INSERTING RECORD:

SQL> INSERT INTO ATTENDANCE VALUES('E1001',5,2,3,3,2,2,1,2,3);

1 row created.

VIEWING RECORDS:

SQL> SELECT * FROM ATTENDANCE;

EMP_I MONTH WOM MHRS THRS WHRS TRHRS FHRS SHRS SUHRS

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

E1001 5 2 3 3 2 2 1 2 3

E1001 5 4 2 3 6 2 1 5 4

E1002 9 4 2 4 1 7 3 8 4

E1002 9 2 1 3 4 5 6 7 0

E1003 8 2 3 4 5 6 2 1 9

E1005 12 2 3 4 5 6 7 0 4

E1003 6 1 0 7 5 0 3 4 0

E1005 9 2 0 0 0 0 0 0 0

8 rows selected.

Page 43
CLASS: II BCA I BATCH PART-B ORACLE LAB

QURIES:
a) Display EMP_ID, EMP_NAME and EMAIL_ID of all employees who are working on every
Sunday of 2nd or 4th week in a month.

SQL> SELECT DISTINCT EMP_ID,EMP_NAME,EMAIL_ID FROM EMPLOYEE_MASTER


WHERE EMP_ID IN (SELECT EMP_ID FROM ATTENDANCE WHERE WOM=2 OR WOM=4
GROUP BY EMP_ID,MONTH HAVING SUM(SUHRS)>0);

EMP_ID EMP_NAME EMAIL_ID

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

E1001 NAGESH [email protected]

E1005 SUNIL [email protected]

E1003 PAVITHRA [email protected]

E1002 PRANITHA [email protected]

b) Display total hours worked by each employee in each month with EMP_ID.

SQL> SELECT
EMPLOYEE_MASTER.EMP_ID,MONTH,SUM(MHRS+THRS+WHRS+TRHRS+FHRS+SHRS+SU
HRS)"TOTAL HOURS" FROM EMPLOYEE_MASTER,ATTENDANCE WHERE
EMPLOYEE_MASTER.EMP_ID=ATTENDANCE.EMP_ID GROUP BY
EMPLOYEE_MASTER.EMP_ID,MONTH;

EMP_ID MONTH TOTAL HOURS

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

E1005 12 29

E1005 9 0

E1002 9 55

E1003 8 30

E1001 5 39

E1003 6 19

6 rows selected.

Page 44
CLASS: II BCA I BATCH PART-B ORACLE LAB

c) Display the names of the employees who never attended the duty so far (attendances not given
so far).
SQL> SELECT EMP_NAME FROM EMPLOYEE_MASTER WHERE EMP_ID NOT IN(SELECT
EMP_ID FROM ATTENDANCE);

EMP_NAME

----------

CHAITHRA

d) Display the employee name, month, week, total hours worked for employees who have total
number of hours more than 20 hours a week

SQL> SELECT
EMP_NAME,MONTH,WOM,SUM(MHRS+THRS+WHRS+TRHRS+FHRS+SHRS+SUHRS)"TOTA
L HOURS" FROM EMPLOYEE_MASTER,ATTENDANCE WHERE
EMPLOYEE_MASTER.EMP_ID=ATTENDANCE.EMP_ID GROUP BY
EMP_NAME,MONTH,WOM HAVING
SUM(MHRS+THRS+WHRS+TRHRS+FHRS+SHRS+SUHRS)>20;

EMP_NAME MONTH WOM TOTAL HOURS

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

NAGESH 5 4 23

PRANITHA 9 2 26

SUNIL 12 2 29

PAVITHRA 8 2 30

PRANITHA 9 4 29

Page 45
CLASS: II BCA I BATCH PART-B ORACLE LAB

3. Create the following tables by identifying primary and foreign keys, specify the not null property
for mandatory keys.

Write the SQL queries for the following:


a) Display total amount spent by C2.
b) Display the names of product for which either QtyAvailable is less than 30 or total QtySold is
less than 5 (Use UNION).
c) Display the name of products and quantity purchased by C4.
d) How much Profit does the shopkeeper get on C1’s purchase?
e) How many ‘Pen Drives’ have been sold?

PRODUCT_DETAILS TABLE CREATION:

SQL> CREATE TABLE PRODUCT_DETAILS

2 (

3 P_NO VARCHAR2(5)PRIMARY KEY,

4 P_NAME VARCHAR2(10)NOT NULL,

5 AVAILABLE NUMBER(10)NOT NULL,

6 PRICE NUMBER(5)NOT NULL,

7 PROFIT NUMBER(5)NOT NULL

8 );

Table created.

Page 46
CLASS: II BCA I BATCH PART-B ORACLE LAB

DESCRIBING STRUCTURE:

SQL> DESC PRODUCT_DETAILS;

Name Null? Type

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

P_NO NOT NULL VARCHAR2(5)

P_NAME NOT NULL VARCHAR2(10)

AVAILABLE NOT NULL NUMBER(10)

PRICE NOT NULL NUMBER(5)

PROFIT NOT NULL NUMBER(5)

INSERTING RECORDS:

SQL> INSERT INTO PRODUCT_DETAILS VALUES('POOO1','MONITOR',10,3000,20);

1 row created.

VIEWING RECORDS:

SQL> SELECT * FROM PRODUCT_DETAILS;

P_NO P_NAME AVAILABLE PRICE PROFIT

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

POOO1 MONITOR 10 3000 20

POOO2 PENDRIVES 50 650 5

POOO3 CD DRIVE 100 10 3

POOO4 KEYBOARD 25 600 10

Page 47
CLASS: II BCA I BATCH PART-B ORACLE LAB

PURCHASE_DETAILS TABLE CREATION:

SQL> CREATE TABLE PURCHASE_DETAILS

2 (

3 CUST_NO VARCHAR2(2)NOT NULL,

4 P_NO VARCHAR2(5)REFERENCES PRODUCT_DETAILS(P_NO)ON DELETE CASCADE,

5 QTY_SOLD NUMBER(10)NOT NULL

6 );

Table created.

DESCRIBING THE STRUCTURE:

SQL> DESC PURCHASE_DETAILS;

Name Null? Type

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

CUST_NO NOT NULL VARCHAR2(2)

P_NO VARCHAR2(5)

QTY_SOLD NOT NULL NUMBER(10)

RECORD INSERTION:

SQL> INSERT INTO PURCHASE_DETAILS VALUES('C1','POOO3',2);

1 row created.

VIEWING RECORDS:

SQL> SELECT * FROM PURCHASE_DETAILS;

CU P_NO QTY_SOLD

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

C1 POOO3 2

C2 POOO2 4

Page 48
CLASS: II BCA I BATCH PART-B ORACLE LAB

C3 POOO2 10

C4 POOO1 3

C1 POOO4 2

C2 POOO3 2

C4 POOO4 1

7 rows selected.

a) Display total amount spent by C2.

SQL> SELECT CUST_NO,SUM(QTY_SOLD*PRICE)"TOTAL_AMOUNT"FROM


PRODUCT_DETAILS,PURCHASE_DETAILS WHERE
PRODUCT_DETAILS.P_NO=PURCHASE_DETAILS.P_NO AND CUST_NO='C2' GROUP BY
CUST_NO;

CUST_NO TOTAL_AMOUNT

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

C2 2620

b) Display the names of product for which either QtyAvailable is less than 30 or total QtySold is
less than 5 (Use UNION).

SQL> SELECT P_NAME FROM PRODUCT_DETAILS WHERE AVAILABLE<30

UNION

(SELECT P_NAME FROM PRODUCT_DETAILS WHERE P_NO IN(SELECT P_NO FROM


PURCHASE_DETAILS GROUP BY P_NO HAVING SUM(QTY_SOLD)<5));

P_NAME

----------

CD DRIVE

KEYBOARD

MONITOR

Page 49
CLASS: II BCA I BATCH PART-B ORACLE LAB

c) Display the name of products and quantity purchased by C4.

SQL> SELECT P_NAME,SUM(QTY_SOLD)"QTY_PURCHASE" FROM


PRODUCT_DETAILS,PURCHASE_DETAILS WHERE
PRODUCT_DETAILS.P_NO=PURCHASE_DETAILS.P_NO AND CUST_NO='C4' GROUP BY
P_NAME;

P_NAME QTY_PURCHASE

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

MONITOR 3

KEYBOARD 1

d) How much Profit does the shopkeeper get on C1’s purchase?

SQL> SELECT SUM(QTY_SOLD*PRICE*PROFIT)/100 "TOTAL_PROFIT" FROM


PRODUCT_DETAILS,PURCHASE_DETAILS WHERE
PRODUCT_DETAILS.P_NO=PURCHASE_DETAILS.P_NO AND CUST_NO='C1';

TOTAL_PROFIT

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

120.6

e) How many ‘Pen Drives’ have been sold?

SQL> SELECT SUM(QTY_SOLD)"TOTAL PENDRIVES" FROM


PRODUCT_DETAILS,PURCHASE_DETAILS WHERE
PRODUCT_DETAILS.P_NO=PURCHASE_DETAILS.P_NO AND P_NAME='PENDRIVES';

TOTAL PENDRIVES

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

14

Page 50
CLASS: II BCA I BATCH PART-B ORACLE LAB

4. Create table STUDENT_PROFILE that includes Rollno, name, class, ECCC (Extra/Cocurricular
he belongs to such as SPORTS, NSS, etc.) and another table MARKS_REPORT that includes
Rollno, Internal_Test, Marks1, Marks2, Marks3 and ECCC_marks.
Constraints
 Internal_Test can be either 1 or 2.
 Each mark can be 0 – 100. Absence in the test can be entered as -1.
 Consider at least 3 classes.
Apply suitable datatype and constraints to each column.
Insert 5 students marks report in the both the tests.
Write the SQL queries for the following:
a) Find number of students failed class-wise.
b) Display the complete details of the students secured distinction (Percentage>=70) in I BCA
c) Display class and highest total marks in second internals in each class.
d) Display the student name with rollno and class of those who passed in I internals and
failed in II internals (use SET operator).

SPROFILE TABLE CREATION:

SQL> CREATE TABLE SPROFILE

2 (

3 ROLLNO NUMBER(6)PRIMARY KEY,

4 NAME VARCHAR2(20)NOT NULL,

5 CLASS VARCHAR2(10)NOT NULL,

6 ECCC VARCHAR2(8)NOT NULL

7 );

Table created.

DESCRIBING THE STRUCTURE:

SQL> DESC SPROFILE;

Name Null? Type

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

ROLLNO NOT NULL NUMBER(6)

NAME NOT NULL VARCHAR2(20)


Page 51
CLASS: II BCA I BATCH PART-B ORACLE LAB

CLASS NOT NULL VARCHAR2(10)

ECCC NOT NULL VARCHAR2(8)

INSERTING RECORDS:

SQL> INSERT INTO SPROFILE(ROLLNO,NAME,CLASS,ECCC)

VALUES(1001,'ANANYA','IBCA','NSS');

1 row created.

VIEWING RECORDS:

SQL> SELECT * FROM SPROFILE;

ROLLNO NAME CLASS ECCC

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

1001 ANANYA IBCA NSS

1002 BHAVYA IBCOM SPORTS

1003 NIKITHA IBA NCC

1004 NANDITHA IBCA NSS

1005 NAVEEN IBCOM NCC

MARKS_REPORT TABLE CREATION:

SQL> CREATE TABLE MARKS_REPORT

2 (

3 ROLLNO NUMBER(6)REFERENCES SPROFILE(ROLLNO)ON DELETE CASCADE,

4 INTERNAL NUMBER(1)CHECK(INTERNAL IN(1,2)),

5 MARK_1 NUMBER(3)CHECK(MARK_1 BETWEEN -1 AND 100),

6 MARK_2 NUMBER(3)CHECK(MARK_2 BETWEEN -1 AND 100),

Page 52
CLASS: II BCA I BATCH PART-B ORACLE LAB

7 MARK_3 NUMBER(3)CHECK(MARK_3 BETWEEN -1 AND 100),

8 ECCC_MARKS NUMBER(3)CHECK(ECCC_MARKS BETWEEN -1 AND 100)

9 );

Table created.

DRSCRIBING THE STRUCTURE:

SQL> DESC MARKS_REPORT;

Name Null? Type

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

ROLLNO NUMBER(6)

INTERNAL NUMBER(1)

MARK_1 NUMBER(3)

MARK_2 NUMBER(3)

MARK_3 NUMBER(3)

ECCC_MARKS NUMBER(3)

INSERTING RECORDS:

SQL> INSERT INTO MARKS_REPORT(ROLLNO ,


INTERNAL,MARK_1,MARK_2,MARK_3,ECCC_MARKS)

2 VALUES(1005,2,32,28,21,20);

1 row created.

Page 53
CLASS: II BCA I BATCH PART-B ORACLE LAB

VIEWING RECORDS:

SQL> SELECT * FROM MARKS_REPORT;

ROLLNO INTERNAL MARK_1 MARK_2 MARK_3 ECCC_MARKS

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

1005 2 32 28 21 20

1005 1 65 45 65 98

1001 1 87 98 90 57

1001 2 -1 -1 -1 -1

1003 1 34 33 36 76

1003 2 90 98 99 98

1004 1 98 99 90 89

1004 2 99 90 87 70

1002 1 67 66 34 33

1002 2 32 22 21 20

10 rows selected.

QURIES:

a. Find number of students failed class-wise.

SQL> SELECT CLASS,COUNT(DISTINCT SPROFILE.ROLLNO)"FAIL_COUNT" FROM


MARKS_REPORT,SPROFILE WHERE SPROFILE.ROLLNO=MARKS_REPORT.ROLLNO
AND(MARK_1<35 OR MARK_2<35 OR MARK_3<35 OR ECCC_MARKS<35)GROUP BY
CLASS;

Page 54
CLASS: II BCA I BATCH PART-B ORACLE LAB

CLASS FAIL_COUNT

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

IBA 1

IBCA 1

IBCOM 2

b. Display the complete details of the students secured distinction (Percentage>=70) in I BCA

SQL> SELECT SPROFILE.ROLLNO, NAME,CLASS,ECCC, INTERNAL,MARK_1, MARK_2,


MARK_3,ECCC_MARKS FROM MARKS_REPORT,SPROFILE WHERE
SPROFILE.ROLLNO=MARKS_REPORT.ROLLNO AND
CLASS='IBCA'AND(MARK_1+MARK_2+MARK_3+ECCC_MARKS)/4>70;

ROLLNO NAME CLASS ECCC INTERNAL MARK_1 MARK_2 MARK_3 ECCC_MARKS

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

1001 ANANYA IBCA NSS 1 87 98 90 57

1004 NANDITHA IBCA NSS 1 98 99 90 89

1004 NANDITHA IBCA NSS 2 99 90 87 70

c. Display class and highest total marks in second internals in each class.

SQL> SELECT CLASS,MAX(MARK_1+MARK_2+MARK_3+ECCC_MARKS)"HIGHEST


MARKS" FROM MARKS_REPORT,SPROFILE WHERE
SPROFILE.ROLLNO=MARKS_REPORT.ROLLNO AND INTERNAL=2 GROUP BY CLASS;

CLASS HIGHEST MARKS

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

IBCA 346

IBA 385

Page 55
CLASS: II BCA I BATCH PART-B ORACLE LAB

d. Display the student name with rollno and class of those who passed in I internals and
failed in II internals (use SET operator).

SQL> SELECT NAME,SPROFILE.ROLLNO,CLASS FROM MARKS_REPORT,SPROFILE WHERE


SPROFILE.ROLLNO=MARKS_REPORT.ROLLNO AND INTERNAL=1 AND(MARK_1>35 AND
MARK_2>35 AND MARK_3>35 AND ECCC_MARKS>35)

INTERSECT

SELECT NAME,SPROFILE.ROLLNO,CLASS FROM MARKS_REPORT,SPROFILE WHERE


SPROFILE.ROLLNO=MARKS_REPORT.ROLLNO AND INTERNAL=2 AND(MARK_1<35 OR
MARK_2<35 OR MARK_3<35 OR ECCC_MARKS<35);

NAME ROLLNO CLASS

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

ANANYA 1001 IBCA

NAVEEN 1005 IBCOM

Page 56
CLASS: II BCA I BATCH PART-B ORACLE LAB

5. Write a PL/SQL program to compute the selling price of books depending on the book code and
category. Use Open, Fetch and Close. The Book_detail table contains columns Book Code, Author,
Title, Category and Price. Insert 10 records.
The selling price = Price – Discount.
The discount is calculated as follows:

Print the result in a tabular form with proper alignment.

TABLE CREATION:

SQL> CREATE TABLE BOOK_DETAIL

2 (

3 BCODE CHAR(1)CHECK(BCODE IN('A','B','C','D')),

4 AUTHOR CHAR(30)NOT NULL,

5 TITLE CHAR(30)NOT NULL,

6 CAT CHAR(30)NOT NULL,

7 PRICE NUMBER(6,2)NOT NULL

8 );

Table created.

DESCRIBING THE STRUCTURE:

SQL> DESC BOOK_DETAIL;

Page 57
CLASS: II BCA I BATCH PART-B ORACLE LAB

Name Null? Type

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

BCODE CHAR(1)

AUTHOR NOT NULL CHAR(30)

TITLE NOT NULL CHAR(30)

CAT NOT NULL CHAR(30)

PRICE NOT NULL NUMBER(6,2)

INSERTING RECORDS:

SQL> INSERT INTO BOOK_DETAIL VALUES('A','CHETHAN','BHAGATH','NOVELS',500.75);

1 row created.

VIEWING RECORDS:

SQL> SELECT * FROM BOOK_DETAIL;

BCODE AUTHOR TITLE CAT PRICE

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

A CHETHAN BHAGATH NOVELS 500.75

A PRANEETHA BHARARTH TECHNOLOGY 5000

B PRANITH INDIA COMMERCE 900.45

B ANUJA GEOGRAPHY SCIENCE 400.54

C ANJALI MUSIC WORLD SONGS 800.75

C ANANTH SPORTS WORLD SPORTS 500.75

D ANKITH HISTORY OF SPORTS SPORTS 600.95

D ANVITHA HISTORY SCIENCE 500.98

D MANJUNATH BUSSINESS WORLD COMMERCE 6000

C BHARATHI MUSIC LIFE SONGS 5000

10 rows selected.

Page 58
CLASS: II BCA I BATCH PART-B ORACLE LAB

PL/SQL CODE:

SQL> DECLARE

CURSOR B_CUR IS

SELECT * FROM BOOK_DETAIL;

BC BOOK_DETAIL.BCODE%TYPE;

AUTH BOOK_DETAIL.AUTHOR%TYPE;

TT BOOK_DETAIL.TITLE%TYPE;

CT BOOK_DETAIL.CAT%TYPE;

PR BOOK_DETAIL.PRICE%TYPE;

DPER NUMBER(6,2);

DISCOUNT NUMBER(6,2);

SPRICE NUMBER(6,2);

BEGIN

DBMS_OUTPUT.PUT_LINE('__________________________________________________');

DBMS_OUTPUT.PUT_LINE('BOOKCODE CATEGORY TITLE AUTHOR PRICE


DISCOUNT% DAMOUNT SPRICE');

DBMS_OUTPUT.PUT_LINE('_______________________________________________');

OPEN B_CUR;

LOOP

FETCH B_CUR INTO BC,AUTH,TT,CT,PR;

EXIT WHEN B_CUR%NOTFOUND;

IF BC='A' AND CT='NOVELS' THEN

DPER:=10;

ELSIF BC='A' AND CT='TECHNOLOGY' THEN

DPER:=12.5;

ELSIF BC='B' AND CT='COMMERCE' THEN


Page 59
CLASS: II BCA I BATCH PART-B ORACLE LAB

DPER:=18;

ELSIF BC='B' AND CT='SCIENCE' THEN

DPER:=19;

ELSIF BC='C' AND CT='SONGS' THEN

DPER:=25;

ELSIF BC='C' AND CT='SPORTS' THEN

DPER:=24;

ELSE

DPER:=28;

END IF;

DISCOUNT:=(PR*DPER)/100;

SPRICE:=PR-DISCOUNT;

DBMS_OUTPUT.PUT_LINE(BC||' '||CT|' '|TT||' '||AUTH||' '||PR||' '||DPER||' '||DISCOUNT||'


'||SPRICE);

END LOOP;

DBMS_OUTPUT.PUT_LINE('________________________________________________________');

CLOSE B_CUR;

END;

Page 60
CLASS: II BCA I BATCH PART-B ORACLE LAB

OUTPUT:
___________________________________________________________________________________________________________________

BOOKCODE CATEGORY TITLE AUTHOR PRICE DISCOUNT% DAMOUNT SPRICE

_____________________________________________________________________________________________________________________

A NOVELS BHAGATH CHETHAN 500.75 10 50.08 450.67

A TECHNOLOGY BHARARTH PRANEETHA 5000 12.5 625 4375

B COMMERCE INDIA PRANITH 900.45 18 162.08 738.37

B SCIENCE GEOGRAPHY ANUJA 400.54 19 76.1 324.44

C SONGS ANJALI MUSIC WORLD 800.75 25 200.19 600.56

C SPORTS ANANTH SPORTS WORLD 500.75 24 120.18 380.57

D SPORTS ANKITH HISTORY OF SPORTS 600.95 28 168.27 432.68

D SCIENCE ANVITHA HISTORY 500.98 28 140.27 360.71

D COMMERCE MANJUNATH BUSSINESS WORLD 6000 28 1680 4320

C SONGS BHARATHI MUSIC LIFE 5000 25 1250 3750

________________________________________________________________________________________________________

PL/SQL procedure successfully completed.

Page 61
CLASS: II BCA I BATCH PART-B ORACLE LAB

6. Write a PL/SQL program to display employee pay bill (using Cursor For loop). Use a procedure to
receive basic pay and to compute DA, HRA, Tax, PF, Gross Pay and Net pay
(Use OUT). Base table contains the columns empnum, empname, basic pay. Insert 3 records.
Allowances are computed as follows:

Gross = Basic + DA + HRA; PF = 12% of Gross or Rs. 2000, whichever is minimum.


PT = Rs. 100 upto Gross is 25,000; else Rs. 200, Net = Gross – (PF +PT)
Print Pay slip as follows:

TABLE CREATION:

SQL> CREATE TABLE EMPLOYEEE

2 (

3 ENO VARCHAR2(6)PRIMARY KEY,

4 ENAME VARCHAR2(20)NOT NULL,

5 BASIC NUMBER(7,2)NOT NULL

6 );

Table created.

DESCRIBING THE STRUCTURE OF THE TABLE:

SQL> DESC EMPLOYEEE;

Page 62
CLASS: II BCA I BATCH PART-B ORACLE LAB

Name Null? Type

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

ENO NOT NULL VARCHAR2(6)

ENAME NOT NULL VARCHAR2(20)

BASIC NOT NULL NUMBER(7,2)

INSERTING RECORDS:

SQL> INSERT INTO EMPLOYEEE(ENO,ENAME,BASIC)VALUES('E1001','ANANYA',5000);

1 row created.

VIEWING RECORDS:

SQL> SELECT * FROM EMPLOYEEE;

ENO ENAME BASIC

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

E1001 ANANYA 5000

E1002 ANVITHA 30000

E1003 PAVITHRA 25000

PROCEDURE CODE:

SQL> CREATE OR REPLACE PROCEDURE PROC(BASIC IN NUMBER,DA OUT NUMBER,HRA


OUT NUMBER,TAX OUT NUMBER,PF OUT NUMBER,PT OUT NUMBER,GROSS OUT
NUMBER,NET OUT NUMBER) IS

BEGIN

IF BASIC<=20000 THEN

DA:=0.35*BASIC;

Page 63
CLASS: II BCA I BATCH PART-B ORACLE LAB

HRA:=0.08*BASIC;

ELSIF BASIC<=30000 THEN

DA:=0.38*BASIC;

HRA:=0.09*BASIC;

ELSIF BASIC<=40000 THEN

DA:=0.4*BASIC;

HRA:=0.1*BASIC;

ELSE

DA:=0.45*BASIC;

HRA:=0.1*BASIC;

END IF;

GROSS:=BASIC+DA+HRA;

PF:=LEAST(0.12*GROSS,20000);

IF GROSS<25000 THEN

PT:=100;

ELSE

PT:=200;

END IF;

NET:=GROSS-(PF+PT);

END;

Procedure created.

Page 64
CLASS: II BCA I BATCH PART-B ORACLE LAB

PL/SQL CODE:

SQL> SET SERVEROUTPUT ON;

SQL> DECLARE

CURSOR EMP_CUR IS SELECT * FROM EMPLOYEEE;

DA NUMBER(10);

HRA NUMBER(10);

TAX NUMBER(10);

PF NUMBER(10);

PT NUMBER(10);

GROSS NUMBER(10);

NET NUMBER(10);

BEGIN

FOR EMP IN EMP_CUR

LOOP

PROC(EMP.BASIC,DA,HRA,TAX,PF,PT,GROSS,NET);

DBMS_OUTPUT.PUT_LINE('===================PAYSLIP====================');

DBMS_OUTPUT.PUT_LINE('EMPNO:'||EMP.ENO||'EMPNAME:'||EMP.ENAME);

DBMS_OUTPUT.PUT_LINE('BASICPAY:'||EMP.BASIC||'PF:'||PF);

DBMS_OUTPUT.PUT_LINE('DA:'||DA||'PT:'||PT);

DBMS_OUTPUT.PUT_LINE('HRA:'||HRA);

DBMS_OUTPUT.PUT_LINE('GROSS:'||GROSS||'NETPAY'||NET);

DBMS_OUTPUT.PUT_LINE('**********************************************');

END LOOP;

END;

/
Page 65
CLASS: II BCA I BATCH PART-B ORACLE LAB

OUTPUT:

===================PAYSLIP====================

EMPNO:E1001 EMPNAME:ANANYA

BASICPAY:5000 PF:858

DA:1750 PT:100

HRA:400

GROSS:7150 NETPAY6192

**********************************************

===================PAYSLIP====================

EMPNO:E1002 EMPNAME:ANVITHA

BASICPAY:30000 PF:5292

DA:11400 PT:200

HRA:2700

GROSS:44100 NETPAY38608

**********************************************

===================PAYSLIP====================

EMPNO:E1003EMP NAME:PAVITHRA

BASICPAY:25000 PF:4410

DA:9500 PT:200

HRA:2250

GROSS:36750 NETPAY32140

**********************************************

PL/SQL procedure successfully completed.

Page 66
CLASS: II BCA I BATCH PART-B ORACLE LAB

7. Given the following tables: ITEM_MASTER (itemno, name, stock, unit_price) [Apply the
Primary key and check constraint for stock and price as >0) [Insert 5 records]
ITEM_TRANS (itemno, quantity and trans_date)

Create a package PCK_ITEM includes a function CHK_ITEM and a procedure PROC_ITEM.


Function CHK_ITEM gets one argument itemno and is used to check whether the parameter
itemno exists in ITEM_MASTER and should return 1 if exist. Otherwise 0 and display proper
message.
Procedure PROC_ITEM gets two arguments itemno and quantity, and is used to perform the
following if item exists. If required quantity is not available, give appropriate message. If
available, insert a record of this transaction to ITEM_TRANS and modify the stock in
ITEM_MASTER.
Write a PL/SQL program to accept ITEM_NO and Quantity needed of required item. Use
Package to do the transaction process (Transaction date can be current date).
OUTPUT to be shown as follows:

ITEM_MASTER TABLE CREATION:

SQL> CREATE TABLE ITEM_MASTER

2 (

3 ITNO NUMBER(4)PRIMARY KEY,

4 NAME VARCHAR2(20)NOT NULL,

5 STOCK NUMBER(4)NOT NULL,

6 UPRICE NUMBER(4)NOT NULL

7 );

Table created.

DESCRIBING STRUCTURE:

SQL> DESC ITEM_MASTER;

Page 67
CLASS: II BCA I BATCH PART-B ORACLE LAB

Name Null? Type

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

ITNO NOT NULL NUMBER(4)

NAME NOT NULL VARCHAR2(20)

STOCK NOT NULL NUMBER(4)

UPRICE NOT NULL NUMBER(4)

RECORD INSERTION:

SQL> INSERT INTO ITEM_MASTER VALUES(1001,'MONITOR',100,6000);

1 row created.

VIEWING RECORDS:

SQL> SELECT * FROM ITEM_MASTER;

ITNO NAME STOCK UPRICE

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

1001 MONITOR 100 6000

1002 PENDRIVE 200 1200

1003 CPU 300 3000

1004 KEYBOARD 100 7000

1005 MOUSE 300 5000

ITEM_TRANS TABLE CREATION

SQL> CREATE TABLE ITEM_TRANS

2 (

3 ITNO NUMBER(4)REFERENCES ITEM_MASTER(ITNO) ON DELETE CASCADE,

Page 68
CLASS: II BCA I BATCH PART-B ORACLE LAB

4 QTY NUMBER(4)NOT NULL,

5 TDATE DATE

6 );

Table created.

DESCRIBING STRUCTURE:

SQL> DESC ITEM_TRANS;

Name Null? Type

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

ITNO NUMBER(4)

QTY NOT NULL NUMBER(4)

TDATE DATE

PACKAGE SPECIFICATION CODE:

SQL> CREATE OR REPLACE PACKAGE PCK_ITEM IS

FUNCTION ITEM_CHECK(ITMNO IN NUMBER) RETURN NUMBER;

PROCEDURE PROC_ITEM(ITMNO IN NUMBER,QTY IN NUMBER);

END PCK_ITEM;

Package created.

PACKAGE BODY CODE:

SQL> CREATE OR REPLACE PACKAGE BODY PCK_ITEM AS

FUNCTION ITEM_CHECK(ITMNO IN NUMBER)RETURN NUMBER IS

INAME VARCHAR2(20);

BEGIN

Page 69
CLASS: II BCA I BATCH PART-B ORACLE LAB

SELECT NAME INTO INAME FROM ITEM_MASTER WHERE ITNO=ITMNO;

RETURN 1;

EXCEPTION

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE('THE GIVEN ITEM NOT EXIST');

RETURN 0;

END;

PROCEDURE PROC_ITEM(ITMNO IN NUMBER,QTY IN NUMBER) IS

VAL NUMBER(1);

ASTOCK NUMBER(4);

BEGIN

VAL:=PCK_ITEM.ITEM_CHECK(ITMNO);

IF VAL=1 THEN

SELECT STOCK INTO ASTOCK FROM ITEM_MASTER WHERE ITNO=ITMNO;

IF ASTOCK>=QTY THEN

INSERT INTO ITEM_TRANS VALUES(ITMNO,QTY,SYSDATE);

UPDATE ITEM_MASTER SET STOCK=STOCK-QTY WHERE ITNO=ITMNO;

ELSE

DBMS_OUTPUT.PUT_LINE('REQUIRED AMOUNT NOT AVAILABLE');

END IF;

END IF;

END;

END PCK_ITEM;

Package body created.

Page 70
CLASS: II BCA I BATCH PART-B ORACLE LAB

PL/SQL CODE:

SQL> SET SERVEROUTPUT ON;

SQL> DECLARE

ITEMNO NUMBER(4);

QTY NUMBER(4);

BEGIN

ITEMNO:=&ITEMNO;

QTY:=&QUANTITY;

PCK_ITEM.PROC_ITEM(ITEMNO,QTY);

END;

OUTPUT1:

Enter value for itemno: 1000

old 5: ITEMNO:=&ITEMNO;

new 5: ITEMNO:=1000;

Enter value for quantity: 100

old 6: QTY:=&QUANTITY;

new 6: QTY:=100;

THE GIVEN ITEM NOT EXIST

PL/SQL procedure successfully completed.

OUTPUT2:

Enter value for itemno: 1002

old 5: ITEMNO:=&ITEMNO;

new 5: ITEMNO:=1002;

Enter value for quantity: 300

Page 71
CLASS: II BCA I BATCH PART-B ORACLE LAB

old 6: QTY:=&QUANTITY;

new 6: QTY:=300;

REQUIRED AMOUNT NOT AVAILABLE

PL/SQL procedure successfully completed.

OUTPUT3:

Enter value for itemno: 1001

old 5: ITEMNO:=&ITEMNO;

new 5: ITEMNO:=1001;

Enter value for quantity: 100

old 6: QTY:=&QUANTITY;

new 6: QTY:=100;

PL/SQL procedure successfully completed.

SQL> SELECT * FROM ITEM_MASTER;

ITNO NAME STOCK UPRICE

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

1001 MONITOR 0 6000

1002 PENDRIVE 200 1200

1003 CPU 300 3000

1004 KEYBOARD 100 7000

1005 MOUSE 300 5000

SQL> SELECT * FROM ITEM_TRANS;

ITNO QTY TDATE

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

1001 100 16-NOV-23

Page 72

You might also like