Hướng dẫn how do i initialize a variable in mysql? - làm cách nào để khởi tạo một biến trong mysql?

Làm thế nào để khai báo một biến trong MySQL, để truy vấn thứ hai của tôi có thể sử dụng nó?

Tôi muốn viết một cái gì đó như:

SET start = 1;
SET finish = 10;

SELECT * FROM places WHERE place BETWEEN start AND finish;

Hướng dẫn how do i initialize a variable in mysql? - làm cách nào để khởi tạo một biến trong mysql?

Hỏi ngày 1 tháng 8 năm 2012 lúc 7:47Aug 1, 2012 at 7:47

1

Chủ yếu có ba loại biến trong MySQL:

  1. Các biến do người dùng xác định (có tiền tố với

    SELECT @var_any_var_name
    
    6):

    Bạn có thể truy cập bất kỳ biến do người dùng xác định mà không cần khai báo hoặc khởi tạo nó. Nếu bạn đề cập đến một biến chưa được khởi tạo, nó có giá trị

    SELECT @var_any_var_name
    
    7 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 câu lệnh

    SELECT @var_any_var_name
    
    8 hoặc
    SELECT @var_any_var_name
    
    9:

    SET @start = 1, @finish = 10;    
    

    hoặc

    SELECT @start := 1, @finish := 10;
    
    SELECT * FROM places WHERE place BETWEEN @start AND @finish;
    

    Các biến người dùng có thể được gán một giá trị từ một tập hợp các loại dữ liệu giới hạn: số nguyên, thập phân, điểm nổi, chuỗi nhị phân hoặc không phân giải hoặc giá trị null.

    Các biến do người dùng xác định là dành riêng cho phiên. Đó là, một biến người dùng được xác định bởi một máy khách không thể được nhìn thấy hoặc sử dụng bởi các máy khách khác.

    Chúng có thể được sử dụng trong các truy vấn

    SELECT @var_any_var_name
    
    9 bằng các kỹ thuật biến người dùng MySQL nâng cao.

  2. Các 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

    SET @start = 1, @finish = 10;    
    
    1 trước khi truy cập nó.

    Chúng có thể được sử dụng làm biến cục bộ và các tham số đầu vào bên trong quy trình đượ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 mệnh đề

    SET @start = 1, @finish = 10;    
    
    2 bị thiếu, giá trị ban đầu là
    SELECT @var_any_var_name
    
    7.

    Phạm vi của một biến cục bộ là khối

    SET @start = 1, @finish = 10;    
    
    4 trong đó được khai báo.

  3. Các biến hệ thống máy chủ (được đặt trước với

    SET @start = 1, @finish = 10;    
    
    5):

    Máy chủ MySQL duy trì nhiều biến hệ thống được cấu hình theo giá trị mặc định. Chúng có thể thuộc loại

    SET @start = 1, @finish = 10;    
    
    6,
    SET @start = 1, @finish = 10;    
    
    7 hoặc
    SET @start = 1, @finish = 10;    
    
    8.

    Các biến toàn cầu ả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ó cho các kết nối khách hàng 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 câu lệnh

    SET @start = 1, @finish = 10;    
    
    9 hoặc
    SELECT @start := 1, @finish := 10;
    
    SELECT * FROM places WHERE place BETWEEN @start AND @finish;
    
    0.

    SHOW VARIABLES LIKE '%wait_timeout%';
    
    SELECT @@sort_buffer_size;
    

    Chúng có thể được đặt tại máy chủ khởi động bằng các tùy chọn trên dòng lệnh hoặc trong một tệp tùy chọn. Hầu hết chúng có thể được thay đổi một cách linh hoạt trong khi máy chủ đang chạy bằng cách sử dụng

    SELECT @start := 1, @finish := 10;
    
    SELECT * FROM places WHERE place BETWEEN @start AND @finish;
    
    1 hoặc
    SELECT @start := 1, @finish := 10;
    
    SELECT * FROM places WHERE place BETWEEN @start AND @finish;
    
    2:

    -- 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;
    

Hướng dẫn how do i initialize a variable in mysql? - làm cách nào để khởi tạo một biến trong mysql?

Đã trả lời ngày 1 tháng 8 năm 2012 lúc 7:48Aug 1, 2012 at 7:48

Hướng dẫn how do i initialize a variable in mysql? - làm cách nào để khởi tạo một biến trong mysql?

OmeshomeshOmesh

26.8K6 Huy hiệu vàng41 Huy hiệu bạc 50 Huy hiệu Đồng6 gold badges41 silver badges50 bronze badges

9

BỘ

SET @var_name = value;     /* or */     SET @var_name := value;

Cả hai toán tử = và: = được chấp nhận= and := are accepted


LỰA CHỌN

SELECT col1, @var_name := col2 from tb_name WHERE "conditon";

Nếu nhiều bộ bản ghi chỉ tìm thấy giá trị cuối cùng trong col2 là giữ (ghi đè);

SELECT col1, col2 INTO @var_name, col3 FROM .....

Trong trường hợp này, kết quả chọn không chứa các giá trị col2


Ex cả hai phương pháp được sử dụng

-Trigger_befor_insert --- Đặt giá trị cột từ các tính toán

SELECT @var_any_var_name
0

Đã trả lời ngày 19 tháng 1 năm 2017 lúc 11:10Jan 19, 2017 at 11:10

Bortunacbortunacbortunac

4.5241 Huy hiệu vàng 30 Huy hiệu bạc21 Huy hiệu Đồng1 gold badge30 silver badges21 bronze badges

3

Sử dụng đặt hoặc chọnset or select

SELECT @var_any_var_name
1

thí dụ :

SELECT @var_any_var_name
2

Đã trả lời ngày 23 tháng 12 năm 2016 lúc 17:26Dec 23, 2016 at 17:26

Hướng dẫn how do i initialize a variable in mysql? - làm cách nào để khởi tạo một biến trong mysql?

Các loại biến khác nhau:

  • Các biến cục bộ (không được tiền tố bởi @) được gõ mạnh và phân tích vào khối chương trình được lưu trữ trong đó chúng được khai báo. Lưu ý rằng, như đã được ghi lại trong Synare Syntax: (which are not prefixed by @) are strongly typed and scoped to the stored program block in which they are declared. Note that, as documented under DECLARE Syntax:

Tuyên bố chỉ được phép trong một bắt đầu ... Báo cáo ghép kết thúc và phải bắt đầu, trước bất kỳ tuyên bố nào khác.

  • Các biến người dùng (được tiền tố bởi @) được gõ một cách lỏng lẻo và phân chia vào phiên. Lưu ý rằng họ không cần và không thể được tuyên bố là chỉ cần sử dụng chúng trực tiếp. (which are prefixed by @) are loosely typed and scoped to the session. Note that they neither need nor can be declared—just use them directly.

Do đó, nếu bạn đang xác định một chương trình được lưu trữ và thực sự muốn có một "biến cục bộ", bạn sẽ cần bỏ ký tự @ và đảm bảo rằng câu lệnh khai báo của bạn đang ở đầu khối chương trình của bạn. Mặt khác, để sử dụng "biến người dùng", hãy bỏ câu lệnh khai báo.

Hơn nữa, bạn sẽ cần phải bao quanh truy vấn của mình trong ngoặc đơn để thực hiện nó như một truy vấn con:

Đặt @CountTotal = (chọn Đếm (*) từ Ngrams);

Hoặc nếu không, bạn có thể sử dụng Chọn ... vào:

Chọn Đếm (*) vào @Counttotal từ Ngrams;

Đã trả lời ngày 6 tháng 8 năm 2019 lúc 12:14Aug 6, 2019 at 12:14

MohammadalimohammadalimohammadAli

1831 Huy hiệu bạc10 Huy hiệu đồng1 silver badge10 bronze badges

  • Tuyên bố:

    SELECT @start := 1, @finish := 10;
    
    SELECT * FROM places WHERE place BETWEEN @start AND @finish;
    
    3

  • Sử dụng:

    SELECT @start := 1, @finish := 10;
    
    SELECT * FROM places WHERE place BETWEEN @start AND @finish;
    
    4

Đã trả lời ngày 9 tháng 11 năm 2019 lúc 12:38Nov 9, 2019 at 12:38

Yayayayayaya

6,8891 Huy hiệu vàng33 Huy hiệu bạc35 Huy hiệu đồng1 gold badge33 silver badges35 bronze badges

2

Đối với bất kỳ người nào sử dụng hàm trong hàm Concat_WS để nhận các giá trị được nối, đừng quên tái tạo nó với giá trị trống. Nếu không, nó có thể sử dụng giá trị cũ cho cùng một phiên.

SELECT @var_any_var_name
3

Đã trả lời ngày 27 tháng 11 năm 2018 lúc 17:01Nov 27, 2018 at 17:01

Imran Javedimran JavedImran Javed

Huy hiệu vàng 11K22 gold badges15 silver badges16 bronze badges

Tôi muốn cung cấp cho người lái của tôi ở đây để mọi người có thể thử, giải pháp cho mysql mà tôi nghĩ dễ hiểu hơn:

SELECT @var_any_var_name
4

Đã trả lời ngày 28 tháng 9 lúc 9:36Sep 28 at 9:36

Đặt giá trị

SELECT @var_any_var_name
5

Đã trả lời ngày 30 tháng 5 năm 2019 lúc 12:31May 30, 2019 at 12:31

Hướng dẫn how do i initialize a variable in mysql? - làm cách nào để khởi tạo một biến trong mysql?

Chúng ta có thể khai báo biến trong truy vấn MySQL không?

Bạn có thể khai báo một biến bằng cách sử dụng @anyvariablename là biến phiên. Để tạo một biến phiên, bạn cần sử dụng lệnh set.. To create a session variable, you need to use SET command.

Cú pháp để khởi tạo một biến là gì?

DataType variablename = initValue;Điều này tuyên bố một biến, khai báo loại dữ liệu của nó, bảo lưu bộ nhớ cho nó và đặt một giá trị ban đầu vào bộ nhớ đó.Giá trị ban đầu phải thuộc loại dữ liệu chính xác. This declares a variable, declares its data type, reserves memory for it, and puts an initial value into that memory. The initial value must be of the correct data type.

Làm thế nào khai báo biến trong thủ tục MySQL?

Để khai báo các biến cục bộ, hãy sử dụng câu lệnh khai báo, như được mô tả trong Phần 13.6.4.1, Tuyên bố khai báo biến cục bộ của nhóm ..
Các biến có thể được đặt trực tiếp với câu lệnh SET.Xem Phần 13.7.....
Kết quả từ các truy vấn có thể được truy xuất vào các biến cục bộ bằng cách chọn ....

Bạn có thể khởi tạo một biến mà không cần khai báo không?

Khai báo biến cuối cùng mà không cần khởi tạo hơn nữa, như các biến thể hiện, các biến cuối cùng sẽ không được khởi tạo với các giá trị mặc định.Do đó, bắt buộc phải khởi tạo các biến cuối cùng khi bạn khai báo chúng.it is mandatory to initialize final variables once you declare them.