0% found this document useful (0 votes)
35 views

DBMS Lab Record

The document demonstrates various SQL commands like DDL, DML, DCL using examples of a Students table. It shows how to create, insert, select, update tables and add/drop columns. Basic queries like filters, sorting, joins are presented. Key constraints are also introduced.

Uploaded by

roshni nekkanti
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
35 views

DBMS Lab Record

The document demonstrates various SQL commands like DDL, DML, DCL using examples of a Students table. It shows how to create, insert, select, update tables and add/drop columns. Basic queries like filters, sorting, joins are presented. Key constraints are also introduced.

Uploaded by

roshni nekkanti
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 40

II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd.

No: 22B01A4501

Experiment 1
Working with ER Diagrams
Aim: To showcase the functionality of the ER (Entity-Relationship) model in SQL, with
Sailors & Boats case study as an example.
Program:
Sailors table:
CREATE TABLE Sailors ( sid INTEGER PRIMARY KEY, sname VARCHAR(255), rating
INTEGER CHECK (rating <= 10), age REAL
Boats table:
CREATE TABLE Boats( Bid INT, Bname VARCHAR(50), Color VARCHAR(50) )
Reserves tables:
CREATE TABLE Reserves( Sid INT, Bid INT, Days DATE )

INSERT INTO Sailors(Sid,Sname,Rating,Age) VALUES(101,'Godavari',8,17)


INSERT INTO Sailors(Sid,Sname,Rating,Age) VALUES(100,'Suma',7,18)
INSERT INTO Sailors(Sid,Sname,Rating,Age) VALUES(103,'Haritha',8,18)
INSERT INTO Sailors(Sid,Sname,Rating,Age) VALUES(104,'Sneha',7,19)
INSERT INTO Sailors(Sid,Sname,Rating,Age) VALUES(105,'Lohitha',10,19)

INSERT INTO Boats(Bid,Bname,Color) VALUES(12,'AA','red')


INSERT INTO Boats(Bid,Bname,Color) VALUES(13,'BB','green')
INSERT INTO Boats(Bid,Bname,Color) VALUES(14,'CC','red')
INSERT INTO Boats(Bid,Bname,Color) VALUES(2,'DD','blue')
INSERT INTO Boats(Bid,Bname,Color) VALUES(1,'EE','blue')

INSERT INTO Reserves(Sid,Bid,Days) VALUES(100,12,TO_DATE('2023-06-1','YYYY-


MM-DD'))
INSERT INTO Reserves(Sid,Bid,Days) VALUES(102,14,TO_DATE('2023-04-1','YYYY-
MM-DD'))
INSERT INTO Reserves(Sid,Bid,Days) VALUES(108,1,TO_DATE('2023-07-1','YYYY-
MM-DD'))
INSERT INTO Reserves(Sid,Bid,Days) VALUES(104,5,TO_DATE('2023-08-1','YYYY-
MM-DD'))
INSERT INTO Reserves(Sid,Bid,Days) VALUES(109,9,TO_DATE('2023-09-1','YYYY-
MM-DD'))
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

Queries:
SELECT AVG(Age) FROM Sailors WHERE Rating=10
OUTPUT:

AVG(AGE)
19
SELECT Sname, Age FROM Sailors WHERE Age = (SELECT MAX(Age) FROM Sailors)
OUTPUT:

SNAME AGE
Sneha 19
Lohitha 19

SELECT Sname FROM Sailors WHERE Rating = (SELECT MAX(Rating) FROM Sailors)
OUTPUT:

SNAME
Lohitha

SELECT Sname FROM Sailors WHERE Age > (SELECT MAX(Age) FROM Sailors
WHERE Rating=10)
OUTPUT:
no data found

SELECT MIN(Age), Rating FROM Sailors WHERE Age IN (SELECT Age FROM Sailors
WHERE Age>=18) GROUP BY Rating
OUTPUT:

MIN(AGE) RATING
18 7
18 8
19 10

SELECT Sname FROM Sailors JOIN Reserves ON Sailors.Sid=Reserves.Sid AND Bid=12


OUTPUT:

SNAME
Suma
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

SELECT Sname FROM Sailors WHERE Sid IN (SELECT Sid FROM Reserves WHERE
Bid IN (SELECT Bid FROM Boats WHERE Color='red' OR Color='green'))
OUTPUT:

SNAME
Suma

SELECT Color FROM Boats WHERE Bid IN (SELECT Bid FROM Reserves WHERE Sid
IN(SELECT Sid FROM Sailors WHERE Sname='Suma'))
OUTPUT:

COLOR
red

SELECT Sid FROM Sailors WHERE Age>10 AND Sid NOT IN (SELECT Sid FROM
Reserves)
OUTPUT:

SID
105
101
103

SELECT Sname FROM Sailors


OUTPUT:
SNAME
Godavari
Suma
Haritha
Sneha
Lohitha

Result: Hence ER Model of Sailors & Boats database is demonstrated in SQL


II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

Experiment 2

Working with DDL, DML, DCL and Key Constraints

Aim: To demonstrate various types of SQL commands & constraints in a database

Program:

TABLE CREATION:

CREATE TABLE Students (


StudentID INT PRIMARY KEY,
Name VARCHAR(255),
Age INT,
Grade INT
);

INSERTION OF VALUES INTO TABLE:

INSERT INTO Students (StudentID, Name, Age, Grade) VALUES (101, 'John Doe', 18, 12);
INSERT INTO Students (StudentID, Name, Age, Grade) VALUES (102, 'Jane Smith', 17,
11);
INSERT INTO Students (StudentID, Name, Age, Grade) VALUES (103, 'Mike Brown', 16,
10);
INSERT INTO Students (StudentID, Name, Age, Grade) VALUES (104, 'Sarah Lee', 18, 12);
INSERT INTO Students (StudentID, Name, Age, Grade) VALUES (105, 'Alex Wang', 17,
11);

SELECT COMMANDS:

SELECT * FROM Students;

OUTPUT:
STUDENTID NAME AGE GRADE
101 John Doe 18 12
102 Jane Smith 17 11
103 Mike Brown 16 10
104 Sarah Lee 18 12
105 Alex Wang 17 11

SELECT StudentID, Name, Age, Grade FROM Students;

OUTPUT:

STUDENTID NAME AGE GRADE


101 John Doe 18 12
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

102 Jane Smith 17 11


103 Mike Brown 16 10
104 Sarah Lee 18 12
105 Alex Wang 17 11

SELECT * FROM Students WHERE Grade = 11;

OUTPUT:

STUDENTID NAME AGE GRADE


102 Jane Smith 17 11
105 Alex Wang 17 11

SELECT * FROM Students WHERE Age > 17;

OUTPUT:

STUDENTID NAME AGE GRADE


101 John Doe 18 12
104 Sarah Lee 18 12

SELECT * FROM Students WHERE Name LIKE ‘%John%';

OUTPUT:

STUDENTID NAME AGE GRADE


101 John Doe 18 12

SELECT * FROM Students ORDER BY Age DESC;

OUTPUT:

STUDENTID NAME AGE GRADE


101 John Doe 18 12
104 Sarah Lee 18 12
102 Jane Smith 17 11
105 Alex Wang 17 11
103 Mike Brown 16 10

ALTER

ALTER TABLE Students


ADD Email VARCHAR(255);
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

ALTER TABLE Students


MODIFY Age DECIMAL(5,2);

OUTPUT:

ALTER TABLE Students


DROP COLUMN Email;

OUTPUT:

UPDATE Students
SET Email = '[email protected]'
WHERE StudentID = 101;

OUTPUT:

SELECT * FROM Students;

OUTPUT:
STUDENTID NAME CLASS AGE EMAIL
101 John Doe 12 18 [email protected]
102 Jane Smith 11 17 -
103 Mike Brown 10 16 -
104 Sarah Lee 12 18 -
105 Alex Wang 11 17 -

ALTER TABLE Students


DROP COLUMN Email;

OUTPUT:

SELECT * FROM Students;

OUTPUT:
STUDENTID NAME CLASS AGE
101 John Doe 12 18
102 Jane Smith 11 17
103 Mike Brown 10 16
104 Sarah Lee 12 18
105 Alex Wang 11 17
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

JOINS

CREATE TABLE employees (


employee_id INT PRIMARY KEY,
employee_name VARCHAR(255),
job_title VARCHAR(255),
department_id INT,
salary DECIMAL(10, 2)
);

INSERT INTO employees VALUES (1, 'John Doe', 'Software Engineer', 1, 75000.00);
INSERT INTO employees VALUES (2, 'Jane Smith', 'HR Specialist', 2, 60000.00);
INSERT INTO employees VALUES (3, 'Bob Johnson', 'Sales Manager', 3, 80000.00);
INSERT INTO employees VALUES (4, 'Alice White', 'Data Analyst', 1, 65000.00);
INSERT INTO employees VALUES (5, 'Charlie Brown', 'Software Engineer', 2, 70000.00);
INSERT INTO employees VALUES (6, 'Eva Green', 'HR Manager', 3, 85000.00);
INSERT INTO employees VALUES (7, 'David Lee', 'Sales Representative', 1, 60000.00);
INSERT INTO employees VALUES (8, 'Sophie Turner', 'Software Engineer', 2, 72000.00);
INSERT INTO employees VALUES (9, 'Michael Scott', 'Office Manager', 3, 78000.00);
INSERT INTO employees VALUES (10, 'Pam Beesly', 'Sales Representative', 1, 62000.00);

CREATE TABLE departments (


department_id INT PRIMARY KEY,
department_name VARCHAR(255)
);

INSERT INTO departments VALUES (1, 'Engineering');


INSERT INTO departments VALUES (2, 'Human Resources');
INSERT INTO departments VALUES (3, 'Sales');

Inner Join
SELECT employees.employee_id, employee_name, job_title, salary, department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.department_id;

OUTPUT:

EMPLOYEE_ID EMPLOYEE_NA JOB_TITLE SALARY DEPARTMENT_NA


ME ME
1 John Doe Software Engineer 75000 Engineering
2 Jane Smith HR Specialist 60000 Human Resources
3 Bob Johnson Sales Manager 80000 Sales
4 Alice White Data Analyst 65000 Engineering
5 Charlie Brown Software Engineer 70000 Human Resources
6 Eva Green HR Manager 85000 Sales
7 David Lee Sales Representative 60000 Engineering
8 Sophie Turner Software Engineer 72000 Human Resources
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

9 Michael Scott Office Manager 78000 Sales


10 Pam Beesly Sales Representative 62000 Engineering

Left Join
SELECT employees.employee_id, employee_name, job_title, salary, department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.department_id;

OUTPUT:

EMPLOYEE_ID EMPLOYEE_NA JOB_TITLE SALARY DEPARTMENT_NA


ME ME
1 John Doe Software Engineer 75000 Engineering
4 Alice White Data Analyst 65000 Engineering
7 David Lee Sales Representative 60000 Engineering
10 Pam Beesly Sales Representative 62000 Engineering
2 Jane Smith HR Specialist 60000 Human Resources
5 Charlie Brown Software Engineer 70000 Human Resources
8 Sophie Turner Software Engineer 72000 Human Resources
3 Bob Johnson Sales Manager 80000 Sales
6 Eva Green HR Manager 85000 Sales
9 Michael Scott Office Manager 78000 Sales

SELECT employees.employee_id, employee_name, job_title, salary, department_name


FROM employees
RIGHT JOIN departments ON employees.department_id = departments.department_id;

OUTPUT:

EMPLOYEE_ID EMPLOYEE_NA JOB_TITLE SALARY DEPARTMENT_NA


ME ME
1 John Doe Software Engineer 75000 Engineering
2 Jane Smith HR Specialist 60000 Human Resources
3 Bob Johnson Sales Manager 80000 Sales
4 Alice White Data Analyst 65000 Engineering
5 Charlie Brown Software Engineer 70000 Human Resources
6 Eva Green HR Manager 85000 Sales
7 David Lee Sales Representative 60000 Engineering
8 Sophie Turner Software Engineer 72000 Human Resources
9 Michael Scott Office Manager 78000 Sales
10 Pam Beesly Sales Representative 62000 Engineering

Full Outer Join


SELECT employees.employee_id, employee_name, job_title, salary, department_name
FROM employees
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

FULL OUTER JOIN departments ON employees.department_id =


departments.department_id;

OUTPUT:

EMPLOYEE_ID EMPLOYEE_NA JOB_TITLE SALARY DEPARTMENT_NA


ME ME
1 John Doe Software Engineer 75000 Engineering
2 Jane Smith HR Specialist 60000 Human Resources
3 Bob Johnson Sales Manager 80000 Sales
4 Alice White Data Analyst 65000 Engineering
5 Charlie Brown Software Engineer 70000 Human Resources
6 Eva Green HR Manager 85000 Sales
7 David Lee Sales Representative 60000 Engineering
8 Sophie Turner Software Engineer 72000 Human Resources
9 Michael Scott Office Manager 78000 Sales
10 Pam Beesly Sales Representative 62000 Engineering

Result: Various SQL commands and constraints were demonstrated in a SQL platform
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

Experiment 3

Working with Queries and Nested Queries

Aim: To explore the functionality of various SQL set operators and comparison operators
including UNION, INTERSECT, MINUS, ANY, ALL, IN, EXISTS, and NOT EXISTS,
through the implementation of SQL queries with subqueries.

Program

CREATE TABLE employees ( emp_id INT PRIMARY KEY, emp_name VARCHAR(50),


department_id INT
);
OUTPUT:
Table created.
CREATE TABLE departments ( department_id INT PRIMARY KEY,
department_nameVARCHAR(50) );
OUTPUT:
Table created.
INSERT INTO employees VALUES (1, 'John Doe', 1);
INSERT INTO employees VALUES (2, 'Jane Smith', 2);
INSERT INTO employees VALUES (3, 'Bob Johnson',
1);INSERT INTO employees VALUES (4, 'Alice Brown',
2);

OUTPUT:
1 row(s) inserted.
1 row(s) inserted.
1 row(s) inserted.
1 row(s) inserted.
SELECT * FROM employees
OUTPUT:

EMP_ID EMP_NAME DEPARTMENT_ID


1 John Doe 1
2 Jane Smith 2
3 Bob Johnson 1
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

4 Alice Brown 2

INSERT INTO departments VALUES (1,


'HR');INSERT INTO departments
VALUES (2, 'IT');

OUTPUT:
1 row(s) inserted.
1 row(s) inserted.
SELECT * FROM departments
OUTPUT:

DEPARTMENT_ID DEPARTMENT_NAME
1 HR
2 IT

SELECT emp_name FROM employees WHERE department_id = 1 UNION SELECT


emp_nameFROM employees WHERE department_id = 2;

OUTPUT:

EMP_NAME

Alice Brown
Bob Johnson
Jane Smith

SELECT emp_name FROM employees WHERE department_id = 1 INTERSECT


SELECTemp_name
FROM employees WHERE department_id = 2;
OUTPUT:
no data found
SELECT emp_name FROM employees WHERE department_id = 1 MINUS SELECT
emp_nameFROM employees WHERE department_id = 2;
OUTPUT:

EMP_NAME

Bob Johnson
John Doe
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

SELECT emp_name FROM employees WHERE department_id > ANY (SELECT


department_idFROM departments WHERE department_name = 'IT');
OUTPUT:
no data found
SELECT emp_name FROM employees WHERE department_id IN (SELECT
department_idFROM departments WHERE department_name IN ('HR', 'IT'));
OUTPUT:

EMP_NAME

John Doe
Jane Smith
Bob Johnson
Alice Brown

SELECT emp_name FROM employees WHERE EXISTS (SELECT 1 FROM


departmentsWHERE department_id = employees.department_id AND department_name =
'IT');
OUTPUT:

EMP_NAME

Jane Smith
Alice Brown

SELECT emp_name FROM employees WHERE NOT EXISTS (SELECT 1FROM departments
WHERE department_name = 'Sales');
OUTPUT:

EMP_NAME

John Doe
Jane Smith
Bob Johnson
Alice Brown

Result: The functionality of various SQL set operators and comparison operators are verified
through the implementation of SQL queries with subqueries.
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

Experiment 4

Working with Queries using Aggregate Operators & Views

Aim: To demonstrate SQL Queries using Aggregate Operators like COUNT, SUM, AVG,
MAX and MIN in a database

Program:

CREATE TABLE sample_data(


id INT PRIMARY KEY,
name VARCHAR(50),
category VARCHAR(50),
quantity INT,
price DECIMAL(10,2)

OUTPUT:
Table created.

INSERT INTO sample_data VALUES(1,'Product A','Electronics',10,100.00)

OUTPUT:
1 row(s) inserted.

INSERT INTO sample_data VALUES(2,'Product B','Clothing',20,50.00)

OUTPUT:
1 row(s) inserted.

INSERT INTO sample_data VALUES(5,'Product E','Books',8,30.00)

OUTPUT:
1 row(s) inserted.

INSERT INTO sample_data VALUES(7,'Product G','Electronics',18,90.00)

OUTPUT:
1 row(s) inserted.

INSERT INTO sample_data VALUES(8,'Product H','Clothing',25,40.00)

OUTPUT:
1 row(s) inserted.

INSERT INTO sample_data VALUES(9,'Product I','Books',30,20.00)

OUTPUT:
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

1 row(s) inserted.

INSERT INTO sample_data VALUES(10,'Product J','Electronics',7,150.00)

OUTPUT:
1 row(s) inserted.

INSERT INTO sample_data VALUES(4,'Product D','Clothing',5,80.00)

OUTPUT:
1 row(s) inserted.

select * From sample_data

OUTPUT:
ID NAME CATEGORY QUANTITY PRICE
4 Product D Clothing 5 80
1 Product A Electronics 10 100
2 Product B Clothing 20 50
5 Product E Books 8 30
7 Product G Electronics 18 90
8 Product H Clothing 25 40
9 Product I Books 30 20
10 Product J Electronics 7 150

SELECT category, COUNT(*) as product_count


FROM sample_data
GROUP BY category

OUTPUT:
CATEGORY PRODUCT_COUNT
Electronics 3
Books 2
Clothing 3

SELECT category, SUM(quantity) as total_quantity, SUM(price) as total_price


FROM sample_data
GROUP BY category

OUTPUT:
CATEGORY TOTAL_QUANTITY TOTAL_PRICE
Electronics 35 340
Books 38 50
Clothing 50 170
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

SELECT category, AVG(price) as average_price


FROM sample_data
GROUP BY category

OUTPUT:
CATEGORY AVERAGE_PRICE
Electronics 113.333333333333333333333333333333333333
Books 25
Clothing 56.66666666666666666666666666666666666667

SELECT MAX(quantity) as max_quantity, MAX(price) as max_price


FROM sample_data

OUTPUT:
MAX_QUANTITY MAX_PRICE
30 150

SELECT MIN(quantity) as min_quantity, MIN(price) as min_price


FROM sample_data

OUTPUT:

MIN_QUANTITY MIN_PRICE
5 20

CREATE VIEW high_quantity_products AS


SELECT * FROM sample_data
WHERE quantity > 15

OUTPUT:
View created.

SELECT * FROM high_quantity_products

OUTPUT:
ID NAME CATEGORY QUANTITY PRICE
2 Product B Clothing 20 50
7 Product G Electronics 18 90
8 Product H Clothing 25 40
9 Product I Books 30 20

Result: Hence Aggregate Operators were demonstrated in SQL


II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

Experiment 5
Working with different types of Functions
Aim: The aim of this experiment is to explore and understand the functionality of various
types of SQL functions and their applications within database management systems.
Program:
CREATE TABLE Company (
ID INT PRIMARY KEY,
Name VARCHAR(50),
Salary INT,
day DATE
);

INSERT INTO Company VALUES (1, '111', 5000, to_date('2024-02-01', 'yyyy-mm-dd'))


INSERT INTO Company VALUES (2, '222', 6000, to_date('2024-02-02', 'yyyy-mm-dd'))
INSERT INTO Company VALUES (3, '333', 7000, to_date('2024-02-03', 'yyyy-mm-dd'))
INSERT INTO Company VALUES (4, '124', 5000, to_date('2024-02-01', 'yyyy-mm-dd'))
INSERT INTO Company VALUES (5, ' 124 ', 5000, to_date('2024-02-01', 'yyyy-mm-dd'))
INSERT INTO Company VALUES (6, ' 125 ', 5000, to_date('2024-02-01', 'yyyy-mm-dd'))

SELECT * FROM Company;

ID NAME SALARY DAY


1 111 5000 01-FEB-24
4 124 5000 01-FEB-24
3 333 7000 03-FEB-24
5 124 5000 01-FEB-24
2 222 6000 02-FEB-24
6 125 5000 01-FEB-24

SELECT TO_NUMBER(Name) FROM Company;

TO_NUMBER(NAME)
111
124
333
222

SELECT TO_DATE(day) FROM Company

TO_DATE(DAY)
01-FEB-24
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

01-FEB-24
03-FEB-24
02-FEB-24

SELECT Name, CONCAT('AA', Name) AS concated FROM Company

NAME CONCATED
124 AA124
111 AA111
222 AA222
333 AA333

SELECT LPAD(Name, 10, 'AAA') FROM Company

LPAD(NAME,10,'AAA')
AAAAAAA111
AAAAAAA124
AAAAAAA333
AAAAAAA222

SELECT RPAD(Name, 10, 'AAA') FROM Company

RPAD(NAME,10,'AAA')
111AAAAAAA
124AAAAAAA
333AAAAAAA
222AAAAAAA

SELECT LTRIM(Name) AS LeftTrim FROM Company

LEFTTRIM
111
124
333
124
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

SELECT RTRIM(Name) AS RightTrim FROM Company

RIGHTTRIM
111
124
333
124
222
125

CREATE TABLE Company1 (

ID INT PRIMARY KEY,


Name VARCHAR(50),
Salary INT,
day DATE
)

INSERT INTO Company1 VALUES (1, 'Ajay', 5000, to_date('2024-02-01', 'yyyy-mm-dd'))


INSERT INTO Company1 VALUES (2, 'Amit', 6000, to_date('2024-02-02', 'yyyy-mm-dd'))
INSERT INTO Company1 VALUES (3, 'John', 7000, to_date('2024-02-03', 'yyyy-mm-dd'))
INSERT INTO Company1 VALUES (4, 'Sai', 7000, to_date('2024-02-03', 'yyyy-mm-dd'))

SELECT UPPER(Name) FROM Company1

UPPER(NAME)
AJAY
AMIT
JOHN
SAI

SELECT LOWER(Name) FROM Company1

LOWER(NAME)
ajay
amit
john
sai
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

SELECT INITCAP(Name) FROM Company1

INITCAP(NAME)
Ajay
Amit
John
Sai

SELECT LENGTH(Name) FROM Company1

LENGTH(NAME)
4
4
4
3

SELECT SUBSTR(Name, 2, 5) FROM Company1

SUBSTR(NAME,2,5)
jay
mit
ohn
ai

SELECT INSTR(Name, 'A') FROM Company1

INSTR(NAME,'A')
1
1
0
0

SELECT LEAST(Salary, ID) FROM Company1

LEAST(SALARY,ID)
1
2
3
4
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

SELECT GREATEST(Salary, ID) FROM Company1

GREATEST(SALARY,ID)
5000
6000
7000
7000

SELECT ROUND(Salary, 2) AS RoundValue FROM Company1

ROUNDVALUE
5000
6000
7000
7000

SELECT ADD_MONTHS(day, 3) FROM Company

ADD_MONTHS(DAY,3)
01-MAY-24
01-MAY-24
03-MAY-24
01-MAY-24
02-MAY-24
01-MAY-24

SELECT NEXT_DAY(day, 'WEDNESDAY') FROM Company

NEXT_DAY(DAY,'WEDNESDAY')
07-FEB-24
07-FEB-24
07-FEB-24
07-FEB-24
07-FEB-24
07-FEB-24

SELECT LAST_DAY(day) FROM Company

LAST_DAY(DAY)
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

29-FEB-24
29-FEB-24
29-FEB-24
29-FEB-24
29-FEB-24
29-FEB-24

Result: The functionality of various types of SQL functions and their applications within
database management systems is verified.
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

Experiment 6
Working with Loops using PL/SQL
Aim: To demonstrate Loops using PL/SQL for a sample database
Program:
create table item(ino number(10) primary key, iname varchar2(30) not null, price
number(10) not null, quantity number(10) not null);

insert into item values(1001, 'TV', 40000, 100);


insert into item values (1002, 'Laptop', 30000, 50);
insert into item values (1003, 'CD', 10, 1000);
insert into item values (1004, 'Printer', 8000, 20);

OUTPUT:

Table created. 1row(s)


inserted.
1 row(s) inserted.
1 row(s) inserted.
1 row(s) inserted.

Example 1(To print numbers from 1 to 5 and 5 to1)

DECLARE=
a
number :=
1;BEGIN
dbms_output.put_line('Program started'); LOOP
dbms_output.put_line(a); a := a+1; EXITWHEN
a>5;
END
LOOP;
WHILE
(a >1)
LOOP
a := a-1;
dbms_output.put_line(a);
END LOOP; dbms_output.put_line('Program completed');END;
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

OUTPUT:

Statement processed.Program
started
1
2
3
4
5
5
4
3
2
1
Program completed

Example 2(To print numbers from 1 to 5 using FOR loop statement):

BEGIN
dbms_output.put_line('Program started' ); FOR i IN 1 .. 5LOOP
dbms_output.put_line(i);
END LOOP; dbms_output.put_line('Program completed');END;

OUTPUT:

Statement processed.Program
started
1
2
3
4
5
Program completed
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

Example 3(Using nested loops):

DECLARE b
NUMBER;
BEGIN
dbms_output.put_line('Program started' ); FOR a IN 1..3

LOOP
b:=1; WHILE
(a>=b) LOOP
dbms_output.put_line(a);
b:=b+1;
END LOOP;
END LOOP;
dbms_output.put_line('Program completed' );END;

OUTPUT:

Statement processed.Program
started
1
2
2
3
3
3
Program completed
Exceptions - Ex 1

DECLARE
name item.iname%type ;cost
item.price%type; BEGIN
SELECT iname, price INTO name, cost FROM item WHERE ino = 1001;dbms_output.put_line
('Item Name: '|| name);
dbms_output.put_line ('Item Cost: ' || cost);
EXCEPTION
WHEN no_data_found THEN dbms_output.put_line('Item number is
not available');
WHEN others THEN dbms_output.put_line('Error!');
END;
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

OUTPUT:

Statement processed.Item Name:


TV
Item Cost: 40000

Exceptions - Ex 2

DECLARE
a number :=100;
b number :=0;
value number;
BEGIN
value := a/b;
dbms_output.put_line('Value='|| value); EXCEPTION
WHEN zero_divide THEN dbms_output.put_line('Division by Zero error');END;

OUTPUT:

Statement processed. Division by


Zero error
Exceptions - Ex 3

DECLARE
less_cost EXCEPTION;

tvcost item.price%type := 4000; BEGIN if


tvcost < 10000 then RAISEless_cost;

else
update item set price=tvcost where ino=1001; dbms_output.put_line('TV costis updated'); end
if;
EXCEPTION
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

WHEN less_cost THEN


dbms_output.put_line('TV cost should be more than 10000');END;

OUTPUT:

Statement processed. TV costshould be


more than 10000
Exceptions - Ex 4

DECLARE
cdcost item.price%type := 100;
BEGIN
if cdcost < 20 then
raise_application_error(-20001, 'CD cost should be less than 20'); else updateitem set
price=cdcost where ino=1003; dbms_output.put_line('CD cost is updated'); end if;
END;

OUTPUT:
Statement
processed.
CD cost is
updated
Result: Hence demonstrated Loops for a sample database in PL/SQL
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

Experiment 7
Working with Triggers using PL/SQL
Aim: To work with triggers using PL/SQL aims to understand and utilize the functionality of
triggers in databases.
Program:
CREATE TABLE TRIGGERS( ID INT, NAME VARCHAR(50), AGE INT, ADDRESS
VARCHAR(50), SALARY INT );
OUTPUT: Table created.
CREATE TABLE CUSTOMERS( ID INT, NAME VARCHAR(50), AGE INT, ADDRESS
VARCHAR(50), SALARY INT );
INSERT INTO
CUSTOMERS(ID,NAME,AGE,ADDRESS,SALARY)VALUES( 1,'Ramesh',32,'Ahmedabad
',2 000)
INSERT INTO
CUSTOMERS(ID,NAME,AGE,ADDRESS,SALARY)VALUES( 2,'Khilan',25,'Delhi',1500 )
INSERT INTO
CUSTOMERS(ID,NAME,AGE,ADDRESS,SALARY)VALUES( 3,'Koushik',23,'Kota',2000 )
INSERT INTO
CUSTOMERS(ID,NAME,AGE,ADDRESS,SALARY)VALUES( 4,'Chaithali',25,'Mumbai',6
50 0 )
INSERT INTO
CUSTOMERS(ID,NAME,AGE,ADDRESS,SALARY)VALUES( 5,'Hardik',27,'Bhopal',8500)
INSERT INTO
CUSTOMERS(ID,NAME,AGE,ADDRESS,SALARY)VALUES( 6,'Komal',22,'MP',4500)
SELECT * FROM CUSTOMERS

OUTPUT:
1 row(s) inserted.
1 row(s) inserted.
1 row(s) inserted.
1 row(s) inserted.
1 row(s) inserted.
1 row(s) inserted.

ID NAME AGE ADDRESS SALARY


1 Ramesh 32 Ahmedabad 2000
2 Khilan 25 Delhi 1500
3 Koushik 23 Kota 2000
4 Chaithali 25 Mumbai 6500
5 Hardik 27 Bhopal 8500
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

6 Komal 22 MP 4500

CREATE OR REPLACE TRIGGER


display_salary_changes BEFORE DELETE OR
INSERT OR UPDATE ON customersFOR EACH ROW
WHEN (NEW.ID > 0)
DECLARE sal_diff number;
BEGIN sal_diff := :NEW.salary - :OLD.salary;
dbms_output.put_line('Old salary: '
|| :OLD.salary); dbms_output.put_line('New
salary: ' || :NEW.salary);
dbms_output.put_line('Salary difference: ' ||
sal_diff);END;

OUTPUT:

Trigger created.
INSERT INTO CUSTOMERS
(ID,NAME,AGE,ADDRESS,SALARY)VALUES (7, 'Kriti', 22,
'HP', 7500.00 )

OUTPUT:
1 row(s)
inserted.
Old salary:
New salary:
7500Salary
difference:
UPDATE customers SET salary = salary + 500 WHERE id = 2
OUTPUT:
1 row(s) updated.
Old salary: 1500
New salary: 2000
Salary difference: 500

Result: Hence demonstrated triggers using PL/SQL


II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

Experiment 8
Working with Functions using PL/SQL

Aim: The aim of this experiment is to explore and gain practical experience in working with
functions using PL/SQL (Procedural Language/Structured Query Language)
Program:
CREATE TABLE employee (
eno number(10),
ename varchar2(30) not null,
age number(2) check (age > 20),
salary number(10) not null,
primary key(eno)
);

INSERT INTO employee VALUES (101, 'Anil', 50, 110000);


INSERT INTO employee VALUES (102, 'Ravi', 40, 60000);
INSERT INTO employee VALUES (103, 'Kiran', 30, 9000);
INSERT INTO employee VALUES (104, 'Varma', 36, 30000);

Case 1: SUM OF TWO NUMBERS

CREATE OR REPLACE FUNCTION find_sum(a number, b number)


RETURN number IS
total number;
BEGIN
total := a + b;

return total;
END;

SELECT find_sum(10,20) FROM dual;


DECLARE
value number;
BEGIN
value := find_sum(10,20);
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

dbms_output.put_line('Sum of given two numbers = ' || value);


END;
OUTPUT

FIND_SUM(10, 20)
30

Case 2: FACTORIAL OF A NUMBER

CREATE OR REPLACE FUNCTION factorial(n number)


RETURN number IS
fact number :=1;
BEGIN
for i in 1..n
loop
fact := fact*i;
end loop;
return fact;
END;

SELECT factorial(8) from dual;


DECLARE
value number;
BEGIN
value := factorial(10);
dbms_output.put_line('Factorial of a given number is ' || value);
END;
OUTPUT

FACTORIAL(8)
40320

Case 3: SALARY INCREMENT


II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

CREATE OR REPLACE FUNCTION salary_increment(sal number)


RETURN number IS increment number;
BEGIN
if sal < 10000 then increment :=1000;
elsif sal < 50000 then increment :=2000;
elsif sal < 100000 then increment :=3000;
else increment :=4000;
end if;
return increment;
END;

SELECT eno, salary, salary_increment(salary) from employee;


DECLARE
value number;
BEGIN
value := salary_increment (30000);
dbms_output.put_line('Salary increment = ' || value);
END;
OUTPUT

ENO SALARY SALARY_INCREMENT(SALARY)


101 110000 4000
102 60000 3000
103 9000 1000
104 30000 2000

Result: Working with functions using PL/SQL (Procedural Language/Structured Query


Language) is demonstrated.
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

Experiment 9

Working with Exception Handling using PL/SQL


Aim: To demonstrate exception handling on a sample database using PL/SQL
Program:
create table item(ino number(10) primary key, iname varchar2(30) not null, price
number(10) not null, quantity number(10) not null);

insert into item values(1001, 'TV', 40000, 100);


insert into item values (1002, 'Laptop', 30000, 50);
insert into item values (1003, 'CD', 10, 1000);
insert into item values (1004, 'Printer', 8000, 20);

OUTPUT:

Table created. 1row(s)


inserted.
1 row(s) inserted.
1 row(s) inserted.
1 row(s) inserted.

Example 1(To print numbers from 1 to 5 and 5 to1)

DECLARE=
a
number :=
1;BEGIN
dbms_output.put_line('Program started'); LOOP
dbms_output.put_line(a); a := a+1; EXITWHEN
a>5;
END
LOOP;
WHILE
(a >1)
LOOP
a := a-1;
dbms_output.put_line(a);
END LOOP; dbms_output.put_line('Program completed');END;
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

OUTPUT:

Statement processed.Program
started
1
2
3
4
5
5
4
3
2
1
Program completed

Example 2(To print numbers from 1 to 5 using FOR loop statement):

BEGIN
dbms_output.put_line('Program started' ); FOR i IN 1 .. 5LOOP
dbms_output.put_line(i);
END LOOP; dbms_output.put_line('Program completed');END;

OUTPUT:

Statement processed.Program
started
1
2
3
4
5
Program completed
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

Example 3(Using nested loops):

DECLARE b
NUMBER;
BEGIN
dbms_output.put_line('Program started' ); FOR a IN 1..3

LOOP
b:=1; WHILE
(a>=b) LOOP
dbms_output.put_line(a);
b:=b+1;
END LOOP;
END LOOP;
dbms_output.put_line('Program completed' );END;

OUTPUT:

Statement processed.Program
started
1
2
2
3
3
3
Program completed
Exceptions - Ex 1

DECLARE
name item.iname%type ;cost
item.price%type; BEGIN
SELECT iname, price INTO name, cost FROM item WHERE ino = 1001;dbms_output.put_line
('Item Name: '|| name);
dbms_output.put_line ('Item Cost: ' || cost);
EXCEPTION
WHEN no_data_found THEN dbms_output.put_line('Item number is
not available');
WHEN others THEN dbms_output.put_line('Error!');
END;
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

OUTPUT:

Statement processed.Item Name:


TV
Item Cost: 40000

Exceptions - Ex 2

DECLARE
a number :=100;
b number :=0;
value number;
BEGIN
value := a/b;
dbms_output.put_line('Value='|| value); EXCEPTION
WHEN zero_divide THEN dbms_output.put_line('Division by Zero error');END;

OUTPUT:

Statement processed. Division by


Zero error

Exceptions - Ex 3

DECLARE
less_cost EXCEPTION;

tvcost item.price%type := 4000; BEGIN if


tvcost < 10000 then RAISEless_cost;

else
update item set price=tvcost where ino=1001; dbms_output.put_line('TV costis updated'); end
if;
EXCEPTION
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

WHEN less_cost THEN


dbms_output.put_line('TV cost should be more than 10000');END;

OUTPUT:

Statement processed. TV costshould be


more than 10000
Exceptions - Ex 4

DECLARE
cdcost item.price%type := 100;
BEGIN
if cdcost < 20 then
raise_application_error(-20001, 'CD cost should be less than 20'); else updateitem set
price=cdcost where ino=1003; dbms_output.put_line('CD cost is updated'); end if;
END;

OUTPUT:
Statement
processed.
CD cost is
updated
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

Experiment 10
Working with Cursors using PL/SQL
Aim: To demonstrate working of cursors like FOR UPDATE Cursor, WHERE CURRENT
OF clause using Pl/SQL

Program:

create table item(ino number(10) primary key, iname varchar2(30) not null, price number(10)
not null, quantity number(10) not null)

OUTPUT:

Table created.

insert into item values (1001, 'TV', 40000, 100)

insert into item values (1002, 'Laptop', 30000, 50)

insert into item values (1003, 'CD', 10, 1000)

insert into item values (1004, 'Printer', 8000, 20)

OUTPUT:

1 row(s) inserted.
1 row(s) inserted.
1 row(s) inserted.
1 row(s) inserted.

DECLARE
a number :=1;
BEGIN
dbms_output.put_line('Program started');
LOOP
dbms_output.put_line(a);
a := a+1;
EXIT WHEN a>5;
END LOOP;
WHILE (a >1)
LOOP
a := a-1;
dbms_output.put_line(a);
END LOOP;
dbms_output.put_line('Program completed');
END;

OUTPUT:
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

1
2
3
4
5
5
4
3
2
1

BEGIN
dbms_output.put_line('Program started' );
FOR i IN 1 .. 5
LOOP
dbms_output.put_line(i);
END LOOP;
dbms_output.put_line('Program completed');
END;

OUTPUT:

1
2
3
4
5

DECLARE
b NUMBER;
BEGIN
dbms_output.put_line('Program started' );
FOR a IN 1..3
LOOP
b:=1;
WHILE (a>=b)
LOOP
dbms_output.put_line(a);
b:=b+1;
END LOOP;
END LOOP;
dbms_output.put_line('Program completed' );
END;

OUTPUT:
1
2
2
3
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

3
3

DECLARE
name item.iname%type ;
cost item.price%type;
BEGIN
SELECT iname, price INTO name, cost FROM item WHERE ino = 1001;
dbms_output.put_line ('Item Name: '|| name);
dbms_output.put_line ('Item Cost: ' || cost);
EXCEPTION
WHEN no_data_found THEN
dbms_output.put_line('Item number is not available');
WHEN others THEN
dbms_output.put_line('Error!');
END;

OUTPUT:
Item Name: TV
Item Cost: 40000

DECLARE
a number :=100;
b number :=0;
value number;
BEGIN
value := a/b;
dbms_output.put_line('Value='|| value);
EXCEPTION
WHEN zero_divide THEN
dbms_output.put_line('Division by Zero error');
END;

OUTPUT:
Division by Zero error

DECLARE
less_cost EXCEPTION;
tvcost item.price%type := 4000;
BEGIN
if tvcost < 10000 then
RAISE less_cost;
else
update item set price=tvcost where ino=1001;
dbms_output.put_line('TV cost is updated');
end if;
EXCEPTION
WHEN less_cost THEN
dbms_output.put_line('TV cost should be more than 10000');
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501

OUTPUT:

TV cost should be more than 10000

DECLARE
cdcost item.price%type := 100;
BEGIN
if cdcost < 20 then
raise_application_error(-20001, 'CD cost should be less than 20');
else
update item set price=cdcost where ino=1003;
dbms_output.put_line('CD cost is updated');
end if;
END;

OUTPUT:

CD cost is updated

Result: Hence the usage of cursors using PL/SQL is demonstrated.

You might also like