SQL 대입 연산자 가이드: =와 := 차이점과 사용법
SQL에서는 대입 연산자(Assignment Operators)를 통해 값을 변수나 필드에 할당할 수 있습니다. 이때 사용하는 연산자는 =과 := 두 가지가 있으며, 각각의 쓰임새와 특징이 다릅니다. 이 글에서는 대입 연산자의 사용법, 차이점, 주의사항, 실전 예제를 체계적으로 정리했습니다.
1. 대입 연산자의 종류
| 연산자 | 설명 | 특징 |
|---|---|---|
= |
대입 또는 비교 | 문맥에 따라 대입 또는 비교 연산 |
:= |
대입 전용 연산자 | 항상 대입 연산자로만 사용됨 |
2. = 연산자: 대입 또는 비교
2.1. 대입 연산자로 사용 (SET, UPDATE 문 등)
SET @price = 1000;
UPDATE Reservation
SET RoomNum = 504
WHERE ID = 1;
- 변수나 필드에 값을 대입할 때 사용
=는 이 경우 대입 연산자로 해석됨
2.2. 비교 연산자로 사용 (WHERE, SELECT 문 등)
SELECT *
FROM Reservation
WHERE RoomNum = 504;
=는 여기서 비교 연산자로 해석됨- RoomNum이 504인 레코드 조회
❗ =는 문맥에 따라 대입 또는 비교로 해석되므로 혼동 주의
3. := 연산자: 항상 대입 전용
:=는 항상 대입 연산자로 해석됩니다- 변수 대입 및 SELECT 문 내에서 안전하게 사용 가능
변수 선언 및 값 대입
SET @RoomNum := 504;
SELECT 문 내 변수에 대입
SELECT @RoomNum := RoomNum
FROM Reservation
WHERE Name = '홍길동';
- 홍길동의 RoomNum 값을 @RoomNum 변수에 대입
4. 실전 예제 모음
4.1. SET 문에서 대입
SET @totalPrice := 150000;
4.2. UPDATE 문에서 필드 값 대입
UPDATE Reservation
SET RoomNum = 101, ReserveDate = '2025-01-01'
WHERE ID = 1;
4.3. SELECT 문에서 := 사용
SELECT @count := COUNT(*)
FROM Reservation;
- 레코드 총 개수를 @count 변수에 저장
5. 주의사항 및 실전 팁
=의 다중 해석 주의
=는 문맥에 따라 대입 또는 비교로 해석됩니다- 비교가 아닌 대입을 명확하게 표현하려면
:=사용이 안전
변수 규칙
- 변수는 반드시 @ 기호로 시작해야 함
- 변수는 세션 내에서 유지되며, 로그아웃 시 사라짐
사용 위치 요약
| 연산자 | 용도 | 사용 위치 | 특징 |
|---|---|---|---|
= |
대입 또는 비교 | SET, UPDATE, WHERE |
비교와 대입을 겸함 |
:= |
대입 전용 | SET, SELECT |
항상 대입. 혼동 방지에 유리 |
6. 요약 정리
=: 대입과 비교 모두 가능한 연산자UPDATE,SET에서는 대입WHERE,SELECT에서는 비교로도 해석
:=: 대입 전용 연산자- 항상 값을 변수에 저장할 때 사용
- 명확하고 안전한 대입 연산이 필요할 때 유용
-
변수는 @로 시작, 세션 내에서만 유지
- SELECT 문 내 변수에 값 대입 시
:=사용 권장
질문 정리
=과:=중 어떤 걸 사용해야 하나요?- 비교가 아니라 대입만 하려는 경우에는 := 사용이 안전합니다.
- 변수는 항상 선언해야 하나요?
SET @변수이름 = 값;처럼 선언과 대입을 동시에 수행하면 됩니다.
- 변수는 전역으로 사용되나요?
- 아니요. 변수는 세션 단위로 유효합니다.
- SELECT 문에서 변수 대입이 가능한가요?
- 네.
SELECT @var := 필드명 FROM 테이블;로 할당할 수 있습니다.
- 네.
:=을 WHERE 조건절에 사용할 수 있나요?- 권장되지 않습니다. 비교는
=를, 대입은:=를 사용하세요.
- 권장되지 않습니다. 비교는
댓글남기기