0% found this document useful (0 votes)
18 views6 pages

DBMS Lab External Sets 1 To 10 FULL

The document contains a series of database management system (DBMS) lab exercises organized into ten sets. Each set includes SQL commands and PL/SQL programs for tasks such as modifying tables, displaying data, performing calculations, and implementing control structures. The exercises cover a range of topics including string and numeric functions, triggers, loops, and functions for various database operations.

Uploaded by

ghi268428
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views6 pages

DBMS Lab External Sets 1 To 10 FULL

The document contains a series of database management system (DBMS) lab exercises organized into ten sets. Each set includes SQL commands and PL/SQL programs for tasks such as modifying tables, displaying data, performing calculations, and implementing control structures. The exercises cover a range of topics including string and numeric functions, triggers, loops, and functions for various database operations.

Uploaded by

ghi268428
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 6

DBMS Lab External Sets (SET 1–10)

SET – 1
 A) Add new column 'PINCODE' and rename 'NAME' to 'STNAME' in STUDENT table
(ROLLNO, NAME, CITY):

ALTER TABLE STUDENT ADD PINCODE NUMBER;


ALTER TABLE STUDENT RENAME COLUMN NAME TO STNAME;

 B) PL/SQL Program using EMP(NAME, SAL) to display employees matching input salary
with exceptions:

CREATE TABLE EMP (ENO NUMBER, NAME VARCHAR2(50), SAL


NUMBER);
INSERT INTO EMP VALUES (1, 'RAM', 5000);
INSERT INTO EMP VALUES (2, 'RAJU', 5000);
COMMIT;
DECLARE
input_salary EMP.SAL%TYPE := 5000;
emp_name EMP.NAME%TYPE;
BEGIN
SELECT NAME INTO emp_name FROM EMP WHERE SAL =
input_salary;
DBMS_OUTPUT.PUT_LINE('Employee Name: ' || emp_name);
EXCEPTION
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE('Error: More than one employee has
this salary.');
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Error: No employee with this salary.');
END;/

SET – 2
 A) Display ROLLNO and CITY from STUDENT, then delete STUDENT table:

SELECT ROLLNO, CITY FROM STUDENT;


DROP TABLE STUDENT;

 B) PL/SQL Program to print multiplication tables from 1 to 5:


BEGIN
FOR i IN 1..5 LOOP
DBMS_OUTPUT.PUT_LINE('--- Table of ' || i || ' ---');
FOR j IN 1..10 LOOP
DBMS_OUTPUT.PUT_LINE(i || ' * ' || j || ' = ' || (i*j));
END LOOP;
END LOOP;
END;/

SET – 3
 A) Demonstrate String functions:

SELECT UPPER('dbms'), LOWER('DBMS'), INITCAP('oracle'),


LENGTH('Oracle SQL'), SUBSTR('PLSQLFunctions', 4, 5),
INSTR('database', 'a') FROM dual;

 B) PL/SQL to display FIRST class students from STUDENT(RNO, NAME, AVG_MARKS,


RES):

CREATE TABLE STUDENT (RNO NUMBER, NAME VARCHAR2(50),


AVG_MARKS NUMBER, RES VARCHAR2(10));
INSERT INTO STUDENT VALUES (1, 'Amit', 85, 'FIRST');
INSERT INTO STUDENT VALUES (2, 'Rahul', 55, 'SECOND');
COMMIT;
DECLARE
CURSOR c1 IS SELECT * FROM STUDENT WHERE RES = 'FIRST';
BEGIN
FOR rec IN c1 LOOP
DBMS_OUTPUT.PUT_LINE(rec.RNO || ' ' || rec.NAME || ' ' ||
rec.AVG_MARKS || ' ' || rec.RES);
END LOOP;
END;/

SET – 4
 A) Demonstrate Numeric functions:

SELECT ABS(-25), CEIL(10.3), FLOOR(10.9), MOD(15, 4), POWER(2,


3), ROUND(123.456, 2), TRUNC(123.456, 2) FROM dual;

 B) PL/SQL Procedure to find smallest of two numbers:


CREATE OR REPLACE PROCEDURE findMin(a IN NUMBER, b IN
NUMBER) IS
BEGIN
IF a < b THEN
DBMS_OUTPUT.PUT_LINE('Minimum: ' || a);
ELSE
DBMS_OUTPUT.PUT_LINE('Minimum: ' || b);
END IF;
END;
/
BEGIN
findMin(10, 20);
END;/

SET – 5
 A) Display department-wise total salary from EMP:

SELECT DEPTNO, SUM(SAL) AS TOTAL_SALARY FROM EMP GROUP BY


DEPTNO;

 B) PL/SQL to demonstrate COMMIT, ROLLBACK, SAVEPOINT on STUDENT:

CREATE TABLE STUDENT (RNO NUMBER, NAME VARCHAR2(50),


AVG_MARKS NUMBER, RES VARCHAR2(10));
BEGIN
INSERT INTO STUDENT VALUES (1, 'Arjun', 80, 'FIRST');
SAVEPOINT sp1;
INSERT INTO STUDENT VALUES (2, 'Sita', 60, 'SECOND');
SAVEPOINT sp2;
INSERT INTO STUDENT VALUES (3, 'Ravi', 70, 'FIRST');
ROLLBACK TO sp2;
COMMIT;
END;/

SET – 6
 A) Display min & max salary from EMP:

SELECT MIN(SAL), MAX(SAL) FROM EMP;

 B) PL/SQL function totalEmps to count employees:


CREATE OR REPLACE FUNCTION totalEmps RETURN NUMBER IS
total NUMBER;
BEGIN
SELECT COUNT(*) INTO total FROM EMP;
RETURN total;
END;
/
DECLARE
emp_count NUMBER;
BEGIN
emp_count := totalEmps;
DBMS_OUTPUT.PUT_LINE('Total Employees: ' || emp_count);
END;/

SET – 7
 A) Create STUDENT table with constraints:

CREATE TABLE STUDENT (ROLLNO NUMBER(10) PRIMARY KEY,


SNAME VARCHAR2(10) NOT NULL, CITY VARCHAR2(10), MARKS
NUMBER(4) CHECK (MARKS > 0));

 B) Trigger to display salary difference on EMP table update:

CREATE OR REPLACE TRIGGER trg_salary_diff


BEFORE UPDATE ON EMP
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE('Old Salary: ' || :OLD.SAL);
DBMS_OUTPUT.PUT_LINE('New Salary: ' || :NEW.SAL);
DBMS_OUTPUT.PUT_LINE('Difference: ' || (:NEW.SAL - :OLD.SAL));
END;/

SET – 8
 A) Query to display employees with salary > 6000:

SELECT * FROM EMP WHERE SAL > 6000;

 B) WHILE LOOP to insert 1 to 10 in SEQ:

CREATE TABLE SEQ (sno NUMBER);


DECLARE
i NUMBER := 1;
BEGIN
WHILE i <= 10 LOOP
INSERT INTO SEQ VALUES(i);
i := i + 1;
END LOOP;
COMMIT;
END;/

SET – 9
 A) Demonstrate Date functions:

SELECT SYSDATE, ADD_MONTHS(SYSDATE, 2),


MONTHS_BETWEEN(SYSDATE, TO_DATE('01-JAN-2020','DD-MON-
YYYY')), NEXT_DAY(SYSDATE, 'MONDAY') FROM dual;

 B) FOR LOOP to insert reverse numbers into REV_SEQ:

CREATE TABLE REV_SEQ (sno NUMBER);


BEGIN
FOR i IN REVERSE 1..10 LOOP
INSERT INTO REV_SEQ VALUES(i);
END LOOP;
COMMIT;
END;/

SET – 10
 A) Delete eno=5 and update salary in EMP:

DELETE FROM EMP WHERE ENO = 5;


UPDATE EMP SET SAL = 10000 WHERE ENO = 5;

 B) Function FACT to calculate factorial:

CREATE OR REPLACE FUNCTION FACT(n IN NUMBER) RETURN


NUMBER IS
result NUMBER := 1;
BEGIN
FOR i IN 1..n LOOP
result := result * i;
END LOOP;
RETURN result;
END;
/
DECLARE
res NUMBER;
BEGIN
res := FACT(5);
DBMS_OUTPUT.PUT_LINE('Factorial: ' || res);
END;/

You might also like