DBMS Lab Record
DBMS Lab Record
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 )
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
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
Experiment 2
Program:
TABLE CREATION:
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:
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
OUTPUT:
OUTPUT:
OUTPUT:
OUTPUT:
OUTPUT:
ALTER
OUTPUT:
OUTPUT:
UPDATE Students
SET Email = '[email protected]'
WHERE StudentID = 101;
OUTPUT:
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 -
OUTPUT:
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
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);
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:
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:
OUTPUT:
OUTPUT:
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
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
OUTPUT:
1 row(s) inserted.
1 row(s) inserted.
1 row(s) inserted.
1 row(s) inserted.
SELECT * FROM employees
OUTPUT:
4 Alice Brown 2
OUTPUT:
1 row(s) inserted.
1 row(s) inserted.
SELECT * FROM departments
OUTPUT:
DEPARTMENT_ID DEPARTMENT_NAME
1 HR
2 IT
OUTPUT:
EMP_NAME
Alice Brown
Bob Johnson
Jane Smith
EMP_NAME
Bob Johnson
John Doe
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501
EMP_NAME
John Doe
Jane Smith
Bob Johnson
Alice Brown
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
Aim: To demonstrate SQL Queries using Aggregate Operators like COUNT, SUM, AVG,
MAX and MIN in a database
Program:
OUTPUT:
Table created.
OUTPUT:
1 row(s) inserted.
OUTPUT:
1 row(s) inserted.
OUTPUT:
1 row(s) inserted.
OUTPUT:
1 row(s) inserted.
OUTPUT:
1 row(s) inserted.
OUTPUT:
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501
1 row(s) inserted.
OUTPUT:
1 row(s) inserted.
OUTPUT:
1 row(s) inserted.
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
OUTPUT:
CATEGORY PRODUCT_COUNT
Electronics 3
Books 2
Clothing 3
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
OUTPUT:
CATEGORY AVERAGE_PRICE
Electronics 113.333333333333333333333333333333333333
Books 25
Clothing 56.66666666666666666666666666666666666667
OUTPUT:
MAX_QUANTITY MAX_PRICE
30 150
OUTPUT:
MIN_QUANTITY MIN_PRICE
5 20
OUTPUT:
View created.
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
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
);
TO_NUMBER(NAME)
111
124
333
222
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
NAME CONCATED
124 AA124
111 AA111
222 AA222
333 AA333
LPAD(NAME,10,'AAA')
AAAAAAA111
AAAAAAA124
AAAAAAA333
AAAAAAA222
RPAD(NAME,10,'AAA')
111AAAAAAA
124AAAAAAA
333AAAAAAA
222AAAAAAA
LEFTTRIM
111
124
333
124
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501
RIGHTTRIM
111
124
333
124
222
125
UPPER(NAME)
AJAY
AMIT
JOHN
SAI
LOWER(NAME)
ajay
amit
john
sai
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501
INITCAP(NAME)
Ajay
Amit
John
Sai
LENGTH(NAME)
4
4
4
3
SUBSTR(NAME,2,5)
jay
mit
ohn
ai
INSTR(NAME,'A')
1
1
0
0
LEAST(SALARY,ID)
1
2
3
4
II B. Tech II Sem DBMS Lab (UGCS4P0422) Regd. No: 22B01A4501
GREATEST(SALARY,ID)
5000
6000
7000
7000
ROUNDVALUE
5000
6000
7000
7000
ADD_MONTHS(DAY,3)
01-MAY-24
01-MAY-24
03-MAY-24
01-MAY-24
02-MAY-24
01-MAY-24
NEXT_DAY(DAY,'WEDNESDAY')
07-FEB-24
07-FEB-24
07-FEB-24
07-FEB-24
07-FEB-24
07-FEB-24
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);
OUTPUT:
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
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
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:
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:
DECLARE
less_cost EXCEPTION;
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
OUTPUT:
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.
6 Komal 22 MP 4500
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
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)
);
return total;
END;
FIND_SUM(10, 20)
30
FACTORIAL(8)
40320
Experiment 9
OUTPUT:
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
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
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:
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:
Exceptions - Ex 3
DECLARE
less_cost EXCEPTION;
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
OUTPUT:
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.
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:
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