0% found this document useful (0 votes)
14 views4 pages

ASSIGNMENT 2 Dbms

assignment

Uploaded by

bambalprateek
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)
14 views4 pages

ASSIGNMENT 2 Dbms

assignment

Uploaded by

bambalprateek
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/ 4

ASSIGNMENT 2:

CREATING THE DATABASE:


CREATE DATABASE SalesDB;
USE SalesDB;

CREATE CUSTOMER TABLE:


CREATE TABLE CUSTOMER (
cust_num INT PRIMARY KEY,
cust_lname VARCHAR(50),
cust_fname VARCHAR(50),
cust_balance DECIMAL(10, 2)
);

CREATE PRODUCT TABLE:


CREATE TABLE PRODUCT (
prod_num INT PRIMARY KEY,
prod_name VARCHAR(100),
price DECIMAL(10, 2)
);

CREATE INVOICE TABLE:


CREATE TABLE INVOICE (
inv_num INT PRIMARY KEY,
prod_num INT,
cust_num INT,
inv_date DATE,
unit_sold INT,
inv_amount DECIMAL(10, 2),
FOREIGN KEY (prod_num) REFERENCES PRODUCT(prod_num) ON DELETE
CASCADE,
FOREIGN KEY (cust_num) REFERENCES CUSTOMER(cust_num) ON DELETE
CASCADE
);

INSERT DATA INTO CUSTOMER:


INSERT INTO CUSTOMER (cust_num, cust_lname, cust_fname, cust_balance)
VALUES
(1, 'Smith', 'John', 1500.50),
(2, 'Doe', 'Jane', 2300.00),
(3, 'Brown', 'Charlie', 1250.75),
(4, 'Johnson', 'Emily', 3000.00);
INSERT DATA INTO PRODUCT:
INSERT INTO PRODUCT (prod_num, prod_name, price)
VALUES
(101, 'Laptop', 1200.00),
(102, 'Smartphone', 800.00),
(103, 'Tablet', 500.00),
(104, 'Headphones', 150.00);

INSERT DATA INTO INVOICE:


INSERT INTO INVOICE (inv_num, prod_num, cust_num, inv_date, unit_sold,
inv_amount)
VALUES
(1001, 101, 1, '2024-09-25', 1, 1200.00),
(1002, 102, 2, '2024-09-26', 2, 1600.00),
(1003, 103, 3, '2024-09-27', 1, 500.00),
(1004, 104, 1, '2024-09-28', 2, 300.00),
(1005, 101, 4, '2024-09-29', 1, 1200.00);

questions:
1. Find the names of customers who have purchased no item. Set the default value of
Cust_balance as 0 for such customers.

SELECT cust_fname, cust_lname


FROM CUSTOMER c
WHERE c.cust_num NOT IN (
SELECT cust_num FROM INVOICE
);

UPDATE CUSTOMER
SET cust_balance = 0
WHERE cust_num NOT IN (
SELECT cust_num FROM INVOICE
);

2. Write a trigger to update the CUST_BALANCE in the CUSTOMER table when a new invoice
record is entered for the customer.
CREATE TRIGGER update_cust_balance
AFTER INSERT ON INVOICE
FOR EACH ROW
BEGIN
UPDATE CUSTOMER
SET cust_balance = cust_balance - NEW.inv_amount
WHERE cust_num = NEW.cust_num;
END;

3. Find the customers who have purchased more than three units of a product on a day.\
SELECT c.cust_fname, c.cust_lname, i.inv_date, i.unit_sold
FROM CUSTOMER c
JOIN INVOICE i ON c.cust_num = i.cust_num
WHERE i.unit_sold > 3;

4. Write a query to illustrate Left Outer, Right Outer, and Full Outer Join.
Left Outer Join:
SELECT c.cust_fname, i.inv_num
FROM CUSTOMER c
LEFT JOIN INVOICE i ON c.cust_num = i.cust_num;

Right Outer Join:


SELECT c.cust_fname, i.inv_num
FROM CUSTOMER c
RIGHT JOIN INVOICE i ON c.cust_num = i.cust_num;

Full Outer Join:


SELECT c.cust_fname, i.inv_num
FROM CUSTOMER c
LEFT JOIN INVOICE i ON c.cust_num = i.cust_num

UNION

SELECT c.cust_fname, i.inv_num


FROM CUSTOMER c
RIGHT JOIN INVOICE i ON c.cust_num = i.cust_num;

5. Count the number of products sold on each date.


SELECT inv_date, SUM(unit_sold) AS total_units_sold
FROM INVOICE
GROUP BY inv_date;

6. As soon as customer balance becomes greater than Rs. 100,000, copy the customer_num in
a new table called GOLD_CUSTOMER.
Create GOLD_CUSTOMER table:
CREATE TABLE GOLD_CUSTOMER (
cust_num INT PRIMARY KEY
);
Create trigger:
CREATE TRIGGER check_gold_customer
AFTER UPDATE ON CUSTOMER
FOR EACH ROW
BEGIN
IF NEW.cust_balance > 100000 THEN
INSERT INTO GOLD_CUSTOMER (cust_num)
VALUES (NEW.cust_num)
ON DUPLICATE KEY UPDATE cust_num = NEW.cust_num;
END IF;
END;

7. Add a new attribute CUST_DOB in the CUSTOMER table.


ALTER TABLE CUSTOMER
ADD COLUMN cust_dob DATE;

You might also like