-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathscript.sql
More file actions
189 lines (141 loc) · 4.91 KB
/
Copy pathscript.sql
File metadata and controls
189 lines (141 loc) · 4.91 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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
##### Schema creation #####
CREATE TABLE products (
product_id INT NOT NULL,
product_name VARCHAR(100) NOT NULL,
product_description VARCHAR(256) NOT NULL,
product_ingredients VARCHAR(256) null,
product_price FLOAT NOT NULL,
product_type VARCHAR(64) NOT NULL,
available BOOLEAN NOT NULL,
PRIMARY KEY (product_id)
);
INSERT INTO products VALUES
(0, 'Margherita', 'Classic and timeless', 'tomato, mozzarella, oil, basil', 4.5, 'pizza', 1),
(1, 'Diavola', 'spicy pizza with a strong taste', 'tomato, mozzarella, pepperoni', 6.0, 'pizza', 1),
(2, 'Marinara', 'very simple and vegan', 'tomato, garlic, origan, oil', 4.0, 'pizza', 1),
(3, 'Vegetarian', 'vegetarian with vegetables', 'grilled courgettes and aubergines', 6.0, 'pizza', 1),
(4, 'Fanta', '33cl. can', NULL, 3.0, 'drink', 1),
(5, 'Coca-cola', '33cl. can', NULL, 3.0, 'drink', 1),
(6, 'Water', '100cl bottle of water', NULL, 2.0, 'drink', 1);
### stored procedure ####
DELIMITER $$
CREATE PROCEDURE get_price (IN product_name VARCHAR(100))
BEGIN
DECLARE result DECIMAL(3,2);
IF product_name <> '' THEN
SELECT product_price INTO result
FROM products
WHERE LOWER(products.product_name) = LOWER(product_name);
END IF;
-- Handling when no records are found
IF result IS NULL THEN
SET result = -1;
END IF;
SELECT result AS price;
END$$
DELIMITER ;
### stored procedure ####
DELIMITER $$
CREATE PROCEDURE get_ingredients_and_description (IN product_name VARCHAR(100))
BEGIN
DECLARE result_ingredients VARCHAR(256);
DECLARE result_description VARCHAR(256);
-- Get ingredients and description for the given product_name
SELECT product_ingredients, product_description
INTO result_ingredients, result_description
FROM products
WHERE LOWER(products.product_name) = LOWER(product_name);
-- Handling when no records are found
IF result_ingredients IS NULL THEN
SET result_ingredients = -1;
END IF;
-- Return ingredients and description
SELECT result_ingredients AS ingredients, result_description AS description;
END$$
DELIMITER ;
### stored procedure ####
DELIMITER $$
CREATE PROCEDURE check_availability (IN product_name VARCHAR(100))
BEGIN
DECLARE product_availability INT;
SELECT available INTO product_availability
FROM products
WHERE LOWER(products.product_name) = LOWER(product_name);
SELECT product_availability AS result;
END$$
DELIMITER ;
### stored procedure ####
DELIMITER //
CREATE PROCEDURE get_product_menu (
IN p_product_name VARCHAR(255),
IN p_product_type VARCHAR(255)
)
BEGIN
SELECT product_name, product_ingredients, product_price
FROM products
WHERE (p_product_name = '' OR product_name = p_product_name)
AND (p_product_type = '' OR product_type = p_product_type)
AND available;
END //
DELIMITER ;
###########################################
-- Create Orders Table
CREATE TABLE Orders (
order_id INT AUTO_INCREMENT PRIMARY KEY,
order_date DATETIME);
-- Create Order_Items Table
CREATE TABLE Order_Items (
order_id INT,
product_name VARCHAR(255),
quantity INT,
FOREIGN KEY (order_id) REFERENCES Orders(order_id)
);
DELIMITER //
-- Create a new stored procedure to add an order
CREATE PROCEDURE create_order (
IN p_order_date DATE
)
BEGIN
-- Insert a new row into the orders table
INSERT INTO orders (order_date)
VALUES (p_order_date);
END //
DELIMITER ;
###############################
##### Schema creation #####
CREATE TABLE Beers (
product_id INT NOT NULL,
product_name VARCHAR(100) NOT NULL,
description VARCHAR(256),
country VARCHAR(50) NOT NULL,
style VARCHAR(100),
alcohol_content FLOAT,
ibu_value INT,
PRIMARY KEY (product_id)
);
INSERT INTO Beers VALUES
(0, 'PUNK IPA', 'Aromatic burst of tropical fruits & citrus (grapefruit, lychee, pineapple). Exotic, fruity taste with balanced malt & hops, ending in a long fragrant finish.', 'Scotland', 'India pale ale', 5.6, 35),
(1, 'QUARANTOT', 'Aromas of caramel, biscuit & honey blend with fruity (peach, mango), floral (jasmine), & woody notes. Sweet start leads to balanced finish, avoiding excessive bitterness.', 'Italy, Milan', 'Double IPA', 8, 140),
(2, 'ESTRELLA GALICIA GLUTEN FREE', 'in the mouth it has a neutral and light taste with a marked hoppy note.', 'Spain', 'Special Lager (Gluten Free)', 4.5, 25);
-- Create the get_beers procedure
DELIMITER //
CREATE PROCEDURE get_beers(IN beer_name VARCHAR(100))
BEGIN
IF beer_name <> '' THEN
SELECT product_name, country, style, alcohol_content, ibu_value
FROM Beers
WHERE LOWER(product_name) = LOWER(beer_name);
ELSE SELECT product_name, country, style, alcohol_content, ibu_value
FROM Beers;
END IF;
END //
DELIMITER ;
-- Create the get_product_for_prompt procedure
DELIMITER //
CREATE PROCEDURE get_product_for_prompt()
BEGIN
SELECT product_name, product_type
FROM products
WHERE available = TRUE;
END //
DELIMITER ;