Biến SQL: SQL Server Khai báo, đặt và chọn biến
Biến trong SQL Server là gì?
Trong MS SQL, các biến là đối tượng đóng vai trò giữ chỗ cho một vị trí bộ nhớ. Biến giữ giá trị dữ liệu duy nhất.
Các loại biến trong SQL: Cục bộ, Toàn cầu
MS SQL có hai loại biến:
- Biến cục bộ
- Biến toàn cầu.
Tuy nhiên, người dùng chỉ có thể tạo một biến cục bộ.
Hình dưới đây giải thích hai loại biến có sẵn trong Máy chủ MSSQL.
Biến cục bộ
- Người dùng khai báo biến cục bộ.
- Theo mặc định, một biến cục bộ bắt đầu bằng @.
- Mọi phạm vi biến cục bộ đều có hạn chế đối với lô hoặc quy trình hiện tại trong bất kỳ phiên nào.
Biến toàn cục
- Hệ thống duy trì biến toàn cục. Người dùng không thể khai báo chúng.
- Biến toàn cục bắt đầu bằng @@
- Nó lưu trữ thông tin liên quan đến phiên.
Cách KHAI THÁC một biến trong SQL
- Trước khi sử dụng bất kỳ biến nào trong lô hoặc quy trình, bạn cần phải khai báo biến.
- Lệnh DECLARE được sử dụng để biến DECLARE đóng vai trò giữ chỗ cho vị trí bộ nhớ.
- Chỉ sau khi khai báo xong, một biến mới có thể được sử dụng trong phần tiếp theo của lô hoặc quy trình.
Cú pháp TSQL:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
Quy tắc:
- Khởi tạo là một điều tùy chọn trong khi khai báo.
- Theo mặc định, DECLARE khởi tạo biến thành NULL.
- Việc sử dụng từ khóa 'AS' là tùy chọn.
- Để khai báo nhiều biến cục bộ, hãy sử dụng dấu phẩy sau định nghĩa biến cục bộ đầu tiên, sau đó xác định tên biến cục bộ tiếp theo và loại dữ liệu.
Ví dụ khai báo biến
Truy vấn: Với 'AS'
DECLARE @COURSE_ID AS INT;
Truy vấn: Không có 'AS'
DECLARE @COURSE_NAME VARCHAR (10);
Truy vấn: KHAI THÁC hai biến
DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);
Gán giá trị cho biến SQL
Bạn có thể gán giá trị cho một biến theo cách sau: số ba cách:
- Trong quá trình khai báo biến bằng từ khóa DECLARE.
- Sử dụng BỘ
- Sử dụng CHỌN
Chúng ta hãy xem xét cả ba cách chi tiết:
Trong quá trình khai báo biến bằng từ khóa DECLARE
Cú pháp T-SQL:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
Ở đây, sau kiểu dữ liệu, chúng ta có thể sử dụng '=' theo sau là giá trị được gán
truy vấn:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
Sử dụng BIẾN ĐẶT SQL
Đôi khi chúng ta muốn tách biệt việc khai báo và khởi tạo. SET có thể được sử dụng để gán giá trị cho biến, sau khi khai báo một biến. Dưới đây là các cách khác nhau để gán giá trị bằng SET:
Ví dụ: Gán giá trị cho biến bằng SET
Cú pháp:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
truy vấn:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
Ví dụ: Gán giá trị cho nhiều biến sử dụng BỘ.
Cú pháp:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>, SET @Local_Variable_1 = <Value_1> SET @Local_Variable_2 = <Value_2>
Quy tắc: Một từ khóa SET chỉ có thể được sử dụng để gán giá trị cho một biến.
truy vấn:
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SET @COURSE_ID = 5 SET @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Ví dụ: Gán giá trị cho một biến bằng a Truy vấn con vô hướng sử dụng BỘ
Cú pháp:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable_2 <Data_Type>,SET @Local_Variable_1 = (SELECT <Column_1> from <Table_Name> where <Condition_1>)
Quy tắc:
- Đặt truy vấn trong dấu ngoặc đơn.
- Truy vấn phải là truy vấn vô hướng. Truy vấn vô hướng là truy vấn có kết quả chỉ là một hàng và một cột. Nếu không, truy vấn sẽ đưa ra lỗi.
- Nếu truy vấn trả về hàng 0 thì biến được đặt thành EMPTY, tức là NULL.
Giả thiết: Giả sử rằng chúng ta có bảng là 'Guru99' với hai cột như hiển thị bên dưới:
Chúng tôi sẽ sử dụng bảng 'Guru99' trong các hướng dẫn tiếp theo
Ví dụ 1: Kết quả là khi truy vấn con trả về một hàng.
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
Ví dụ 2: Khi kết quả là truy vấn con trả về hàng XNUMX
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Trong trường hợp cụ thể này, giá trị biến là EMPTY, tức là NULL.
Sử dụng BIẾN CHỌN SQL
Giống như SET, chúng ta cũng có thể sử dụng SELECT để gán giá trị cho các biến, sau đó khai báo một biến bằng DECLARE. Dưới đây là các cách khác nhau để gán giá trị bằng CHỌN:
Ví dụ: Gán giá trị cho một biến bằng SELECT
Cú pháp:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
truy vấn:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
Ví dụ: Gán giá trị cho nhiều biến bằng SELECT
Cú pháp:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
Quy tắc: Không giống như SET, SELECT có thể được sử dụng để gán giá trị đến nhiều biến ngăn cách bởi dấu phẩy.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Ví dụ: Gán giá trị cho một biến bằng Truy vấn con bằng SELECT
Cú pháp:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = (SELECT <Column_1> from <Table_name> where <Condition_1>)
Quy tắc:
- Đính kèm truy vấn trong ngoặc đơn.
- Truy vấn phải là truy vấn vô hướng. Truy vấn vô hướng là truy vấn có kết quả là một hàng và một cột. Nếu không, truy vấn sẽ đưa ra lỗi.
- Nếu truy vấn trả về 0 hàng thì biến đó là EMPTY, tức là NULL.
- Xem xét lại bảng 'Guru99' của chúng tôi
Ví dụ 1: Kết quả là khi truy vấn con trả về một hàng.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
Ví dụ 2: Kết quả là khi truy vấn con trả về hàng 0
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Trong trường hợp cụ thể này, biến là EMPTY, tức là NULL.
Ví dụ 3: Gán giá trị cho một biến bằng câu lệnh SELECT thông thường.
Cú pháp:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>
Quy tắc:
- Không giống như SET, nếu truy vấn có nhiều hàng thì giá trị biến được đặt thành giá trị của hàng cuối cùng.
- Nếu truy vấn trả về hàng 0 thì biến được đặt thành EMPTY, tức là NULL.
Truy vấn 1: Truy vấn trả về một hàng.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3 PRINT @COURSE_NAME
Truy vấn 2: Truy vấn trả về nhiều hàng.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
Trong trường hợp đặc biệt này, giá trị biến là đặt thành giá trị của hàng cuối cùng.
Truy vấn 3: Truy vấn trả về XNUMX hàng.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5 PRINT @COURSE_NAME
Trong trường hợp cụ thể này, biến là EMPTY, tức là NULL.
Các ví dụ về biến SQL khác
Sử dụng biến trong truy vấn
truy vấn:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
Sự thật thú vị về các biến máy chủ SQL!
- Một biến cục bộ có thể được hiển thị bằng cách sử dụng PRINT cũng như SELECT COMMAND
- Kiểu dữ liệu bảng không cho phép sử dụng 'AS' trong khi khai báo.
- SET tuân thủ các tiêu chuẩn ANSI trong khi SELECT thì không.
- Việc tạo một biến cục bộ có tên là @ cũng được cho phép. Chúng ta có thể khai báo nó như sau:
'DECLARE @@ as VARCHAR (10)'
Tổng kết
- Biến là đối tượng đóng vai trò giữ chỗ.
- Có hai loại biến: Local và Global
- Chúng ta có thể gán biến theo ba cách sau: Khi sử dụng 1) DECLARE 2) Sử dụng SET 3) SỬ DỤNG SELECT