CS262
DATABASE MANAGEMENT
SYSTEM
LABORATORY
ASSIGNMENT
NAME :-
KANZARIYA
AKSHAY KANAIYALAL.
ROLL NO :- 202251062
SECTION 1
WEEK 10
Question 1
➢ CODE FOR CREATE TABLE:-
CREATE DATABASE LAB10B;
USE LAB10B;
CREATE TABLE Categories (
category_id INT PRIMARY KEY,
category_name VARCHAR(255)
);
CREATE TABLE Products (
product_id INT PRIMARY KEY,
product_name VARCHAR(255),
category_id INT,
price DECIMAL(10, 2),
FOREIGN KEY (category_id) REFERENCES
Categories(category_id)
);
CREATE TABLE Customers(
customer_id INT PRIMARY KEY,
customer_name VARCHAR(200)
);
CREATE TABLE Orders (
order_id INT PRIMARY KEY,
customer_id INT,
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES
Customers(customer_id)
);
CREATE TABLE Order_details (
order_id INT,
product_id INT,
quantity INT,
FOREIGN KEY (order_id) REFERENCES Orders(order_id),
FOREIGN KEY (product_id) REFERENCES
Products(product_id)
);
➢ CODE FOR INSERT DATA:-
INSERT INTO Categories (category_id, category_name) VALUES
(1, 'Electronics'),
(2, 'Clothing'),
(3, 'Books');
INSERT INTO Products (product_id, product_name, category_id, price)
VALUES
(101, 'Smartphone', 1, 699.99),
(102, 'Laptop', 1, 1299.99),
(103, 'T-shirt', 2, 19.99),
(104, 'Jeans', 2, 49.99),
(105, 'Python Crash Course', 3, 29.99),
(106, 'The Great Gatsby', 3, 9.99);
INSERT INTO Customers (customer_id, customer_name) VALUES
(1, 'AKSHAY KANZARIYA'),
(2, 'DIVYA KANZARIYA'),
(3, 'MAYUR KANZARIYA');
INSERT INTO Orders (order_id, customer_id, order_date) VALUES
(1, 1, '2024-04-01'),
(2, 2, '2024-04-05'),
(3, 3, '2024-04-10');
INSERT INTO Order_details (order_id, product_id, quantity) VALUES
(1, 101, 1),
(1, 104, 2),
(2, 103, 3),
(2, 105, 1),
(3, 102, 1),
(3, 106, 2);
➢ PRINT TABLE:-
SELECT * FROM Categories;
SELECT * FROM Products;
SELECT * FROM Customers;
SELECT * FROM Orders;
SELECT * FROM Order_details;
1.
2.
3.
4.
5.
➢ CODE FOR VIEW :-
CREATE VIEW monthly_sales AS
SELECT
p.product_id,
p.product_name,
EXTRACT(MONTH FROM o.order_date) AS month,
EXTRACT(YEAR FROM o.order_date) AS year,
SUM(od.quantity * p.price) AS total_sales
FROM
Orders o
JOIN
Order_details od ON o.order_id = od.order_id
JOIN
Products p ON od.product_id = p.product_id
GROUP BY
p.product_id,
p.product_name,
EXTRACT(MONTH FROM o.order_date),
EXTRACT(YEAR FROM o.order_date);
➢ PRINT TABLE:-
SELECT * FROM monthly_sales;
1.
Question 2
➢ CODE FOR CREATE TABLE:-
CREATE TABLE match1 (
Day DATE,
HomeTeam VARCHAR(255),
AwayTeam VARCHAR(255),
HomeGoal INT,
AwayGoal INT
);
CREATE TABLE STANDING (
Day DATE,
Team VARCHAR(255),
Score INT,
PRIMARY KEY (Day, Team)
);
➢ CODE FOR INSERT DATA:-
INSERT INTO match1 (Day, HomeTeam, AwayTeam, HomeGoal,
AwayGoal)
VALUES
('2024-01-05', 'Team A', 'Team B', 2, 1),
('2024-01-06', 'Team C', 'Team D', 0, 0),
('2024-01-07', 'Team A', 'Team D', 1, 4),
('2024-01-08', 'Team B', 'Team C', 3, 0),
('2024-01-09', 'Team A', 'Team C', 2, 2);
➢ CODE FOR TRIGGER :-
-- Trigger for home team victory
DELIMITER //
CREATE TRIGGER home_team_victory
AFTER INSERT ON MATCH1
FOR EACH ROW
BEGIN
IF NEW.HomeGoal > NEW.AwayGoal THEN
-- Update score for home team
INSERT INTO STANDING (Day, Team, Score)
VALUES (NEW.Day, NEW.HomeTeam, 3)
ON DUPLICATE KEY UPDATE Score = Score + 3;
-- Ensure the away team score is recorded as 0 (only if not already existing)
INSERT INTO STANDING (Day, Team, Score)
VALUES (NEW.Day, NEW.AwayTeam, 0)
ON DUPLICATE KEY UPDATE Score = Score;
END IF;
END;
-- Trigger for away team victory
DELIMITER //
CREATE TRIGGER away_team_victory
AFTER INSERT ON MATCH1
FOR EACH ROW
BEGIN
IF NEW.AwayGoal > NEW.HomeGoal THEN
-- Update score for away team
INSERT INTO STANDING (Day, Team, Score)
VALUES (NEW.Day, NEW.AwayTeam, 3)
ON DUPLICATE KEY UPDATE Score = Score + 3;
-- Ensure the home team score is recorded as 0 (only if not already existing)
INSERT INTO STANDING (Day, Team, Score)
VALUES (NEW.Day, NEW.HomeTeam, 0)
ON DUPLICATE KEY UPDATE Score = Score;
END IF;
END;
//
DELIMITER ;
-- Trigger for tie
DELIMITER //
CREATE TRIGGER tie_match
AFTER INSERT ON MATCH1
FOR EACH ROW
BEGIN
IF NEW.HomeGoal = NEW.AwayGoal THEN
-- Update score for both home and away teams
INSERT INTO STANDING (Day, Team, Score)
VALUES (NEW.Day, NEW.HomeTeam, 1)
ON DUPLICATE KEY UPDATE Score = Score + 1;
INSERT INTO STANDING (Day, Team, Score)
VALUES (NEW.Day, NEW.AwayTeam, 1)
ON DUPLICATE KEY UPDATE Score = Score + 1;
END IF;
END;
➢ PRINT TABLE:-
SELECT
Team,
SUM(Score) AS TotalScore
FROM
STANDING
GROUP BY
Team
ORDER BY
TotalScore DESC;
SELECT * FROM match1;
SELECT * FROM standing;
1.
2.
3.
END