DBMS Lab
DBMS Lab
ANSWER:
1.*** SELECT SNAME *** FROM SUPPLIER ***WHERE SNAME LIKE 'S%h';
2. *** CREATE TABLE SUPPLIER ( ***SID INTEGER PRIMARY KEY, *** SNAME
VARCHAR(50), ***CITY VARCHAR(50) ***);
*** CREATE TABLE PARTS ( *** PID INTEGER PRIMARY KEY, *** PNAME VARCHAR(50), ***
COLOR VARCHAR(20) ***);
*** CREATE TABLE ORDERS ( *** SID INTEGER, *** PID INTEGER, *** QUANTITY
INTEGER,*** FOREIGN KEY (SID) REFERENCES SUPPLIER(SID), *** FOREIGN KEY (PID)
REFERENCES PARTS(PID) ***);
*** INSERT INTO SUPPLIER (SID, SNAME, CITY) VALUES *** (1, 'Smith', 'London'), *** (2,
'Seth', 'New York'), *** (3, 'Johnson', 'Paris'); *** -- Populate PARTS table *** INSERT INTO
PARTS (PID, PNAME, COLOR) VALUES *** (1, 'Bolt', 'Red'), *** (2, 'Nut', 'Blue'), *** (3,
'Screw', 'Red'); *** -- Populate ORDERS table *** INSERT INTO ORDERS (SID, PID,
QUANTITY) VALUES *** (1, 1, 100), *** (2, 2, 200), *** (3, 3, 150);
*** SELECT DISTINCT SUPPLIER.sname *** FROM SUPPLIER *** JOIN ORDERS ON
SUPPLIER.supplier_id = ORDERS.supplier_id *** JOIN PARTS ON ORDERS.part_id =
PARTS.part_id *** WHERE PARTS.color = 'Red';
6. *** SELECT SID AS SID, *** SNAME AS NAME, *** CITY AS LOCATION *** FROM
SUPPLIER AS S;
*** SELECT S.NAME, O.PID, O.QUANTITY *** FROM SUPPLIER AS S *** JOIN ORDERS AS O
ON S.SID = O.SID;
7. ER Diagrams
2.Consider the following relations for a bus reservation system application: ***BUS
(ROUTENO, SOURCE, DESTINATION) PASSENGER (PID, PNAME, DOB, GENDER)
ANSWER: ***create table workers *** (sno integer primary key, *** name varchar(50), ***
designation varchar(50), *** branch varchar(50) ***);
***insert into workers (sno, name, designation, branch) values (1, 'Raghu', 'Manager',
'Chennai'), (2, 'Krishna', 'Supervisor', 'Delhi'), (3, 'Shankar', 'Assistant', 'Vizag');
1. ***alter table workers add salary decimal(10, 2); ***2.***select designation from
workers where name like 'S%'; *** 3.***select name from workers where designation =
'Supervisor'; *** 4.***truncate table workers; ***.5***select s.sname *** from sailors s ***
where not exists (*** select b.bid *** from boats b *** where not exists ( *** select r.bid ***
from reserves r *** where r.sid = s.sid and r.bid = b.bid) ***) ***; *** 6. ***select s.sname
*** from sailors s *** where not exists (*** select b.bid *** from boats b *** where b.color =
'Red' *** and not exists ( *** select r.bid *** from reserves r *** where r.sid = s.sid and r.bid
= b.bid)); *** 7. ***select * *** from workers ***where branch = 'Chennai';
8. Create a Table as employee and the details are S.NoName Designation Branch 1
ANSWER:1. *** CREATE TABLE Employee (*** S_No INTEGER PRIMARY KEY,*** Name
VARCHAR(50),*** Designation VARCHAR(50),*** Branch VARCHAR(50)***);
*** INSERT INTO Employee (S_No, Name, Designation, Branch) VALUES*** (1, 'Ram',
'Manager', 'Chennai'),*** (2, 'Santhosh', 'Supervisor', 'Madurai'),*** (3, 'Hari', 'Assistant',
'Visakhapatnam'),*** (4, 'Rohit', 'Manager', 'Chennai');
ANSWER:
1. *** CREATE TABLE Customer ( *** cust_id INTEGER PRIMARY KEY, *** cust_name
VARCHAR(50) ***);
*** CREATE TABLE Item ( *** item_id INTEGER PRIMARY KEY, *** item_name
VARCHAR(50), *** price INTEGER ***);
*** CREATE TABLE Sale ( *** bill_no INTEGER PRIMARY KEY, *** bill_date DATE, ***
cust_id INTEGER, *** item_id INTEGER,*** qty_sold INTEGER,*** FOREIGN KEY
(cust_id) REFERENCES Customer(cust_id),*** FOREIGN KEY (item_id) REFERENCES
Item(item_id)***);
*** INSERT INTO Customer (cust_id, cust_name) VALUES*** (1, 'Alice'),*** (2, 'Bob'),*** (3,
'Charlie'),*** (4, 'David'),*** (5, 'Eva');
*** INSERT INTO Item (item_id, item_name, price) VALUES*** (101, 'Laptop', 500),*** (102,
'Phone', 300)*** (103, 'Tablet', 200)*** (104, 'Monitor', 250),*** (105, 'Mouse', 50);
*** INSERT INTO Sale (bill_no, bill_date, cust_id, item_id, qty_sold) VALUES*** (1, '2024-
08-21', 1, 101, 2),*** (2, '2024-08-22', 2, 102, 1)*** (3, '2024-08-22', 3, 103, 3),*** (4, '2024-
08-23', 4, 104, 1)*** (5, '2024-08-23', 5, 105, 4),*** (6, '2024-08-24', 1, 104, 2),*** (7, '2024-
08-24', 2, 103, 1),*** (8, '2024-08-25', 3, 101, 1),*** (9, '2024-08-25', 4, 105, 2),*** (10,
'2024-08-25', 5, 102, 2);
3. *** SELECT DISTINCT C.cust_name, I.item_name, I.price *** FROM Sale S *** JOIN
Customer C ON S.cust_id = C.cust_id *** JOIN Item I ON S.item_id = I.item_id *** WHERE
I.price > 200;
ANSWER:
1. * SELECT sid, COUNT(*) *** FROM Sailors *** GROUP BY sid *** HAVING COUNT(*) > 1;
*** SELECT sid, bid, day, COUNT(*) *** FROM Reserves *** GROUP BY sid, bid, day ***
HAVING COUNT(*) > 1;
*** SELECT COUNT(*) *** FROM Sailors *** WHERE sid IS NULL;
*** ALTER TABLE Sailors *** ADD CONSTRAINT PK_Sailors PRIMARY KEY (sid);
*** ALTER TABLE Reserves*** ADD CONSTRAINT PK_Reserves PRIMARY KEY (sid, bid, day);
5. SELECT sna*** FROM Sailors*** WHERE sid IN (*** SELECT sid*** FROM Reserves***
WHERE bid IN (*** SELECT bid*** FROM Boats*** WHERE color = 'red'*** )***);
*** {P.pid | ∃S1 ∃S2 (S1 ∈ Catalog ∧ S2 ∈ Catalog ∧ S1.pid = P.pid ∧ S2.pid = P.pid ∧ S1.sid≠
S2.sid)}
*** SELECT product, SUM(amount) AS total_sales *** FROM Sales *** GROUP BY
product*** HAVING SUM(amount) > 500;
4. Database Schema for a student-Lab scenario Student (stud_no: integer, stud_name:
string, class: string) Class (class: string, descrip: string)
***create table class ( ***class varchar(50) primary key, ***descrip varchar(100) ***);
2. INSERT INTO Class (class, descrip) VALUES *** ('CSIT', 'Computer Science and IT'), ***
('ECE', 'Electronics and Communication'), *** ('EEE', 'Electrical Engineering');
*** INSERT INTO Student (stud_no, stud_name, class) VALUES *** (1, 'Alice', 'CSIT'), *** (2,
'Bob', 'CSIT'),*** (3, 'Charlie', 'ECE'),*** (4, 'David', 'EEE'), *** (5, 'Eve', 'CSIT');
*** INSERT INTO Lab (mach_no, Lab_no, description) VALUES *** (101, 1, 'High-
performance workstation'), *** (102, 1, 'Multimedia workstation'), ***(103, 2, 'AI research
machine'), *** (104, 2, 'Networking machine'), *** (105, 3, 'Electrical lab setup');
3. *** SELECT S.stud_name, L.Lab_no, L.mach_no *** FROM Allotment A *** JOIN Student
S ON A.stud_no = S.stud_no*** JOIN Lab L ON A.mach_no = L.mach_no;
4. *** SELECT COUNT(*) AS total_machines *** FROM Allotment A *** JOIN Student S ON
A.stud_no = S.stud_no*** WHERE S.class = 'CSIT';
5. *** SELECT S.sname *** FROM Sailors S *** WHERE NOT EXISTS ( *** SELECT B.bid***
FROM Boats B *** EXCEPT *** SELECT R.bid *** FROM Reserves R *** WHERE
R.sid = S.sid ***);
6. SELECT S.sname*** FROM Sailors S*** WHERE NOT EXISTS *** SELECT B.bid***
FROM Boats B*** WHERE B.bname = 'Interlake*** EXCEPT *** SELECT R.bid***
FROM Reserves R*** WHERE R.sid = S.sid***);
Answer:1. *** CREATE TABLE Employee ( *** emp_id INTEGER PRIMARY KEY,***
emp_name VARCHAR(50)***);
*** CREATE TABLE Department (*** dept_id INTEGER PRIMARY KEY,*** dept_name
VARCHAR(50)***);
*** CREATE TABLE Paydetails (*** emp_id INTEGER,*** dept_id INTEGER,*** basic
INTEGER,*** deductions INTEGER,*** additions INTEGER,*** DOJ DATE,*** PRIMARY
KEY (emp_id, dept_id),*** FOREIGN KEY (emp_id) REFERENCES Employee(emp_id),***
FOREIGN KEY (dept_id) REFERENCES Department(dept_id)***);
*** CREATE TABLE Payroll (*** emp_id INTEGER,*** pay_date DATE*** FOREIGN KEY
(emp_id) REFERENCES Employee(emp_id)***);
2. INSERT INTO Employee (emp_id, emp_name) VALUES*** (1, 'Alice'),*** (2, 'Bob'),*** (3,
'Charlie'),*** (4, 'David'),*** (5, 'Eva'),*** (6, 'Frank')*** (7, 'Grace'),*** (8, 'Hank'),*** (9,
'Ivy'),*** (10, 'Jack');
*** INSERT INTO Department (dept_id, dept_name) VALUES*** (1, 'HR'),*** (2,
'Finance'),*** (3, 'IT'),*** (4, 'Marketing'),*** (5, 'Sales');
*** INSERT INTO Paydetails (emp_id, dept_id, basic, deductions, additions, DOJ)
VALUES*** (1, 1, 15000, 1000, 2000, '2021-06-01')*** (2, 2, 12000, 1500, 1000, '2022-02-
14')*** (3, 3, 18000, 2000, 3000, '2020-12-20'),*** (4, 4, 10000, 500, 500, '2021-04-05'),***
(5, 5, 14000, 1000, 1500, '2023-01-12'),*** (6, 1, 16000, 1200, 2500, '2019-08-25'),*** (7, 2,
13000, 700, 800, '2021-09-15'),*** (8, 3, 20000, 1800, 1200, '2022-03-30'),*** (9, 4, 11000,
500, 700, '2023-07-10'),*** (10, 5, 17000, 1000, 2000, '2021-11-01');
*** INSERT INTO Payroll (emp_id, pay_date) VALUES*** (1, '2023-09-01'),*** (2, '2023-09-
02'),*** (3, '2023-09-03'),*** (4, '2023-09-04'),*** (5, '2023-09-05'),*** (6, '2023-09-06'),***
(7, '2023-09-07'),*** (8, '2023-09-08'),*** (9, '2023-09-09'),*** (10, '2023-09-10');
3. *** SELECT E.emp_name, D.dept_name, P.basic, P.deductions, P.additions*** FROM
Employee E*** JOIN Paydetails P ON E.emp_id = P.emp_id*** JOIN Department D ON
P.dept_id = D.dept_id*** ORDER BY D.dept_name;
4. *** SELECT E.emp_name, P.basic *** FROM Employee E *** JOIN Paydetails P ON
E.emp_id = P.emp_id *** WHERE P.basic BETWEEN 10000 AND 20000;
5. *** SELECT rating, AVG(age) AS avg_age *** FROM Sailors*** GROUP BY ratin***
HAVING COUNT(sid) >= 2;
6. *** SELECT S.sid *** FROM Suppliers S *** WHERE NOT EXISTS ( *** SELECT P.pid ***
FROM Parts P *** WHERE P.color IN ('red', 'green') *** EXCEPT *** SELECT C.pid ***
FROM Catalog C *** WHERE C.sid = S.sid ***);
7. *** {T | T ∈ Sailors ∧ T.rating > 5}*** {<S, A> | ∃ P (P ∈ Sailors ∧ P.sname = S ∧ P.age = A ∧
P.rating > 5)}