You are on page 1of 14

Q.

01) Design the database for Simple Trading Organization as described follow and develop the
PL/SQL Programs :

S(S#,SName, SCity, Status)

P(P#,PName, Weight, Colour,PCity)

J(J#,JName,JCity)

SPJ(S#,P#,J#,QTY)

Develop PL/SQL Program for the following:

a) Find the project-wise total number of parts received from different supplies from a city taken as
input.

b) Find the total weight of parts particular colour part received from a supplier for a project taken as
input from user.

c) Create a logbook to store number records modified in supplier table during a day

Creating table SUPPLIER:

SQL>

CREATE table "SUPPLIER" (

"S_ID" VARCHAR2(4000) NOT NULL,

"S_NAME" VARCHAR2(4000),

"S_CITY" VARCHAR2(4000),

"STATUS" VARCHAR2(4000),

constraint "SUPPLIER_PK" primary key ("S_ID")

Creating table PARTS:

SQL>

CREATE TABLE "PARTS"

( "P_ID" VARCHAR2(4000) NOT NULL ENABLE,

"P_NAME" VARCHAR2(4000),

"WEIGHT" VARCHAR2(4000),

"COLOR" VARCHAR2(4000),

"P_CITY" VARCHAR2(4000),

CONSTRAINT "PARTS_PK" PRIMARY KEY ("P_ID") ENABLE

);
Creating table JOB:

SQL>

CREATE TABLE "JOB"

( "J_ID" VARCHAR2(4000) NOT NULL ENABLE,

"J_NAME" VARCHAR2(4000),

"J_CITY" VARCHAR2(4000),

CONSTRAINT "JOB_PK" PRIMARY KEY ("J_ID") ENABLE

);

Creating table SPJ:

SQL>

CREATE TABLE SPJ(

S_ID VARCHAR2(400),

P_ID VARCHAR2(400),

J_ID VARCHAR2(400),

QTY NUMBER(10,2),

PRIMARY KEY (S_ID,P_ID,J_ID),

FOREIGN KEY (S_ID) REFERENCES SUPPLIER(S_ID),

FOREIGN KEY (P_ID) REFERENCES PARTS(P_ID),

FOREIGN KEY (J_ID) REFERENCES JOB(J_ID)

);

Table SUPPLIER:

SQL>

SELECT * FROM SUPPLIER;


S_ID S_NAME S_CITY STATUS
S_01 SUJASH KOLKATA 20
S_07 BLAKE PARIS 15
S_08 CLARK LONDON 20
S_02 SOUMIK PUNE 16
S_03 MOHON KOLKATA 18
S_06 JONES PARIS 20
S_05 SMITH LONDON 15
S_04 RAMU DELHI 10
Table PARTS:

SELECT * FROM PARTS;


P_ID P_NAME WEIGHT COLOR P_CITY
P_01 NUT 12 RED LONDON
P_06 COG 19 RED LONDON
P_03 SCREW 17 BLUE ROME
P_02 BOLT 17 GREEN PARIS
P_04 SCREW 14 RED LONDON
P_05 CAM 12 BLUE PARIS
P_07 PAPER 10 WHITE KOLKATA

Table JOB:

SELECT * FROM JOB;


J_ID J_NAME J_CITY
J_04 CONSOLE ATHENS
J_05 COLLATOR LONDON
J_09 BUILD PUNE
J_01 SORTER PARIS
J_02 PUNCH ROME
J_03 READER ATHENS
J_07 TAPE LONDON
J_08 BOOK KOLKATA
J_06 TERMINAL OSLO

Table SPJ:

SELECT * FROM SPJ;


S_ID P_ID J_ID QTY
S_02 P_05 J_01 400
S_05 P_05 J_05 250
S_08 P_04 J_05 900
S_01 P_01 J_03 150
S_02 P_03 J_03 150
S_02 P_03 J_01 150
S_04 P_07 J_03 100
S_01 P_01 J_01 200
S_04 P_02 J_01 300
S_07 P_02 J_01 1000

SQL QUERY:

a) Find the project-wise total number of parts received from different supplies from a city taken as
input.

SQL>

SELECT P_ID ,J_NAME

FROM SPJ,JOB

WHERE SPJ.J_ID=JOB.J_ID
AND JOB.J_CITY='LONDON'

ORDER BY J_NAME;

RESULT:
P_ID J_NAME
P_05 COLLATOR
P_04 COLLATOR
P_03 TAPE

b) Find the total weight of parts particular colour part received from a supplier for a project taken as
input from user

SQL>

SELECT SUM(PARTS.WEIGHT*SPJ.QTY) AS "TOTAL WEIGHT"

FROM PARTS,SPJ,JOB

WHERE PARTS.COLOR='RED' AND

PARTS.P_ID=SPJ.P_ID AND

JOB.J_ID='J_03' AND

JOB.J_ID=SPJ.J_ID;

RESULT:
TOTAL WEIGHT
1800

c) Create a logbook to store number records modified in supplier table during a day

SQL>

Declare

int_count integer;

Begin

If UPDATING then

Select count(*) into int_count from LOGBOOK where date_modified like sysdate and
operations='Update';

If int_count>0 then
update LOGBOOK set records=records+1 where date_modified like sysdate and
operations='Update';

Else

insert into LOGBOOK (date_modified,records,operations) values(sysdate,1,'Update');

End If;

End If;

If INSERTING then

Select count(*) into int_count from LOGBOOK where date_modified like sysdate and
operations='Insert';

If int_count>0 then

update LOGBOOK set records=records+1 where date_modified like sysdate and operations='Insert';

Else

insert into LOGBOOK (date_modified,records,operations) values(sysdate,1,'Insert');

End If;

End If;

If DELETING then

Select count(*) into int_count from LOGBOOK where date_modified like sysdate and
operations='Delete';

If int_count>0 then

update LOGBOOK set records=records+1 where date_modified like sysdate and operations='Delete';

Else

insert into LOGBOOK (date_modified,records,operations) values(sysdate,1,'Delete');

End If;

End If;

End;

RESULT:

SELECT * FROM SUPPLIER;


S_ID S_NAME S_CITY STATUS
S_01 SUJASH KOLKATA 20
S_07 BLAKE PARIS 15
S_08 CLARK LONDON 20
S_09 PAPAI KOLKATA 12
S_13 BISWA PATNA 16
S_14 BISWANATH PUNE 10
S_02 SOUMIK PUNE 16
S_03 MOHON KOLKATA 18
S_06 JONES PARIS 20
S_10 BABAI KOLKATA 15
S_05 SMITH LONDON 15
S_04 RAMU DELHI 10
S_11 SAM DHAKA 15
S_12 PRABHA PATNA 16

SQL>INSERT INTO SUPPLIER VALUES('S_15','HARI','DELHI',11);


1 row(s) inserted.

SQL> SELECT * FROM LOGBOOK;


DATE_MODIFIED RECORDS OPERATIONS
21-MAR-18 1 Insert

SQL>DELETE FROM SUPPLIER WHERE S_ID='S_15';

1 row(s) deleted.

SQL>SELECT * FROM LOGBOOK;

DATE_MODIFIED RECORDS OPERATIONS


21-MAR-18 3 Insert
21-MAR-18 2 Delete

SQL>UPDATE SUPPLIER SET S_NAME='RABI' WHERE S_ID='S_15';

1 row(s) updated.

SQL> SELECT * FROM LOGBOOK;


DATE_MODIFIED RECORDS OPERATIONS
21-MAR-18 3 Insert
21-MAR-18 2 Delete
21-MAR-18 1 Update

Q.02)Design the database for Manufacturing System as described follow and develop the PL/SQL
Programs

Rawmaterial(R#,RMName, Weight, Volume, City, Rate)

Product(P#,R#,QTY)

Sales(P#,QTY,City, DiscountRate)

Develop PL/SQL Program for the following:

a) Find the city-wise raw-material supplied and finished product consumed.

b) Find city-wise total money earn and discount provided


c) Create a logbook to store number records delete and updated in product table.

Creating table RAWMETERIAL:

CREATE table "RAWMATERIAL" (

"R_ID" VARCHAR2(4000) NOT NULL,

"RM_NAME" VARCHAR2(4000),

"WEIGHT" NUMBER(5,2),

"VOLUME" NUMBER(10),

"CITY" VARCHAR2(4000),

"RATE" NUMBER(2),

constraint "RAWMATERIAL_PK" primary key ("R_ID")

);

Creating table PRODUCT:

CREATE TABLE PRODUCT(

P_ID VARCHAR2(400),

R_ID VARCHAR2(400),

QTY NUMBER(10,2),

PRIMARY KEY (P_ID),

FOREIGN KEY (R_ID) REFERENCES RAWMATERIAL(R_ID));

Creating table SALES:

CREATE TABLE SALES(

P_ID VARCHAR2(400),

QTY NUMBER(10,2),

CITY VARCHAR2(400),

DISCOUNTRATE NUMBER(10,2),

PRIMARY KEY (P_ID),

FOREIGN KEY(P_ID) REFERENCES PRODUCT(P_ID));

Table RAWMATERIAL:

SQL>

SELECT * FROM RAWMETERIAL;


R_ID RM_NAME WEIGHT VOLUME CITY RATE
R_01 IRON 12.5 10000 KOLKATA 12000
R_03 COAL 12.3 89000 DELHI 75600
R_05 GOLD 12 45 CHENNAI 7800000
R_02 STEEL 45.2 63000 JAMSEDPUR 69000
R_04 PLASTIC 1 10000 KOLKATA 70000
R_06 PAPER 45 3255 MUMBAI 74565

Table PRODUCT:

SQL>

SELECT * FROM PRODUCT;


P_ID R_ID QTY
P_02 R_01 3600
P_03 R_06 450
P_08 R_02 64
P_04 R_04 8956
P_06 R_03 365
P_07 R_01 645
P_09 R_04 643
P_10 R_01 10
P_01 R_02 2300
P_05 R_01 89

Table SALES:

SQL>

SELECT * FROM SALES;


P_ID QTY CITY DISCOUNTRATE
P_03 78 DELHI .2
P_05 745 KOLKATA .2
P_02 896 JAMSEDPUR .6
P_01 45 KOLKATA .6
P_04 75 CHENNAI .4
P_06 78 MUMBAI .6

a) Find the city-wise raw-material supplied and finished product consumed.

SQL>

SELECT SUM(PRODUCT.QTY*SALES.QTY) AS "RAWMATERIAL QTY",RAWMATERIAL.R_ID FROM


PRODUCT,RAWMATERIAL,SALES WHERE RAWMATERIAL.CITY='KOLKATA'

AND RAWMATERIAL.R_ID=PRODUCT.R_ID AND SALES.P_ID=PRODUCT.P_ID GROUP BY


RAWMATERIAL.R_ID;

RESULT:
RAWMATERIAL QTY R_ID
3291905 R_01
671700 R_04
SELECT SUM(SALES.QTY),RAWMATERIAL.R_ID FROM PRODUCT,RAWMATERIAL,SALES WHERE
SALES.CITY='KOLKATA'

AND RAWMATERIAL.R_ID=PRODUCT.R_ID AND SALES.P_ID=PRODUCT.P_ID GROUP BY


RAWMATERIAL.R_ID;
SUM(SALES.QTY) R_ID
745 R_01
45 R_02

b) Find city-wise total money earn and discount provided

SQL>

SELECT SALES.CITY,SUM(SALES.QTY*RAWMATERIAL.RATE) AS "MONEY EARN"


,SUM(SALES.QTY*SALES.DISCOUNTRATE)AS "DISCOUNT" FROM SALES,RAWMATERIAL,PRODUCT

WHERE PRODUCT.P_ID=SALES.P_ID GROUP BY SALES.CITY;

RESULT:
CITY MONEY EARN DISCOUNT
DELHI 631890870 93.6
KOLKATA 6399920350 1056
MUMBAI 631890870 280.8
JAMSEDPUR 7258643840 3225.6
CHENNAI 607587375 180

c) Create a logbook to store number records delete and updated in product table.

SQL>

create or replace trigger logbook_trigger1

after update or delete or insert on PRODUCT

for each row

Declare

int_count integer;

Begin

If UPDATING then

Select count(*) into int_count from LOGBOOK where date_modified like sysdate and
operations='Update';

If int_count>0 then

update LOGBOOK set records=records+1 where date_modified like sysdate and


operations='Update';
Else

insert into LOGBOOK (date_modified,records,operations) values(sysdate,1,'Update');

End If;

End If;

If DELETING then

Select count(*) into int_count from LOGBOOK where date_modified like sysdate and
operations='Delete';

If int_count>0 then

update LOGBOOK set records=records+1 where date_modified like sysdate and operations='Delete';

Else

insert into LOGBOOK (date_modified,records,operations) values(sysdate,1,'Delete');

End If;

End If;

End;

/
Trigger created.

RESULT:

SQL>SELECT * FROM SUPPLIER;

S_ID S_NAME S_CITY STATUS


S_01 SUJASH KOLKATA 20
S_07 BLAKE PARIS 15
S_08 CLARK LONDON 20
S_09 PAPAI KOLKATA 12
S_13 BISWA PATNA 16
S_14 BISWANATH PUNE 10
S_02 SOUMIK PUNE 16
S_03 MOHON KOLKATA 18
S_06 JONES PARIS 20
S_10 BABAI KOLKATA 15
S_05 SMITH LONDON 15
S_15 RABI DELHI 11
S_04 RAMU DELHI 10
S_11 SAM DHAKA 15
S_12 PRABHA PATNA 16

SQL>UPDATE PRODUCT SET QTY=200 WHERE P_ID='P_10';


1 row(s) updated.

SQL>SELECT * FROM LOGBOOK;


DATE_MODIFIED RECORDS OPERATIONS
21-MAR-18 1 Update
SQL>DELETE FROM PRODUCT WHERE P_ID='P_10';
1 row(s) deleted.

SQL>SELECT * FROM LOGBOOK;

DATE_MODIFIED RECORDS OPERATIONS


21-MAR-18 1 Update
21-MAR-18 1 Delete

Q.3)Design the database for Employee System as described follow and develop the PL/SQL
Programs

Designation (D#,DName, BasicPay, GradePay, IncrementRate)

Employee (E#,D#,JobDuration)

TaxRate(YearlyEarning, TaxRate)

Develop PL/SQL Program for the following:

a) Find the Gross Salary of each person.

b) Find how much amount to pay as tax for each designation

c) Create a logbook to store number records updated in Employee table.

Creating table DESIGNATION:

CREATE TABLE DESIGNATION(

D_ID VARCHAR2(400),

D_NAME VARCHAR2(400),

BASICPAY NUMBER(10,2),

GRADEPAY NUMBER(10,2),

INCREMENT_RATE NUMBER(10,2),

PRIMARY KEY (D_ID));

Creating table EMPLOYEE:

CREATE TABLE EMPLOYEE(

E_ID VARCHAR2(400),

D_ID VARCHAR2(400),

JOB_DURATION VARCHAR2(400),

PRIMARY KEY (E_ID),


FOREIGN KEY (D_ID) REFERENCES DESIGNATION(D_ID));

Creating table TAXRATE

CREATE TABLE TAXRATE(

YEARLY_EARNING NUMBER(10,2),

INTEREST_RATE NUMBER(10,2));

Table DESIGNATION:

SQL>

SELECT * FROM DESIGNATION;


D_ID D_NAME BASICPAY GRADEPAY INCREMENT_RATE
D_05 B.D.O 60000 6000 .6
D_06 GROUP_D 6000 800 .5
D_08 S.D.O 120000 14000 .7
D_02 CLERK 10000 1500 .5
D_01 MANAGER 150000 13000 .5
D_03 P1_OFFICER 35000 3500 .5
D_04 P2_OFFICER 45000 2500 .3
D_07 IAS 100000 12000 .7

Table DESIGNATION:

SQL>

SELECT * FROM EMPLOYEE;


E_ID D_ID JOB_DURATION
E_01 D_01 25
E_02 D_01 36
E_06 D_04 35
E_05 D_03 35
E_07 D_06 28
E_08 D_07 28
E_03 D_02 45
E_04 D_06 23

Table DESIGNATION:

SQL>

SELECT * FROM TAXRATE;


YEARLY_EARNING INTEREST_RATE
100000 .22
50000 .2
25000 .18
10000 .12
a) Find the Gross Salary of each person.

SQL>

SELECT D_NAME,SUM(BASICPAY+GRADEPAY) AS "GROSS SALARY" FROM DESIGNATION

GROUP BY D_NAME;

RESULT:
D_NAME GROSS SALARY
S.D.O 134000
CLERK 11500
IAS 112000
B.D.O 66000
GROUP_D 6800
P2_OFFICER 47500
MANAGER 163000
P1_OFFICER 38500

b) Find how much amount to pay as tax for each designation

SQL>

RESULT:

c) Create a logbook to store number records updated in Employee table.

SQL>

create or replace trigger logbook_trigger2

after update or delete or insert on EMPLOYEE

for each row

Declare

int_count integer;

Begin

If UPDATING then

Select count(*) into int_count from LOGBOOK where date_modified like sysdate and
operations='Update';

If int_count>0 then

update LOGBOOK set records=records+1 where date_modified like sysdate and


operations='Update';
Else

insert into LOGBOOK (date_modified,records,operations) values(sysdate,1,'Update');

End If;

End If;

End;

/
Trigger created.

RESULT:

SQL>SELECT * FROM EMPLOYEE;


E_ID D_ID JOB_DURATION
E_01 D_01 25
E_02 D_01 36
E_06 D_04 35
E_05 D_03 35
E_07 D_06 28
E_08 D_07 28
E_03 D_02 45
E_04 D_06 23

SQL>DELETE FROM EMPLOYEE WHERE E_ID='E_08';


1 row(s) deleted.

SQL>SELECT * FROM LOGBOOK;


DATE_MODIFIED RECORDS OPERATIONS
21-MAR-18 1 Delete

You might also like