Bird
Raised Fist0
MySQLquery~5 mins

Variables and control flow in MySQL - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Variables and control flow
O(n)
Understanding Time Complexity

When using variables and control flow in MySQL, it's important to see how the steps grow as data grows.

We want to know how the number of operations changes when the input size changes.

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


DECLARE done INT DEFAULT FALSE;
DECLARE counter INT DEFAULT 0;
DECLARE id_val INT;
DECLARE cur CURSOR FOR SELECT id FROM users;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

OPEN cur;
read_loop: LOOP
  FETCH cur INTO id_val;
  IF done THEN
    LEAVE read_loop;
  END IF;
  SET counter = counter + 1;
END LOOP;
CLOSE cur;
    

This code uses a cursor to loop through all user IDs, incrementing a counter for each row, thereby counting how many rows it processes.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Looping through each row returned by the cursor.
  • How many times: Once for each row in the users table.
How Execution Grows With Input

As the number of rows in the users table grows, the loop runs more times.

Input Size (n)Approx. Operations
10About 10 loop steps
100About 100 loop steps
1000About 1000 loop steps

Pattern observation: The number of steps grows directly with the number of rows.

Final Time Complexity

Time Complexity: O(n)

This means the time to run grows in a straight line with the number of rows processed.

Common Mistake

[X] Wrong: "Using variables and loops in MySQL always runs in constant time regardless of data size."

[OK] Correct: The loop runs once per row, so more rows mean more steps, not a fixed number.

Interview Connect

Understanding how loops and variables affect query time helps you explain how your code scales with data size.

Self-Check

"What if we replaced the cursor loop with a single SQL aggregate function? How would the time complexity change?"

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