Loading...
MySQL 9.5 Reference Manual 9.5의 14.4.4 Assignment Operators의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
Table 14.6 Assignment Operators
| Name | Description |
|---|---|
:= | 값 할당 |
= | 값 할당 ( SET 문장의 일부로서 또는 UPDATE 문장의 SET 절의 일부로서) |
Assignment 연산자이다. 연산자 왼쪽에 있는 사용자 변수(user variable)가 오른쪽 값을 갖도록 만든다. 오른쪽의 값은 리터럴 값, 값을 저장하고 있는 다른 변수, 또는 스칼라 값을 반환하는 모든 유효한 표현식일 수 있으며, 쿼리의 결과(이 값이 스칼라 값인 경우)도 포함된다.
하나의 SET 문장 안에서 여러 개의 assignment를 수행할 수 있다. 같은 문장 안에서 여러 개의 assignment를 수행할 수 있다.
=와 달리, := 연산자는 비교 연산자로 해석되지 않는다. 이는 SET 문장뿐만 아니라, 어떤 유효한 SQL 문장에서도 :=를 사용하여 변수에 값을 할당할 수 있음을 의미한다.
1mysql> SELECT @var1, @var2; 2 -> NULL, NULL 3mysql> SELECT @var1 := 1, @var2; 4 -> 1, NULL 5mysql> SELECT @var1, @var2; 6 -> 1, NULL 7mysql> SELECT @var1, @var2 := @var1; 8 -> 1, 1 9mysql> SELECT @var1, @var2; 10 -> 1, 1 11 12mysql> SELECT @var1:=COUNT(*) FROM t1; 13 -> 4 14mysql> SELECT @var1; 15 -> 4
SELECT 외의 문장, 예를 들어 여기에서 보이는 것처럼 UPDATE와 같은 다른 문장에서도 :=를 사용하여 값 assignment를 수행할 수 있다.
1mysql> SELECT @var1; 2 -> 4 3mysql> SELECT * FROM t1; 4 -> 1, 3, 5, 7 5 6mysql> UPDATE t1 SET c1 = 2 WHERE c1 = @var1:= 1; 7Query OK, 1 row affected (0.00 sec) 8Rows matched: 1 Changed: 1 Warnings: 0 9 10mysql> SELECT @var1; 11 -> 1 12mysql> SELECT * FROM t1; 13 -> 2, 3, 5, 7
:= 연산자를 사용하여 하나의 SQL 문장 안에서 동일한 변수의 값을 설정(set)하고 읽어(read) 오는 것도 가능하지만, 이는 권장되지 않는다. 왜 이런 작업을 피해야 하는지는 Section 11.4, “User-Defined Variables”에 설명되어 있다.
이 연산자는 다음 두 문단에서 설명하는 두 경우에 값 assignment를 수행하는 데 사용된다.
SET 문장 안에서는, = 가 assignment 연산자로 취급되어 연산자 왼쪽에 있는 사용자 변수(user variable)가 오른쪽 값을 갖도록 만든다. (다시 말해, SET 문장에서 사용될 때, = 는 :=와 동일하게 취급된다.) 오른쪽의 값은 리터럴 값, 값을 저장하고 있는 다른 변수, 또는 스칼라 값을 반환하는 모든 유효한 표현식일 수 있으며, 쿼리의 결과(이 값이 스칼라 값인 경우)도 포함된다.
하나의 SET 문장 안에서 여러 개의 assignment를 수행할 수 있다.
UPDATE 문장의 SET 절에서는, = 역시 assignment 연산자로 동작한다. 그러나 이 경우에는 연산자 왼쪽에 명시된 컬럼이 오른쪽에 주어진 값을 갖도록 만든다. 이는 UPDATE에 포함된 어떤 WHERE 조건이 만족되는 경우에 한한다. 하나의 UPDATE 문장의 동일한 SET 절 안에서 여러 개의 assignment를 수행할 수 있다.
그 밖의 모든 컨텍스트에서는, = 는 comparison operator로 처리된다.
1mysql> SELECT @var1, @var2; 2 -> NULL, NULL 3mysql> SELECT @var1 := 1, @var2; 4 -> 1, NULL 5mysql> SELECT @var1, @var2; 6 -> 1, NULL 7mysql> SELECT @var1, @var2 := @var1; 8 -> 1, 1 9mysql> SELECT @var1, @var2; 10 -> 1, 1
자세한 내용은 Section 15.7.6.1, “SET Syntax for Variable Assignment”, Section 15.2.17, “UPDATE Statement”, 그리고 Section 15.2.15, “Subqueries”를 참조하라.
14.4.3 Logical Operators
14.5 Flow Control Functions