MySQL - SET Syntax for Variable Assignment

The SET statement in MySQL is used to assign values for variables. Using this you can set values to, user-defined variables, variables in procedures and, system variables.
Following is the syntax of the SET statement in MySQL−
SET variable = val1, val2, val3, . . .

variable: {
   user_var_name
   | param_name
   | local_var_name
   | {GLOBAL | @@GLOBAL.} system_var_name
   | {PERSIST | @@PERSIST.} system_var_name
   | {PERSIST_ONLY | @@PERSIST_ONLY.} system_var_name
   | [SESSION | @@SESSION. | @@] system_var_name
}

You can create variables with in the current MySQL session and use them in the queries. While defining a user d-fined variable you need to place ‘@’ before the variable name.
mysql> SET @name = 'Krishna';
Query OK, 0 rows affected (0.00 sec)

mysql> SET @age = 25;
Query OK, 0 rows affected (0.00 sec)

mysql> SET @phone = 9012345678;
Query OK, 0 rows affected (0.00 sec)
You can retrieve the values of these variables using the SELECT statement as −
mysql> SELECT @name, @age, @phone;
+---------+------+------------+
| @name   | @age | @phone     |
+---------+------+------------+
| Krishna | 25   | 9012345678 |
+---------+------+------------+
1 row in set (0.07 sec)
You can define variables with in stored routines and set values to them using the SET statement.
Following is an example of declaring local variables −
DELIMITER //
CREATE PROCEDURE RepeatExample()
BEGIN
   DECLARE val INT;
   DECLARE squares INT;
   DECLARE res VARCHAR(100);
   SET val=1;
   SET squares=1;
   SET res = '';
   REPEAT
      SET squares = val*val;
      SET res = CONCAT(res, squares,',');
      SET val = val + 1;
   UNTIL val >= 10
   END REPEAT;
   SELECT res;
END//
DELIMITER ;
You can call the above procedure as follows −
mysql> CALL RepeatExample;
+--------------------------+
| res                      |
+--------------------------+
| 1,4,9,16,25,36,49,64,81, |
+--------------------------+
1 row in set (0.07 sec)
Query OK, 0 rows affected (0.08 sec)
MySQL system variables holds global or session level values, these variables are used to configure various operations. You can set values to these variables dynamically using the SET statement
Let us verify whether loading local data is enabled, if not you can observe the local_infile variable value as −
mysql> SHOW GLOBAL VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile  | OFF   |
+---------------+-------+
1 row in set (0.57 sec)
Following query enables local_infile option as −
mysql> SET GLOBAL local_infile = 'ON';
Query OK, 0 rows affected (0.09 sec)
If you verify the value of the variable local_infile again, you can observe the changed value as −
mysql> SHOW GLOBAL VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile  | ON    |
+---------------+-------+
1 row in set (0.00 sec)

    31 Lectures 
     6 hours 

 Eduonix Learning Solutions

    84 Lectures 
     5.5 hours 

 Frahaan Hussain

    6 Lectures 
     3.5 hours 

 DATAhill Solutions Srinivas Reddy

    60 Lectures 
     10 hours 

 Vijay Kumar Parvatha Reddy

    10 Lectures 
     1 hours 

 Harshit Srivastava

    25 Lectures 
     4 hours 

 Trevoir Williams
 Print
 Add Notes
 Bookmark this page