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

0% found this document useful (0 votes)
7 views27 pages

Dbms Final

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)
7 views27 pages

Dbms Final

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/ 27

1.Draw a ER-diagram of Registrar office.

2.Draw a ER-diagram of Hospital Management System

3.Reduce the ER-diagram of Registrar office


into table A) Student table
ID NAME PROGRAM
B) INSTRUCTOR
ID NAME DEPT TITLE

C) COURSE
COURSE NO TITLE SYLLABUS CREDITS

Reduce the ER-diagram of Hospital


4.

Management System
A) PATIENT
ID NAME ADDRESS DIAGNOSIS

B) HOSPITAL
ID NAME ADDRESS CITY

C) MEDICAL RECORD
ID DATE OF EXAMINATION PROBLEM

D) DOCTOR
ID NAME QUALIFICATION SALARY
Consider the following Schema
Supplier(SID, Sname, branch, city, phone)
Part(PID, Pname, color, price)
Supplies(SID, PID, qty, date_supplied)

DDL Commands
5. Create the above tables
1.Supplier Table
CREATE TABLE Supplier (SID VARCHAR(10) PRIMARY KEY,
Sname VARCHAR(100),
branch VARCHAR(100),
city VARCHAR(50),
phone VARCHAR(15));
Output : Table Created
2. Part Table
CREATE TABLE Part (
PID VARCHAR(10) PRIMARY KEY,
Pname VARCHAR(100),
color VARCHAR(30),
price DECIMAL(10, 2)
);
Output : Table Created

3. Supplies Table (Bridge Table)


CREATE TABLE Supplies (
SID VARCHAR(10),
PID VARCHAR(10),
qty INT,
date_supplied DATE,
PRIMARY KEY (SID, PID),
FOREIGN KEY (SID) REFERENCES Supplier(SID),
FOREIGN KEY (PID) REFERENCES Part(PID)
);
Output : Table Created

6. Add a new attribute state in supplier table


ALTER TABLE Supplier ADD state VARCHAR(50);
Output : Table Altered

7. Remove attribute city from supplier table


ALTER TABLE Supplier DROP COLUMN city;
Output : Table Altered

8. Modify the data type of phone attribute


ALTER TABLE Supplier MODIFY phone INT;
Output : Table Altered

9. Change the name of attribute city to address


ALTER TABLE Supplier RENAME COLUMN city TO address;
Output : Table Altered

10. Change a table’s name, supplier to sup


ALTER TABLE Supplier RENAME TO Sup;

Output : Table Altered


11. Use truncate to delete the contents of supplies table
TRUNCATE TABLE Supplies;

12. Remove the part table from database


DROP TABLE Part;
DML Commands
1. Insert at least 10 records in tables supplier, part and supplies
A. Supplier Table
INSERT INTO Sup VALUES ('204001', 'Vandana', 'Electrical', '9700000000','Pune','bfjlr');
INSERT INTO SUP VALUES ('S001', 'Vandana', 'Electrical', 9876543210, 'Delhi', '123, MG
Road');
INSERT INTO SUP VALUES ('S002', 'Rahul', 'Mechanical', 9876500000, 'Maharashtra',
'45, Marine Drive');
INSERT INTO SUP VALUES ('S003', 'Alka', 'Civil', 9898989898, 'Gujarat', '22,
Ellisbridge');
INSERT INTO supVALUES ('S004', 'Raj', 'Electronics', 9000000001, 'Tamil Nadu', '101, T
Nagar');
INSERT INTO SUP VALUES ('S005', 'Ravi', 'Computer', 9123456789, 'Delhi', '78,
Connaught Place');
INSERT INTO SUP VALUES ('S006', 'Ankit', 'Mechanical', 9823456780, 'Uttar Pradesh',
'89, Civil Lines');
INSERT INTO SUP VALUES ('S007', 'Rekha', 'Civil', 9876123456, 'Delhi', '56, Rajpath');
INSERT INTO SUP VALUES ('S008', 'Vikram', 'Electrical', 9812345678, 'Karnataka', '13,
MG Road');
INSERT INTO SUP VALUES ('S009', 'Anjali', 'Computer', 9888888888, 'Telangana', '67,
Banjara Hills');
INSERT INTO SUP VALUES ('S010', 'Sulekha', 'Chemical', 9700000000, 'Maharashtra',
'54, Koregaon Park');
B.Part Table
INSERT INTO PART (PID, PNAME, COLOR, PRICE) VALUES ('P001', 'Bolt', 'Silver',
5.50);
INSERT INTO PART (PID, PNAME, COLOR, PRICE) VALUES ('P002', 'Nut', 'Gold',
3.25);
INSERT INTO PART (PID, PNAME, COLOR, PRICE) VALUES ('P003', 'Screw', 'Silver',
2.00);
INSERT INTO PART (PID, PNAME, COLOR, PRICE) VALUES ('P004', 'Panel', 'Black',
25.75);
INSERT INTO PART (PID, PNAME, COLOR, PRICE) VALUES ('P005', 'Pipe', 'White',
40.00);
INSERT INTO PART (PID, PNAME, COLOR, PRICE) VALUES ('P006', 'Wire', 'Copper',
15.00);
INSERT INTO PART (PID, PNAME, COLOR, PRICE) VALUES ('P007', 'Switch', 'Black',
10.00);
INSERT INTO PART (PID, PNAME, COLOR, PRICE) VALUES ('P008', 'Resistor', 'Blue',
0.50);
INSERT INTO PART (PID, PNAME, COLOR, PRICE) VALUES ('P009', 'Capacitor', 'Red',
1.25);
INSERT INTO PART (PID, PNAME, COLOR, PRICE) VALUES ('P010', 'Motor', 'Grey',
150.00);
C Supplies
INSERT INTO SUPPLIES (SID, PID, QTY, DATE_SUPPLIED) VALUES ('204001', 'P001',
500, TO_DATE('2025-01-10', 'YYYY-MM-DD'));
INSERT INTO SUPPLIES VALUES ('204002', 'P002', 300, TO_DATE('2025-01-15', 'YYYY-
MM-DD'));
INSERT INTO SUPPLIES VALUES ('204003', 'P003', 200, TO_DATE('2025-02-01', 'YYYY-
MM-DD'));
INSERT INTO SUPPLIES ('S003', 'P004', 100, TO_DATE('2025-02-10', 'YYYY-MM-
DD'));
INSERT INTO SUPPLIES (SID, PID, QTY, DATE_SUPPLIED) VALUES ('S004', 'P005',
400, TO_DATE('2025-02-15', 'YYYY-MM-DD'));
INSERT INTO SUPPLIES (SID, PID, QTY, DATE_SUPPLIED) VALUES ('S005', 'P006',
150, TO_DATE('2025-03-01', 'YYYY-MM-DD'));
INSERT INTO SUPPLIES (SID, PID, QTY, DATE_SUPPLIED) VALUES ('S006', 'P007',
250, TO_DATE('2025-03-10', 'YYYY-MM-DD'));
INSERT INTO SUPPLIES (SID, PID, QTY, DATE_SUPPLIED) VALUES ('S007', 'P008',
600, TO_DATE('2025-03-15', 'YYYY-MM-DD'));
INSERT INTO SUPPLIES (SID, PID, QTY, DATE_SUPPLIED) VALUES ('S008', 'P009',
350, TO_DATE('2025-04-01', 'YYYY-MM-DD'));
INSERT INTO SUPPLIES (SID, PID, QTY, DATE_SUPPLIED) VALUES ('S009', 'P010',
75, TO_DATE('2025-04-10', 'YYYY-MM-DD'));
2. Show the contents in tables supplier, part and supplies
SELECT * FROM Supplier;
SID SNAME BRANCH PHONE STATE ADDRESS
204001 Vandana Electrical 9700000000 Pune bfjlr
S001 Vandana Electrical 9876543210 Delhi 123, MG Road
S002 Rahul Mechanical 9876500000 Maharashtra 45, Marine Drive
S003 Alka Civil 9898989898 Gujarat 22, Ellisbridge
S004 Raj Electronics 9000000001 Tamil Nadu 101, T Nagar
S005 Ravi Computer 9123456789 Delhi 78, Connaught Place
Uttar
S006 Ankit Mechanical 9823456780 89, Civil Lines
Pradesh
S007 Rekha Civil 9876123456 Delhi 56, Rajpath
S008 Vikram Electrical 9812345678 Karnataka 13, MG Road
S009 Anjali Computer 9888888888 Telangana 67, Banjara Hills

SELECT * FROM Part;


PID PNAME COLOR PRICE
P001 Bolt Silver 5.5
P002 Nut Gold 3.25
P003 Screw Silver 2
P004 Panel Black 25.75
P005 Pipe White 40
P006 Wire Copper 15
P007 Switch Black 10
P008 Resistor Blue .5
P009 Capacitor Red 1.25
P010 Motor Grey 150

SELECT * FROM Supplies;


QT DATE_SUPPLIE
SID PID Y D
20400 P00
500 10-JAN-25
1 1
P00
S004 400 15-FEB-25
5
P00
S005 150 01-MAR-25
6
P00
S006 250 10-MAR-25
7
P00
S007 600 15-MAR-25
8
P00
S008 350 01-APR-25
9
P01
S009 75 10-APR-25
0
3. Find the name and city of all suppliers
ALTER TABLE Supplier RENAME COLUMN address to city;
SELECT Sname, city FROM Supplier;
SNAME CITY
Vandana bfjlr
Vandana 123, MG Road
Rahul 45, Marine Drive
Alka 22, Ellisbridge
Raj 101, T Nagar
Ravi 78, Connaught Place
Ankit 89, Civil Lines
Rekha 56, Rajpath
Vikram 13, MG Road
Anjali 67, Banjara Hills

4. Find the name and phoneno of all suppliers who stay in ‘Delhi’
SELECT Sname, Phone FROM Supplier WHERE state = 'Delhi';
SNAME PHONE
Vandana 9876543210
Ravi 9123456789
Rekha 9876123456

5. Find all distinct branches of suppliers


SELECT DISTINCT Branch FROM Supplier;
BRANCH
Mechanical
Civil
Chemical
Electronics
Electrical
Computer

6. Delete the record of the supplier whose SID is 204001

If foreign keys exist in Supplies, delete dependent rows first:

DELETE FROM Supplies WHERE SID = '204001';

7. Delete all records of supplier table


Again, delete from child table first if needed:

DELETE FROM Supplies;


DELETE FROM Supplier;

8. Delete all records of suppliers whose city starts with capital A.


DELETE FROM Supplier WHERE City LIKE 'A%';

9. Find the supplier names which have ‘lk’ in any position


SELECT Sname FROM Supplier WHERE Sname LIKE '%lk%';
SNAM
E
Sulkha

10. Find the supplier name where ‘R’ is in the second position
SELECT Sname FROM Supplier WHERE Sname LIKE '_R%';

11. Find the name of supplier whose name starts with ‘V’ and ends with
‘A’
SELECT Sname FROM Supplier WHERE Sname LIKE 'V%A';

SNAM
E
Vijaya

12. Change the city of all suppliers to ‘BOMBAY’


UPDATE Supplier SET City = 'BOMBAY';

9 row(s) updated.
SNA BRANC ADDRE
SID ME H PHONE STATE SS
Compute 9123456
S005 Vijaya Delhi BOMBAY
r 789
2040 Electroni 9898989
Raj Chennai BOMBAY
04 cs 898
2040 Compute 9123456
Ravi Delhi BOMBAY
05 r 789
2040 Mechani 9823456
Ankit Agra BOMBAY
06 cal 780
2040 9876123
Rekha Civil Delhi BOMBAY
07 456
2040 9812345
Vikram Electrical Bangalore BOMBAY
08 678
2040 Compute 9888888 Hyderaba
Anjali BOMBAY
09 r 888 d
2040 Sulekh Chemica 9700000
Pune BOMBAY
10 a l 000
Chemica 9700000 Maharash
S010 Sulkha BOMBAY
l 000 tra

13. Change the city of supplier ‘Vandana’ to ‘Goa’


UPDATE Supplier SET City = 'Goa' WHERE Sname = 'Vandana';
Part 4: Queries with Constraints

1. Create the supplier table with Primary Key Constraint


CREATE TABLE Supplier (
SID INT PRIMARY KEY,
Sname VARCHAR(50),
branch VARCHAR(50),
city VARCHAR(50),
phone VARCHAR(15)
);

Explanation:
PRIMARY KEY ensures SID is unique and not null, uniquely identifying each supplier.

2. Create supplies table with Foreign key Constraint


CREATE TABLE Supplies (
SID INT,
PID INT,
qty INT,
date_supplied DATE,
PRIMARY KEY (SID, PID),
FOREIGN KEY (SID) REFERENCES Supplier(SID),
FOREIGN KEY (PID) REFERENCES Part(PID)
);

Explanation:
Foreign keys SID and PID enforce that supplied parts correspond to valid suppliers and parts.

3. Create a part table with UNIQUE Constraint


CREATE TABLE Part (
PID INT PRIMARY KEY,
Pname VARCHAR(50) UNIQUE,
color VARCHAR(20),
price DECIMAL(10,2)
);

Explanation:
The UNIQUE constraint on Pname means no two parts can have the same name.

4. Create Supplier Table with Check Constraints


CREATE TABLE Supplier (
SID INT PRIMARY KEY,
Sname VARCHAR(50),
branch VARCHAR(50),
city VARCHAR(50),
phone VARCHAR(15),
CHECK (phone LIKE '[0-9]%') -- Ensures phone starts with digits
);
Note:
The syntax of CHECK constraints can vary. Example above enforces the phone to start with a digit.

5. Create Supplier table with Default Constraint


CREATE TABLE Supplier (
SID INT PRIMARY KEY,
Sname VARCHAR(50),
branch VARCHAR(50) DEFAULT 'local',
city VARCHAR(50),
phone VARCHAR(15)
);

Explanation:
If no value is provided for branch, it will default to 'local'.

Part 5: Queries on TCL (Transaction Control Language)

1. Create Savepoints
BEGIN TRANSACTION;

SAVEPOINT savepoint1;

Explanation:
A savepoint marks a point in a transaction to which you can rollback if needed.

2. Rollback to SavePoints
ROLLBACK TO savepoint1;

Explanation:
Rollback to undo all changes made after savepoint1 without rolling back the entire transaction.

3. Use Commit to save on


COMMIT;

Explanation:
COMMIT saves all changes made in the transaction permanently to the database.

Part 6: Aggregate Functions


1 ) FIND THE MIN,MAX,AVG AND SUM OF COSTS OF PARTS

SELECT
MIN(price) AS MinPrice,
MAX(price) AS MaxPrice,
AVG(price) AS AvgPrice,
SUM(price) AS SumPrice
FROM Part;
OUTPUT:
MINP MAXP AVGP SUMP
RICE RICE RICE RICE
25.32
.5 150 253.25
5

2) COUNT THE TOTAL NUMBER OF PARTS PRESENT


select count(*) from part;

output:

COUNT(*)

10

3) RETRIEVE THE AVERAGE COST OF ALL PARTS SUPPLIED BY ‘MIKE’


select avg(price) from part where pid=(select pid from supplies where
sid=(select sid from sup where sname='mike'));
output:
AVG(PRICE)
-

Queries on GROUP BY, HAVING AND ORDER BY Clauses

1. Display total price of parts of each color


select color, sum(price) as total_price_by_color from part group by color;
output:
COLOR TOTAL_PRICE_BY_COLOR
Silver 7.5
White 40
Grey 150
Gold 3.25
Blue .5
Black 35.75
Copper 15
Red 1.25

2. Find the branch and the number of suppliers in that branch for branches which
have more than 2 suppliers
SELECT branch, COUNT(sid) AS number_of_suppliers FROM Supplier GROUP
BY branch HAVING COUNT(sid) > 2;
OUTPUT:
BRANCH NUMBER_OF_SUPPLIERS
Electrical 3

3. Find all parts sorted by pname in ascending order and cost in descending order
select * from part order by pname asc, price desc;
output:
PID PNAME COLOR PRICE
P001 Bolt Silver 5.5
P009 Capacitor Red 1.25
P010 Motor Grey 150
P002 Nut Gold 3.25
P004 Panel Black 25.75
P005 Pipe White 40
P008 Resistor Blue .5
P003 Screw Silver 2
P007 Switch Black 10
P006 Wire Copper 15

4. Find the branch and the number of suppliers in that branch

select branch, count(sid) as number_of_suppliers from supplier group by


branch;

output:

BRANCH NUMBER_OF_SUPPLIERS
Mechanical 2

Civil 2

Chemical 1

Electronics 1

Electrical 3

Computer 2

Queries on Analytical, Hierarchical, Recursive nature.

CREATE TABLE employees (


emp_id INT PRIMARY KEY,
emp_name VARCHAR(100),
salary DECIMAL(10,2),
dept_id INT,
manager_id INT
);
CREATE TABLE departments (
dept_id INT PRIMARY KEY,
dept_name VARCHAR(100),
parent_dept_id INT
);

INSERT INTO departments VALUES (1, 'Head Office', NULL);


INSERT INTO departments VALUES (2, 'HR', 1);
INSERT INTO departments VALUES (3, 'Finance', 1);
INSERT INTO departments VALUES (4, 'IT', 1);
INSERT INTO departments VALUES (5, 'Recruitment', 2);
INSERT INTO departments VALUES (6, 'Payroll', 3);
INSERT INTO departments VALUES (7, 'Infrastructure', 4);
INSERT INTO departments VALUES (8, 'Development', 4);

INSERT INTO employees VALUES(101, 'Alice', 150000, 1, NULL);


INSERT INTO employees VALUES (102, 'Bob', 120000, 2, 101);
INSERT INTO employees VALUES (103, 'Charlie', 115000, 3, 101);
INSERT INTO employees VALUES (104, 'David', 110000, 4, 101)
INSERT INTO employees VALUES (105, 'Eve', 90000, 5, 102)
INSERT INTO employees VALUES (106, 'Frank', 85000, 6, 103);
INSERT INTO employees VALUES (107, 'Grace', 95000, 7, 104);
INSERT INTO employees VALUES (108, 'Heidi', 130000, 8, 104);
INSERT INTO employees VALUES (109, 'Ivan', 80000, 8, 108);
INSERT INTO employees VALUES (110, 'Judy', 78000, 8, 108);
INSERT INTO employees VALUES (111, 'Mallory', 88000, 5, 105);
INSERT INTO employees VALUES (112, 'Oscar', 65000, 6, 106);
INSERT INTO employees VALUES (113, 'Peggy', 72000, 7, 107);
INSERT INTO employees VALUES (114, 'Trent', 70000, 8, 108);
INSERT INTO employees VALUES (115, 'Victor', 76000, 8, 109);

1. Find out the 5th highest earning employee details.


SELECT *
FROM (
SELECT e.*, DENSE_RANK() OVER (ORDER BY salary DESC) AS rnk
FROM employees e
)
WHERE rnk = 5;
OUTPUT:
EMP_ID EMP_NAME SALARY DEPT_ID MANAGER_ID RNK
104 David 110000 4 101 5

2. Which department has the highest number of employees with a salary


above $80,000, and what percentage of employees in that department have
a salary above $80,000
SELECT dept_id, COUNT(*) AS above_80k,
ROUND((COUNT(*) / (SELECT COUNT(*) FROM employees e2 WHERE e2.dept_id =
e1.dept_id)) * 100, 2) as percentage_above_80k
FROM employees e1
WHERE salary > 80000
GROUP BY dept_id
HAVING COUNT(*) = (
SELECT MAX(cnt)
FROM (
SELECT dept_id, COUNT(*) AS cnt
FROM employees
WHERE salary > 80000
GROUP BY dept_id
)
);
OUTPUT:
DEPT_ID ABOVE_80K PERCENTAGE_ABOVE_80K
5 2 100
3. Retrieve employee table details using the hierarchy query and display that
hierarchy path starting from the top level indicating if it is a leaf and
there exists a cycle.
SELECT emp_id, emp_name, manager_id,
SYS_CONNECT_BY_PATH(emp_name, ' -> ') AS path,
CONNECT_BY_ISLEAF AS is_leaf,
CONNECT_BY_ISCYCLE AS is_cycle
FROM employees
START WITH manager_id IS NULL
CONNECT BY NOCYCLE PRIOR emp_id = manager_id;

OUTPUT:

EMP_ID EMP_NAME MANAGER_ID PATH IS_LEAF IS_CYCLE


101 Alice - -> Alice 0 0
102 Bob 101 -> Alice -> Bob 0 0
105 Eve 102 -> Alice -> Bob -> Eve 0 0
111 Mallory 105 -> Alice -> Bob -> Eve -> Mallory 1 0
103 Charlie 101 -> Alice -> Charlie 0 0
106 Frank 103 -> Alice -> Charlie -> Frank 0 0
-> Alice -> Charlie -> Frank ->
112 Oscar 106 1 0
Oscar
104 David 101 -> Alice -> David 0 0
107 Grace 104 -> Alice -> David -> Grace 0 0
113 Peggy 107 -> Alice -> David -> Grace -> Peggy 1 0

4. What is the average salary for employees in the top 2 departments with
the highest average salary, and what is the hierarchy of departments and
sub-departments for these top 2 departments?
WITH dept_avg AS ( SELECT dept_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY dept_id
ORDER BY avg_salary DESC
FETCH FIRST 2 ROWS ONLY
)
SELECT (SELECT AVG(salary)
FROM employees WHERE dept_id IN (SELECT dept_id FROM
dept_avg)) AS overall_avg_salary
FROM dual;
-- Department hierarchy for these top 2 departments SELECT dept_id,
dept_name, parent_dept_id, LEVEL AS level_no,
SYS_CONNECT_BY_PATH(dept_name, ' -> ') AS dept_path
FROM departments
START WITH dept_id IN (SELECT dept_id FROM dept_avg)
CONNECT BY PRIOR dept_id = parent_dept_id;
5. Use recursion to retrieve the employee table and display the result in
breadth first and depth first order.
-- Depth First (default)
SELECT emp_id, emp_name, manager_id, LEVEL AS level_no,
SYS_CONNECT_BY_PATH(emp_name, ' -> ') AS emp_path
FROM employees
START WITH manager_id IS NULL
CONNECT BY PRIOR emp_id = manager_id;
OUTPUT:
EMP_ID EMP_NAME MANAGER_ID LEVEL_NO EMP_PATH
101 Alice - 1 -> Alice
102 Bob 101 2 -> Alice -> Bob
105 Eve 102 3 -> Alice -> Bob -> Eve
111 Mallory 105 4 -> Alice -> Bob -> Eve -> Mallory
103 Charlie 101 2 -> Alice -> Charlie
106 Frank 103 3 -> Alice -> Charlie -> Frank
112 Oscar 106 4 -> Alice -> Charlie -> Frank -> Oscar
104 David 101 2 -> Alice -> David
107 Grace 104 3 -> Alice -> David -> Grace
113 Peggy 107 4 -> Alice -> David -> Grace -> Peggy

-- Breadth First (using ORDER SIBLINGS)


SELECT emp_id, emp_name, manager_id, LEVEL AS level_no,
SYS_CONNECT_BY_PATH(emp_name, ' -> ') AS emp_path
FROM employees
START WITH manager_id IS NULL
CONNECT BY PRIOR emp_id = manager_id
ORDER SIBLINGS BY emp_id;
EMP_ID EMP_NAME MANAGER_ID LEVEL_NO EMP_PATH
101 Alice - 1 -> Alice
102 Bob 101 2 -> Alice -> Bob
105 Eve 102 3 -> Alice -> Bob -> Eve
111 Mallory 105 4 -> Alice -> Bob -> Eve -> Mallory
103 Charlie 101 2 -> Alice -> Charlie
106 Frank 103 3 -> Alice -> Charlie -> Frank
112 Oscar 106 4 -> Alice -> Charlie -> Frank -> Oscar
104 David 101 2 -> Alice -> David
107 Grace 104 3 -> Alice -> David -> Grace
113 Peggy 107 4 -> Alice -> David -> Grace -> Peggy

6. Write a recursive query to show the equivalent of level, connect_by_root


and connect_by_path
SELECT emp_id, emp_name, LEVEL AS lvl,
CONNECT_BY_ROOT emp_name AS root_emp,
SYS_CONNECT_BY_PATH(emp_name, ' -> ') AS emp_path
FROM employees
START WITH manager_id IS NULL
CONNECT BY PRIOR emp_id = manager_id;
OUTPUT:
EMP_ID EMP_NAME LVL ROOT_EMP EMP_PATH
101 Alice 1 Alice -> Alice
102 Bob 2 Alice -> Alice -> Bob
105 Eve 3 Alice -> Alice -> Bob -> Eve
111 Mallory 4 Alice -> Alice -> Bob -> Eve -> Mallory
103 Charlie 2 Alice -> Alice -> Charlie
106 Frank 3 Alice -> Alice -> Charlie -> Frank
112 Oscar 4 Alice -> Alice -> Charlie -> Frank -> Oscar
104 David 2 Alice -> Alice -> David
107 Grace 3 Alice -> Alice -> David -> Grace
113 Peggy 4 Alice -> Alice -> David -> Grace -> Peggy

7. Use recursion to retrieve the employee table and display the result in
depth first order showing id, parent_id, level, root_id, path and leaf.

SELECT emp_id AS id,


manager_id AS parent_id, LEVEL AS lvl,
CONNECT_BY_ROOT emp_id AS root_id,
SYS_CONNECT_BY_PATH(emp_name, ' -> ') AS emp_path,
CONNECT_BY_ISLEAF AS is_leaf
FROM employees
START WITH manager_id IS NULL
CONNECT BY PRIOR emp_id = manager_id;
ID PARENT_ID LVL ROOT_ID EMP_PATH IS_LEAF
101 - 1 101 -> Alice 0
102 101 2 101 -> Alice -> Bob 0
105 102 3 101 -> Alice -> Bob -> Eve 0
111 105 4 101 -> Alice -> Bob -> Eve -> Mallory 1
103 101 2 101 -> Alice -> Charlie 0
106 103 3 101 -> Alice -> Charlie -> Frank 0
112 106 4 101 -> Alice -> Charlie -> Frank -> Oscar 1
104 101 2 101 -> Alice -> David 0
107 104 3 101 -> Alice -> David -> Grace 0
113 107 4 101 -> Alice -> David -> Grace -> Peggy 1

Queries on Operators

CREATE TABLE Suppliers (


SID INT PRIMARY KEY,
SName VARCHAR(50),
PhoneNo VARCHAR(15),
Branch VARCHAR(20)
);
CREATE TABLE Parts (
PID INT PRIMARY KEY,
PName VARCHAR(50),
Color VARCHAR(20),
Cost INT,
PhoneNo VARCHAR(15)
);

CREATE TABLE Supply (


SID INT,
PID INT,
SupplyDate DATE,
FOREIGN KEY (SID) REFERENCES Suppliers(SID),
FOREIGN KEY (PID) REFERENCES Parts(PID)
);
-- Suppliers
INSERT INTO Suppliers VALUES (1, 'Alpha Supplies', '9876543210', 'local');
INSERT INTO Suppliers VALUES (2, 'Beta Traders', '9123456780', 'global');
INSERT INTO Suppliers VALUES (3, 'Gamma Distributors', '9988776655',
'regional');

-- Parts
INSERT INTO Parts VALUES (101, 'NUT', 'Red', 250, '9876543210');
INSERT INTO Parts VALUES (102, 'BOLT', 'Blue', 550, '9123456780');
INSERT INTO Parts VALUES (103, 'SCREW', 'Green', 150, '9988776655');
INSERT INTO Parts VALUES (104, 'NETWIRE', 'Black', 400, '9123456780');
INSERT INTO Parts VALUES (105, 'WASHER', 'Red', 600, '9876543210');
INSERT INTO Parts VALUES (106, 'CLIP', 'Yellow', 700, '9988776655');

-- Supply records
INSERT INTO Supply VALUES (1, 101, DATE '2000-05-01');
INSERT INTO Supply VALUES (2, 102, DATE '2021-01-12');
INSERT INTO Supply VALUES (1, 104, DATE '2000-12-17');
INSERT INTO Supply VALUES (3, 105, DATE '2021-01-10');
1. Find the pname, phoneno and cost of parts which have cost equal to or
greater than 200 and less than or equal to 600.
SELECT PName, PhoneNo, Cost
FROM Parts
WHERE Cost >= 200 AND Cost <= 600;
PNAME PHONENO COST
NUT 9876543210 250
BOLT 9123456780 550
NETWIRE 9123456780 400
WASHER 9876543210 600

2. Find the sname , SID and branch of suppliers who are in ‘local’ branch
or ‘global’ branch
SELECT SName, SID, Branch
FROM Suppliers
WHERE Branch IN ('local', 'global');
SI
SNAME D BRANCH
Alpha Supplies 1 local
Beta Traders 2 global

3. Find the pname, phoneno and cost of parts for which cost is between 200
and 600
SELECT PName, PhoneNo, Cost
FROM Parts
WHERE Cost BETWEEN 200 AND 600;
PNAME PHONENO COST
NUT 9876543210 250
BOLT 9123456780 550
NETWIRE 9123456780 400
WASHER 9876543210 600

4. Find the pname and color of parts, which has the word ‘NET’
anywhere in its pname.

SELECT PName, Color


FROM Parts
WHERE PName LIKE '%NET%';
PNAME COLOR
NETWIRE Black

5. Find the PID and pname of parts with pname either ‘NUT’ or ‘BOLT’
SELECT PID, PName
FROM Parts
WHERE PName IN ('NUT', 'BOLT');
PID PNAME
101 NUT
102 BOLT

6. List the suppliers who supplied parts on ‘1 st may2000’, ‘12 JAN


2021’ ,’17 dec 2000’ , ’10 Jan 2021’
SELECT DISTINCT S.SName, S.SID, S.Branch
FROM Suppliers S
JOIN Supply SP ON S.SID = SP.SID
WHERE SP.SupplyDate IN (
DATE '2000-05-01',
DATE '2021-01-12',
DATE '2000-12-17',
DATE '2021-01-10'
);
SNAME SID BRANCH
Beta Traders 2 global
Gamma Distributors 3 regional
Alpha Supplies 1 local

7. Find all the distinct costs of parts

SELECT DISTINCT Cost


FROM Parts;

COST
400
250
600
550
700
150

Join Operators
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
StudentName VARCHAR(50),
City VARCHAR(50)
);

CREATE TABLE Courses (


CourseID INT PRIMARY KEY,
CourseName VARCHAR(50),
StudentID INT
);

-- Insert values
INSERT INTO Students VALUES (1, 'Amit', 'Delhi');
INSERT INTO Students VALUES (2, 'Bhavna', 'Mumbai');
INSERT INTO Students VALUES (3, 'Chetan', 'Pune');
INSERT INTO Students VALUES (4, 'Deepa', 'Chennai');
INSERT INTO Courses VALUES (101, 'Math', 1);
INSERT INTO Courses VALUES (102, 'Science', 2);
INSERT INTO Courses VALUES (103, 'English', 5); -- no matching student
INSERT INTO Courses VALUES (104, 'History', 1);

1. Perform Inner join on two tables


SELECT s.StudentID, s.StudentName, c.CourseID, c.CourseName

FROM Students s

INNER JOIN Courses c ON s.StudentID = c.StudentID;

STUDENTID STUDENTNAME COURSEID COURSENAME


1 Amit 101 Math
2 Bhavna 102 Science
1 Amit 104 History

2.Perform Natural Join on two tables


SELECT *
FROM Students
NATURAL JOIN Courses;

STUDENTID STUDENTNAME CITY COURSEID COURSENAME


1 Amit Delhi 101 Math
2 Bhavna Mumbai 102 Science
1 Amit Delhi 104 History

3.Perform Left Outer Join on tables


SELECT s.StudentID, s.StudentName, c.CourseID, c.CourseName
FROM Students s
LEFT OUTER JOIN Courses c ON s.StudentID = c.StudentID;

STUDENTID STUDENTNAME COURSEID COURSENAME


1 Amit 101 Math
2 Bhavna 102 Science
1 Amit 104 History
4 Deepa - -
3 Chetan - -

4.Perform Right Outer join on tables


SELECT s.StudentID, s.StudentName, c.CourseID, c.CourseName
FROM Students s
RIGHT OUTER JOIN Courses c ON s.StudentID = c.StudentID;
STUDENTID STUDENTNAME COURSEID COURSENAME
1 Amit 104 History
1 Amit 101 Math
2 Bhavna 102 Science
- - 103 English

5.Perform Full Outer Join on tables


SELECT s.StudentID, s.StudentName, c.CourseID, c.CourseName
FROM Students s
FULL OUTER JOIN Courses c ON s.StudentID = c.StudentID
STUDENTID STUDENTNAME COURSEID COURSENAME
1 Amit 101 Math
2 Bhavna 102 Science
1 Amit 104 History
4 Deepa - -
3 Chetan - -
- - 103 English

Set Theory Operators


CREATE TABLE Employees1 (
EmpID INT,
EmpName VARCHAR(50)
);
CREATE TABLE Employees2 (
EmpID INT,
EmpName VARCHAR(50)
);
-- Sample Data
INSERT INTO Employees1 VALUES (1, 'Amit');
INSERT INTO Employees1 VALUES (2, 'Bhavna');
INSERT INTO Employees1 VALUES (3, 'Chetan');
INSERT INTO Employees2 VALUES (2, 'Bhavna');
INSERT INTO Employees2 VALUES (3, 'Chetan');
INSERT INTO Employees2 VALUES (4, 'Deepa');

1.Show the use of UNION operator with union compatibility


SELECT EmpID, EmpName FROM Employees1
UNION
SELECT EmpID, EmpName FROM Employees2;
EMPID EMPNAME
1 Amit
2 Bhavna
3 Chetan
4 Deepa

2.Show the use of intersect operator with union compatibility


SELECT EmpID, EmpName FROM Employees1
INTERSECT
SELECT EmpID, EmpName FROM Employees2;
EMPID EMPNAME
2 Bhavna
3 Chetan
3.Show the use of minus operator with union compatibility
SELECT EmpID, EmpName FROM Employees1
MINUS
SELECT EmpID, EmpName FROM Employees2;
EMPID EMPNAME
1 Amit

4.Find the cartesian product of two tables


SELECT *
FROM Employees1
CROSS JOIN Employees2;
EMP EMPNA EMP EMPNA
ID ME ID ME
2 Bhavna 2 Bhavna
2 Bhavna 3 Chetan
2 Bhavna 4 Deepa
3 Chetan 2 Bhavna
3 Chetan 3 Chetan
3 Chetan 4 Deepa
1 Amit 2 Bhavna
1 Amit 3 Chetan
1 Amit 4 Deepa

Queries on Set Theory Operators


CREATE TABLE Suppliers1 (
SID INT PRIMARY KEY,
SName VARCHAR(50)
);

CREATE TABLE Parts1 (


PID INT PRIMARY KEY,
PName VARCHAR(50),
Color VARCHAR(20),
Cost INT
);

CREATE TABLE Supply1 (


SID INT,
PID INT,
SupplyDate DATE,
FOREIGN KEY (SID) REFERENCES Suppliers(SID),
FOREIGN KEY (PID) REFERENCES Parts(PID)
);
INSERT INTO Suppliers1 VALUES (1, 'Alpha Supplies');
INSERT INTO Suppliers1 VALUES (2, 'Beta Traders');
INSERT INTO Suppliers1 VALUES (3, 'Gamma Distributors');

INSERT INTO Parts1 VALUES (101, 'NUT', 'Red', 400);


INSERT INTO Parts1 VALUES (102, 'BOLT', 'Blue', 300);
INSERT INTO Parts1 VALUES (103, 'SCREW', 'Green', 500);
INSERT INTO Parts1 VALUES (104, 'WASHER', 'Red', 400);
INSERT INTO Parts1 VALUES (105, 'CLIP', 'Yellow',600);

INSERT INTO Supply1 VALUES (1, 101, DATE '2021-01-01');


INSERT INTO Supply1 VALUES (1, 103, DATE '2021-02-01');
INSERT INTO Supply1 VALUES (2, 104, DATE '2021-01-15');
INSERT INTO Supply1 VALUES (3, 103, DATE '2021-03-01');
INSERT INTO Supply1 VALUES (3, 104, DATE '2021-04-01');
1.List all parts except ‘NUT’ and ‘BOLT’ in ascending order of
costs
SELECT PName, Cost
FROM Parts1
WHERE PName NOT IN ('NUT', 'BOLT')
ORDER BY Cost ASC;
PNAME COST
WASHER 400
SCREW 500
CLIP 600

2.display all parts that have not been supplied so far


SELECT P.PID, P.PName, P.Color, P.Cost
FROM Parts P
WHERE P.PID NOT IN (SELECT PID FROM Supply);
PNAM
PID E COLOR COST
102 BOLT Blue 300
105 CLIP Yellow 600

3.To display the supplier names who have supplied ‘green’ part
with cost 500 Rupees AND ‘red’ part with cost 400 Rupees.
SELECT S.SName
FROM Suppliers1 S
WHERE S.SID IN (
SELECT S1.SID
FROM Supply1 S1
JOIN Parts1 P1 ON S1.PID = P1.PID
WHERE P1.Color = 'Green' AND P1.Cost = 500
)
AND S.SID IN (
SELECT S2.SID
FROM Supply1 S2
JOIN Parts1 P2 ON S2.PID = P2.PID
WHERE P2.Color = 'Red' AND P2.Cost = 400
);
SNAME
Alpha Supplies
Gamma Distributors

4.To display the supplier names who have supplied ‘green’ part
with cost 500 Rupees OR ‘red’ part with cost 400 Rupees.
SELECT DISTINCT S.SName
FROM Suppliers1 S
JOIN Supply1 SP ON S.SID = SP.SID
JOIN Parts1 P ON SP.PID = P.PID
WHERE (P.Color = 'Green' AND P.Cost = 500)
OR (P.Color = 'Red' AND P.Cost = 400);
Output:
SNAME
Alpha Supplies
Gamma Distributors
Beta Traders

5.To Display the name of suppliers who have supplied all parts
that are ‘red’ in color.
SELECT S.SName
FROM Suppliers1 S
WHERE NOT EXISTS (
SELECT P.PID
FROM Parts1 P
WHERE P.Color = 'Red'
MINUS
SELECT SP.PID
FROM Supply1 SP
WHERE SP.SID = S.SID
);
Output:
No data found according to the data inserted.

PL/SQL Programs

1. Write a PL/SQL Code to add two numbers


2. Write a PL/SQL code for Fibonacci series
3. Write a PL/SQL Code for greatest of 3 numbers
4. Write a PL/SQL code for area and circumference of a circle

MongoDB Queries
1. Create a collection and insert documents into it using insertOne() and
insertMany()
2. Select all documents in collection
3. Find the count of all suppliers
4. Find all records that have city = ‘Delhi’
5. Retrieve all documents that have color equal to ‘red’ or ‘green’
6. Retrieve all documents where part_name is ‘P1’ or price is less than 200.
7. Update the record of ‘Geeta’ ,set city = ‘Bombay’ and phoneno =
‘11223344’
8. Delete all records where price is greater than 5000
9. Display only the name and city of the supplier
10. Sort all suppliers on city and display only the first two records.

You might also like