0% found this document useful (0 votes)
23 views14 pages

SQL and PL/SQL Command Examples

Uploaded by

k6728074
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)
23 views14 pages

SQL and PL/SQL Command Examples

Uploaded by

k6728074
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

S.

N PAGE
DATE NAME OF THE EXPERIMENT SIGNATURE
o NO
`1 SQL-DDL COMMANDS

2 SQL-DDM COMMANDS

3 SQL-TCL COMMANDS

4 PL/SQL-FIBONACCI SERIES

5 PL/SQL-FACTORIAL

6 PL/SQL-STRING REVERSE

7 PL/SQL-SUM OF SERIES

8 PL/SQL-TRIGGER

CURSOR-STUDENTS MARK ANALYSIS


9
USING CURSOR

APPLICATION-LIBRARY
10
MANAGEMENT SYSTEM

APPLICATION-STUDENT MARK
11
ANALYSIS

CONTENTS
1. DDL Commands
--Create table

CREATE TABLE Students ( id NUMBER(4) PRIMARY KEY, name VARCHAR2(20),age NUMBER(3));

-- Alter table: add a column

ALTER TABLE Students

ADD (grade VARCHAR2(2));

--Rename table

ALTER TABLE Students

RENAME TO Learners;

--Truncate data later if needed

TRUNCATE TABLE Learners;

--Drop table

DROP TABLE Learners;

OUTPUT :
[Link] COMMAND

--Create for data operations

CREATE TABLE Employees (emp_id NUMBER(3) PRIMARY KEY, ename


VARCHAR2(15),salary NUMBER(7,2));

--Insert rows

INSERT INTO Employees VALUES (101, 'Alice', 50000);

INSERT INTO Employees VALUES (102, 'Bob', 60000);

--Update salary

UPDATE Employees

SET salary = salary * 1.10

WHERE emp_id = 101;

--Delete row

DELETE FROM Employees

WHERE emp_id = 102;

--Select results

SELECT * FROM Employees;

OUTPUT :

EMP_ID ENAME SALARY


101 Alice 55000.00
[Link] COMMAND

BEGIN

--Update salary for all employees

UPDATE Employees

SET salary = salary + 1000;

SAVEPOINT sp1;

--Delete someone

DELETE FROM Employees WHERE emp_id = 101;

--Oops, rollback delete only

ROLLBACK TO sp1;

--Commit the raise

COMMIT;

END;

OUTPUT :

EMP_ID ENAME SALARY


101 Alice 56000.00
[Link]/SQL

[Link] SERIES

DECLARE

a NUMBER := 0;

b NUMBER := 1;

temp NUMBER;

n NUMBER := 10; -- Change as needed

i NUMBER;

BEGIN

DBMS_OUTPUT.PUT_LINE('Fibonacci series:');

DBMS_OUTPUT.PUT_LINE(a);

DBMS_OUTPUT.PUT_LINE(b);

FOR i IN 2..n LOOP

temp := a + b;

a := b;

b := temp;

DBMS_OUTPUT.PUT_LINE(temp);

END LOOP;

END;

/
OUTPUT:

Fibonacci series:

13

21

34

55
5. FACTORIAL

DECLARE

f NUMBER := 1;

n NUMBER := 5; -- Compute 5!

BEGIN

FOR i IN 1..n LOOP

f:=f*i;

END LOOP;

DBMS_OUTPUT.PUT_LINE('Factorial of '||n||' is '||f);

END;

OUTPUT :

Factorial of 5 is 120
6. STRING REVERSE

DECLARE

input_str VARCHAR2(100) := 'Oracle';

rev VARCHAR2(100) := ";

BEGIN

FOR I IN REVERSE 1..LENGTH(input_str) LOOP

rev := rev || SUBSTR(input_str, i, 1);

END LOOP;

DBMS_OUTPUT.PUT_LINE('Original: ' || input_str);

DBMS_OUTPUT.PUT_LINE('Reversed: ' || rev);

END;

Output :

Original: Oracle

Reversed: elcarO
[Link] OF SERIES

DECLARE

n NUMBER := 10;

total NUMBER := 0;

BEGIN

FOR i IN 1..n LOOP

total: total + i;

END LOOP:

DBMS_OUTPUT.PUT_LINE('Sum of 1..'||n||' = '"||total);

END;

OUTPUT :

Sum of 1…10=55
[Link]

First, set up tables:

CREATE TABLE employees (emp_id NUMBER PRIMARY KEY,ename


VARCHAR2(50),salary NUMBER);

CREATE TABLE emp_audit (emp_id NUMBER,ename VARCHAR2(50),action time


TIMESTAMP,action_type VARCHAR2(10));

Then create a trigger:

CREATE OR REPLACE TRIGGER trg_emp_insert

AFTER INSERT ON employees

FOR EACH ROW

BEGIN

INSERT INTO emp_audit(emp id, ename, action time, action type)

VALUES(:NEW.emp_id, :[Link], SYSTIMESTAMP, INSERT);

END;

Testing the trigger:

INSERT INTO employees VALUES (1, 'Alice', 50000);

COMMIT;

SELECT * FROM emp_audit;

OUTPUT:

EMP_ID ENAME ACTION/_TIME ACTION/_TYPE


2025-06-10
1 Alice INSERT
[Link].123456
[Link]

[Link] Mark Analysis Using Cursor

Table Setup

CREATE TABLE students (

regno NUMBER PRIMARY KEY,

name VARCHAR2(50),

mark1 NUMBER,

mark2 NUMBER,

mark3 NUMBER);

INSERT INTO students VALUES (1, 'Ram', 40, 55, 65);

INSERT INTO students VALUES (2, 'Sita', 80, 90, 85);

INSERT INTO students VALUES (3, 'Gopal', 35, 45, 25);

--add more rows as needed

COMMIT;

SET SERVEROUTPUT ON;

DECLARE

CURSOR stud_cur IS

SELECT regno, name, mark1, mark2, mark3 FROM students;

v_reg [Link]%TYPE;
v_name [Link]%TYPE;

v_m1 students.mark1%TYPE;

v_m2 students.mark2%TYPE;

v_m3 students.mark3%TYPE;

v_total NUMBER;

v_avg NUMBER;

v_grade VARCHAR2(10);

BEGIN

OPEN stud_cur;

LOOP

FETCH stud cur INTO v reg, v name, v ml, v m2, v m3;

EXIT WHEN stud cur%NOTFOUND:

v total:=v_m1+v_m2 + v_m3;

v_avg :=v_total/3;

-- Assign grade based on average

IF v_avg<40 THEN

v_grade := 'FAIL';

ELSIF v_avg < 50 THEN


v_grade := 'C';

ELSIF v_avg < 60 THEN

v_grade := 'B';

ELSIF v_avg < 80 THEN v_grade := 'A';

ELSE

v_grade := 'HONOURS';

END IF;

DBMS_OUTPUT.PUT_LINE(

'RegNo: '||v_reg ||

'| Name: '||v_name ||

'| Total: '||v_total ||

'| Avg: '||ROUND(v_avg,2) ||

'| Grade: '||v_grade

);

You might also like