Chủ yếu có ba loại biến trong MySQL:
-
Biến do người dùng xác định (có tiền tố là
@
):Bạn có thể truy cập vào bất kỳ biến nào do người dùng xác định mà không cần khai báo hoặc khởi tạo biến đó. Nếu bạn tham chiếu đến một biến chưa được khởi tạo, nó có giá trị là
NULL
và một loại chuỗi.SELECT @var_any_var_name
Bạn có thể khởi tạo một biến bằng cách sử dụng
SET
hoặcSELECT
tuyên bố:SET @start = 1, @finish = 10;
hoặc
SELECT @start := 1, @finish := 10; SELECT * FROM places WHERE place BETWEEN @start AND @finish;
Biến người dùng có thể được chỉ định một giá trị từ một tập hợp giới hạn kiểu dữ liệu:số nguyên, số thập phân, dấu phẩy động, chuỗi nhị phân hoặc không nhị phân hoặc giá trị NULL.
Các biến do người dùng xác định là phiên cụ thể. Nghĩa là, một khách hàng khác không thể nhìn thấy hoặc sử dụng một người dùng có thể thay đổi được.
Chúng có thể được sử dụng trong
SELECT
truy vấn sử dụng Kỹ thuật biến người dùng MySQL nâng cao . -
Biến cục bộ (không có tiền tố):
Các biến cục bộ cần được khai báo bằng cách sử dụng
DECLARE
trước khi truy cập nó.Chúng có thể được sử dụng như các biến cục bộ và các tham số đầu vào bên trong một thủ tục được lưu trữ:
DELIMITER // CREATE PROCEDURE sp_test(var1 INT) BEGIN DECLARE start INT unsigned DEFAULT 1; DECLARE finish INT unsigned DEFAULT 10; SELECT var1, start, finish; SELECT * FROM places WHERE place BETWEEN start AND finish; END; // DELIMITER ; CALL sp_test(5);
Nếu
DEFAULT
thiếu mệnh đề, giá trị ban đầu làNULL
.Phạm vi của biến cục bộ là
BEGIN ... END
khối bên trong mà nó được khai báo. -
Biến hệ thống máy chủ (có tiền tố là
@@
):Máy chủ MySQL duy trì nhiều biến hệ thống được định cấu hình thành giá trị mặc định. Chúng có thể thuộc loại
GLOBAL
,SESSION
hoặcBOTH
.Các biến toàn cục ảnh hưởng đến hoạt động tổng thể của máy chủ trong khi các biến phiên ảnh hưởng đến hoạt động của nó đối với các kết nối máy khách riêng lẻ.
Để xem các giá trị hiện tại được sử dụng bởi một máy chủ đang chạy, hãy sử dụng
SHOW VARIABLES
câu lệnh hoặcSELECT @@var_name
.SHOW VARIABLES LIKE '%wait_timeout%'; SELECT @@sort_buffer_size;
Chúng có thể được đặt khi khởi động máy chủ bằng các tùy chọn trên dòng lệnh hoặc trong tệp tùy chọn. Hầu hết chúng có thể được thay đổi động trong khi máy chủ đang chạy bằng cách sử dụng
SET GLOBAL
hoặcSET SESSION
:-- Syntax to Set value to a Global variable: SET GLOBAL sort_buffer_size=1000000; SET @@global.sort_buffer_size=1000000; -- Syntax to Set value to a Session variable: SET sort_buffer_size=1000000; SET SESSION sort_buffer_size=1000000; SET @@sort_buffer_size=1000000; SET @@local.sort_buffer_size=10000;