MySQL Variables
Bài viết này sẽ hướng dẫn cách sử dụng biến trong các câu lệnh SQL
Giới thiệu về biến trong MySQL
Biến trong câu lệnh SQL dùng để tái sử dụng ở nhiều chỗ trong nhiều câu lệnh SQL khác.
Cú pháp đặt biến: @tên_biến
, trong đó tên_biến
là các ký tự alphanumeric. Độ dài tối đa của biến là 64 ký tự (trong MySQL 5.7.5)
Biến không phân biệt chữ hoa chữ thường. 2 biến @id
và @ID
là như nhau.
Kiểu biến có thể là: integer, floating point, decimal, string hoặc NULL.
Biến khi được định nghĩa chỉ có thể sử dụng trong cùng 1 session và sẽ không lưu lại cho các session sau.
Lưu ý: cách định nghĩa biến này chỉ trên MySQL có thể sẽ không đúng trong 1 số các hệ thống database khác.
Gán giá trị cho biến
Có 2 cách để gán giá trị cho biến.
Cách 1: sử dụng SET
:
SET @variable_name := value;
Cả 2 toán tử :=
hoặc =
đều dùng được với SET
1 ví dụ:
SET @counter := 100;
Cách 2: sử dụng SELECT
:
Chỉ được phép sử dụng toán tử :=
trong lệnh SELECT
. Toán tử =
sẽ hiểu nhầm là toán tử so sánh bằng trong trường hợp này.
SELECT @variable_name := value;
Sau khi gán giá trị biến. Bạn có thể sử dụng ở các lệnh SQL khác như trong mệnh đề WHERE
, lệnh INSERT
hoặc UPDATE
.
Ví dụ khai báo biến trong MySQL
Giả sử bạn muốn lấy danh sách các sản phẩm đắt nhất trong bảng products
và gán vào biến@msrp
:
SELECT
@msrp:=MAX(msrp)
FROM
products;
Chúng ta sẽ sử dụng biến @msrp
để lấy thông tin sản phẩm đắt nhất:
SELECT
productCode, productName, productLine, msrp
FROM
products
WHERE
msrp = @msrp;
Trong 1 vài trường hợp, bạn sẽ phải chèn dữ liệu vào 1 bảng, sau đó lấy giá trị id
vừa mới chèn và sử dụng để chèn dữ liệu vào 1 bảng khác. Trường hợp này bạn có thể sử dụng biến để lưu giá trị id
mới nhất, được tạo bởi AUTO_INCREMENT
.
SELECT @id:=LAST_INSERT_ID();
Biến chỉ có thể lưu 1 giá trị, nếu lệnh SELECT
trả về nhiều giá trị, biến sẽ lấy giá trị của dòng cuối cùng trong kết quả trả về.
SELECT
@buyPrice:=buyprice
FROM
products
WHERE
buyprice > 95
ORDER BY buyprice;
SELECT @buyprice;
Như vậy là các bạn có thể sử dụng biến trong MySQL với nhiều mục đích khác nhau.
Hi vọng bài viết hữu ích cho bác bạn.
Hãy like, share và comment để cùng học tập nhé.