DBMS Practical
DBMS Practical
Database changed
/*CREATE TABLE*/
mysql> create Table departments(dept_id int not null primary key, department_name varchar(255));
mysql> create Table emp(id int not null primary key, firstname varchar(255), lastname varchar(255),
dept_id int, salary int, hiredate date, FOREIGN KEY(dept_id) REFERENCES departments (dept_id));
/*INSERT VALUES*/
mysql> INSERT INTO departments values(10, 'IT'), (11, 'HR'), (12, 'Designer');
mysql> INSERT INTO emp VALUES (101, 'Raj','Sharma', 10, 25000, '2024-08-07'), (102,
'Rahul','Bhosale', 10, 20000, '2022-08-07'), (111, 'Om','Birla', 11, 30000, '2022-06-05'), (112,
'Harsh','Bhandare', 11, 35000, '2022-06-12'), (121, 'Sanjay','Sharma', 12, 32000, '2020-12-12'),
(122,'Raj','Bhingare', 12, 32500, '2023-08-07');
/*DISPLAY*/
+-----+-----------+----------+---------+--------+------------+
+-----+-----------+----------+---------+--------+------------+
+-----+-----------+----------+---------+--------+------------+
+---------+-----------------+
| dept_id | department_name |
+---------+-----------------+
| 10 | IT |
| 11 | HR |
| 12 | Designer |
+---------+-----------------+
/*ALTER TABLE*/
+-----+------------+----------+---------+--------+------------+
+-----+------------+----------+---------+--------+------------+
+-----+------------+----------+---------+--------+------------+
/*WHERE CONDITION*/
+-----+------------+----------+---------+--------+------------+
+-----+------------+----------+---------+--------+------------+
+-----+------------+----------+---------+--------+------------+
+-----+------------+----------+---------+--------+------------+
+-----+------------+----------+---------+--------+------------+
+-----+------------+----------+---------+--------+------------+
+-----+------------+----------+---------+--------+------------+
+-----+------------+----------+---------+--------+------------+
+-----+------------+----------+---------+--------+------------+
/*UPDATE INFO*/
+-----+------------+----------+---------+--------+------------+
+-----+------------+----------+---------+--------+------------+
+-----+------------+----------+---------+--------+------------+
+------------+--------------+------+-----+---------+-------+
+------------+--------------+------+-----+---------+-------+
+------------+--------------+------+-----+---------+-------+
+-----+------------+----------+---------+--------+------------+
+-----+------------+----------+---------+--------+------------+
+-----+------------+----------+---------+--------+------------+
PRACTICAL – 2
mysql> use dbms
Database changed
/*CREATE TABLE*/
mysql> create table Products(ProductID INT PRIMARY KEY, ProductName VARCHAR(255) NOT NULL,
Category VARCHAR(255), Price DECIMAL(10, 2), StockQuantity INT);
mysql> CREATE TABLE Orders (OrderID INT PRIMARY KEY, OrderDate DATE );
mysql> CREATE TABLE OrderItems (OrderItemID INT PRIMARY KEY, OrderID INT, ProductID INT,
Quantity INT, FOREIGN KEY (OrderID) REFERENCES Orders(OrderID), FOREIGN KEY (ProductID)
REFERENCES Products(ProductID) );
/*INSERT VALUES*/
mysql> INSERT INTO Products VALUES ((1, 'Laptop', 'Electronics', 1500, 100), (2, 'Smartphone',
'Electronics', 800, 200), (3, 'Headphones', 'Accessories', 150, 300), (4, 'Monitor', 'Electronics', 300,
50), (5, 'Keyboard', 'Accessories', 50, 150));
mysql> INSERT INTO Orders VALUES ((1, '2024-08-25'), (2, '2024-08-26'), (3, '2024-08-27'));
mysql> INSERT INTO OrderItems VALUES ((1, 1, 1, 2), (2, 1, 3, 5), (3, 2, 2, 1), (4, 2, 4, 2), (5, 3, 5,
10));
/*DISPLAY*/
+-----------+-------------+-------------+---------+---------------+
+-----------+-------------+-------------+---------+---------------+
+-----------+-------------+-------------+---------+---------------+
mysql> SELECT * FROM Orders;
+---------+------------+
| OrderID | OrderDate |
+---------+------------+
| 1 | 2024-08-25 |
| 2 | 2024-08-26 |
| 3 | 2024-08-27 |
+---------+------------+
+-------------+---------+-----------+----------+
+-------------+---------+-----------+----------+
| 1| 1| 1| 2|
| 2| 1| 3| 5|
| 3| 2| 2| 1|
| 4| 2| 4| 2|
| 5| 3| 5| 10 |
+-------------+---------+-----------+----------+
+-----------+-------------+-------------+---------+---------------+
+-----------+-------------+-------------+---------+---------------+
+-----------+-------------+-------------+---------+---------------+
+-------------+-----------+
| ProductName | TotalSold |
+-------------+-----------+
| Laptop | 2|
| Smartphone | 1|
| Headphones | 5|
| Monitor | 2|
| Keyboard | 10 |
+-------------+-----------+
/*INDEXING*/
/*ALTERNATIVE 1*/
-> )
-> );
/*ALTERNATIVE 2*/
+-----------+-------------+-------------+---------+---------------+-------------+---------+-----------+----------+---------+------------+
PRACTICAL – 3
mysql> use dbms;
Database changed
/*CREATE TABLE*/
mysql> CREATE TABLE Departments (DepartmentID INT PRIMARY KEY,DepartmentName
VARCHAR(100));
mysql> CREATE TABLE Projects (ProjectID INT PRIMARY KEY, ProjectName VARCHAR(100));
mysql> CREATE TABLE Employees (EmployeeID INT PRIMARY KEY, Name VARCHAR(100)
,DepartmentID INT, Salary DECIMAL(10, 2), FOREIGN KEY (DepartmentID) REFERENCES
Departments(DepartmentID));
mysql> CREATE TABLE EmployeeProjects ( EmployeeID INT, ProjectID INT, PRIMARY KEY
(EmployeeID, ProjectID), FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID),
FOREIGN KEY (ProjectID) REFERENCES Projects(ProjectID));
/*LEFT JOIN*/
/*CREATE TABLE*/
mysql> CREATE TABLE Product (ProductID INT AUTO_INCREMENT PRIMARY KEY, ProductName
VARCHAR(255) NOT NULL, Category VARCHAR(255), Price DECIMAL(10, 2), StockQuantity INT );
mysql> CREATE TABLE Order_Info ( OrderID INT AUTO_INCREMENT PRIMARY KEY, OrderDate DATE
NOT NULL );
mysql> CREATE TABLE OrderItem (OrderItemID INT AUTO_INCREMENT PRIMARY KEY, OrderID INT,
ProductID INT, Quantity INT, FOREIGN KEY (OrderID) REFERENCES Orders(OrderID), FOREIGN KEY
(ProductID) REFERENCES Product(ProductID)
);
mysql> INSERT INTO Product (ProductName, Category, Price, StockQuantity) VALUES ('Laptop',
'Electronics', 1000.00, 50), ('Smartphone', 'Electronics', 500.00, 100), ('Tablet', 'Electronics', 300.00,
30);
/*CREATING PROCEDURE*/
mysql> DELIMITER //
mysql>
-> )
-> BEGIN
->
->
-> VALUES(CURDATE());
->
-> ELSE
-> END //
mysql>
mysql> DELIMITER ;
+-----------+-------------+-------------+---------+---------------+
+-----------+-------------+-------------+---------+---------------+
+-----------+-------------+-------------+---------+---------------+
+---------+------------+
| OrderID | OrderDate |
+---------+------------+
| 1 | 2024-08-26 |
| 2 | 2024-08-26 |
+---------+------------+
+-------------+---------+-----------+----------+
+-------------+---------+-----------+----------+
| 1| 1| 1| 10 |
| 2| 2| 2| 25 |
+-------------+---------+-----------+----------+
PRACTICAL – 5
mysql> use dbms;
Database changed
/*CREATE TABLE*/
mysql> CREATE TABLE Students (StudentID INT PRIMARY KEY, Name VARCHAR(100) NOT
NULL);
mysql> CREATE TABLE Courses (CourseID INT PRIMARY KEY, CourseName VARCHAR(100)
NOT NULL);
mysql> CREATE TABLE Grades (GradeID INT AUTO_INCREMENT PRIMARY KEY, StudentID
INT, CourseID INT, Grade Float NOT NULL, CreditHours INT NOT NULL, FOREIGN KEY
(StudentID) REFERENCES Students(StudentID), FOREIGN KEY (CourseID) REFERENCES
Courses(CourseID));
/*DEFINING FUNCTION*/
mysql> DELIMITER //
mysql>
mysql> CREATE FUNCTION CalculateGPA(p_StudentID INT)
-> RETURNS FLOAT
-> DETERMINISTIC
-> BEGIN
-> DECLARE v_GPA FLOAT;
-> DECLARE v_TotalPoints FLOAT;
-> DECLARE v_TotalCreditHours INT;
->
-> /*Initialize total points and credit hours*/
-> SET v_TotalPoints = 0;
-> SET v_TotalCreditHours = 0;
->
-> /*Calculate total points and total credit hours*/
-> SELECT SUM(Grade * CreditHours) INTO v_TotalPoints
-> FROM Grades
-> WHERE StudentID = p_StudentID;
->
-> SELECT SUM(CreditHours) INTO v_TotalCreditHours
-> FROM Grades
-> WHERE StudentID = p_StudentID;
->
-> /*Calculate GPA*/
-> IF v_TotalCreditHours > 0 THEN
-> SET v_GPA = v_TotalPoints / v_TotalCreditHours;
-> /*Round GPA to 2 decimal places*/
-> SET v_GPA = ROUND(v_GPA, 2);
-> ELSE
-> SET v_GPA = NULL; /*No grades available*/
-> END IF;
->
-> RETURN v_GPA;
-> END //
Query OK, 0 rows affected (0.01 sec)
mysql>
mysql> DELIMITER ;
mysql>
mysql> /*Query to get StudentID, StudentName, and GPA*/
mysql> SELECT
-> s.StudentID,
-> s.Name AS StudentName,
-> CalculateGPA(s.StudentID) AS GPA
-> FROM
-> Students s;
+-----------+---------------+------+
| StudentID | StudentName | GPA |
+-----------+---------------+------+
| 1 | John Doe | 3.47 |
| 2 | Jane Smith | 3.4 |
| 3 | Alice Johnson | 3.24 |
+-----------+---------------+------+
PRACTICAL – 6
mysql> use dbms;
Database changed
/*CREATE TABLE*/
mysql> CREATE TABLE Customers (CustomerID INT PRIMARY KEY, FirstName VARCHAR(50)
NOT NULL, LastName VARCHAR(50) NOT NULL, TotalPurchases DECIMAL(10, 2) DEFAULT
0.00, LoyaltyPoints INT DEFAULT 0);
mysql> INSERT INTO OrderDetails VALUES (1, '2024-08-26', 50.00), (2, '2024-08-25',
100.00), (3, '2024-08-24', 20.00);
/*Displaying table*/
mysql> SELECT * FROM Customers;
+------------+-----------+----------+----------------+---------------+
| CustomerID | FirstName | LastName | TotalPurchases | LoyaltyPoints |
+------------+-----------+----------+----------------+---------------+
| 1 | John | Doe | 150.00 | 15 |
| 2 | Jane | Smith | 250.00 | 25 |
| 3 | Alice | Johnson | 100.00 | 10 |
+------------+-----------+----------+----------------+---------------+
mysql> SELECT * FROM OrderDetails;
+---------+------------+------------+-------------+
| OrderID | CustomerID | OrderDate | OrderAmount |
+---------+------------+------------+-------------+
| 1| 1 | 2024-08-26 | 50.00 |
| 2| 2 | 2024-08-25 | 100.00 |
| 3| 3 | 2024-08-24 | 20.00 |
+---------+------------+------------+-------------+
/*CREATE TABLE*/
mysql> CREATE TABLE Employee_info (EmployeeID INT PRIMARY KEY, FirstName
VARCHAR(50) NOT NULL, LastName VARCHAR(50) NOT NULL, Salary DECIMAL(10, 2) NOT
NULL);
/*INSERTING DATA*/
mysql> INSERT INTO employee_info VALUES (1, 'John', 'Doe', 50000.00), (2, 'Jane', 'Smith',
60000.00), (3, 'Alice', 'Johnson', 55000.00);
/*Displaying Data*/
mysql> SELECT * FROM Employee_Info;
+------------+-----------+----------+----------+
| EmployeeID | FirstName | LastName | Salary |
+------------+-----------+----------+----------+
| 1 | John | Doe | 50000.00 |
| 2 | Jane | Smith | 60000.00 |
| 3 | Alice | Johnson | 55000.00 |
+------------+-----------+----------+----------+
mysql> SELECT * FROM SalaryUpdates;
+----------+------------+-----------+------------+
| UpdateID | EmployeeID | NewSalary | UpdateDate |
+----------+------------+-----------+------------+
| 1| 1 | 52000.00 | 2024-08-26 |
| 2| 3 | 58000.00 | 2024-08-26 |
+----------+------------+-----------+------------+
mysql> DELIMITER //
mysql> CREATE PROCEDURE update_employee_salaries()
-> BEGIN
-> DECLARE emp_id INT;
-> DECLARE new_salary DECIMAL(10,2);
-> DECLARE done INT DEFAULT 0;
-> -- Declare cursor to iterate through employees
-> DECLARE employee_cursor CURSOR FOR SELECT EmployeeID FROM Employee_Info;
-> -- Declare a handler for when no more rows are found
-> DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
-> -- Open the cursor
-> OPEN employee_cursor;
-> -- Loop through employees
-> employee_loop: LOOP
-> -- Fetch the next employee ID
-> FETCH employee_cursor INTO emp_id;
-> -- Exit the loop if no more rows are found
-> IF done = 1 THEN
-> LEAVE employee_loop;
-> END IF;
-> -- Check if there is a corresponding record in SalaryUpdates
-> IF EXISTS (SELECT 1 FROM SalaryUpdates WHERE EmployeeID = emp_id) THEN
-> -- Fetch the new salary
-> SELECT NewSalary INTO new_salary
-> FROM SalaryUpdates
-> WHERE EmployeeID = emp_id;
->
-> -- Update salary if new salary exists
-> IF new_salary IS NOT NULL THEN
-> UPDATE Employee_Info
-> SET Salary = new_salary
-> WHERE EmployeeID = emp_id;
-> END IF;
-> END IF;
-> END LOOP employee_loop;
-> -- Close the cursor
-> CLOSE employee_cursor;
-> END //
Query OK, 0 rows affected (0.01 sec)
mysql> DELIMITER ;
/*Displaying Updated Result*/
mysql> CALL update_employee_salaries();
Query OK, 0 rows affected (0.01 sec)
mysql> SELECT * FROM Employee_Info;
+------------+-----------+----------+----------+
| EmployeeID | FirstName | LastName | Salary |
+------------+-----------+----------+----------+
| 1 | John | Doe | 52000.00 |
| 2 | Jane | Smith | 60000.00 |
| 3 | Alice | Johnson | 58000.00 |
+------------+-----------+----------+----------+
GROUP B
PRACTICAL - 1
test> show dbs
admin 40.00 KiB
config 72.00 KiB
local 72.00 KiB
onlinestore> db.products.insertMany([
... {name: "Laptop", price: 10000, quantity: 50},
... {name: "Smartphone", price: 8000, quantity: 100},
... {name: "Tablet", price: 4000, quantity: 800},
... {name: "Earphones", price: 450, quantity: 25},
... {name: "Pendrive", price: 350, quantity: 10},
... ])
{
acknowledged: true,
insertedIds: {
'0': ObjectId('66f4d4fd05be71de06c73bf8'),
'1': ObjectId('66f4d4fd05be71de06c73bf9'),
'2': ObjectId('66f4d4fd05be71de06c73bfa'),
'3': ObjectId('66f4d4fd05be71de06c73bfb'),
'4': ObjectId('66f4d4fd05be71de06c73bfc')
}
}
onlinestore> db.products.find().pretty()
[
{
_id: ObjectId('66f4d4fd05be71de06c73bf8'),
name: 'Laptop',
price: 10000,
quantity: 50
},
{
_id: ObjectId('66f4d4fd05be71de06c73bf9'),
name: 'Smartphone',
price: 8000,
quantity: 100
},
{
_id: ObjectId('66f4d4fd05be71de06c73bfa'),
name: 'Tablet',
price: 4000,
quantity: 800
},
{
_id: ObjectId('66f4d4fd05be71de06c73bfb'),
name: 'Earphones',
price: 450,
quantity: 25
},
{
_id: ObjectId('66f4d4fd05be71de06c73bfc'),
name: 'Pendrive',
price: 350,
quantity: 10 } ]
onlinestore> db.products.find({price: {$gt: 500} }) //Read Operation
[
{
_id: ObjectId('66f4d4fd05be71de06c73bf8'),
name: 'Laptop',
price: 10000,
quantity: 50
},
{
_id: ObjectId('66f4d4fd05be71de06c73bf9'),
name: 'Smartphone',
price: 8000,
quantity: 100
},
{
_id: ObjectId('66f4d4fd05be71de06c73bfa'),
name: 'Tablet',
price: 4000,
quantity: 800
}
]
onlinestore> db.products.updateOne({name: "Laptop"}, { $set: { price: 25000} })//Update
Operation
{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 1,
upsertedCount: 0
}
onlinestore> db.products.deleteOne({ name: "Earphones" }) //Delete
{ acknowledged: true, deletedCount: 1 }
onlinestore> db.products.insertOne({ name: "Mouse", price: 325, quantity: 100}) //Insert
Operation
{
acknowledged: true,
insertedId: ObjectId('66f4d72b05be71de06c73bfd')
}
onlinestore> db.products.find().pretty()
[
{
_id: ObjectId('66f4d4fd05be71de06c73bf8'),
name: 'Laptop',
price: 25000,
quantity: 50
},
{
_id: ObjectId('66f4d4fd05be71de06c73bf9'),
name: 'Smartphone',
price: 8000,
quantity: 100
},
{
_id: ObjectId('66f4d4fd05be71de06c73bfa'),
name: 'Tablet',
price: 4000,
quantity: 800
},
{
_id: ObjectId('66f4d4fd05be71de06c73bfc'),
name: 'Pendrive',
price: 350,
quantity: 10
},
{
_id: ObjectId('66f4d72b05be71de06c73bfd'),
name: 'Mouse',
price: 325,
quantity: 100
}
]
PRACTICAL – 2
test> use onlinestores
switched to db onlinestores
onlinestores> db.orders.insertMany([
... {product:"Asus Laptop",quantity:2,stock:15,price:250000},
... {product:"Earphone",quantity:5,stock:25,price:850},
... {product:"Mobile",quantity:3,stock:10,price:15000},
... {product:"Asus Laptop",quantity:1,stock:15,price:250000},
... {product:"HP Laptop",quantity:5,stock:20,price:200000},
... {product:"Mobile",quantity:2,stock:10,price:15000},
... {product:"Earphone",quantity:3,stock:25,price:850},
... {product:"HP Laptop",quantity:4,stock:20,price:200000}
... ])
{
acknowledged: true,
insertedIds: {
'0': ObjectId('66fb66a81b4a4234dbc73bf8'),
'1': ObjectId('66fb66a81b4a4234dbc73bf9'),
'2': ObjectId('66fb66a81b4a4234dbc73bfa'),
'3': ObjectId('66fb66a81b4a4234dbc73bfb'),
'4': ObjectId('66fb66a81b4a4234dbc73bfc'),
'5': ObjectId('66fb66a81b4a4234dbc73bfd'),
'6': ObjectId('66fb66a81b4a4234dbc73bfe'),
'7': ObjectId('66fb66a81b4a4234dbc73bff')
}
}
onlinestores> db.orders.find()
[
{
_id: ObjectId('66fb66a81b4a4234dbc73bf8'),
product: 'Asus Laptop',
quantity: 2,
stock: 15,
price: 250000
},
{
_id: ObjectId('66fb66a81b4a4234dbc73bf9'),
product: 'Earphone',
quantity: 5,
stock: 25,
price: 850
},
{
_id: ObjectId('66fb66a81b4a4234dbc73bfa'),
product: 'Mobile',
quantity: 3,
stock: 10,
price: 15000
},
{
_id: ObjectId('66fb66a81b4a4234dbc73bfb'),
product: 'Asus Laptop',
quantity: 1,
stock: 15,
price: 250000
},
{
_id: ObjectId('66fb66a81b4a4234dbc73bfc'),
product: 'HP Laptop',
quantity: 5,
stock: 20,
price: 200000
},
{
_id: ObjectId('66fb66a81b4a4234dbc73bfd'),
product: 'Mobile',
quantity: 2,
stock: 10,
price: 15000
},
{
_id: ObjectId('66fb66a81b4a4234dbc73bfe'),
product: 'Earphone',
quantity: 3,
stock: 25,
price: 850
},
{
_id: ObjectId('66fb66a81b4a4234dbc73bff'),
product: 'HP Laptop',
quantity: 4,
stock: 20,
price: 200000
}
]
onlinestores> db.orders.aggregate([
...
... {
... $group: {
... _id: "$product",
... totalSales: { $sum: "$quantity" }, // Sum up the "quantity" field
... totalBill: { $sum: { $multiply: ["$quantity", "$price"] } },
... stock: { $first: "$stock" } // Preserve the stock value for each product group
... }
... },
... {
... $addFields: {
... available: { $subtract: ["$stock", "$totalSales"] } // Calculate available stock
... }
... }
... ])
[
{
_id: 'Earphone',
totalSales: 8,
totalBill: 6800,
stock: 25,
available: 17
},
{
_id: 'HP Laptop',
totalSales: 9,
totalBill: 1800000,
stock: 20,
available: 11
},
{
_id: 'Mobile',
totalSales: 5,
totalBill: 75000,
stock: 10,
available: 5
},
{
_id: 'Asus Laptop',
totalSales: 3,
totalBill: 750000,
stock: 15,
available: 12
}
]
PRACTICAL – 3
test> use onlinestore
switched to db onlinestore
onlinestore> db.sales.insertMany([
... { product: "Laptop", quantity: 5 },
... { product: "Smartphone", quantity: 3 },
... { product: "Laptop", quantity: 1 },
... { product: "Tablet", quantity: 4 }
... ])
{
acknowledged: true,
insertedIds: {
'0': ObjectId('66f4dae48620515566c73bf8'),
'1': ObjectId('66f4dae48620515566c73bf9'),
'2': ObjectId('66f4dae48620515566c73bfa'),
'3': ObjectId('66f4dae48620515566c73bfb')
}
}
onlinestore> var mapFunction = function() {
... emit(this.product, this.quantity);
... };
onlinestore> var reduceFunction = function(keyProduct, valuesQuantities) {
... return Array.sum(valuesQuantities);
... };