Thursday, 2 August 2018

III B.Com(CA) - III B.Sc(MPCS) & III B.Sc(MSCS)



PROGRAM N0:01 DRAW ER DIAGRAMS FOR TRAIN SERVICES IN A RAILWAY STATION





PROGRAM NO.2: DRAW ER DIAGRAM FOR HOSPITAL ADMINISTRATION




PROGRAM NO.3: CREATION OF COLLEGE DATABASE AND ESTABLISH RELATIONSHIPS BETWEEN TABLES
 



CREATION OF TABLES
--------------------------------

SQL> Create table Department (Deptname char(15) primary key, Location char(10));

SQL> Create table Courses (CourseId  number(3) primary key,CourseName char(10), Duration number(3),Deptname char (15) References Department(Deptname));

SQL> Create table Student (StudentId  number(3) primary key,First_Name char(10), last_Name char(10), phone number(10), courseId number(3) references Courses(CourseId));

SQL> Create table Instructor (InstructorID number(3) primary key,First_Name char(10), last_Name char(10), phone number(10), courseId number(3) references Courses(CourseId), Deptname char (15) References Department(Deptname));

Note :

Insert any 5 records in each table.

Select * from Department;
Select * from Courses;
Select * from Student;
Select * from instructor;




PROGRAM NO. 04: WRITE A VIEW TO EXTRACT DETAILS FROM TWO OR MORE TABLES

AIM:  To execute and verify the SQL commands for Views.

CREATION OF TABLES
--------------------------------
SQL> CREATE TABLE ST(SID INT,SNAME VARCHAR(10));

TABLE CREATED

SQL> CREATE TABLE MARKS (SID INT, SUB1 INT ,SUB2 INT, SUB3 INT);

TABLE CREATED

TABLE DESCRIPTION
-------------------------------
SQL> DESC ST;

SQL> DESC MARKS;

INSERTION OF DATA  INTO TABLES
-----------------------------------------------

SQL> INSERT INTO ST VALUES(1,’SHAIK’);

1 ROW INSERTED

SQL> INSERT INTO ST VALUES(2,’AYAAN’);

1 ROW INSERTED


SQL> INSERT INTO MARKS VALUES(1,50,62,89);

1 ROW INSERTED

SQL> INSERT INTO MARKS VALUES(2,90,99,89);

1 ROW INSERTED

SQL> INSERT INTO MARKS VALUES(3,10,59,69);

1 ROW INSERTED


SYNTAX FOR CREATION OF VIEW
--------------------------------------------------
SQL> CREATE <VIEW> <VIEW NAME> AS SELECT
<COLUMN_NAME_1>, <COLUMN_NAME_2> FROM <TABLE NAME>;


CREATION OF VIEW
------------------------------

SQL> CREATE VIEW ABC AS SELECT ST.SID,ST.SNAME,MARKS.SUB1,MARKS.SUB2,MARKS.SUB3
FROM ST , MARKS WHERE ST.SID=MARKS.SID;

VIEW CREATED




DESCRIPTION OF VIEW
--------------------------------
SQL> DESC EMPVIEW;
NAME             NULL?             TYPE
----------------------------------------- -------- ----------------------------
SID                    NUMBER(38)
SNAME                     CHAR(10)
SUB1                     NUMBER(38)
SUB2                     NUMBER(38)
SUB3                     NUMBER(38)


DISPLAY VIEW:
----------------------
SQL> SELECT * FROM ABC;

SYNTAX FOR DROP A VIEW:
---------------------------------
SQL> DROP VIEW <VIEW_NAME>


DROP A VIEW
-----------------------

SQL>DROP VIEW ABC;

VIEW DROPED


PROGRAM No. 05 : WRITE A PROGRAM TO DEMONSTRATE OF   AGGREGATE FUNCTIONS


CREATION OF TABLE
--------------------------------

SQL> CREATE TABLE PRODUCT (PNO INT ,PNAME VARCHAR(30),PRICE FLOAT,QUANTITY INT);
TABLE CREATED.
INSERTION OF DATA  INTO TABLE
-----------------------------------------------
SQL> INSERT INTO PRODUCT VALUES(1,'DAIRY MILK',60,2);

1 ROW CREATED.

SQL> INSERT INTO PRODUCT VALUES(2,'GOOD DAY',25,4);

1 ROW CREATED.

SQL> INSERT INTO PRODUCT VALUES(3,'BOOST',10,6);

1 ROW CREATED.

SQL> INSERT INTO PRODUCT VALUES(4,'MAGGI',5,10);

1 ROW CREATED.
SQL> INSERT INTO PRODUCT VALUES(5,'BOOK',20,20);

1 ROW CREATED.

DISPLAY OF DATA  FROM TABLE:
-----------------------------------------------
SQL> SELECT * FROM PRODUCT;

PNO PNAME                               PRICE      QUANTITY
---------- ------------------------------ ---------- ----------
1 DAIRY MILK    60         2
2 GOOD DAY    25    4
3 BOOST                  10    6
4 MAGGI    5    10
5 BOOK                20    20

PERFORMING COUNT FUNCTION 
------------------------------------------------
SQL> SELECT COUNT(PRICE) FROM PRODUCT;
COUNT(PRICE)
------------
     5

PERFORMING SUM FUNCTION 
------------------------------------------------
SQL> SELECT SUM(PRICE) FROM PRODUCT;
SUM(PRICE)
----------
120

PERFORMING AVG FUNCTION 
------------------------------------------------
SQL> SELECT AVG(QUANTITY) FROM PRODUCT;
AVG(QUANTITY)
-------------
8.4

PERFORMING MAX FUNCTION 
------------------------------------------------
SQL> SELECT MAX(PRICE) FROM PRODUCT;
MAX(PRICE)
----------
 60

PERFORMING MIN FUNCTION 
------------------------------------------------
SQL> SELECT MIN(PRICE) FROM PRODUCT;
MIN(PRICE)
----------
 5


PERFORMING GROUP BY FUNCTION 
------------------------------------------------


CREATE TABLE EMPLOY (SID INT,NAME VARCHAR(20),DEPT VARCHAR(10),SAL FLOAT);


TABLE CREATED


SELECT * FROM EMPLOY


SID   NAME    DEPT SAL
1      AYISHA  ECE   6000
2      SINDHU  IT     50000
3      SAI        IT      80000
4       LALLI      ECE    8000
SQL>SELECT DEPT,SUM(SAL) FROM EMPLOY GROUP BY DEPT;
DEPT   SUM(SAL)
IT         130000
ECE       14000

PERFORMING HAVING FUNCTION 
------------------------------------------------

SQL>SELECT DEPT,SUM(SAL) FROM EMPLOY GROUP BY DEPT HAVING SUM(SAL)>25000;


DEPT   SUM(SAL)
 IT         130000


PROGRAM NO.06:  WRITE A STORED PROCEDURE TO PROCESS STUDENTS RESULTS

CREATION OF TABLE
--------------------------------

SQL> CREATE TABLE STU1(SNO INT,NAME CHAR(10),SUB1 INT,SUB2 INT, SUB3 INT);

TABLE CREATED.

INSERTION OF DATA  INTO TABLE
-----------------------------------------------

SQL> INSERT INTO STU1 VALUES(100,'WASIM',70,75,89);

1 ROW CREATED.

SQL> INSERT INTO STU1 VALUES(200,'SIVA',75,69,88);

1 ROW CREATED.

CREATION OF STORED PROCEDURE:
------------------------------------------------------

CREATE OR REPLACE PROCEDURE STUDENT_RESULT
 IS
 STU STU1%ROWTYPE;
    TOTAL NUMBER(4);
    RESULT VARCHAR(4);
    CURSOR C IS SELECT * FROM STU1;
BEGIN
  FOR STU IN C
    LOOP
         DBMS_OUTPUT.PUT_LINE('STUDENT MARKLIST');
         DBMS_OUTPUT.PUT_LINE('----------------------------');
         DBMS_OUTPUT.PUT_LINE('SNO:'||STU.SNO||' SNAME:'||STU.NAME);
         TOTAL:=STU.SUB1+STU.SUB2+STU.SUB3;
         IF STU.SUB1>35 AND STU.SUB2>35 AND STU.SUB3>35
         THEN
             RESULT:='PASS';
         ELSE
             RESULT:='FAIL';
         END IF;
          DBMS_OUTPUT.PUT_LINE('M1:'||STU.SUB1||' M2:'||STU.SUB2||' M3:'||STU.SUB3);
          DBMS_OUTPUT.PUT_LINE('TOTAL:'||TOTAL||' RESULT:'||RESULT);
       END LOOP;
END;
/

PROCEDURE CREATED.

EXECUTION PROCEDURE:
-------------------------------
SQL>SET SERVEROUTPUT ON;

SQL> EXECUTE STUDENT_RESULT;

STUDENT MARKLIST
----------------------------
SNO:100 SNAME:WASIM
M1:70 M2:75 M3:89
TOTAL:234 RESULT:PASS

STUDENT MARKLIST
----------------------------
SNO:200 SNAME:SIVA
M1:75 M2:69 M3:88
TOTAL:232 RESULT:PASS

PL/SQL PROCEDURE SUCCESSFULLY COMPLETED.

PROGRAM NO.7 : WRITE A PROGRAM TO DEMONSTRATE A FUNCTION

PROCEDURE:
DECLARE
NUM NUMBER;
FACTORIAL NUMBER;
FUNCTION FACT(X NUMBER) RETURN NUMBER IS
F NUMBER;
BEGIN
IF X=0 THEN
F := 1;
ELSE
F := X * FACT(X-1);
END IF;
RETURN F;
END;
BEGIN
NUM:= &AMP;NUM;
FACTORIAL := FACT(NUM);
DBMS_OUTPUT.PUT_LINE(‘ FACTORIAL ‘|| NUM ||’ IS ‘ || FACTORIAL);
END;
/

EXECUTION:
SQL>EXECUTE  FUN.SQL;

ENTER VALUE FOR NUM: 3

FACTORIAL 3 IS 6
PL/SQL PROCEDURE SUCCESSFULLY COMPLETED.

PROGRAM NO.8 :WRITE A PROGRAM TO DEMONSTRATE DATABASE TRIGGERS.

PROCEDURE:
SQL>CREATE TABLE EMPLOYEE_SALARY(EMP_NO NUMBER(2) PRIMARY KEY, BASIC NUMBER(8), HRA NUMBER(3), DA NUMBER(3), TOTAL_DEDUCTION NUMBER(3), NET_SALARY NUMBER(10), GROSS_SALARY NUMBER(10));
SQL> SELECT * FROM EMPLOYEE_SALARY;
EMP_NO BASIC HRA DA TOTAL_DEDUCTION NET_SALARY GROSS_SALARY
---------- ---------- ---------- ---------- --------------- ----------
2 15000 4000 1000 5000 15000 20000
1 31000 8000 1000 5000 35000 40000
3 14000 4000 1000 5000 15000 19000
4 14000 4000 1000 5000 15000 19000
5 13000 4000 1000 5000 15000 18000

SQL> ED PROG8.SQL;
CREATE OR REPLACE TRIGGER T   AFTER UPDATE ON EMPLOYEE_SALARY
FOR EACH ROW
BEGIN
INSERT INTO BACKUP VALUES (:OLD.EMP_NO,:OLD.GROSS_SALARY,:NEW.GROSS_SALARY);
END;
/
EXECUTION:
SQL> @ PROG8.SQL;
TRIGGER CREATED.

SQL> UPDATE EMPLOYEE_SALARY SET GROSS_SALARY=44000 WHERE EMP_NO=1;

SQL> SELECT * FROM BACKUP;
EMPNO     OLD_GROSS_SALARY         NEW_GROSS_SALARY
1         40000                         44000

SQL> UPDATE EMPLOYEE_SALARY SET GROSS_SALARY=20000 WHERE EMP_NO=2;




SQL> SELECT * FROM BACKUP;
EMPNO     OLD_GROSS_SALARY         NEW_GROSS_SALARY
1             40000                 44000
2             17600                     20000

SQL> UPDATE EMPLOYEE_SALARY SET GROSS_SALARY=48000 WHERE EMP_NO=1;

SQL> SELECT * FROM BACKUP;
EMPNO     OLD_GROSS_SALARY         NEW_GROSS_SALARY
1             40000                 44000
2             17600                 20000
1             44000                 48000


PROGRAM NO.9 :WRITE A PROGRAM TO DEMONSTRATE DATABASE CURSORS.

PROCEDURE:
SQL> CREATE TABLE STUDENT(RNO NUMBER(10),S1 NUMBER(10),S2 NUMBER(10),S3 NUMBER(10),S4 NUMBER(10),TOTAL NUMBER(20),PERCENTAGE NUMBER(6));
TABLE CREATED.

SQL> INSERT INTO STUDENT(RNO,S1,S2,S3,S4)VALUES(10011,56,78,79,56);
SQL> INSERT INTO STUDENT(RNO,S1,S2,S3,S4)VALUES(10012,45,67,34,58);
SQL> INSERT INTO STUDENT(RNO,S1,S2,S3,S4)VALUES(10013,76,86,94,58);
SQL> INSERT INTO STUDENT(RNO,S1,S2,S3,S4)VALUES(10014,57,48,39,92);

SQL> SELECT * FROM STUDENT;
RNO         S1     S2     S3     S4     TOTAL     PERCENTAGE
10011         56     78     79     56
10012         45     67     34     58
10013         76     86     94     58
10014         57     48     39     92
SQL>ED PROG9.SQL;
 DECLARE
 T STUDENT.TOTAL%TYPE;
 P STUDENT.PERCENTAGE%TYPE;
 CURSOR STU IS SELECT * FROM STUDENT;
 RW STU%ROWTYPE;
 BEGIN
 OPEN STU;
 LOOP
 FETCH STU INTO RW;
 EXIT WHEN STU%NOTFOUND;
 T:=RW.S1+RW.S2+RW.S3+RW.S4;
 P:=T*0.25;
 UPDATE STUDENT SET TOTAL=T, PERCENTAGE=P WHERE RNO=RW.RNO;
 END LOOP;
 CLOSE STU;
 END;
/
SQL> /
PL/SQL PROCEDURE SUCCESSFULLY COMPLETED.




SQL> SELECT * FROM STUDENT;
RNO         S1     S2     S3     S4     TOTAL     PERCENTAGE
10011         56     78     79     56    269            67
10012         45     67     34     58    204            51
10013         76     86     94     58    314            79
10014         57     48     39     92    236            59



PROGRAM NO.10:  WRITE A PROGRAM TO DEMONSTRATE JOINS

SQL>CREATE TABLE EMP1(ENAME CHAR(10),ENO NUMBER(3),MANGERNO NUMBER(3));
TABLE CREATED.

SQL> INSERT INTO EMPS1 VALUES('&ENAME',&ENO,&EMANGERNO);
ENTER VALUE FOR ENAME: NAGAENTER VALUE FOR ENO: 101
ENTER VALUE FOR EMANGERNO: 121
OLD 1: INSERT INTO EMPS1 VALUES('&ENAME',&ENO,&EMANGERNO)
NEW 1: INSERT INTO EMPS1 VALUES('NAGA',101,121)
1 ROW CREATED.

SQL> SELECT * FROM EMPS1;
ENAME         ENO         MANGERNO
---------- ---------- ----------
NAGA         101         121
NAVIN         111         121
RAM         121         131
RAJ         141         131

SELF JOINS:
----------------------
SQL> SELECT EMPS1.ENAME,EMPS1.ENO,EMPS1.MANGERNO FROM EMPS1 WHEREEMPS1.ENO=EMPS1.MANGERNO;

NO ROWS SELECTED

SQL> SELECT * FROM CUSTOMERS1;
ENO         SALARY         LOCATION
-------------------- ----------
101         10000         CHENNAI
111         10500         MADURAI
131         8000         PONDY
141         5000         AVADI
151         9800         LOCO

EQUI JOINS:

SQL> SELECTEMPS1.ENAME,EMPS1.ENO,CUSTOMERS1.ENO,CUSTOMERS1.SALARY FROMEMPS1,CUSTOMERS1 WHERE EMPS1.ENO=CUSTOMERS1.ENO;

ENAME         ENO        ENO         SALARY
---------- ---------- ---------- ----------
NAGA         101         101         10000
NAVIN         111        111         10500
RAJ         141         141         5000


NON EQUI JOINS:

SQL> SELECT EMPS1.ENAME,EMPS1.ENO,CUSTOMERS1.SALARY,CUSTOMERS1.ENO,CUSTOMERS.LOCATIONFROM EMPS1,CUSTOMERS1.ENO<>CUSTOMERS1.ENO;

ENAME ENO     SALARY ENO     LOCATION
---------- ---------- ---------- ---------- --------------------
NAVIN     111     10000     101     CHENNAI
RAM     121     10000     101     CHENNAI
RAJ     141     10000     101     CHENNAI
NAGA     101     10500     111     PONDY
RAM     121     10500     111     PONDY
RAJ     141     10500     111     PONDY
NAGA     101     8000     131     AVADI
NAVIN     111     8000     131     AVAD
IRAM     121     8000     131     AVADI
RAJ     141     8000     131     AVADI
NAGA     101     5000     141     LOCO
NAVIN     111     5000     141     LOCO
RAM     121     5000     141     LOCO
NAGA     101     9800     151     CHOOLAI
NAVIN     111     9800     151     CHOOLAI
RAM     121     9800     151     CHOOLAI
RAJ     141     9800     151     CHOOLAI
17 ROWS SELECTED.

LEFT OUTER JOINS:

SQL>SELECT EMPS1.ENAME,EMPS1.ENO,CUSTOMERS1.SALARY,CUSTOMERS1.ENO FROMEMPS1,CUSTOMERS1 WHERE EMPS1.ENO(+)=CUSTOMERS1.ENO;

ENAME     ENO     SALARY     ENO
---------- ---------- ---------- --------
NAGA     101     10000     101
NAVIN     111     10500     111
8000     131
RAJ     141     5000     141
                     9800     151

RIGHT OUTER JOINS:

SQL> SELECT EMPS1.ENAME,EMPS1.ENO,CUSTOMERS1.ENO,CUSTOMERS1.SALARY FROMEMPS1,CUSTOMERS1 WHERE EMPS1.ENO=CUSTOMERS1.ENO(+);

ENAME     ENO     ENO     SALARY
---------- ---------- ---------- ----------
NAGA     101     101     10000
NAVIN     111     111     10500
RAM     121
RAJ     141     141     5000