0% found this document useful (0 votes)
29 views8 pages

DBMS Lab

Database management system

Uploaded by

Sai Dinesh
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)
29 views8 pages

DBMS Lab

Database management system

Uploaded by

Sai Dinesh
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/ 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