1. Overview of MySQL Variables
The role and benefits of variables in MySQL
MySQL variables are useful tools that allow you to store values within a query and reuse them across multiple queries. This eliminates the need to repeatedly fetch the same data, making SQL statements cleaner and more efficient.
There are two main types of variables in MySQL:
- User-defined variables: Temporary variables used within a specific session.
- System variables: Configuration variables that control MySQL server behavior.
In this section, we will first look at user-defined variables in detail, followed by system variables and how to use them.
2. Types of MySQL Variables
2.1 User-defined Variables
User-defined variables are used within a single session and are not accessible by other clients. This ensures safe reuse of variables within the same session. Variables are declared using the @
symbol.
Example:
SET @user_id = 123;
SELECT @user_id;
Here, SET
is used to define a variable, and its value can then be reused in subsequent queries. Another method to assign values is using SELECT INTO
.
SELECT name INTO @user_name FROM users WHERE id = @user_id;
2.2 System Variables
System variables are used to configure MySQL server behavior. For example, they can control maximum connections or timeout settings.
Example:
SHOW VARIABLES LIKE 'max_connections';
This query displays the maximum number of concurrent connections allowed on the MySQL server. System variables can be changed using the SET
command, either server-wide or per session.

3. Declaring and Using Variables
3.1 Declaring Variables
Variables can be declared using SET
or SELECT INTO
. SET
is straightforward and allows you to assign values directly.
Example:
SET @user_name = 'Sato';
SELECT @user_name;
On the other hand, SELECT INTO
lets you store query results directly into a variable.
Example:
SELECT name INTO @user_name FROM users WHERE id = 123;
3.2 Using Variables in Queries
Variables can be reused as parameters within queries. For example, the following query retrieves user information using the @user_id
variable.
Example:
SELECT * FROM users WHERE id = @user_id;
This allows you to persist data across multiple queries within the same session.
4. Common Use Cases
4.1 Query Optimization
By storing frequently used values in variables and reusing them in later queries, you can improve performance.
Example:
SELECT MAX(id) INTO @max_id FROM users;
Here, the maximum user ID is stored in a variable and reused in subsequent queries.
4.2 Date and Time Operations
Variables make it easier to handle time-based calculations and historical data management.
Example:
SELECT NOW() INTO @current_time;
SELECT @current_time - INTERVAL 1 DAY INTO @yesterday;
In this example, the current timestamp and a time offset are stored in variables for reuse in other queries.

5. Using Variables in Stored Procedures
Variables inside stored procedures allow you to handle complex logic efficiently, improving code reusability. The following is an example of a stored procedure to retrieve user information:
Example:
CREATE PROCEDURE get_user_info(IN user_id INT, OUT user_name VARCHAR(255))
BEGIN
SELECT name INTO user_name FROM users WHERE id = user_id;
END;
Calling this procedure lets you pass a user ID as input and store the result in a variable.
6. Best Practices for Using Variables
6.1 Importance of Initialization
Always initialize variables before using them. Uninitialized variables may return NULL
. This is especially important when using the same variable across multiple queries.
6.2 Session Scope Management
User-defined variables are valid only within the current session. When the session ends, the variables are reset. If you need persistence across sessions, consider alternatives such as temporary tables.

7. Advanced Techniques
7.1 Using Cursors for Data Processing
When working with large datasets, you can use cursors to process query results row by row. This allows you to store values into variables and process them sequentially.
Example:
DECLARE cursor_user CURSOR FOR SELECT id, name FROM users;
With cursors, you can efficiently process multiple rows of data.
8. Conclusion
By using MySQL variables, you can manage queries more efficiently, improving both readability and performance. Proper use of user-defined and system variables enables more refined data operations. In particular, combining variables with advanced techniques such as stored procedures and cursors can greatly enhance MySQL data processing.