Hai loại biến trong MySQL
1. Biến phiên (Session Variable) - @tenBien
Tồn tại trong suốt phiên kết nối. Dùng cho truy vấn ad-hoc, script.
SET @tenBien := giaTri;
-- hoặc
SELECT @tenBien := giaTri;
2. Biến cục bộ (Local Variable) - DECLARE
Chỉ dùng bên trong Stored Program (Procedure, Function, Trigger). Phải khai báo ở đầu khối BEGIN ... END.
DECLARE tenBien KIEU_DU_LIEU [DEFAULT giaTriMacDinh];
Ví dụ Session Variable
Tạo bảng SessionVariableDemo:
CREATE TABLE SessionVariableDemo (
EmployeeId VARCHAR(10), EmployeeName VARCHAR(30), EmployeeAge INT
);
INSERT INTO SessionVariableDemo VALUES
('EMP-101','Carol',30), ('EMP-102','John',26), ('EMP-103','Bob',25),
('EMP-104','Sam',32), ('EMP-105','Mike',35), ('EMP-106','David',33);
Tạo biến ngưỡng tuổi:
SET @AgeGreaterThan30 := 30;
Dùng trong truy vấn:
SELECT * FROM SessionVariableDemo
WHERE EmployeeAge > @AgeGreaterThan30;
Kết quả
+------------+--------------+-------------+
| EmployeeId | EmployeeName | EmployeeAge |
+------------+--------------+-------------+
| EMP-104 | Sam | 32 |
| EMP-105 | Mike | 35 |
| EMP-106 | David | 33 |
+------------+--------------+-------------+
So sánh nhanh
| Đặc điểm | Session @var | Local DECLARE |
|---|---|---|
| Phạm vi | Cả phiên kết nối | Chỉ trong BEGIN...END |
| Khai báo | SET/SELECT @x:=1 | DECLARE x INT DEFAULT 1 |
| Dùng ở đâu | Bất kỳ đâu trong session | Chỉ trong SP/Function/Trigger |
| Tiền tố | @ | Không có |
| Gán giá trị | SET @x = 1 | SET x = 1 |
Mẹo: Dùng session variable để lưu cấu hình tạm, ngưỡng lọc, hoặc truyền tham số giữa các câu lệnh trong script.