diff --git a/Practical/Practical Exam/S9 - SQL Queries.md b/Practical/Practical Exam/S9 - SQL Queries.md new file mode 100644 index 0000000..04aa043 --- /dev/null +++ b/Practical/Practical Exam/S9 - SQL Queries.md @@ -0,0 +1,135 @@ +# S9 - SQL Queries (in MySQL) + +**Problem Statement:** +SQL Queries +Create following tables with suitable constraints. Insert data and +solve the following queries: +CUSTOMERS(_CNo_, Cname, Ccity, CMobile) +ITEMS(_INo_, Iname, Itype, Iprice, Icount) +PURCHASE(_PNo_, Pdate, Pquantity, Cno, INo) +1. List all stationary items with price between 400/- to 1000/- +2. Change the mobile number of customer “Gopal” +3. Display the item with maximum price +4. Display all purchases sorted from the most recent to the oldest +5. Count the number of customers in every city +6. Display all purchased quantity of Customer Maya +7. Create view which shows Iname, Price and Count of all stationary +items in descending order of price. + +--- + +## Creating the database +```sql +CREATE DATABASE Store3; +USE Store3; + +``` + +## Creating tables: + +```sql +CREATE TABLE Customers ( + CNo INT, + Cname VARCHAR(255), + Ccity VARCHAR(255), + Cmobile BIGINT, + PRIMARY KEY (CNo) +); + +CREATE TABLE Items ( + INo INT, + Iname VARCHAR(255), + Itype VARCHAR(255), + Iprice INT, + Icount INT, + PRIMARY KEY (Icount) +); + +CREATE TABLE Purchase ( + PNo INT, + Pdate DATE, + Pquantity INT, + Cno INT, + INo INT, + PRIMARY KEY (PNo), + FOREIGN KEY (Cno) REFERENCES Customers (CNo) +); + +``` + +> [!WARNING] +> Notice inconsistent naming for columns? We're just doing it by the books. Blame the one who made these [problem statements](https://git.kska.io/sppu-te-comp-content/DatabaseManagementSystems/src/branch/main/Practical/Practical%20Exam/DBMSL%20-%20Problem%20Statements%20for%20Practical%20Exam%20%28November%202024%29.pdf). + +## Inserting data + +```sql +INSERT INTO Customers VALUES +(1, 'Kalas', 'Pune', 9857265240), +(2, 'Himanshu', 'Chennai', 9857265241), +(3, 'Gopal', 'Mumbai', 9857265245), +(4, 'Maya', 'Mumbai', 9857265243), +(5, 'Mehul', 'Pune', 9857265244); + +INSERT INTO Items VALUES +(101, 'Stamp', 'Collectables', 850, 10), +(102, 'Pen', 'Instruments', 549, 50), +(103, 'Sticky notes', 'Writing', 150, 200), +(104, 'Geometry box', 'Instruments', 1350, 70), +(105, 'Pencil', 'Instruments', 670, 45); + +INSERT INTO Purchase VALUES +(201, '2024-11-05', 4, 1, 101), +(202, '2024-11-07', 3, 2, 102), +(203, '2024-11-08', 20, 3, 103), +(204, '2024-10-29', 1, 4, 104), +(205, '2024-11-10', 7, 5, 105); + +``` + +## Queries + +1. List all stationary items with price between 400/- to 1000/- +```sql +SELECT Iname FROM Items WHERE Iprice BETWEEN 400 AND 1000; + +``` + +2. Change the mobile number of customer “Gopal” +```sql +UPDATE Customers SET CMobile = 9857265242 WHERE Cname = "Gopal"; +SELECT * FROM Customers WHERE Cname = "Gopal"; + +``` + +3. Display the item with maximum price +```sql +SELECT Iname FROM Items WHERE Iprice = (SELECT MAX(Iprice) FROM Items); + +``` + +4. Display all purchases sorted from the most recent to the oldest +```sql +SELECT * FROM Purchase ORDER BY Pdate DESC; + +``` + +5. Count the number of customers in every city +```sql +SELECT COUNT(*), Ccity FROM Customers GROUP BY Ccity; + +``` + +6. Display all purchased quantity of Customer Maya +```sql +SELECT Iname, Pquantity FROM Purchase INNER JOIN Customers ON Purchase.Cno = Customers.CNo INNER JOIN Items ON Purchase.INo = Items.INo WHERE Cname = "Maya"; + +``` + +7. Create view which shows Iname, Price and Count of all stationary items in descending order of price. +```sql +CREATE VIEW itemView AS SELECT Iname, Iprice, COUNT(*) FROM Items GROUP BY Iname, Iprice ORDER BY Iprice DESC; +SELECT * FROM itemView; + +``` + +---