Download as pdf or txt
Download as pdf or txt
You are on page 1of 68

NAME : THARUNKUMAR K

REGISTER NO : 412519205147

Laboratory Record
CS8481 DATABASE MANAGEMENT SYSTEM
LABORATORY
(IIYEAR/IVSEM)

B.TECH INFORMATION TECHNOLOGY


ACADEMIC YEAR: 2020–2021
Certificate

Register No: 412519205147

Certified that this is the Bonafide Record of work done by

Mr. THARUNKUMAR K in the B.Tech Degree Course


INFORMATION TECHNOLOGY in the CS8481- DATABASE
MANAGEMENT SYSTEM LABORATORY
duringtheacademicyear2020-2021

Station:Chennai–600044
Date:

STAFF IN CHARGE HEAD OF THE DEPARTMENT

Submitted for Practical Examination held on at Sri SaiRam Engineering


College, Chennai–600044.

INTERNAL EXAMINER EXTERNAL EXAMINER


LIST OF PROGRAMS

E.NO DATE TITLE PG.NO SIGN


Study of SQL 4
1 19.02.21

2 19.02.21 7
Basic of SQL

3 26.02.21 DataDefinition Language 13

DataManipulation Language
4 26.02.21 18

05.03.21 Data Control Language 21


5
6 12.03.21 Transaction ControlLanguage 31

7 19.03.21 Functionsin SQL


09.04.21
8 SQL Queries 102
16.04.21
9 PL/ SQL Procedures
116

10 30.04.21 PL/ SQL Cursors 127

11 07.05.21 Function to search an address 131

12 21.05.21 Insert and Delete Triggers 142

21.05.21
13 Update Triggers
145
04.06.21
14 Report Generation using Script 151
04.06.21 161
15 Report Generation using Script
11.06.21 163
16 Project – Timetable management system
EX NO :3
DATE :

DATA DEFINITION LANGUAGE


AIM
To study about data definition language.

COMMANDS:
1. CREATION OF THE TABLE:
SYNTAX:
CREATE TABLE <table name>(col1 def,col2 def,.......);
EXAMPLE:
SQL>CREATE TABLE STUDENTS
(SL_NO NUMBER(2),NAME VARCHAR2(10),
DOB DATE,DEPT VARCHAR2(5));
Table created.

2. ALTERING TABLES:
SYNTAX:
1.ALTER TABLE <table name> MODIFY(col def......);
2.ALTER TABLE <table name> ADD(col def.........);
EXAMPLE 1:
SQL> ALTER TABLE STUDENTS MODIFY(DEPT VARCHAR2(10));
Table altered.
EXAMPLE 2:
SQL> ALTER TABLE STUDENTS ADD(AGE NUMBER(3));
Table altered.

3. VIEW THE TABLE:


SYNTAX:
DESC <table name>;
EXAMPLE:
SQL> DESC STUDENTS;
Name Null? Type
---------------------------- --------- -------------------
SL_NO NUMBER(2)
1
NAME VARCHAR2(10)
DOB DATE
DEPT VARCHAR2(10)
AGE NUMBER(3)

4.TRUNCATING THE TABLE:


SYNTAX:
TRUNCATE TABLE <table name>;
EXAMPLE:
SQL> TRUNCATE TABLE STUDENTS;
Table truncated.

5.DELETING THE TABLE:


SYNTAX:
DROP TABLE<table name>;
EXAMPLE:
SQL> DROP TABLE STUDENTS;
Table dropped.

2
OUTPUT:

RESULT:
Thus the data definition language commands are studied.

3
EX NO :4
DATE :

DATA MANIPULATION LANGUAGE


AIM:
To study about data manipulation commands.

COMMANDS:

1. RETRIEVING DATA:
 SELECT ALL ROWS
DESCRIPTION: Select all the rows from the specified table.
SYNTAX:
SELECT * FROM <table name>;
EXAMPLE:
SQL> SELECT * FROM STUDENT;
S_NO NAME AGE SUB1 SUB2 SUB3 TOTAL AVE
---------- -------------------- ---------- ---------- --------- -------- ---------- ----------
45 NARMADHA 20 78 87 68 233 77.66
36 RAKESH 19 80 79 68 227 75.66
2 rows selected.

 SELECTS SPECIFIED COLUMN NAME :


DESCRIPTION: It selects the particular column from the table.
SYNTAX:
SELECT COL1, COL2, …COLN FROM <table name>;
EXAMPLE:
SQL> SELECT AGE FROM STUDENT;
AGE
----------
20
19
2 rows selected.

4
 ORDER BY
DESCRIPTION: It selects the rows from the specified table where the condition gets satisfied
and the result is displayed sort out according to the column mentioned in the ‘ordered by’ clause.
SYNTAX:
SELECT * FROM <table name> WHERE CONDITIONS ORDER BY CONDITIONS;
EXAMPLE 1:
SQL> SELECT * FROM STUDENT ORDER BY NAME;
S_NO NAME AGE SUB1 SUB2 SUB3 TOTAL AVE
---------- -------------------- ---------- ---------- ---------- ---------- ---------- ----------
45 NARMADHA 20 78 87 69 233 77.66
23 NITHYA 19 65 78 67 210 70
2 rows selected.

EXAMPLE 2:
SQL> SELECT * FROM STUDENT WHERE S_NO<30 ORDER BY AVE;
S_NO NAME AGE SUB1 SUB2 SUB3 TOTAL AVE
---------- -------------------- ---------- ---------- ---------- ---------- ---------- ----------
23 NITHYA 19 65 78 67 210 70
10 RAGHU 20 90 91 78 259 86.33
2 rows selected.

EXAMPLE 3:
SQL> SELECT * FROM STUDENT WHERE NAME LIKE 'P%' ORDER BY S_NO;
S_NO NAME AGE SUB1 SUB2 SUB3 TOTAL AVE
---------- -------------------- ---------- ---------- ---------- ---------- ---------- ----------
54 PRAVEEN 20 87 90 65 242 80.66
1 rows selected.

EXAMPLE 4:
SQL> SELECT * FROM STUDENT WHERE NAME NOT LIKE 'N%' ORDER BY
NAME;
S_NO NAME AGE SUB1 SUB2 SUB3 TOTAL AVE
---------- -------------------- ---------- ---------- ---------- ---------- ---------- ----------
54 PRAVEEN 20 87 90 65 242 80.66
10 RAGHU 20 90 91 78 259 86.33
5
2 rows selected.

EXAMPLE 5:
SQL> SELECT *FROM STUDENT WHERE S_NO=54;
S_NO NAME AGE SUB1 SUB2 SUB3 TOTAL AVE
------- -------------------- ---------- ---------- ---------- ---------- ---------- ----------
54 PRAVEEN 20 87 90 65 242 80.66
1 rows selected.

2. INSERT DATA INTO TABLE :


 INSERT DATA INTO ALL THE COLUMNS :
SYNTAX:
INSERT INTO <table name>
VALUES(COL1.VALUE,COL2.VALUE,………,COLN.VALUE);
EXAMPLE:
SQL> INSERT INTO STUDENT
VALUES(66,'PRIYANKA',21,89,76,90,68,75,69,467,77.83);
1 row created.

 INSERT DATA INTO PARTICULAR COLUMN :


SYNTAX:
INSERT INTO <table name> (COL.NAMES) VALUES(COL.VALUES);
EXAMPLE:
SQL> INSERT INTO STUDENT(NAME) VALUES(‘GIRISH’);
1 row created.

3.UPDATE :
SYNTAX:
UPDATE <table name> SET COLUMN NAME=VALUE WHERE CONDITION;
EXAMPLE:
SQL> UPDATE STUDENT SET S_NO=70 WHERE NAME=’GIRISH’;
1 row updated.
4.DELETE :
SYNTAX:
DELETE FROM <table name> WHERE CONDITION;
EXAMPLE:
SQL> DELETE FROM STUDENT WHERE S_NO=70;

6
1 row deleted.

OUTPUT:
1|Karthik B|M|
2|Kumar|M|
3|Navin|M|15
4|Siva|M|19
5|Raj|M|17
M
M
M
M
M
5|Raj|M|17
4|Siva|M|19
1|Karthik B|M|
2|Kumar|M|
1|Karthik B|M|
2|Kumar|M|
3|Navin|M|15
5|Raj|M|17
1|Karthik B|M|
1|Karthik B|M|
2|Kumar|M|
7
3|Navin|M|15
4|Siva|M|19
5|Raj|M|17
6|Vijay|M|

[Program exited with exit code 0]


2|Joanna|F|
3|JHON|M|I
4|Nivi|F|II
1|Ryan|M|
1|Ryan|M|
2|Joanna|F|
3|JHON|M|I
4|Nivi|F|II
5|Ram|M|III
6|teddy|F|
1|Ryan|M|
2|Joanna|F|
3|JHON|M|I
4|Nivi|F|II
5|Ram|M|III
6|teddy|F|

[Program exited with exit code 0]

RESULT :
The DML commands were studied and executed.

8
EX NO :5
DATE :

DATA CONTROL LANGUAGE (DCL)


AIM
To study about Data Control Language (DCL) commands.

NEED FOR DCL


Since more than one user can access one database, there exists the need to restrict user from using
entire database in any way. DCL commands are used to enforce database security in a multiple user database
environment. Any right can be granted to or revoked from user with the use of DCL commands. Each right can
be granted or revoked individually or in a group. Such group of rights is called ROLE and rights can be
granted or revoked into in the same way as to the user.
There are two types of DCL commands viz., GRANT and REVOKE.

SQL GRANT COMMAND


DESCRIPTION:
SQL GRANT is a command used to provide access or privileges on the database objects to the users.
SYNTAX:
GRANT PRIVILEGE_NAME
ON OBJECT_NAME
TO {USER_NAME |PUBLIC |ROLE_NAME}
[WITH GRANT OPTION];

 privilege_name is the access right or privilege granted to the user. Some of the access rights
are ALL, EXECUTE, and SELECT.
 object_name is the name of an database object like TABLE, VIEW, STORED PROC and
SEQUENCE.
 user_name is the name of the user to whom an access right is being granted.
 user_name is the name of the user to whom an access right is being granted.
 PUBLIC is used to grant access rights to all users.
 ROLES are a set of privileges grouped together.
 WITH GRANT OPTION - allows a user to grant access rights to other users.

9
SQL REVOKE Command:
DESCRIPTION:
The REVOKE command removes user access rights or privileges to the database objects.
SYNTAX:
REVOKE PRIVILEGE_NAME
ON OBJECT_NAME
FROM {USER_NAME |PUBLIC |ROLE_NAME}

PRIVILEGES AND ROLES:


PRIVILEGES:
Privileges define the access rights provided to a user on a database object. There are two
types of privileges.
1) System privileges - This allows the user to CREATE, ALTER, or DROP database objects.
2) Object privileges - This allows the user to EXECUTE, SELECT, INSERT, UPDATE, or DELETE data
from database objects to which the privileges apply.

ROLES:
Roles are a collection of privileges or access rights. When there are many users in a
database it becomes difficult to grant or revoke privileges to users. Therefore, if you define roles,
you can grant or revoke privileges to users, thereby automatically granting or revoking privileges.
You can either create Roles or use the system roles pre-defined by oracle.
Some of the privileges granted to the system roles are as given below:
SYSTEM ROLE PRIVILEGES GRANTED TO THE ROLE
CONNECT CREATE TABLE, CREATE VIEW, CREATE SYNONYM,
CREATE SEQUENCE, CREATE SESSION etc.
RESOURCE CREATE PROCEDURE, CREATE SEQUENCE, CREATE
TABLE, CREATE TRIGGER etc. The primary usage of
the RESOURCE role is to restrict access to database
objects.
DBA ALL SYSTEM PRIVILEGES

10
CREATING ROLES
SYNTAX:
CREATE ROLE ROLE_NAME
[IDENTIFIED BY PASSWORD];
EXAMPLE:
To create a role called "developer" with password as "pwd", the code will be as follows
CREATE ROLE TESTING
[IDENTIFIED BY PWD];
It's easier to GRANT or REVOKE privileges to the users through a role rather than assigning a
privilege directly to every user. If a role is identified by a password, then, when you GRANT or
REVOKE privileges to the role, you definitely have to identify it with the password.
We can GRANT or REVOKE privilege to a role as below.
EXAMPLE:
To grant CREATE TABLE privilege to a user by creating a testing role:
First, create a testing Role
CREATE ROLE TESTING
Second, grant a CREATE TABLE privilege to the ROLE testing. You can add more privileges to the
ROLE.
GRANT CREATE TABLE TO TESTING;
Third, grant the role to a user.
GRANT TESTING TO USER1;
To revoke a CREATE TABLE privilege from testing ROLE, you can write:
REVOKE CREATE TABLE FROM TESTING;
SYNTAX TO DROP A ROLE FROM THE DATABASE
DROP ROLE ROLE_NAME;
EXAMPLE:
To drop a role called developer, you can write:
DROP ROLE TESTING;

11
OUTPUT:
1|Ryan
2|Ria
3|Joe
4|Ash
5|shan
1|Ryan|M|7898988080|Chennai|abc@gmail.com|6
2|Ria|F|9008988080|Trichy|xyz@gmail.com|3
1|Ryan|M|7898988080|Chennai|abc@gmail.com|6
2|Ria|F|9008988080|Trichy|xyz@gmail.com|3
4|Ash|M|9908988080|Madurai|thupo@gmail.com|2
5|shan|M|8098988080|Bangalore|yuo@gmail.com|5
1|Ryan|M|7898988080|Chennai|abc@gmail.com|6
5|shan|M|8098988080|Bangalore|yuo@gmail.com|5
2|Ria|F|9008988080|Trichy|xyz@gmail.com|3
3|Joe|F|6898998080|Salem|mno@yahoo.com|2
4|Ash|M|9908988080|Madurai|thupo@gmail.com|2
2|Ria|F|9008988080|Trichy|xyz@gmail.com|3
3|Joe|F|6898998080|Salem|mno@yahoo.com|2
1|Ryan|M|7898988080|Chennai|abc@gmail.com|6
4|Ash|M|9908988080|Madurai|thupo@gmail.com|2
5|shan|M|8098988080|Bangalore|yuo@gmail.com|5
1|Ryan|M|7898988080|Chennai|abc@gmail.com|6
2|Ria|F|9008988080|Trichy|xyz@gmail.com|3
4|Ash|M|9908988080|Madurai|thupo@gmail.com|2
5|shan|M|8098988080|Bangalore|yuo@gmail.com|5
6|Aravidh|||||
7|||6709456567|Kerala||

[Program exited with exit code 0]


12
RESULT
Data control language was studied.

13
EX NO :6
DATE :
TRANSACTION CONTROL LANGUAGE

AIM
To study about Transaction Control Language (TCL) commands.

TCL
Transaction Control (TCL) statements are used to manage the changes made by DML statements. It
allows statements to be grouped together into logical transactions.
o COMMIT - save work done
o SAVEPOINT - identify a point in a transaction to which you can later roll back
o ROLLBACK - restore database to original since the last COMMIT
o SET TRANSACTION - Change transaction options like isolation level and what rollback
segment to use

Command COMMIT
Description Used to make the transaction changes permanent
Syntax COMMIT;
Example SQL > COMMIT;
Output Commit Complete.

Command SAVEPOINT
Description Used to identify or mark a point in a transaction to which
we can later rollback. Savepoint is used in conjunction
with rollback which is used to revert to the saved point.
Syntax SAVEPOINT SAVEPOINT_ID;
Example SQL > SAVEPOINT S1;
Output Savepoint created.

Command ROLLBACK
Description Used to restore database to original since the last COMMIT.
It is used to undo the changes made in the database.
Syntax ROLLBACK TO SAVEPOINT_ID;
Example SQL > ROLLBACK TO SAVEPOINT S1;
14
Output Rollback Complete.

Example

SQL> SELECT * FROM STUDENT;


NAME AGE
-------------------- ----------
Joel 26
John 24
Peter 23
James 26
Jones 20

SQL> SAVEPOINT S1;


Savepoint created.

SQL> DELETE FROM STUDENT WHERE AGE=26;


2 rows deleted.

SQL> ROLLBACK TO SAVEPOINT S1;


Rollback complete.

SQL> SELECT * FROM STUDENT;


NAME AGE
-------------------- ----------
Joel 26
John 24
Peter 23
James 26
Jones 20

15
OUTPUT:

16
RESULT

Transaction control language commands were executed successfully and the output
verified.

17
EX NO :7
DATE :
FUNCTIONS IN SQL
AIM

To study about the various categories of functions available in Oracle

NUMERIC FUNCTIONS

 ROUND
DESCRIPTION: Rounds a column, an expression, or a value to n decimal places
SYNTAX:
SELECT ROUND(COLUMN NAME/EXPRESSION/VALUE,N)FROM DUAL;
EXAMPLE:
SQL>SELECT ROUND(34.7865,2) FROM DUAL;
OUTPUT:
ROUND(34.7865,2)
----------------
34.79

 MOD
DESCRIPTION: Returns the remainder of x divided by y
SYNTAX:
SELECT MOD(X, Y) FROM DUAL;
EXAMPLE:
SQL>SELECT MOD(5,2)MODULATED_VALUE FROM DUAL;
OUTPUT:
MODULATED_VALUE
---------------
1

 TRUNC
DESCRIPTION: Truncates a column, an expression, or a value to n decimal places
SYNTAX:
SELECT TRUNC(X, Y) FROM DUAL;
EXAMPLE:
SQL>SELECT TRUNC(23.567,1)TRUNCATED_VALUE FROM DUAL;

18
OUTPUT:
TRUNCATED_VALUE
---------------
23.5

 ABS
DESCRIPTION: Returns the absolute value of the number
SYNTAX:
SELECT ABS(EXPRESSION/COLUMN NAME/VALUE) FROM DUAL;
EXAMPLE:
SQL>SELECT ABS(-5.6)ABSOLUTE_VALUE FROM DUAL;
OUTPUT:
ABSOLUTE_VALUE
--------------
5.6

 CEIL
DESCRIPTION: Returns the next integer that is higher the number entered
SYNTAX:
SELECT CEIL(EXPRESSION/COLUMN NAME/VALUE) FROM DUAL;
EXAMPLE:
SQL>SELECT CEIL(34.33) FROM DUAL;
OUTPUT:
CEIL(34.33)
-----------
35

 FLOOR
DESCRIPTION: Returns the next integer that is lower than the number entered
SYNTAX:
SELECT FLOOR(EXPRESSION/COLUMN NAME/VALUE) FROM DUAL;
EXAMPLE:
SQL>SELECT FLOOR(34.33)FLOORING FROM DUAL;
OUTPUT:
FLOORING
----------
34

 POWER

19
DESCRIPTION: Raises the value of m to n
SYNTAX:
SELECT POWER(X, Y) FROM DUAL;
EXAMPLE:
SQL>SELECT POWER(3,2)POWER FROM DUAL;
OUTPUT:
POWER
----------
9

 SQRT
DESCRIPTION: returns the square root of the number entered
SYNTAX:
SELECT SQRT(EXPRESSION/COLUMN NAME/VALUE) FROM DUAL;
EXAMPLE:
SQL>SELECT SQRT(256)SQUARE_ROOT FROM DUAL;
OUTPUT:
SQUARE_ROOT
-----------
16

CHARACTER FUNCTIONS
 CONCAT
DESCRIPTION: Concatenates the specified columns or expression
SYNTAX:
SELECT CONCAT(ARG1,ARG2) FROM DUAL;
where arg1 and arg2 can be column names or expressions
EXAMPLE:
SQL>SELECT CONCAT('HELLO',’JOEL’)CONCAT FROM DUAL;
OUTPUT:
CONCAT
---------
HELLOJOEL

 INITCAP
DESCRIPTION: Capitalizes the initial letters
SYNTAX:
SELECT INITCAP(COL_NAME(OR)EXPR) FROM DUAL;
EXAMPLE:
SQL>SELECT INITCAP('HELLO’)INITIAL_CAPITAL FROM DUAL;
OUTPUT:
INITIAL_CAPITAL
-----
20
Hello
LOWER

DESCRIPTION: Converts to lower case


SYNTAX:
SELECT LOWER(EXPRESSION/COLUMN NAME/STRING) FROM DUAL;
EXAMPLE:
SQL>SELECT LOWER('HELLO WORLD') FROM DUAL;
OUTPUT:
LOWER('HELLO WORLD’)
-----------
hello world

 UPPER
DESCRIPTION: Converts to Upper case
SYNTAX:
SELECT UPPER(EXPRESSION/COLUMN NAME/STRING) FROM DUAL;
EXAMPLE:
SQL>SELECT UPPER('HELLO WORLD') FROM DUAL;
OUTPUT:
UPPER('hello world’)
-----------
HELLO WORLD

 SUBSTR
DESCRIPTION: Extracts the specified number of characters from the position given
SYNTAX:
SELECT SUBSTR(STRING,<POSITION>,[<NO, OF CHARACTERS TO EXTRACT>)
FROM DUAL;
EXAMPLE:
SQL>SELECT SUBSTR('HELLO WORLD',4,2) FROM DUAL;
OUTPUT:
SUBSTR('hello world',4,2)
--------------------------------------------
lo

 LTRIM
DESCRIPTION: Clips of the specified portion from the left side
SYNTAX:
SELECT LTRIM(STRING1,SUBSTRING) FROM DUAL;
EXAMPLE:
SQL>SELECT LTRIM('HELLO WORLD','HE') FROM DUAL;

21
OUTPUT:
LTRIM('hello world','he')
---------------------------------------------
llo world

 RTRIM
DESCRIPTION: Clips of the specified portion from the right side
SYNTAX:
SELECT RTRIM(STRING,SUBSTRING) FROM DUAL;
EXAMPLE:
SQL>SELECT RTRIM('HELLO WORLD','LD') FROM DUAL;
OUTPUT:
RTRIM('HELLO WORLD’,’LD’)
--------------------------------------
hello wor

 INSTR
DESCRIPTION: Returns the position of the sub-string in the given string
SYNTAX:
SELECT INSTR(STRING,SUBSTRING) FROM DUAL;
EXAMPLE:
SQL>SELECT INSTR('HELLO','E') FROM DUAL;
OUTPUT:
INSTR('HELLO','E')
------------------
2

GROUP FUNCTIONS
 AVG
DESCRIPTION: Finds the average of the column
SYNTAX:
SELECT AVG(COLUMN NAME) FROM TABLENAME;
EXAMPLE:
SQL>SELECT AVG(PERCENTAGE) FROM STUDENT;
OUTPUT:
AVG(PERCENTAGE)
---------------
79.3333333

 MIN

22
DESCRIPTION: Finds the minimum of the column
SYNTAX:
SELECT MIN(COLUMN NAME) FROM TABLENAME;
EXAMPLE:
SQL>SELECT MIN(PERCENTAGE) FROM STUDENT
OUTPUT:
MIN(PERCENTAGE)
---------------
56

 MAX
DESCRIPTION: Finds the maximum of the column
SYNTAX:
SELECT MAX(COLUMN NAME) FROM TABLENAME;
EXAMPLE:
SQL>SELECT MAX(PERCENTAGE) FROM STUDENT
OUTPUT:
MAX(PERCENTAGE)
---------------
91

 SUM
DESCRIPTION: Finds the sum of the column
SYNTAX:
SELECT SUM(COLUMN NAME) FROM TABLENAME;
EXAMPLE:
SQL>SELECT SUM(PERCENTAGE) FROM STUDENT;
OUTPUT:
SUM(PERCENTAGE)
---------------
1190

MISCELLANEOUS FUNCTIONS
 NVL
DESCRIPTION: Returns either of the two expressions which is not null
SYNTAX:
SELECT NVL(COLUMN NAME, VALUE TO BE SUBSTITUTED) FROM TABLENAME;
EXAMPLE:
SQL>SELECT SNO,NVL(PERCENTAGE,0) FROM STUDENT;
OUTPUT:
SNO NVL
23
------ --------
1 56
2 59
3 0

 VSIZE
DESCRIPTION: Returns the size of the specified string
SYNTAX:
SELECT VSIZE(EXPRESSION/COLUMN NAME/VALUE) FROM DUAL;
EXAMPLE:
SQL>SELECT VSIZE(34.66) FROM DUAL;
OUTPUT:
VSIZE(34.66)
------------
3

DATE FUNCTIONS
 ADD_MONTHS
DESCRIPTION: Adds the specified number of months to the date given
SYNTAX:
SELECT ADD_MONTHS(‘DATE’, NUMBER) FROM DUAL;
EXAMPLE:
SQL>SELECT ADD_MONTHS('06-JAN-2010',3) FROM DUAL;
OUTPUT:
ADD_MONTH
---------
06-APR-10

 LAST_DAY
DESCRIPTION: Returns the last day of the specified month
SYNTAX:
SELECT LAST_DAY(‘DATE’) FROM DUAL;
EXAMPLE:
SQL>SELECT LAST_DAY('06-JAN-2010') FROM DUAL;
OUTPUT:
LAST_DAY
---------
31-JAN-10

 MONTHS_BETWEEN
DESCRIPTION: Returns the number of months between the dates
SYNTAX:
SELECT MONTHS_BETWEEN(‘DATE1,DATE2) FROM DUAL;
24
EXAMPLE:
SQL>SELECT MONTHS_BETWEEN('05-JAN-2010','05-JAN-2009') FROM
DUAL;

OUTPUT:

MONTHS_BETWEEN('05-JAN-2010','05-JAN-2009')
-------------------------------------------------------------------
12

 SYSDATE
DESCRIPTION: Returns the current date
EXAMPLE:
SQL>SELECT SYSDATE FROM DUAL;
OUTPUT:
SYSDATE
---------
03-FEB-10

 NEXT_DAY
DESCRIPTION: Returns the next date that would fall on the same day
SYNTAX:
SELECT NEXT_DAY(‘DATE’, ‘DAY’) FROM DUAL;
EXAMPLE:
SQL>SELECT NEXT_DAY('05-JAN-2010','MON') FROM DUAL;
OUTPUT:
NEXT_DAY
---------
11-JAN-10

25
26
OUTPUT:

RESULT
The functions in SQL were studied.

27
EX NO :8
DATE :

SQL QUERIES
AIM
To create tables for ‘Employee Database’ and to form and execute simple queries in SQL .

PROBLEM DEFINITION
Create tables for the Employee Database in a company as per the constraints given below

Table: DEPARTMENTS
NAME NULL? TYPE
--------------------- -------- --------------
DEPT_ID NOT NULL NUMBER(3)
DEPT_NAME NOT NULL VARCHAR2(20)
SALARY NUMBER(5)
LOCATION_ID NOT NULL NUMBER(3)

Table: EMPLOYEES
NAME NULL? TYPE
--------------------- -------- --------------
EMP_ID NOT NULL NUMBER(3)
FIRST_NAME NOT NULL VARCHAR2(10)
LAST_NAME VARCHAR2(10)
GENDER NOT NULL VARCHAR2(1)
PHONE_NO VARCHAR2(10)
HIRE_DATE NOT NULL DATE
CITY VARCHAR2(10)
DEPT_ID NOT NULL NUMBER(3)
JOB_ID NOT NULL NUMBER(3)
DESIGNATION VARCHAR2(15)

Table: JOBS
NAME NULL? TYPE
--------------------- -------- --------------
JOB_ID NOT NULL NUMBER(3)
JOB_TITLE VARCHAR2(15)
START_DATE NOT NULL DATE
END_DATE NOT NULL DATE
Table: LOCATION
NAME NULL? TYPE
------------------------------- -------- ----------------------------
LOCATION_ID NOT NULL NUMBER(3)
LOCATION_NAME NOT NULL VARCHAR2(10)
28
CITY VARCHAR2(10)

TABLE CREATION
EMPLOYEES TABLE

SQL>CREATE TABLE EMPLOYEES (EMP_ID NUMBER(3) PRIMARY KEY,


FIRST_NAME VARCHAR2(10) NOT NULL,
LAST_NAME VARCHAR2(10),
GENDER VARCHAR2(1) NOT NULL,
PHONE_NO VARCHAR2(10),
CITY VARCHAR2(10),
DEPT_ID NUMBER (3) NOT NULL,
JOB_ID NUMBER(3) NOT NULL,
DESIGNATION VARCHAR2(15));

Table created.

DEPARTMENTS TABLE

SQL> CREATE TABLE DEPARTMENTS (DEPT_ID NUMBER(3) PRIMARY KEY,


DEPT_NAME VARCHAR2(20) NOT NULL,
SALARY NUMBER(5),
LOCATION_ID NUMBER(3) NOT NULL);

Table created.

JOBS TABLE

SQL> CREATE TABLE JOBS(JOB_ID NUMBER(3) PRIMARY KEY,


JOB_NAME VARCHAR2(15),
START_DATE DATE NOT NULL,
END_DATE DATE NOT NULL);

Table created.

LOCATION TABLE

SQL> CREATE TABLE LOCATIONS(LOCATION_ID NUMBER(3) PRIMARY KEY,


LOCATION_NAME VARCHAR2(10) NOT NULL,
CITY VARCHAR2(10));

29
Table created.

QUERIES
1. List the First names of all the employees.
SQL> SELECT FIRST_NAME FROM EMPLOYEES;

2. Print the entire Employee table.


SQL> SELECT * FROM EMPLOYEES;

3. Retrieve the Dept.name and the maximum salary in each department.


SQL> SELECT DEPT_NAME, MAX_SALARY FROM DEPARTMENTS;

4. List the various jobs positions available in the Company


SQL> SELECT JOB_TITLE FROM JOBS;

5. Find the names of all the clients having ‘a’ as the third letter in their names.
SQL> SELECT FIRST_NAME FROM EMPLOYEES
WHERE FIRST_NAME LIKE '___A%';

6. Find the first names of all the clients whose names start with ‘J’.
SQL> SELECT FIRST_NAME FROM EMPLOYEES
WHERE FIRST_NAME LIKE 'J%';

7. Find the first names of all the departments that end with ‘n’.
SQL> SELECT DEPT_NAME FROM DEPARTMENTS
WHERE DEPT_NAME LIKE'%N';

8. List the emp_id, names and phone numbers of employees who stay either in ‘Bombay’ or
‘Madras’
SQL> SELECT EMP_ID, FIRST_NAME, LAST_NAME FROM EMPLOYEES
WHERE CITY='BOMBAY' OR CITY='MADRAS';

9. Find all the employees whose city names ends with the letter ‘a’ second from the last.
SQL> SELECT EMP_ID, FIRST_NAME, LAST_NAME FROM EMPLOYEES
WHERE CITY LIKE '%A_';

10. Find names and city of the employees who joined in the month of December.
SQL> SELECT EMP_ID,FIRST_NAME,LAST_NAME,CITY
FROM EMPLOYEES
WHERE
TO_CHAR(HIRE_DATE,'MON')=TO_CHAR('AUG');

30
11. Display Employee information as well as Job information for employees with ID 104 and
102
SQL>SELECT EMPLOYEES.FIRST_NAME,EMPLOYEES.LAST_NAME,
EMPLOYEES.DESIGNATION, JOBS.JOB_NAME
FROM EMPLOYEES, JOBS
WHERE EMPLOYEES.JOB_ID=JOBS.JOB_ID
AND (EMPLOYEES.EMP_ID=104
OR EMPLOYEES.EMP_ID=101);

12. Find the first names and hire date of employees with salary greater than 10000.
SQL>SELECT EMPLOYEES.FIRST_NAME, EMPLOYEES.HIRE_DATE,
DEPARTMENTS.SALARY
FROM EMPLOYEES,DEPARTMENTS
WHERE EMPLOYEES.DEPT_ID=DEPARTMENTS.DEPT_ID
AND DEPARTMENTS.SALARY>10000;

13. Find the names and hire date of employees with salary greater than 10000 and less than
40000.
SQL> SELECT EMPLOYEES.FIRST_NAME,
EMPLOYEES.HIRE_DATE, DEPARTMENTS.SALARY
FROM EMPLOYEES, DEPARTMENTS
WHERE EMPLOYEES.DEPT_ID=DEPARTMENTS.DEPT_ID
AND DEPARTMENTS.SALARY > 10000
AND SALARY<40000;

14. List the names of the employees whose salary is less than 20000 and list out the original
salary multiplied by 1.5 under the new heading ‘Hiked_Salary’.
SQL>SELECT EMPLOYEES.FIRST_NAME,
DEPARTMENTS.SALARY,
DEPARTMENTS.SALARY*1.5 HIKED_SALARY
FROM EMPLOYEES, DEPARTMENTS
WHERE EMPLOYEES.DEPT_ID=DEPARTMENTS.DEPT_ID
AND DEPARTMENTS.SALARY<20000;

15. Select first name, last name from employees table and rename the column last name as
‘Surname’.
SQL> SELECT FIRST_NAME, LAST_NAME SURNAME FROM EMPLOYEES;

16. List all the name, hire date, emp_id and salary in descending order of salary.
SQL> SELECT EMPLOYEES.FIRST_NAME,
EMPLOYEES.HIRE_DATE, DEPARTMENTS.SALARY
FROM EMPLOYEES,DEPARTMENTS
WHERE EMPLOYEES.DEPT_ID=DEPARTMENTS.DEPT_ID

31
ORDER BY SALARY DESC;

17. Select the names, city and phone number of the employees who do not live in London.
SQL> SELECT FIRST_NAME, LAST_NAME FROM EMPLOYEES
WHERE CITY <> 'LONDON';
18. Select the names and phone numbers of employees whose city does not begin with the
letter ‘M’.
SQL> SELECT FIRST_NAME, LAST_NAME, CITY FROM EMPLOYEES
WHERE CITY NOT LIKE 'M%';

19. Print the names of all the employees in the following format
EMPLOYEE_DETAILS
-----------------------------------------------------------
EMP_NAME WORKS IN DEPT_NAME
SQL>SELECT CONCAT(CONCAT(FIRST_NAME,' '),
LAST_NAME) ||' WORKS IN ' || CONCAT(DEPT_NAME,' DEPT')
EMPLOYEE_DETAILS
FROM EMPLOYEES, DEPARTMENTS
WHERE EMPLOYEES.DEPT_ID=DEPARTMENTS.DEPT_ID;

Using functions
20. Find out the minimum of the salary.
SQL> SELECT MIN(SALARY) FROM DEPARTMENTS;

21. List all the jobs that were started in the month of August.
SQL> SELECT JOB_ID, JOB_TITLE FROM JOBS
WHERE TO_CHAR(START_DATE,'MON')='AUG';

22. List all the jobs that were finished in the month of April.
SQL> SELECT JOB_ID, JOB_TITLE FROM JOBS
WHERE TO_CHAR(END_DATE,'MON')='APR';

23. Select the names,emp_id,hire_date of the employees who have an experience of two or more
years and display their experience.
SQL> SELECT EMP_ID, FIRST_NAME, LAST_NAME HIRE_DATE,
ROUND((MONTHS_BETWEEN(SYSDATE,HIRE_DATE))/12)
EXPERIENCE FROM EMPLOYEES
WHERE MONTHS_BETWEEN(SYSDATE,HIRE_DATE) >= 24;

24. Select the names of the employees who have worked for not more than three months.
SQL> SELECT EMP_ID, FIRST_NAME, LAST_NAME HIRE_DATE,
ROUND((MONTHS_BETWEEN(SYSDATE,HIRE_DATE))/12)
EXPERIENCE FROM EMPLOYEES
32
WHERE MONTHS_BETWEEN(SYSDATE,HIRE_DATE)<>=3;

25. Calculate the standard deviation of the salaries of the employees.


SQL> SELECT STDDEV(SALARY) FROM DEPARTMENTS;

26. Determine the minimum and maximum salary and rename them as Lowest_Salary and
Highest_Salary.
SQL> SELECT MIN(SALARY) LEAST_SALARY,
MAX(SALARY) HIGHEST_SALARY
FROM DEPARTMENTS;

27. Calculate the number of Employees whose salary is greater than 10000.
SQL> SELECT COUNT(*) FROM EMPLOYEES,DEPARTMENTS
WHERE EMPLOYEES.DEPT_ID=DEPARTMENTS.DEPT_ID
AND SALARY>10000;

28. List the names, Phone number, Email Id of employees who joined in the month of February
and print the sum of all their salaries.
Give each employee an E-mail account. The username should be the employee’s
fullname@companyname.com. Username should be in lower case.
SQL> SELECT FIRST_NAME, LAST_NAME,
LOWER (CONCAT (CONCAT (FIRST_NAME,
LAST_NAME), '@COMPANYNAME.COM')) EMAIL_ID
FROM EMPLOYEES;

29. Find the time taken for each job


SQL>SELECT JOB_ID, JOB_NAME,
ROUND (MONTHS_BETWEEN (END_DATE,
START_DATE)) TIME_TAKEN
FROM JOBS;

30. Find the Job which took least time


SQL> SELECT MIN(ROUND(MONTHS_BETWEEN(END_DATE,START_DATE)))
AS TIME_TAKEN FROM JOBS;

HAVING GROUP BY
31. List the number of departments in each location;

SQL> SELECT LOCATION.LOCATION_ID, COUNT(*)


FROM DEPARTMENTS, LOCATION
WHERE
DEPARTMENTS.LOCATION_ID=LOCATION.LOCATION_ID
GROUP BY(LOCATION.LOCATION_ID);
33
32. Find the number of employees in each dept.

SQL> SELECT DEPT_ID, COUNT(*) AS COUNT


FROM EMPLOYEES GROUP BY DEPT_ID;

33. Find the number of employees working on each job.


SQL> SELECT DEPT_ID, COUNT(*) AS COUNT
FROM EMPLOYEES GROUP BY DEPT_ID;

34. Find the salary disbursed in each department.


SQL> SELECT DEPT_ID, SALARY AS TOTAL_SALARY
FROM DEPARTMENTS GROUP BY DEPT_ID;

35. Find the salary disbursed in departments 201 and 204


SQL> SELECT DEPT_ID,SUM(SALARY)
FROM DEPARTMENTS GROUP BY(DEPT_ID)
HAVING DEPT_ID=201 OR DEPT_ID=204;

JOINS AND CORRELATIONS


36. Print the information of employee name, dept name and job name for all the employees in
the following format.
EMP_NAME DEPT_NAME JOB_NAME SALARY
SQL> SELECT FIRST_NAME EMP_NAME, DEPT_NAME,JOB_NAME
FROM EMPLOYEES,JOBS,DEPARTMENTS
WHERE EMPLOYEES.DEPT_ID=DEPARTMENTS.DEPT_ID
AND EMPLOYEES.JOB_ID=JOBS.JOB_ID;

37. Select the names of the employees who live in the city MADRAS and who work in
production department
SQL>SELECT FIRST_NAME, CITY
FROM EMPLOYEES,DEPARTMENTS
WHERE CITY='MADRAS'
AND DEPT_NAME='PRODUCTION’;

NESTED QUERIES
38. Find out the Job id and job name done by “THOMAS”
SQL> SELECT JOB_ID,JOB_NAME FROM JOBS
WHERE JOB_ID
IN(SELECT JOB_ID

34
FROM EMPLOYEES WHERE FIRST_NAME='THOMAS');
(OR)
SQL> SELECT FIRST_NAME,JOBS.JOB_ID,JOB_NAME
FROM JOBS,EMPLOYEES
WHERE JOBS.JOB_ID = EMPLOYEES.JOB_ID
AND FIRST_NAME='THOMAS';

39. Select the names of employees who have worked on a job for more than 12 months
SQL>SELECT FIRST_NAME FROM EMPLOYEES
WHERE EMPLOYEES.JOB_ID
IN(SELECT JOB_ID FROM JOBS
WHERE ROUND
(MONTHS_BETWEEN(END_DATE,START_DATE))>120);

40. Select the names of employees or names of locations whose city is Madras
SQL> SELECT FIRST_NAME FROM EMPLOYEES
WHERE EMPLOYEES.CITY='MADRAS'
UNION
SELECT LOCATION_NAME FROM LOCATION
WHERE CITY='MADRAS';

OUTPUT:

35
RESULT
The Employee database was created successfully as per the constraints given and simple
queries were studied and executed.

36
EX NO :9
DATE :

PL/SQL PROCEDURES
AIM
To use the High-level programming language extensions control structures and procedures
using PL/SQL
PROBLEM DEFINITION

Create a table for the Student database as per the constraints given below

Table: STUDENT
NAME NULL? TYPE
-------------- -------- ----------
REG_NO NOT NULL NUMBER(3)
NAME NOT NULL VARCHAR2(10)
MK1 NUMBER(3)
MK2 NUMBER(3)
MK3 NUMBER(3)
TOTAL NUMBER(3)
PER CENTAGE NUMBER(5,2)
RESULT VARCHAR2(5)

1. Insert into the table the register no,name and marks in three subjects for ten students.

2. Calculate the total marks, percentage and result of the student using PL/SQL stored

procedures.

TABLE CREATION
STUDENT TABLE

SQL> CREATE TABLE STUDENT(REG_NO NUMBER(3) PRIMARY KEY,


NAME VARCHAR2(10) NOT NULL,
MK1 NUMBER(3), MK2 NUMBER(3),
MK3 NUMBER(3), TOTAL NUMBER(3),
PERCENTAGE NUMBER(5,2), RESULT VARCHAR2(5));

37
Table created.

PL/SQL PROCEDURE TO COMPUTE THE RESULT


CREATE OR REPLACE PROCEDURE CALCULATE_RESULT(REG NUMBER)

AS

M1 STUDENT.MK1%TYPE;

M2 STUDENT.MK2%TYPE;

M3 STUDENT.MK3%TYPE;

BEGIN

SELECT MK1,MK2,MK3 INTO M1,M2,M3 FROM STUDENT WHERE REG_NO=REG;

UPDATE STUDENT SET TOTAL = MK1+MK2+MK3 WHERE REG_NO=REG;

UPDATE STUDENT SET PERCENTAGE = TOTAL/3.0 WHERE REG_NO=REG;

IF (M1 > 50) AND (M2 > 50) AND (M3 >50) THEN

UPDATE STUDENT SET RESULT='PASS' WHERE REG_NO = REG;

ELSE

UPDATE STUDENT SET RESULT='FAIL' WHERE REG_NO = REG;

END IF;

END;

OUTPUT:
38
RESULT
The STUDENT table was created as per the constraints given and high level programming
language extensions procedures and control constructs were used to compute the grade of the
students was created and executed successfully using PL/SQL.

39
EX NO : 10
DATE :

PL/SQL CURSORS
AIM
To use the High-level programming language extension ‘CURSORS’ using PL/SQL.
PROBLEM DEFINITION

Create a table ‘PAYROLL’ as per the constraints given below

Table: PAYROLL
NAME NULL? TYPE
-------------- -------- ----------
ID NOT NULL NUMBER(3)
NAME VARCHAR2(10)
BASIC_PAY NUMBER
HRA NUMBER
DA NUMBER
ALLOWANCES NUMBER
DEDUCTIONS NUMBER
GROSS_PAY NUMBER
NET_PAY NUMBER

TABLE CREATION
PAYROLL TABLE

SQL>CREATE TABLE PAYROLL(ID NUMBER(3) PRIMARY KEY,


NAME VARCHAR2(10), BASIC_PAY NUMBER,
HRA NUMBER, DA NUMBER, ALLOWANCES NUMBER,
DEDUCTIONS NUMBER, GROSS_PAY NUMBER,
NET_PAY NUMBER);

Table created.

40
PL/SQL PROCEDURE USING CURSOR TO COMPUTE THE SALARY
CREATE OR REPLACE PROCEDURE CALCULATE_SALARY AS

C1_ID PAYROLL.ID%TYPE;

C1_NAME PAYROLL.NAME%TYPE;

C1_BASIC_PAY PAYROLL.BASIC_PAY%TYPE;

C1_HRA PAYROLL.HRA%TYPE;

C1_DA PAYROLL.DA%TYPE;

C1_ALLOWANCES PAYROLL.ALLOWANCES%TYPE;

C1_DEDUCTIONS PAYROLL.DEDUCTIONS%TYPE;

C1_GROSS_PAY PAYROLL.GROSS_PAY%TYPE;

C1_NET_PAY PAYROLL.NET_PAY%TYPE;

CURSOR C1 IS

SELECT ID, NAME, BASIC_PAY,HRA,DA,ALLOWANCES,DEDUCTIONS FROM PAYROLL;

BEGIN

DBMS_OUTPUT.ENABLE(1000000);

OPEN C1;

DBMS_OUTPUT.PUT_LINE('--------------------------------------------------');

DBMS_OUTPUT.PUT_LINE('ID-----NAME-----GROSS_PAY----------NET_PAY--------');

DBMS_OUTPUT.PUT_LINE('--------------------------------------------------');

LOOP

FETCH C1 INTO
C1_ID,C1_NAME,C1_BASIC_PAY,C1_HRA,C1_DA,C1_ALLOWANCES,C1_DEDUCTIONS;

EXIT WHEN C1%NOTFOUND;

C1_GROSS_PAY:= C1_BASIC_PAY + C1_HRA + C1_BASIC_PAY * C1_DA / 100 +


C1_ALLOWANCES;

C1_NET_PAY:= C1_GROSS_PAY - C1_DEDUCTIONS;

DBMS_OUTPUT.PUT_LINE(C1_ID||' '||C1_NAME||' '||C1_GROSS_PAY||'


'||C1_NET_PAY);

41
END LOOP;

CLOSE C1;

END;

EXECUTING THE CURSOR


SQL> EXEC CALCULATE_SALARY;

----------------------------------------------------------------------
ID------------------NAME-----------GROSS_PAY-----NET_PAY
-----------------------------------------------------------------------
101 JOEL 20060 17860
102 JOHN 25500 23000
103 JOSH 34050 33600
104 JINK 44200 40800

PL/SQL procedure successfully completed.

42
RESULT
The high level programming language extension ‘CURSORS’ using PL/SQL was created and
executed successfully to calculate the salary of the employees from the PAYROLL table created as
per the constraints given.

43
EX NO : 11
DATE :

FUNCTION TO SEARCH AN ADDRESS


AIM :
To use a high-level programming language extension to create a function to search an address.

TABLE CREATION

SQL> CREATE TABLE PHONEBOOK(


PHONE_NO NUMBER(10) PRIMARY KEY,
CUST_NAME VARCHAR2(10) NOT NULL,
DOORNO VARCHAR2(5),
STREET VARCHAR2(10),
CITY VARCHAR2(10)
);
FUNCTION TO SEARCH AN ADDRESS

CREATE OR REPLACE FUNCTION FINDADDRESS(PHONE IN NUMBER)

RETURN VARCHAR2

IS

ADDRESS VARCHAR2(100);

BEGIN

SELECT CUST_NAME||', '||DOORNO||', '||STREET||', '||CITY INTO ADDRESS FROM PHONEBOOK


WHERE PHONE_NO=PHONE;

DBMS_OUTPUT.PUT_LINE('');

DBMS_OUTPUT.PUT_LINE('');

DBMS_OUTPUT.PUT_LINE('THE ADDRESS FOR THE GIVEN PHONE NUMBER: '||PHONE||' IS ');

RETURN ADDRESS;

EXCEPTION

WHEN NO_DATA_FOUND THEN

44
RETURN 'GIVEN PHONE NUMBER: '||PHONE||' NOT FOUND';

END;

TO EXECUTE THE FUNCTION

SQL> SET SERVEROUTPUT ON

SQL> DECLARE

2 ADD VARCHAR2(100);

3 BEGIN

4 ADD:=FINDADDRESS(473643);

5 DBMS_OUTPUT.PUT_LINE(ADD);

6 END;

7 /

OUTPUT

THE ADDRESS FOR THE GIVEN PHONE NUMBER: 473643 IS

DEEPA, 78, NORTHST, CHENNAI

PL/SQL procedure successfully completed.

45
RESULT:

The high level programming language extension to search an address using PL/SQL was
created and executed successfully to calculate the address of the given phone number from the
PHONEBOOK table created as per the constraints given.

46
EX NO : 12
DATE :

TRIGGERS – INSERT & DELETE TRIGGER


AIM
To use high-level programming language extension to create INSERT and DELETE triggers
using PL/SQL.

DESCRIPTION
Triggers are used to fire events automatically when insert, or update or delete etc is
performed on a relation. Triggers can be fired either before insert or after insert or before
update or after update or to force some constraints.

INSERT TRIGGER

CREATE OR REPLACE TRIGGER INSERT_TRIGGER BEFORE INSERT ON EMPLOYEES


BEGIN
RAISE_APPLICATION_ERROR(-20001,'ACCESS DENIED TODAY');
END;

Note:
The insert trigger created above prevents any new row being added to the Employees table
and raises an error if insertion is attempted
Example
SQL> INSERT INTO EMPLOYEES VALUES(106,'JOEL',THOMAS',M','56262562','15-JAN-
01','ZION',205,309,'M
ANGER');
Error Message:
INSERT INTO EMPLOYEES VALUES(106,'JOEL','THOMAS','M','56262562','15-JAN-
01','TRICHY',205,309,'MANGER
*
ERROR at line 1:
ORA-20001: ACCESS DENIED TODAY
ORA-06512: at "2ITB10.INSERT_TRIGGER", line 2
ORA-04088: error during execution of trigger '2ITB10.INSERT_TRIGGER'

47
DELETE TRIGGER

CREATE OR REPLACE TRIGGER DELETE_TRIGGER BEFORE DELETE ON EMPLOYEES


BEGIN
RAISE_APPLICATION_ERROR(-20001,'INSUFFICIENT PRIVILEGES TO DELETE RECORDS');
END;
Note:
The delete trigger created above prevents any deletion of rows from the Employees
database and displays an error message if deletion is attempted.
Example
SQL> DELETE FROM EMPLOYEES WHERE EMP_ID=102;

DELETE FROM EMPLOYEES WHERE EMP_ID=102

Error Message
ERROR at line 1:

ORA-20001: INSUFFICIENT PRIVILEGES TO DELETE RECORDS

ORA-06512: at "2ITB10.DELETE_TRIGGER", line 2

ORA-04088: error during execution of trigger '2ITB10.DELETE_TRIGGER'

48
RESULT

The high level programming language extension to create INSERT and DELETE triggerS
using PL/SQL was successfully done.

49
EX NO : 13
DATE :

TRIGGERS – UPDATE TRIGGER


AIM
To use high-level programming language extension to create UPDATE triggers using
PL/SQL.

UPDATE TRIGGER WITHOUT CONDITION

CREATE OR REPLACE TRIGGER UPDATE_TRIGGER BEFORE UPDATE ON JOBS


BEGIN
RAISE_APPLICATION_ERROR(-20001,'INSUFFICIENT PRIVILEGES TO UPDATE THIS
TABLE');
END;
Note:
The update trigger created above prevents any updates to the Jobs table and raises an error
if an Update is attempted
Example
SQL> UPDATE JOBS SET JOB_TITLE='DESIGN' WHERE JOB_ID=101;
UPDATE JOBS SET JOB_TITLE='DESIGH' WHERE JOB_ID=101
*
Error Message
ERROR at line 1:
ORA-20001: INSUFFICIENT PRIVILEGES TO UPDATE THIS TABLE
ORA-06512: at "2ITB10.UPDATE_TRIGGER", line 2
ORA-04088: error during execution of trigger '2ITB10.UPDATE_TRIGGER'

50
UPDATE TRIGGER WITH CONDITION

CREATE OR REPLACE TRIGGER CHECK_TRIGGER BEFORE INSERT OR UPDATE


OF SALARY ON DEPARTMENTS
FOR EACH ROW
DECLARE
MSG VARCHAR2(100);
BEGIN
IF :NEW.SALARY > 25000
THEN
MSG := :OLD.DEPT_NAME || ' dept CANNOT HAVE THIS MUCH SLARY';
RAISE_APPLICATION_ERROR(-20999,MSG);
END IF;
END;

Note:
The update trigger created above prevents any updates to the Departments table based on
the constraint that the value of salary should not be >25000 and raises an error if a value
greater than 25000 is set for any row.
Example
SQL> UPDATE DEPARTMENTS SET SALARY=25000 WHERE DEPT_ID=203;
UPDATE DEPARTMENTS SET SALARY=25000 WHERE DEPT_ID=203
*
Error Message
ERROR at line 1:
ORA-20999: DESIGNdept CANNOT HAVE THIS MUCH SALARY
ORA-06512: at "2ITB10.CHECK_TRIGGER", line 7
ORA-04088: error during execution of trigger '2ITB10.CHECK_TRIGGER'
OUTPUT :

51
52
RESULT :
The high level programming language extension to create the trigger using PL/SQL was
successfully done.

53
EX NO : 14
DATE :

REPORT GENERATION USING SCRIPT


AIM :
To use the high level programming language extension to create a report using script .

PROBLEM DEFINITION:

Create a table ‘EMPLOYEE’ as per the constaints given below.

TABLE : EMPLOYEE
NAME NULL? TYPE

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

ENO NOT NULL NUMBER(2)

NAME NOT NULL VARCHAR2(10)

ADDRESS VARCHAR2(30)

PHONE VARCHAR2(10)

DEPT_NO VARCHAR2(3)

SALARY NUMBER(6)

TABLE CREATION :
EMPLOYEE TABLE

SQL> CREATE TABLE EMPLOYEE(ENO NUMBER(2) PRIMARY KEY,NAME


VARCHAR2(10) NOT NULL, ADDRESS VARCHAR2(30), PHONE VARCHAR2(10),
DEPT_NO VARCHAR2(3), SALARY NUMBER(6));

Table created.

PROCEDURE

1. Type report.sql at the SQL prompt. If there is a warning “No such file exists. Create it?” Click
Yes
2. Type the script given under report generation in the following section.
3. Save and exit from notepad.
4. To run the report, type @report.sql in the SQL prompt.

54
REPORT USING SCRIPT

SPOOL TEMP
CLEAR COLUMNS
CLEAR BREAKS
CLEAR COMPUTES

COLUMN DEPT_NO FORMAT A7


COLUMN ENO HEADING EMPLOYEE_NO
COLUMN NAME FORMAT A15 HEADING 'EMPLOYEE NAME'
COLUMN SALARY FORMAT $99,999 HEADING 'MONTHLY SALARY'

BREAK ON DEPT_NO SKIP 3 ON REPORT


COMPUTE SUM AVG OF SALARY ON DEPT_NO
COMPUTE count OF ENO ON REPORT

SET PAGESIZE 40
SET LINESIZE 100
SET NEWPAGE 0

TTITLE 'USING ORACLE REPORTS' SKIP 3 LEFT 'EMPLOYEE REPORT' RIGHT 'PAGE: ' FORMAT 99
SQL.PNO

SELECT DEPT_NO,ENO,NAME,ADDRESS,PHONE,SALARY FROM EMPLOYEE ORDER BY DEPT_NO


/

55
OUTPUT :

USING ORACLE REPORTS

EMPLOYEE REPORT PAGE: 1

DEPT_NO EMPLOYEE_NO EMPLOYEE NAME ADDRESS PHONE MONTHLY SALARY

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

201 101 MATHEW TRICHY 867831 $50,000

********** --------------

avg $50,000

sum $50,000

202 102 MARK MADURAI 3463723 $56,000

********** --------------

avg $56,000

sum $56,000

203 103 LUKE CHENNAI 3847532 $34,300

********** --------------

avg $34,300

sum $34,300

-----------

count 3

TO EXECUTE THE REPORT

SQL>@REPORT.SQL

RESULT: The high level programming extension to create a report using script is executed
successfully

56
EX NO : 15
DATE :

REPORT GENERATION USING HTML


AIM :
To use high level programming language extensions to create a report using HTML.

PROCEDURE

1. Type htmlreport.sql at the SQL prompt. If there is a warning “No such file exists. Create it?”
Click Yes
2. Type the script given under report generation in the following section.
3. Save and exit from notepad.
4. To run the report, type @htmlreport.sql in the SQL prompt.
5. The HTML report will be created and stored in the “BIN” folder of your oracle installation
location. To view the report, go to the bin location and double click the file named
“MYREPORT.HTML” (the name given in the report).

REPORT GENERATION

--sets the markup language to html and also sets spool to ON


SET MARKUP HTML ON SPOOL ON

-- sets the name of the spooled file to ‘MYREPORT.HTML’


SPOOL MYREPORT.HTML

-- Stops the html tags from being displayed in the terminal


SET TERMOUT OFF

SELECT * FROM STUDENT

SPOOL OFF

SET MARKUP HTML OFF

57
OUTPUT :

Emp_id First_name Last_name Gender Phone Hire_date Dept_id


101 Joel Daniel M 12345 16-dec-12 201
102 Jacob Jones M 67890 02-nov-12 205
103 John Nelson M 904746 23-jan-12 202
104 Mark Twain M 13579 09-feb-12 208
105 Thomas Andrew M 24680 20-jul-12 210

5 rows selected.

RESULT

The high level programming extension to create a HTML report in ORACLE was executed

successfully.

58
EX NO : 16
DATE : 11-06-2021

PERSONAL INFORMATION MANAGEMENT


SYSTEM

AIM

To create software solution for Personal Information management using Firebase DB as the
Back end and Android Studio as the front end.

PROBLEM DEFINITION

 The main objective of developing this system is to have a feasible and quality time table.
 Another objective is to make the system user-friendly and easy to maintain.
 The system produced should be flexible enough that it can be modified in future to
address any form of constraints in real time phenomenon.
 This is to ensure robustness of system and provide a feasible solution to any big
problem.

DATABASE:

STAFF:

59
STUDENT:

MAIN CODE:

<?xml version="1.0" encoding="utf-8"?>

60
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity"

android:background="#2D2F3C">

<TextView

android:layout_above="@+id/splash_img"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:textColor="@color/white"

android:textSize="26sp"

android:fontFamily="@font/poppins_regular"

android:textStyle="bold"

android:text="INFOSTACK"

/>

<com.airbnb.lottie.LottieAnimationView

61
android:id="@+id/splash_img"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

app:lottie_rawRes="@raw/splash"

app:lottie_loop="true"

app:lottie_autoPlay="true"

android:layout_centerInParent="true"

/>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:layout_alignParentBottom="true"

android:layout_marginBottom="20dp"

android:textColor="@color/white"

android:textSize="20sp"

android:textStyle="italic"

android:text="POWERED BY LEFTCORNERZ"/>

</RelativeLayout>

62
63
64
RESULT:

The mini project aimed at creating a software solution for managing a personal
information management system was successfully done using Android Studio and Firebase
DB as per the constraints given.

65

You might also like