Chúng ta có thể lưu trữ giá trị trong biến trong MySQL không?

Mysql cũng hỗ trợ khái niệm Biến do người dùng định nghĩa, cho phép chuyển một giá trị từ câu lệnh này sang câu lệnh khác. Một biến do người dùng định nghĩa trong Mysql được viết là @var_name trong đó, var_name là tên của biến và có thể bao gồm các ký tự chữ và số,. , _ và $

  • Biến do người dùng định nghĩa là phiên cụ thể i. Biến e được xác định bởi một khách hàng không được chia sẻ với khách hàng khác và khi phiên kết thúc, các biến này sẽ tự động hết hạn
  • Các biến này không phân biệt chữ hoa chữ thường. Vì vậy, @mark hoặc @Mark đều đề cập đến cùng một giá trị
  • Độ dài tối đa của biến có thể là 64 ký tự
  • Tên biến có thể bao gồm các ký tự khác như- {. , #, ^, -,. } trong tên của nó, nếu chúng được trích dẫn. Đối với ex- @’var@1′ hoặc @”var^2″ hoặc @`var3`
  • Các biến này không thể được khai báo, chúng chỉ được khởi tạo i. e tại thời điểm khai báo chúng phải được gán một giá trị
  • Một biến không được khai báo cũng có thể được truy cập trong câu lệnh SQL nhưng giá trị của chúng được đặt là NULL
  • Các biến này có thể nhận các giá trị từ tập hợp các kiểu dữ liệu sau - { số nguyên, dấu phẩy động, số thập phân, nhị phân, chuỗi không nhị phân hoặc giá trị NULL

cú pháp

SET @var_name = expression 

ví dụ

1. Gán giá trị cho biến bằng lệnh SET

mysql>SET @var1 = 2+6;
mysql>SET @var2 := @var1-2;

Giá trị của các biến này có thể được hiển thị bằng cách giới thiệu chúng trong câu lệnh CHỌN-

mysql>SELECT @var1, @var2;

đầu ra

+-------+-------+
| @var1 | @var2 |
+-------+-------+
|   8   |   6   |
+-------+-------+

2. Truy cập một biến không được khai báo

mysql>SELECT @var3;

đầu ra

+-------+
| @var3 | 
+-------+
|  NULL |  
+-------+

Ở đây, biến @var3 không được khai báo nên giá trị mặc định của nó là NULL

3. Gán giá trị cho một biến mà không cần sử dụng SET

mysql>SELECT @var3 := 4;

đầu ra

+----------+
| @var3:=4 | 
+----------+
|    4     |  
+----------+

Trong ví dụ trên- biến @var3 chỉ nên được gán giá trị bằng cách sử dụng. = not =, cái sau được coi là so sánh trong câu lệnh không phải SET. Giống-

________số 8

đầu ra

+----------+
| @var4=5  | 
+----------+
|   NULL   |  
+----------+

Làm thế nào các biến này được sử dụng để lưu trữ các giá trị, được sử dụng trong tương lai

Hãy xem xét, bảng Sinh viên sau đây-

s_ids_namemark1shagun152taruna53riya154palak105neha76garima17

Bây giờ, chúng ta phải tìm thứ hạng của những sinh viên này bằng cách sử dụng các biến do người dùng xác định

Đối với điều này, chúng tôi khởi tạo hai biến - @rank và @prev_mark

mysql>SET @var1 = 2+6;
mysql>SET @var2 := @var1-2;
0

Truy vấn

mysql>SET @var1 = 2+6;
mysql>SET @var2 := @var1-2;
1

Ở đây, biến @rank dùng để lưu thứ hạng của sinh viên và @prev_mark dùng để lưu điểm của các sinh viên trước đó

So sánh giữa các điểm được thực hiện để trong trường hợp nếu hai học sinh có điểm bằng nhau thì có thể tránh được việc tăng biến @rank

Các thay đổi trong cả hai biến diễn ra sau khi bảng sinh viên được sắp xếp theo thứ tự giảm dần theo cột “mark”

đầu ra

s_namerankmarksgarima117shagun215riya215palak310neha47taruna55

Như vậy ta được bảng sinh viên kết quả được sắp xếp theo cột “marks” giảm dần cùng với thứ hạng sinh viên

Ghi chú. Trong truy vấn trên, hãy quan tâm đến thứ tự của cột trong câu lệnh chọn. Nếu cột “marks” được viết trước cột “rank” thì chúng tôi không nhận được kết quả mong muốn. Bởi vì mỗi khi @prev_mark được gán điểm của sinh viên hiện tại, kết quả đánh giá @prev_mark. = đánh dấu là sai. Vì vậy, thứ hạng của mọi sinh viên được hiển thị là không tăng i. e nó sẽ vẫn là 0

Để hiểu khái niệm trên, chúng ta hãy tạo một bảng. Sau đây là truy vấn để tạo một bảng -

mysql>SET @var1 = 2+6;
mysql>SET @var2 := @var1-2;
2

Bây giờ chúng ta hãy chèn một số bản ghi vào bảng. Sau đây là truy vấn để chèn bản ghi -

mysql>SET @var1 = 2+6;
mysql>SET @var2 := @var1-2;
3

Hiển thị tất cả các bản ghi từ bảng với sự trợ giúp của câu lệnh chọn. Truy vấn để hiển thị tất cả các bản ghi như sau -

mysql>SET @var1 = 2+6;
mysql>SET @var2 := @var1-2;
4

Sau đây là đầu ra -

mysql>SET @var1 = 2+6;
mysql>SET @var2 := @var1-2;
5

Bây giờ bạn có thể đặt kết quả truy vấn trong một biến với sự trợ giúp của lệnh SET. Truy vấn như sau

Bạn muốn lưu một giá trị do một biểu thức tạo ra để bạn có thể tham chiếu đến nó trong một câu lệnh tiếp theo

Sử dụng biến do người dùng xác định để lưu trữ giá trị để sử dụng sau này

Bạn có thể gán một giá trị được trả về bởi câu lệnh

+-------+
| @var3 | 
+-------+
|  NULL |  
+-------+
7 cho một biến do người dùng xác định, sau đó tham khảo biến đó sau trong phiên mysql của bạn. Điều này cung cấp một cách để lưu kết quả được trả về từ một câu lệnh và sau đó tham khảo nó sau trong các câu lệnh khác. Cú pháp gán giá trị cho biến người dùng trong câu lệnh
+-------+
| @var3 | 
+-------+
|  NULL |  
+-------+
7 là
mysql>SET @var1 = 2+6;
mysql>SET @var2 := @var1-2;
61
mysql>SET @var1 = 2+6;
mysql>SET @var2 := @var1-2;
62
mysql>SET @var1 = 2+6;
mysql>SET @var2 := @var1-2;
63
mysql>SET @var1 = 2+6;
mysql>SET @var2 := @var1-2;
64, trong đó
mysql>SET @var1 = 2+6;
mysql>SET @var2 := @var1-2;
62 là tên biến và
mysql>SET @var1 = 2+6;
mysql>SET @var2 := @var1-2;
64 là giá trị mà bạn đang truy xuất. Biến có thể được sử dụng trong các câu lệnh tiếp theo bất cứ nơi nào một biểu thức được cho phép, chẳng hạn như trong mệnh đề
mysql>SET @var1 = 2+6;
mysql>SET @var2 := @var1-2;
67 hoặc trong câu lệnh
mysql>SET @var1 = 2+6;
mysql>SET @var2 := @var1-2;
68

Một tình huống phổ biến trong đó các biến người dùng có ích là khi bạn cần đưa ra các câu lệnh liên tiếp trên nhiều bảng có liên quan với nhau bởi một giá trị khóa chung. Giả sử bạn có bảng

mysql>SET @var1 = 2+6;
mysql>SET @var2 := @var1-2;
69 với cột
mysql>SELECT @var1, @var2;
50 xác định từng khách hàng và bảng
mysql>SELECT @var1, @var2;
51 cũng có cột
mysql>SELECT @var1, @var2;
50 để cho biết mỗi đơn đặt hàng được liên kết với khách hàng nào. Nếu bạn có tên khách hàng và bạn muốn xóa bản ghi khách hàng cũng như tất cả các đơn đặt hàng của khách hàng, bạn cần xác định giá trị
mysql>SELECT @var1, @var2;
50 thích hợp cho khách hàng đó, sau đó xóa các hàng khỏi cả hai bảng
mysql>SET @var1 = 2+6;
mysql>SET @var2 := @var1-2;
69 và
mysql>SELECT @var1, @var2;
51 khớp với ID. Một cách để thực hiện việc này là trước tiên hãy lưu giá trị ID vào một biến, sau đó tham chiếu đến biến đó trong các câu lệnh
mysql>SELECT @var1, @var2;
56

+-------+-------+
| @var1 | @var2 |
+-------+-------+
|   8   |   6   |
+-------+-------+
2

Câu lệnh

+-------+
| @var3 | 
+-------+
|  NULL |  
+-------+
7 trước đó gán một giá trị cột cho một biến, nhưng các biến cũng có thể được gán giá trị từ các biểu thức tùy ý. Câu lệnh sau xác định tổng cao nhất của các cột
mysql>SELECT @var1, @var2;
58 và
mysql>SELECT @var1, @var2;
59 trong bảng
+-------+-------+
| @var1 | @var2 |
+-------+-------+
|   8   |   6   |
+-------+-------+
50 và gán nó cho biến
+-------+-------+
| @var1 | @var2 |
+-------+-------+
|   8   |   6   |
+-------+-------+
51

mysql>SET @var1 = 2+6;
mysql>SET @var2 := @var1-2;
6

Một cách sử dụng khác cho biến là lưu kết quả từ

+-------+-------+
| @var1 | @var2 |
+-------+-------+
|   8   |   6   |
+-------+-------+
52 sau khi tạo một hàng mới trong bảng có cột
+-------+-------+
| @var1 | @var2 |
+-------+-------+
|   8   |   6   |
+-------+-------+
53

mysql>SELECT @var1, @var2;
5

+-------+-------+
| @var1 | @var2 |
+-------+-------+
|   8   |   6   |
+-------+-------+
52 trả về giá trị của giá trị
+-------+-------+
| @var1 | @var2 |
+-------+-------+
|   8   |   6   |
+-------+-------+
53 mới. Bằng cách lưu nó vào một biến, bạn có thể tham khảo giá trị nhiều lần trong các câu lệnh tiếp theo, ngay cả khi bạn đưa ra các câu lệnh khác tạo ra các giá trị
+-------+-------+
| @var1 | @var2 |
+-------+-------+
|   8   |   6   |
+-------+-------+
53 của riêng chúng và do đó thay đổi giá trị được trả về bởi
+-------+-------+
| @var1 | @var2 |
+-------+-------+
|   8   |   6   |
+-------+-------+
52. Kỹ thuật này sẽ được thảo luận thêm trong Chương 11

Biến người dùng giữ các giá trị đơn lẻ. Nếu bạn gán một giá trị cho một biến bằng câu lệnh trả về nhiều hàng, thì giá trị từ hàng cuối cùng sẽ được sử dụng

+-------+-------+
| @var1 | @var2 |
+-------+-------+
|   8   |   6   |
+-------+-------+
5

Nếu câu lệnh không trả về hàng nào, thì không có phép gán nào diễn ra và biến vẫn giữ nguyên giá trị trước đó của nó. Nếu biến chưa được sử dụng trước đó, giá trị đó là

+-------+-------+
| @var1 | @var2 |
+-------+-------+
|   8   |   6   |
+-------+-------+
58

mysql>SELECT @var3;
7

Để đặt một biến rõ ràng thành một giá trị cụ thể, hãy sử dụng câu lệnh

+-------+-------+
| @var1 | @var2 |
+-------+-------+
|   8   |   6   |
+-------+-------+
59. Cú pháp
+-------+-------+
| @var1 | @var2 |
+-------+-------+
|   8   |   6   |
+-------+-------+
59 có thể sử dụng
mysql>SET @var1 = 2+6;
mysql>SET @var2 := @var1-2;
63 hoặc
mysql>SELECT @var3;
72 để gán giá trị

+-------+
| @var3 | 
+-------+
|  NULL |  
+-------+
2

+-------+-------+
| @var1 | @var2 |
+-------+-------+
|   8   |   6   |
+-------+-------+
59 cũng có thể được sử dụng để gán kết quả
+-------+
| @var3 | 
+-------+
|  NULL |  
+-------+
7 cho một biến, miễn là bạn viết
+-------+
| @var3 | 
+-------+
|  NULL |  
+-------+
7 dưới dạng truy vấn phụ (nghĩa là trong ngoặc đơn) và nó trả về một giá trị. Ví dụ

+-------+
| @var3 | 
+-------+
|  NULL |  
+-------+
4

Giá trị của một biến nhất định sẽ tồn tại cho đến khi bạn gán cho nó một giá trị khác hoặc cho đến khi kết thúc phiên mysql của bạn, tùy theo điều kiện nào đến trước

Tên biến người dùng không phân biệt chữ hoa chữ thường

+-------+
| @var3 | 
+-------+
|  NULL |  
+-------+
5

Ghi chú

Trước MySQL 5. 0, tên biến người dùng phân biệt chữ hoa chữ thường

Biến người dùng chỉ có thể xuất hiện ở những nơi cho phép biểu thức, không phải ở những nơi phải cung cấp hằng số hoặc mã định danh bằng chữ. Mặc dù thật hấp dẫn khi cố gắng sử dụng các biến cho những thứ như tên bảng, nhưng nó không hoạt động. Ví dụ: bạn có thể thử tạo một tên bảng tạm thời bằng cách sử dụng một biến như sau, nhưng nó không hoạt động

+-------+
| @var3 | 
+-------+
|  NULL |  
+-------+
6

Biến người dùng là một phần mở rộng dành riêng cho MySQL cho SQL tiêu chuẩn. Chúng sẽ không hoạt động với các công cụ cơ sở dữ liệu khác

Làm cách nào để lưu trữ một giá trị trong biến trong MySQL?

Giá trị có thể là bất kỳ kiểu dữ liệu nào được cơ sở dữ liệu MySQL hỗ trợ. .
Đăng nhập vào cơ sở dữ liệu MySQL
Gán giá trị cho các biến bằng câu lệnh "SET". SET @fruit1='apple', @fruit2='orange', @fruit3='lê';.
Gán một giá trị cho một biến trong câu lệnh "CHỌN". .
Đăng xuất khỏi cơ sở dữ liệu MySQL

Làm cách nào để chuyển giá trị biến trong truy vấn MySQL?

Bước đầu tiên. Sử dụng lệnh Set. SET @anyVariableName − = 'yourValue'; Bước thứ hai. Truyền một biến cho tập lệnh MySQL. Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh chọn.

Chúng ta có thể KHAI THÁC biến trong truy vấn MySQL không?

Bạn có thể khai báo biến bằng cách sử dụng @anyVariablename, đây là biến phiên . Để tạo biến phiên, bạn cần sử dụng lệnh SET.

Làm cách nào để tạo biến trong MySQL?

MySQL cung cấp câu lệnh SET và SELECT để khai báo và khởi tạo biến . Tên biến do người dùng định nghĩa bắt đầu bằng ký hiệu @. Các biến do người dùng xác định không phân biệt chữ hoa chữ thường, chẳng hạn như @name và @NAME; . Biến do người dùng định nghĩa được khai báo bởi một người không thể hiển thị cho người khác.