Thanks to visit codestin.com
Credit goes to www.scribd.com

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

Dbms Solution

Uploaded by

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

Dbms Solution

Uploaded by

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

Worksheet 1.

Q1. Create a table called Employee with the following structure.


Name Type
Empno Number
Ename Varchar2(10)
Job Varchar2(10)
Mgr Number
Sal Number

Ans.
CREATE TABLE Employee ( Empno NUMBER , Ename VARCHAR2(10),
Job VARCHAR2(10), Mgr NUMBER, Sal NUMBER);

a. Add a column commission with domain to the Employee table.


ALTER TABLE Employee ADD (Commission NUMBER(7,2));

b. Insert any five records into the table.


INSERT INTO Employee VALUES (101, 'SMITH', 'CLERK', 7902, 1250, NULL);
INSERT INTO Employee VALUES (102, 'ALLEN', 'SALESMAN', 7698, 1600, 300);
INSERT INTO Employee VALUES (103, 'WARD', 'SALESMAN', 7698, 1250, 500);
INSERT INTO Employee VALUES (104, 'JONES', 'MANAGER', 7839, 2975, NULL);
INSERT INTO Employee VALUES (105, 'MARTIN', 'SALESMAN', 7698, 1250, 140);

c. Update the column details of job


UPDATE Employee SET Job = 'SENIOR CLERK' WHERE Empno = 101;

d. Rename the column of Employ table using alter command.


ALTER TABLE Employee RENAME COLUMN Ename TO Emp_name;

e. Delete the employee whose Empno is 105.


DELETE FROM Employee WHERE Empno = 105;

Q2. Create a department table with the following structure.

Name Type
Deptno Number
Deptname Varchar2(10)
location Varchar2(10)

CREATE TABLE Department (Deptno NUMBER, Deptname VARCHAR2(10),


Location VARCHAR2(10));
a. Add column designation to the department table.
ALTER TABLE Department ADD (Designation VARCHAR2(20));
b. Insert values into the table.
INSERT INTO Department VALUES (10, 'ACCOUNT', 'NEWYORK', 'ACCT_HEAD');
INSERT INTO Department VALUES (20, 'RESEARCH','DALLAS', 'RESEARCH_HEAD');
INSERT INTO Department VALUES (30, 'SALES', 'CHICAGO', 'SALES_HEAD');
INSERT INTO Department VALUES (40, 'OPER', 'BOSTON', NULL);
INSERT INTO Department VALUES (9,'TEMP', 'PUNE', 'TEMP_HEAD');

c. List the records of dept table grouped by deptno.


SELECT Deptno, COUNT(*) AS num_rows FROM Department GROUP BY Deptno;
d. Update the record where deptno is 9.
UPDATE Department SET Location = 'MUMBAI', Deptname = 'TEMP_DEPT'
WHERE Deptno = 9;

e. Delete any column data from the table.


-- ALTER TABLE Department DROP COLUMN Designation; Q3.

Q3.Create table EMP with the following description:

Name Type
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(3)
AGE NUMBER(3)
ESAL NUMBER

Create Table EMP(EMPNO NUMBER(4),ENAME NUMBER(10), JOB VARCHAR2(9),


MGR NUMBER(4) ,HIREDATE DATE ,SAL NUMBER(7,2) ,COMM NUMBER(7,2)
DEPTNO NUMBER(3),AGE NUMBER(3),ESAL NUMBER);

a. Get the description EMP table.


DESC EMP;

b. List all employee details.


SELECT * FROM EMP;
c. List all employee names and their salaries, whose salary lies between 1500/- and
3500/- both inclusive.

SELECT ENAME, SAL FROM EMP WHERE SAL BETWEEN 1500 AND 3500;
d. List all employee names and their and their manager whose manager is 7902 or
7566 0r 7789.
SELECT ENAME, MGR FROM EMP WHERE MGR IN (7902, 7566, 7789);

e. List all employees who belongs to the department 10 or 20.


SELECT * FROM EMP WHERE DEPTNO IN (10, 20);

Q4. Create table EMP with the following description:

Name Type
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(3)
AGE NUMBER(3)
ESAL NUMBER

a. List all employee names, salary and 15% rise in salary.


SELECT ENAME,SAL,SAL * 1.15 AS SAL_AFTER_15PCT FROM EMP;
b. List ename whose manager is not NULL.
SELECT ENAME FROM EMP WHERE MGR IS NOT NULL;
c. Find no.of dept in employee table.
SELECT COUNT(DISTINCT DEPTNO) AS NUM_DEPARTMENTS FROM EMP;

d. List ename whose commission is NULL.


SELECT ENAME FROM EMP WHERE COMM IS NULL;
e. Display ename of the dept. with deptno 20.
SELECT ENAME FROM EMP WHERE DEPTNO = 20;
WORKSHEET 1.2

Q1. Consider a relation Employee with following attributes:


Name Null Type
-------------------------------- ----------------------- -------------------------
EMPNO NOT NULL NUMBER (4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER (4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(3)
AGE NUMBER(3)
ESAL NUMBER(10)

Ans-
CREATE TABLE Employee (EMPNO NUMBER(4),ENAME VARCHAR2(10),
JOB VARCHAR2(9),MGR NUMBER(4),HIREDATE DATE,SAL NUMBER(7,2),
COMM NUMBER(7,2),DEPTNO NUMBER(3),AGE NUMBER(3),ESAL NUMBER(10));

INSERT INTO Employee VALUES (1001, 'ALLEN', 'MANAGER', 7839, DATE '2010-04-01',
3000, NULL, 10, 40, 0);
INSERT INTO Employee VALUES (1002, 'WARD', 'SALESMAN', 7698, DATE '2011-06-17',
1250, 500, 30, 35, 0);
INSERT INTO Employee VALUES (1003, 'SMITH', 'CLERK', 7902, DATE '2012-12-01', 800, NULL,
20, 30, 0);
INSERT INTO Employee VALUES (1004, 'JONES', 'MANAGER', 7839, DATE '2013-05-05', 2975,
NULL, 20, 38, 0);
INSERT INTO Employee VALUES (1005, 'MARTIN','SALESMAN', 7698, DATE '2014-09-28',
1250, 140, 30, 29, 0);

a. List minimum, maximum, average salaries of employee.

SELECT MIN(SAL) AS Min_Salary,MAX(SAL) AS Max_Salary,AVG(SAL) AS Avg_Salary FROM


Employee;

b. What is the difference between maximum and minimum salaries of employees in


the organization?

SELECT (MAX(SAL) - MIN(SAL)) AS Salary_Difference FROM Employee;

c. Display all employee names and salary whose salary is greater than minimum
salary of the company and job title starts with ‘M’.
SELECT ENAME, SAL FROM Employee WHERE SAL > (SELECT MIN(SAL) FROM
Employee) AND JOB LIKE 'M%';

d. Display total salary spent for each job category.

SELECT JOB, SUM(SAL) AS Total_Salary FROM Employee GROUP BY JOB;

e. Display lowest paid employee details under each manager.

SELECT MGR, ENAME, SAL FROM Employee WHERE SAL = (SELECT MIN(SAL) FROM
Employee WHERE MGR = e.MGR) ORDER BY MGR;

Q2. create table emp with attributes (eid number,ename varchar2(10),age


number,salary number);

CREATE TABLE emp (eid NUMBER, ename VARCHAR2(10),age NUMBER,salary NUMBER


);

-- Insert sample rows


INSERT INTO emp VALUES (1, 'Amit', 28, 25000);
INSERT INTO emp VALUES (2, 'Bhavna', 32, 30000);
INSERT INTO emp VALUES (3, 'Chetan', 25, 20000);
INSERT INTO emp VALUES (4, 'Deepa', 29, 28000);
INSERT INTO emp VALUES (5, 'Eshan', 35, 35000);

a. Count number of employee names from employee table.

SELECT COUNT(ename) AS Name_Count FROM emp;

b. Display the Sum of age employee table.

SELECT SUM(age) AS Total_Age FROM emp;

c. Find grouped salaries of employees (group by clause).

SELECT salary, COUNT(*) AS Num_Employees FROM emp GROUP BY salary;


d. Find salaries of employee in Ascending Order (order by clause).

SELECT salary FROM emp ORDER BY salary ASC;

e. Find salaries of employee in Descending Order.

SELECT salary FROM emp ORDER BY salary DESC;

Q3. Consider the database for a college. Write the query for the following.
Insert at least 5 tuples into each table.

Ans-
CREATE TABLE Students (rollno NUMBER,Name VARCHAR2(30),Dod DATE,
Dept VARCHAR2(20));

CREATE TABLE Faculty (fid NUMBER, fname VARCHAR2(30),dept VARCHAR2(20), salary


NUMBER);

-- Insert data
INSERT INTO Students VALUES (1, 'Anita', DATE '2002-03-15', 'Computer');
INSERT INTO Students VALUES (2, 'Bharat', DATE '2001-07-10', 'Mechanical');
INSERT INTO Students VALUES (3, 'Chetan', DATE '2002-01-22', 'Computer');
INSERT INTO Students VALUES (4, 'Deepa', DATE '2001-12-05', 'Electrical');
INSERT INTO Students VALUES (5, 'Eshan', DATE '2003-05-19', 'Computer');

INSERT INTO Faculty VALUES (101, 'Prof. Mehta', 'Computer', 28000);


INSERT INTO Faculty VALUES (102, 'Prof. Iyer', 'Mechanical', 35000);
INSERT INTO Faculty VALUES (103, 'Prof. Rao', 'Electrical', 24000);
INSERT INTO Faculty VALUES (104, 'Prof. Das', 'Computer', 26000);
INSERT INTO Faculty VALUES (105, 'Prof. Singh', 'Mechanical', 38000);

a. List the details of students in the ascending order of date of birth

SELECT * FROM Students ORDER BY Dob ASC;

b. Display the details of students from computer department

SELECT * FROM Students WHERE dept = 'Computer';

c. List the faculties in the descending order of salary

SELECT * FROM Faculty ORDER BY salary DESC;

d. Display the total number of students in each department


SELECT dept, COUNT(*) AS Num_Students FROM Students GROUP BY dept;

e. Display the total number of faculties in each department with salary greater than
25000

SELECT dept, COUNT(*) AS Num_Faculties FROM Faculty WHERE salary > 25000
GROUP BY dept;

Q4. Consider the database for a banking enterprise. Write the queries for the below
questions.
Insert at least 5 tuples in each table

Ans.
CREATE TABLE Branch (branch_id NUMBER ,branch_name VARCHAR2(30),
City VARCHAR2(20),state VARCHAR2(20));
CREATE TABLE Customer (Cust_id NUMBER,Cname VARCHAR2(30),Gender
VARCHAR2(6),city VARCHAR2(20));

CREATE TABLE Deposit Scheme (scheme_id NUMBER ,scheme_name VARCHAR


(30));

-- Insert data
INSERT INTO Branch VALUES (1, 'Fort', 'Mumbai', 'Maharashtra');
INSERT INTO Branch VALUES (2, 'Park Street', 'Kolkata', 'West Bengal');
INSERT INTO Branch VALUES (3, 'Andheri', 'Mumbai', 'Maharashtra');
INSERT INTO Branch VALUES (4, 'Salt Lake', 'Kolkata', 'West Bengal');
INSERT INTO Branch VALUES (5, 'Connaught', 'Delhi', 'Delhi');

INSERT INTO Customer VALUES (201, 'Amit', 'Male', 'Mumbai');


INSERT INTO Customer VALUES (202, 'Bhavna', 'Female', 'Kolkata');
INSERT INTO Customer VALUES (203, 'Chirag', 'Male', 'Kolkata');
INSERT INTO Customer VALUES (204, 'Deepa', 'Female', 'Delhi');
INSERT INTO Customer VALUES (205, 'Eshan', 'Male', 'Mumbai');

INSERT INTO Deposit Scheme VALUES (301, 'Fixed Deposit');


INSERT INTO Deposit Scheme VALUES (302, 'Recurring Deposit');
INSERT INTO Deposit Scheme VALUES (303, 'Savings Scheme');
INSERT INTO Deposit Scheme VALUES (304, 'Current Account');
INSERT INTO Deposit Scheme VALUES (305, 'Monthly Income Plan');

a. Display the branch details

SELECT * FROM Branch;


b. List the customers of ‘Mumbai’ city

SELECT * FROM Customer WHERE city = 'Mumbai';

c. List the male customers of ‘Kolkata’ city

SELECT * FROM Customer WHERE city = 'Kolkata' AND gender = 'Male';

d. List the state having more than one branch.

SELECT state, COUNT(*) AS Branch_Count FROM Branch GROUP BY state HAVING


COUNT(*) > 1;

e. List the deposit schemes provided by the bank to the customers

SELECT * FROM DepositScheme;


WORKSHEET 1.3

Q1. Write a PL/SQL block to find Sum of Digits of a given Number.


Ans.
DECLARE
num NUMBER := 1234;
rem NUMBER;
sum NUMBER := 0;
BEGIN
WHILE num > 0 LOOP
rem := MOD(num, 10);
sum := sum + rem;
num := TRUNC(num / 10);
END LOOP;
DBMS_OUTPUT.PUT_LINE('Sum of digits = ' || sum);
END;

Q2. Write a PL/SQL program to SWAP two numbers with and without using
temporary variables.
Ans.
With temporary variables
DECLARE
a NUMBER := 10;
b NUMBER := 20;
temp NUMBER;
BEGIN
temp := a;
a := b;
b := temp;
DBMS_OUTPUT.PUT_LINE('After swap: a=' || a || ' b=' || b);
END;

Without temporary variables


DECLARE
a NUMBER := 10;
b NUMBER := 20;
BEGIN
a := a + b;
b := a - b;
a := a - b;
DBMS_OUTPUT.PUT_LINE('After swap: a=' || a || ' b=' || b);
END;
Q3. Write a PL/SQL program to print reverse of a number. For example: 1234 print as
4321.
Ans.
DECLARE
num NUMBER := 1234;
rev NUMBER := 0;
rem NUMBER;
BEGIN
WHILE num > 0 LOOP
rem := MOD(num, 10);
rev := (rev * 10) + rem;
num := TRUNC(num / 10);
END LOOP;
DBMS_OUTPUT.PUT_LINE('Reverse number = ' || rev);
END;

Q4. Write a PL/SQL program to the declaration of variables.


Ans.
DECLARE
name VARCHAR2(20) := 'Aadil';
age NUMBER := 21;
salary NUMBER := 35000;
BEGIN
DBMS_OUTPUT.PUT_LINE('Name: ' || name);
DBMS_OUTPUT.PUT_LINE('Age: ' || age);
DBMS_OUTPUT.PUT_LINE('Salary: ' || salary);
END;

Q5. Write a PL/SQL block to explain single and multiline comments.


Ans.
DECLARE
a NUMBER := 10;
b NUMBER := 20;
BEGIN
DBMS_OUTPUT.PUT_LINE('A=' || a || ', B=' || b);
END;

Q6. Write a PL/SQL program to find area and perimeter of rectangle.


Ans.
DECLARE
length NUMBER := 10;
width NUMBER := 5;
area NUMBER;
perimeter NUMBER;
BEGIN
area := length * width;
perimeter := 2 * (length + width);
DBMS_OUTPUT.PUT_LINE('Area = ' || area);
DBMS_OUTPUT.PUT_LINE('Perimeter = ' || perimeter);
END;

Q7. Write a PL/SQL program to find area of circle.


Ans.
DECLARE
radius NUMBER := 7;
area NUMBER;
BEGIN
area := 3.14159 * radius * radius;
DBMS_OUTPUT.PUT_LINE('Area of circle = ' || area);
END;

Q8. Write a PL/SQL program to find odd or even number.


Ans.
DECLARE
num NUMBER := 15;
BEGIN
IF MOD(num, 2) = 0 THEN
DBMS_OUTPUT.PUT_LINE(num || ' is Even');
ELSE
DBMS_OUTPUT.PUT_LINE(num || ' is Odd');
END IF;
END;
WORKSHEET 2.1

Q1. Write a PL/SQL program to check whether a date falls on weekend i.e.
SATURDAY or SUNDAY.
Ans.
DECLARE
date DATE := TO_DATE('14-SEP-2025','DD-MON-YYYY');
day VARCHAR2(10);
BEGIN
day := TO_CHAR(date,'DAY');

IF TRIM(day) IN ('SATURDAY','SUNDAY') THEN


DBMS_OUTPUT.PUT_LINE(date || ' is a Weekend (' || day || ')');
ELSE
DBMS_OUTPUT.PUT_LINE(date || ' is a Weekday (' || day || ')');
END IF;
END;

Q2. Write a PL/SQL program to display the description against a grade according to
the marks achieved by students in their final exams.
Ans.
DECLARE
marks NUMBER := 78;
grade CHAR(1);
BEGIN
IF marks >= 90 THEN
grade := 'A';
ELSIF marks >= 75 THEN
grade := 'B';
ELSIF marks >= 50 THEN
grade := 'C';
ELSE
grade := 'F';
END IF;

CASE grade
WHEN 'A' THEN DBMS_OUTPUT.PUT_LINE('Excellent');
WHEN 'B' THEN DBMS_OUTPUT.PUT_LINE('Very Good');
WHEN 'C' THEN DBMS_OUTPUT.PUT_LINE('Good');
WHEN 'F' THEN DBMS_OUTPUT.PUT_LINE('Fail');
END CASE;
END;

Q3. Write a PL/SQL program to identify whether a character entered by the user is a
letter or digit.
Ans.
DECLARE
character CHAR(1) := '9';
BEGIN
IF character BETWEEN '0' AND '9' THEN
DBMS_OUTPUT.PUT_LINE(character || ' is a Digit');
ELSIF (character BETWEEN 'A' AND 'Z') OR (character BETWEEN 'a' AND 'z') THEN
DBMS_OUTPUT.PUT_LINE(character || ' is a Letter');
ELSE
DBMS_OUTPUT.PUT_LINE(character || ' is neither Digit nor Letter');
END IF;
END;

Q4. Write a PL/SQL program to convert a temperature in scale Fahrenheit to


Celsius and vice versa.
Ans.
DECLARE
fahrenheit NUMBER := 98.6;
celsius NUMBER;
BEGIN
celsius := (f - 32) * 5 / 9;
DBMS_OUTPUT.PUT_LINE('Fahrenheit ' || fahrenheit || ' = Celsius ' || celsius);
fahrenheit := (c * 9 / 5) + 32;
DBMS_OUTPUT.PUT_LINE('Celsius ' || celsius || ' = Fahrenheit ' || fahrenheit);
END;

Q5. Write a program in PL/SQL to print the prime numbers between 1 to 100.
Ans.
DECLARE
i NUMBER;
j NUMBER;
flag BOOLEAN;
BEGIN
FOR i IN 2..100 LOOP
flag := TRUE;
FOR j IN 2..TRUNC(SQRT(i)) LOOP
IF MOD(i,j)=0 THEN
flag := FALSE;
EXIT;
END IF;
END LOOP;
IF flag THEN
DBMS_OUTPUT.PUT_LINE(i);
END IF;
END LOOP;
END;
Q6. Write a program in PL/SQL to update the salary of a specific employee by 10% if
the salary exceeds the mid range of the salary against this job and update up to mid
rangeif the salary is less than the mid range of the salary, and display a suitable
message for users.
Ans.
DECLARE
emp_id EMP.emp_id%TYPE := 101;
sal EMP.salary%TYPE;
mid EMP.mid_salary%TYPE;
BEGIN
SELECT salary, mid_salary INTO sal, mid
FROM EMP WHERE emp_id = emp_id;

IF sal > mid THEN


UPDATE EMP SET salary = salary * 1.10 WHERE emp_id = emp_id;
DBMS_OUTPUT.PUT_LINE('Salary increased by 10% for employee ' || emp_id);
ELSIF sal < mid THEN
UPDATE EMP SET salary = mid_salary WHERE emp_id = emp_id;
DBMS_OUTPUT.PUT_LINE('Salary updated to mid-range for employee ' || emp_id);
ELSE
DBMS_OUTPUT.PUT_LINE('Salary is already at mid-range.');
END IF;
END;

7. Write a PL/SQL program to check whether a given number is positive, negative or


zero.
Ans.
DECLARE
num NUMBER := -5;
BEGIN
IF num > 0 THEN
DBMS_OUTPUT.PUT_LINE(num || ' is Positive');
ELSIF num < 0 THEN
DBMS_OUTPUT.PUT_LINE(num || ' is Negative');
ELSE
DBMS_OUTPUT.PUT_LINE('Number is Zero');
END IF;
END;

You might also like