Bird
Raised Fist0
MySQLquery~30 mins

Variables and control flow in MySQL - Mini Project: Build & Apply

Choose your learning style10 modes available
Using Variables and Control Flow in MySQL
📖 Scenario: You are managing a small bookstore database. You want to calculate discounts for customers based on the number of books they buy. You will use MySQL variables and control flow to determine the discount percentage.
🎯 Goal: Build a MySQL script that uses variables and IF control flow to assign a discount percentage based on the number of books purchased.
📋 What You'll Learn
Create a variable to store the number of books purchased.
Create a variable to store the discount percentage.
Use IF control flow to set the discount percentage based on the number of books.
Complete the script by selecting the discount percentage.
💡 Why This Matters
🌍 Real World
Bookstores and retail businesses often use variables and control flow in their databases to calculate discounts and promotions automatically.
💼 Career
Understanding variables and control flow in SQL is essential for database administrators and developers to implement business logic inside the database.
Progress0 / 4 steps
1
Set the number of books purchased
Create a MySQL variable called @books_purchased and set it to 7 to represent the number of books a customer bought.
MySQL
Hint

Use the SET statement to assign a value to a variable in MySQL.

2
Create a variable for discount percentage
Create a MySQL variable called @discount and initialize it to 0 to hold the discount percentage.
MySQL
Hint

Initialize the discount variable to zero before applying any conditions.

3
Use IF control flow to assign discount
Use a MySQL IF statement to set @discount to 10 if @books_purchased is greater than or equal to 5, otherwise keep it 0.
MySQL
Hint

Use IF ... THEN ... END IF; syntax in MySQL to apply conditional logic.

4
Select the discount percentage
Write a SELECT statement to display the value of the @discount variable.
MySQL
Hint

Use SELECT to show the value of a variable in MySQL.

Practice

(1/5)
1. What is the purpose of a variable in MySQL stored procedures?
easy
A. To create new tables dynamically
B. To permanently save data in the database
C. To store temporary data during procedure execution
D. To define user permissions

Solution

  1. Step 1: Understand variable role in procedures

    Variables hold temporary data only while the procedure runs.
  2. Step 2: Differentiate from permanent storage

    Permanent data is stored in tables, not variables.
  3. Final Answer:

    To store temporary data during procedure execution -> Option C
  4. Quick Check:

    Variables = Temporary data [OK]
Hint: Variables hold temporary data inside procedures [OK]
Common Mistakes:
  • Confusing variables with table data storage
  • Thinking variables create database objects
  • Assuming variables control user access
2. Which of the following is the correct way to declare and set a variable in MySQL stored procedures?
easy
A. SET x INT; DECLARE x = 10;
B. DECLARE x INT; SET x = 10;
C. DECLARE x = 10 INT;
D. SET x = 10; DECLARE x INT;

Solution

  1. Step 1: Recall syntax for variable declaration

    Use DECLARE variable_name data_type; to declare.
  2. Step 2: Assign value using SET

    Use SET variable_name = value; after declaration.
  3. Final Answer:

    DECLARE x INT; SET x = 10; -> Option B
  4. Quick Check:

    DECLARE then SET = correct syntax [OK]
Hint: Declare first, then set value with SET [OK]
Common Mistakes:
  • Using SET before DECLARE
  • Combining declaration and assignment incorrectly
  • Wrong order of keywords
3. Consider the following MySQL procedure snippet:
DECLARE counter INT DEFAULT 1;
WHILE counter <= 3 DO
SET counter = counter + 1;
END WHILE;
SELECT counter;

What will be the output of the SELECT counter; statement?
medium
A. 3
B. Error due to missing BEGIN...END
C. 1
D. 4

Solution

  1. Step 1: Trace the WHILE loop increments

    Counter starts at 1, increments by 1 each loop until counter > 3.
  2. Step 2: Count loop iterations and final value

    Loop runs while counter=1,2,3; increments to 4 and stops.
  3. Final Answer:

    4 -> Option D
  4. Quick Check:

    Counter ends at 4 after loop [OK]
Hint: WHILE increments counter until condition false [OK]
Common Mistakes:
  • Assuming counter stops at 3
  • Forgetting counter increments before condition check
  • Thinking syntax error without BEGIN...END in snippet
4. Identify the error in this MySQL stored procedure snippet:
DECLARE total INT;
SET total = 0
WHILE total < 5 DO
SET total = total + 1;
END WHILE;
medium
A. Missing semicolon after SET total = 0
B. WHILE loop condition syntax is wrong
C. DECLARE must be inside BEGIN...END block
D. Variable total not declared

Solution

  1. Step 1: Check statement endings

    SET total = 0 is missing a semicolon at the end.
  2. Step 2: Validate syntax for DECLARE and WHILE

    DECLARE is valid before BEGIN, and WHILE syntax is correct.
  3. Final Answer:

    Missing semicolon after SET total = 0 -> Option A
  4. Quick Check:

    Every statement needs semicolon [OK]
Hint: Check semicolons after each statement [OK]
Common Mistakes:
  • Ignoring missing semicolon errors
  • Thinking DECLARE must be inside BEGIN...END always
  • Misreading WHILE syntax
5. You want to create a MySQL stored procedure that counts how many numbers between 1 and 10 are even, using variables and control flow. Which of the following code snippets correctly implements this?
hard
A. DECLARE count_even INT DEFAULT 0; DECLARE i INT DEFAULT 1; WHILE i <= 10 DO IF i % 2 = 0 THEN SET count_even = count_even + 1; END IF; SET i = i + 1; END WHILE; SELECT count_even;
B. DECLARE count_even INT; SET count_even = 0; FOR i IN 1..10 DO IF i % 2 = 0 THEN SET count_even = count_even + 1; END IF; END FOR; SELECT count_even;
C. DECLARE count_even INT DEFAULT 0; SET i = 1; WHILE i < 10 DO IF i % 2 = 1 THEN SET count_even = count_even + 1; END IF; SET i = i + 1; END WHILE; SELECT count_even;
D. DECLARE count_even INT DEFAULT 0; DECLARE i INT DEFAULT 1; WHILE i <= 10 DO IF i / 2 = 0 THEN SET count_even = count_even + 1; END IF; SET i = i + 1; END WHILE; SELECT count_even;

Solution

  1. Step 1: Check loop and variable initialization

    DECLARE count_even INT DEFAULT 0; DECLARE i INT DEFAULT 1; WHILE i <= 10 DO IF i % 2 = 0 THEN SET count_even = count_even + 1; END IF; SET i = i + 1; END WHILE; SELECT count_even; correctly declares variables and initializes them.
  2. Step 2: Verify condition and increment logic

    DECLARE count_even INT DEFAULT 0; DECLARE i INT DEFAULT 1; WHILE i <= 10 DO IF i % 2 = 0 THEN SET count_even = count_even + 1; END IF; SET i = i + 1; END WHILE; SELECT count_even; uses WHILE loop from 1 to 10, checks even with modulo, increments count and i properly.
  3. Step 3: Identify errors in other options

    DECLARE count_even INT; SET count_even = 0; FOR i IN 1..10 DO IF i % 2 = 0 THEN SET count_even = count_even + 1; END IF; END FOR; SELECT count_even; uses invalid FOR syntax; C counts odd numbers; D uses division instead of modulo.
  4. Final Answer:

    Option A code correctly counts even numbers between 1 and 10 -> Option A
  5. Quick Check:

    Use WHILE + modulo for even check [OK]
Hint: Use WHILE loop and modulo (%) to check even numbers [OK]
Common Mistakes:
  • Using invalid FOR loop syntax in MySQL
  • Confusing modulo (%) with division (/)
  • Counting odd numbers instead of even
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard