-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathSQL_Views_Operations.sql
More file actions
93 lines (76 loc) · 2.24 KB
/
SQL_Views_Operations.sql
File metadata and controls
93 lines (76 loc) · 2.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
-- SQL_Views_Operations.sql
-- Guide to MySQL Views
CREATE DATABASE IF NOT EXISTS retail_db;
USE retail_db;
CREATE TABLE products (
product_id INT AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(100) NOT NULL,
category VARCHAR(50),
price DECIMAL(10,2) NOT NULL,
stock_quantity INT DEFAULT 0
);
CREATE TABLE orders (
order_id INT AUTO_INCREMENT PRIMARY KEY,
product_id INT,
order_date DATE DEFAULT (CURRENT_DATE),
quantity INT,
FOREIGN KEY (product_id) REFERENCES products(product_id)
);
-- Sample data
INSERT INTO products (product_name, category, price, stock_quantity) VALUES
('Laptop Pro', 'Electronics', 999.99, 50),
('Smartphone X', 'Electronics', 699.99, 100),
('Coffee Maker', 'Appliances', 49.99, 30),
('Wireless Headphones', 'Electronics', 89.99, 75);
INSERT INTO orders (product_id, order_date, quantity) VALUES
(1, '2025-01-10', 2),
(2, '2025-01-15', 1),
(3, '2025-02-01', 3),
(1, '2025-02-20', 1);
-- 1. Simple View
CREATE VIEW electronics_view AS
SELECT product_name, price, stock_quantity
FROM products
WHERE category = 'Electronics';
SELECT * FROM electronics_view;
-- 2. View with JOIN
CREATE VIEW order_details AS
SELECT
o.order_id,
p.product_name,
o.quantity,
o.quantity * p.price AS total_value
FROM orders o
JOIN products p ON o.product_id = p.product_id;
SELECT * FROM order_details;
-- 3. Updatable View
CREATE VIEW low_stock AS
SELECT product_id, product_name, stock_quantity
FROM products
WHERE stock_quantity < 50;
-- Update via view
UPDATE low_stock SET stock_quantity = stock_quantity + 20 WHERE product_id = 3;
-- 4. View with aggregation
CREATE VIEW sales_summary AS
SELECT
p.category,
COUNT(o.order_id) AS orders_count,
SUM(o.quantity) AS total_qty,
SUM(o.quantity * p.price) AS revenue
FROM products p
LEFT JOIN orders o ON p.product_id = o.product_id
GROUP BY p.category;
SELECT * FROM sales_summary;
-- 5. ALTER VIEW
ALTER VIEW electronics_view AS
SELECT product_name, price
FROM products
WHERE category = 'Electronics' AND price > 500;
SELECT * FROM electronics_view;
-- 6. DROP VIEW
DROP VIEW IF EXISTS electronics_view;
DROP VIEW IF EXISTS order_details;
DROP VIEW IF EXISTS low_stock;
DROP VIEW IF EXISTS sales_summary;
-- Cleanup
DROP DATABASE IF EXISTS retail_db;