MySQL में यूजर-डिफाइंड वेरिएबल (@variable) बनाना और उनका मान देखना
वेरिएबल बनाएं (SET):
SET @yourVariableName = yourValue;
वेरिएबल मान देखें (SELECT):
SELECT @yourVariableName;
व्यावहारिक उदाहरण
1. स्ट्रिंग वेरिएबल:
mysql> SET @FirstName = 'Bob';
Query OK, 0 rows affected (0.04 sec)
mysql> SELECT @FirstName;
+------------+
| @FirstName |
+------------+
| Bob |
+------------+
1 row in set (0.03 sec)
2. न्यूमेरिक वेरिएबल:
mysql> SET @Amount = 150.56;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @Amount;
+---------+
| @Amount |
+---------+
| 150.56 |
+---------+
1 row in set (0.00 sec)
वेरिएबल विशेषताएं:
- सत्र-स्कोप्ड: केवल वर्तमान कनेक्शन में जीवित
- कमजोर टाइपिंग: मान के आधार पर टाइप निर्धारित होता है
- केस-इनसेंसिटिव:
@name = @Name = @NAME
- अधिकतम लंबाई: 64 कैरेक्टर नाम के लिए
उन्नत उपयोग:
क्वेरी परिणाम वेरिएबल में स्टोर करें:
SELECT @max_id := MAX(id) FROM users;
SELECT @max_id;
वेरिएबल का उपयोग क्वेरी में:
SET @min_salary = 50000;
SELECT * FROM employees WHERE salary > @min_salary;
एकाधिक असाइनमेंट:
SELECT @a := 1, @b := 2, @sum := @a + @b;
SELECT @sum; -- 3
प्रीपेयर्ड स्टेटमेंट में:
SET @sql = 'SELECT * FROM users WHERE id = ?';
PREPARE stmt FROM @sql;
SET @id = 5;
EXECUTE stmt USING @id;
DEALLOCATE PREPARE stmt;
सिस्टम वेरिएबल vs यूजर वेरिएबल:
| प्रकार | सिंटैक्स | स्कोप | उदाहरण |
| यूजर-डिफाइंड | @var | सत्र | SET @x = 1 |
| सिस्टम (ग्लोबल) | @@global.var | सर्वर-वाइड | @@global.max_connections |
| सिस्टम (सत्र) | @@session.var या @@var | सत्र | @@sql_mode |
सभी यूजर वेरिएबल देखें:
-- MySQL में सीधा कमांड नहीं, लेकिन:
SELECT * FROM performance_schema.user_variables_by_thread
WHERE THREAD_ID = CONNECTION_ID();