SQL 변수: SQL Server 변수 선언, 설정 및 선택
SQL Server의 변수란 무엇입니까?
MS SQL에서 변수는 메모리 위치에 대한 자리 표시자 역할을 하는 객체입니다. 변수는 단일 데이터 값을 보유합니다.
SQL의 변수 유형: 로컬, 글로벌
MS SQL에는 두 가지 유형의 변수가 있습니다.
- 지역 변수
- 전역 변수.
그러나 사용자는 지역 변수만 생성할 수 있습니다.
아래 그림은 에서 사용할 수 있는 두 가지 유형의 변수를 설명합니다. MS SQL 서버.
지역 변수
- 사용자가 지역 변수를 선언합니다.
- 기본적으로 지역 변수는 다음으로 시작합니다. @.
- 모든 지역 변수 범위에는 다음과 같은 제한이 있습니다. 현재 배치 또는 절차 특정 세션 내에서.
글로벌 변수
- 시스템은 전역 변수를 유지 관리합니다. 사용자는 이를 선언할 수 없습니다.
- 전역 변수는 다음으로 시작합니다. @@
- 저장한다 세션 관련 정보.
SQL에서 변수를 선언하는 방법
- 배치 또는 프로시저에서 변수를 사용하기 전에 다음을 수행해야 합니다. 변수를 선언합니다.
- DECLARE 명령은 메모리 위치에 대한 자리 표시자 역할을 하는 변수를 DECLARE하는 데 사용됩니다.
- 한 번 선언된 변수만 이후 배치 또는 프로시저 부분에서 사용할 수 있습니다.
TSQL 구문:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
규칙 :
- 선언하는 동안 초기화는 선택 사항입니다.
- 기본적으로 DECLARE는 변수를 NULL로 초기화합니다.
- 'AS' 키워드를 사용하는 것은 선택사항입니다.
- 하나 이상의 지역 변수를 선언하려면 첫 번째 지역 변수 정의 뒤에 쉼표를 사용한 후 다음 지역 변수 이름과 데이터 형식.
변수 선언의 예
쿼리: 'AS'로
DECLARE @COURSE_ID AS INT;
쿼리: 'AS' 없음
DECLARE @COURSE_NAME VARCHAR (10);
쿼리: 두 개의 변수를 DECLARE
DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);
SQL 변수에 값 할당
다음에서 변수에 값을 할당할 수 있습니다. 세 방법:
- DECLARE 키워드를 사용하여 변수를 선언하는 동안.
- SET 사용
- SELECT 사용
세 가지 방법을 모두 자세히 살펴보겠습니다.
DECLARE 키워드를 사용하여 변수를 선언하는 동안
T-SQL 구문:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
여기서 데이터 유형 뒤에 '='를 사용하고 그 뒤에 할당할 값을 사용할 수 있습니다.
검색어 :
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
SQL SET 변수 사용
때로는 선언과 초기화를 별도로 유지하고 싶을 때가 있습니다. SET을 사용하면 변수를 선언한 후 변수에 값을 할당할 수 있습니다. 다음은 SET를 사용하여 값을 할당하는 다양한 방법입니다.
예시: SET을 사용하여 변수에 값 할당
구문 :
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
검색어 :
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
예시: 값을 할당합니다. 여러 변수 SET을 사용합니다.
구문 :
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>, SET @Local_Variable_1 = <Value_1> SET @Local_Variable_2 = <Value_2>
규칙 : 하나의 SET 키워드를 사용하여 다음에만 값을 할당할 수 있습니다. 하나의 변수.
검색어 :
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SET @COURSE_ID = 5 SET @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
예시: 변수에 값을 할당 스칼라 하위 쿼리 SET을 사용하여
구문 :
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable_2 <Data_Type>,SET @Local_Variable_1 = (SELECT <Column_1> from <Table_Name> where <Condition_1>)
규칙 :
- 쿼리를 괄호로 묶습니다.
- 쿼리는 스칼라 쿼리여야 합니다. 스칼라 쿼리는 결과가 한 행과 한 열로만 있는 쿼리입니다. 그렇지 않으면 쿼리에서 오류가 발생합니다.
- 쿼리가 XNUMX개 행을 반환하면 변수는 EMPTY, 즉 NULL로 설정됩니다.
인수: 아래에 표시된 것처럼 두 개의 열이 있는 'Guru99'라는 테이블이 있다고 가정해 보겠습니다.
추가 튜토리얼에서는 'Guru99' 테이블을 사용할 것입니다.
예 1 : 하위 쿼리가 결과로 하나의 행을 반환하는 경우.
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
예 2: 하위 쿼리가 결과로 XNUMX행을 반환하는 경우
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
이 특별한 경우 변수 값은 EMPTY, 즉 NULL입니다.
SQL SELECT 변수 사용
SET과 마찬가지로 SELECT를 사용하여 변수에 값을 할당하고 DECLARE를 사용하여 변수를 선언할 수도 있습니다. 다음은 SELECT를 사용하여 값을 할당하는 다양한 방법입니다.
예시: SELECT를 사용하여 변수에 값 할당
구문 :
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
검색어 :
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
예시: SELECT를 사용하여 여러 변수에 값 할당
구문 :
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
규칙 : SET과 달리 SELECT는 값을 할당하는 데 사용할 수 있습니다. 여러 변수에 로 구분 콤마.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
예시: SELECT를 사용하여 하위 쿼리로 변수에 값 할당
구문 :
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = (SELECT <Column_1> from <Table_name> where <Condition_1>)
규칙 :
- 쿼리를 괄호로 묶습니다.
- 쿼리는 스칼라 쿼리여야 합니다. 스칼라 쿼리는 결과가 한 행과 한 열인 쿼리입니다. 그렇지 않으면 쿼리가 오류를 발생시킵니다.
- 쿼리가 XNUMX개의 행을 반환하는 경우 변수는 EMPTY, 즉 NULL입니다.
- 'Guru99' 테이블을 다시 생각해 보세요.
예 1 : 하위 쿼리가 결과로 하나의 행을 반환하는 경우.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
예 2 : 하위 쿼리가 결과적으로 XNUMX행을 반환하는 경우
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
이 특별한 경우 변수는 EMPTY, 즉 NULL입니다.
예 3 : 일반 SELECT 문을 사용하여 변수에 값을 할당합니다.
구문 :
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>
규칙 :
- SET와 달리 쿼리 결과가 여러 행인 경우 변수 값은 마지막 행의 값으로 설정됩니다.
- 쿼리가 XNUMX개 행을 반환하면 변수는 EMPTY, 즉 NULL로 설정됩니다.
쿼리 1: 쿼리는 하나의 행을 반환합니다.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3 PRINT @COURSE_NAME
쿼리 2: 쿼리는 여러 행을 반환합니다.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
이 특별한 경우에 변수 값은 다음과 같습니다. 마지막 행의 값으로 설정.
쿼리 3: 쿼리는 XNUMX개의 행을 반환합니다.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5 PRINT @COURSE_NAME
이 특별한 경우 변수는 EMPTY, 즉 NULL입니다.
기타 SQL 변수 예
쿼리에서 변수 사용
검색어 :
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
SQL Server 변수에 대한 흥미로운 사실!
- 로컬 변수는 PRINT 뿐만 아니라 SELECT COMMAND를 사용하여 표시될 수 있습니다.
- Table Data Type은 선언 시 'AS' 사용을 허용하지 않습니다.
- SET은 ANSI 표준을 준수하지만 SELECT는 그렇지 않습니다.
- @라는 이름의 지역 변수를 생성하는 것도 허용됩니다. 예를 들어 다음과 같이 선언할 수 있습니다.
'DECLARE @@ as VARCHAR (10)'
제품 개요
- 변수는 자리 표시자 역할을 하는 객체입니다.
- 두 가지 유형의 변수가 존재합니다: 로컬 및 글로벌
- 변수는 다음의 세 가지 방법으로 할당할 수 있다. 1) DECLARE를 사용하는 경우 2) SET을 사용하는 경우 3) SELECT를 사용하는 경우