0% found this document useful (0 votes)
19 views

DBMS Lab

Database management system

Uploaded by

Sai Dinesh
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views

DBMS Lab

Database management system

Uploaded by

Sai Dinesh
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

*** 1.

SUPPLIER – PARTS DATABASE SUPPLIER (SID, SNAME, CITY) PARTS (PID,


PNAME, COLOR) ORDERS (SID, PID, QUANTITY)

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);

3. *** SELECT COUNT(*) AS total_suppliers *** FROM SUPPLIER;

4. *** CREATE VIEW supplier_view AS *** SELECT SUPPLIER.SID, SUPPLIER.SNAME,


ORDERS.PID *** FROM SUPPLIER *** JOIN ORDERS ON SUPPLIER.SID = ORDERS.SID; ***
-- To see the contents of the view *** SELECT * FROM supplier_view;

5. *** “SELECT *” *** FROM PARTS *** WHERE color = 'Red';

*** “SELECT *“ *** FROM ORDERS *** JOIN PARTS ON ORDERS.part_id =


PARTS.part_id*** WHERE PARTS.color = 'Red';

*** 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: 1. ***CREATE TABLE BUS ( ***ROUTENO VARCHAR(5) PRIMARY KEY,


***SOURCE VARCHAR(50), ***DESTINATION VARCHAR(50) ***);

***CREATE TABLE PASSENGER ( ***PID INTEGER PRIMARY KEY, ***PNAME


VARCHAR(50),***DOB DATE, ***GENDER CHAR(1) CHECK (GENDER IN ('M', 'F')) ***);
***CREATE TABLE BOOK_TICKET ( ***PID INTEGER, ***ROUTENO VARCHAR(5),
***JOURNEY_DATE DATE, ***SEAT_NO INTEGER, ***FOREIGN KEY (PID) REFERENCES
PASSENGER(PID), ***FOREIGN KEY (ROUTENO) REFERENCES BUS(ROUTENO) ***);
***INSERT INTO BUS (ROUTENO, SOURCE, DESTINATION) VALUES ***('R1', 'New York',
'Boston'), ***('R2', 'Boston', 'Chicago'), ***('R3', 'Chicago', 'Los Angeles');
***INSERT INTO PASSENGER (PID, PNAME, DOB, GENDER) VALUES *** (1, 'Alice', '1990-
05-10', 'F'), *** (2, 'Bob', '1985-08-22', 'M'), *** (3, 'Charlie', '1992-12-13', 'M');
***INSERT INTO BOOK_TICKET (PID, ROUTENO, JOURNEY_DATE, SEAT_NO) VALUES ***
(1, 'R1', '2015-08-21', 12), *** (2, 'R2', '2015-08-21', 15), *** (3, 'R1', '2015-08-21', 18);

2. ***SELECT PNAME ***FROM PASSENGER P ***JOIN BOOK_TICKET B ON P.PID = B.PID


***WHERE B.ROUTENO = 'R1' AND B.JOURNEY_DATE = '2015-08-21';

3. ***CREATE VIEW reservation_view AS ***SELECT P.PID, P.PNAME, B.SOURCE,


B.DESTINATION ***FROM PASSENGER P ***JOIN BOOK_TICKET BT ON P.PID =
BT.PID***JOIN BUS B ON BT.ROUTENO = B.ROUTENO; ***SELECT * FROM
reservation_view; ***4. ***SELECT LTRIM(' Hello World!') AS trimmed_string; **SELECT
RPAD('Hello', 10, '') AS padded_string; *** 5. ***SELECT SNAME, AGE ***FROM SAILORS
***WHERE AGE = (SELECT MAX(AGE) FROM SAILORS); *** 6. ***SELECT S.SNAME, S.AGE
***FROM SAILORS S, BOATS B1, BOATS B2, RESERVES R1, RESERVES R2 ***WHERE S.SID
= R1.SID AND S.SID = R2.SID AND B1.BID = R1.BID AND B2.BID = R2.BID***AND
B1.COLOR = 'Red' AND B2.COLOR = 'Green';

***SELECT S.SNAME, S.AGE ***FROM SAILORS S ***WHERE EXISTS (SELECT 1 FROM


RESERVES R1, BOATS B1 WHERE S.SID = R1.SID AND R1.BID = B1.BID AND B1.COLOR =
'Red') ***AND EXISTS (SELECT 1 FROM RESERVES R2, BOATS B2 WHERE S.SID = R2.SID
AND R2.BID = B2.BID AND B2.COLOR = 'Green');

7. ***SELECT * ***FROM BOOK_TICKET BT ***JOIN PASSENGER P ON BT.PID =


P.PID***WHERE BT.JOURNEY_DATE = '2015-08-21';
3. Create a Table as workers and the details are S.No Name Designation Branch

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';

***select name, branch *** from workers;

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');

*** ALTER TABLE Employee RENAME COLUMN Name TO Employee_Name;

2. SELECT Designation*** FROM Employee*** WHERE Employee_Name LIKE 'R%';

3. SELECT Employee_Name*** FROM Employee*** WHERE Designation = 'Manager';

4. SELECT UPPER(Employee_Name) AS Employee_Name, UPPER(Designation) AS ***


Designation*** FROM Employee*** WHERE Branch = 'Chennai';

5. *** π_sname(Sailors) ∩ (π_sname(Sailors ⨝ Reserves ⨝ σ_color='red'(Boats))) ∩ ***


(π_sname(Sailors ⨝ Reserves ⨝ σ_color='green'(Boats)))

6. *** π_sname(Sailors ⨝ Reserves ⨝ σ_color='red' OR color='green'(Boats))

7. *** CREATE VIEW ChennaiEmployees AS *** SELECT Employee_Name, Designation***


FROM Employee *** WHERE Branch = 'Chennai';

*** SELECT * FROM ChennaiEmployees;


5. Customer database for item sales Customer (Cust id: integer, cust_name: string)
Item (item_id: integer, item_name: string, price: integer)

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);

2. *** SELECT S.bill_no, S.bill_date, C.cust_name, I.item_name, S.qty_sold, I.price,***


(S.qty_sold * I.price) AS total_amount*** FROM Sale S*** JOIN Customer C ON S.cust_id =
C.cust_id *** JOIN Item I ON S.item_id = I.item_id;

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;

4. *** SELECT C.cust_name, COUNT(S.item_id) AS total_products_bought *** FROM Sale


S*** JOIN Customer C ON S.cust_id = C.cust_id *** GROUP BY C.cust_name;

5. *** π_sid(Catalog) ÷ π_pid(Parts) ####*** {S.sid | ∀ P (P ∈ Parts) ⇒ ∃ C (C ∈ Catalog ∧


C.sid = S.sid ∧ C.pid = P.pid)} ###6. *** π_sid(Catalog) ÷ π_pid(Parts)
9. Sailors database Sailors(sid: integer, sname: string, rating: integer, age: real) Boats
(bid: integer, bname: string, color: string)

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);

2. SELECT sname*** FROM Sailors*** WHERE sname LIKE 'B%b';

3. UPDATE Sailors *** SET rating = rating + 2;

4. SELECT COUNT(*)*** FROM Reserve*** WHERE bid = 102;

5. SELECT sna*** FROM Sailors*** WHERE sid IN (*** SELECT sid*** FROM Reserves***
WHERE bid IN (*** SELECT bid*** FROM Boats*** WHERE color = 'red'*** )***);

6. π_pid(Catalog) ⨝ π_pid(σ_count(sid) >= 2(Catalog ⨝ π_sid(Suppliers)))

*** {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)

ANSWER: 1.***create table student ( ***stud_no integer primary key,***stud_name


varchar(50), ***class varchar(50),***foreign key (class) references class(class) ***);

***create table class ( ***class varchar(50) primary key, ***descrip varchar(100) ***);

***create table lab ( ***mach_no integer, ***lab_no integer, ***description


varchar(100),***primary key(mach_no, lab_no) ***);

***create table allotment ( ***stud_no integer, ***mach_no integer, ***dayofweek


varchar(50), ***foreign key (stud_no) references student(stud_no), ***foreign key
(mach_no) references lab(mach_no) ***); *** PRIMARY KEY (stud_no, mach_no,
dayofweek) ***);

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');

*** INSERT INTO Allotment (stud_no, mach_no, dayofweek) VALUES***(1, 101,


'Monday'),***(2, 102, 'Tuesday'), *** *** (3, 103, 'Wednesday'), *** (4, 104, 'Thursday'),
***(5, 105, 'Friday'),*** (1, 102, 'Wednesday'),*** (2, 103, 'Monday');

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***);

7. SELECT S.stud_name, L.description*** FROM Student S*** JOIN Allotment A ON


S.stud_no = A.stud_no*** JOIN Lab L ON A.mach_no = L.mach_no*** WHERE A.dayofweek
= 'Monday';

7. Database Schema for a Employee-pay scenario Employee (emp_id: integer,


emp_name: string) Department (dept_id: integer, dept_name:string)

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)}

You might also like