Operator(연산자)
다른 DBMS에서 사용되는 연산자와 거의 비슷하게 사용되지만 ANSI 표준 형태가 아니거나 MySQL에서만 사용되는 연산자도 있다. 떄문에 가능하면 ANSI 표준 형태의 연산자를 사용하는 것이 권장된다.
동등 비교
=
연산자는 ANSI 표준 형태이지만, MySQL에서는 <=>
연산자를 사용할 수 있다.
=
연산자와 같지만 추가적으로 NULL 값에 대한 비교까지 수행한다.
=
1=1
NULL=NULL
1=NULL
1
NULL
NULL
<=>
1<=>1
NULL<=>NULL
1<=>NULL
1
1
0
<=>
은 NULL을 하나의 값으로 취급하기 때문에 위와 같은 결과가 나온다.
부정 비교
<>
, !=
둘 다 사용되지만 하나로 통일하는 것이 좋다.
NOT 연산자
NOT
연산자는 !
둘 다 사용할 수 있다.
해당 연산자는 Boolean 뿐만 아니라 숫자나 문자열 값에도 사용할 수 있지만 결괏값이 에측할 수 없는 경우엔 사용하지 않는 것이 좋다.
AND / OR 연산자
일반적으로 AND
/ OR
를 사용하지만 MySQL에서는 &&
/ ||
를 사용할 수 있다.
오라클에서는 &&
/ ||
를 다른 연산에 사용하기 때문에 MySQL에서도 사용하지 않는 것이 좋다.
REGEXP 연산자
REGEXP
연산자는 정규 표현식을 사용할 수 있게 해주는데, 문자열 컬럼 비교에 사용할 때 인덱스 레인지 스캔을 사용할 수 없다.
LIKE 연산자
LIKE
연산자는 문자열 비교에 사용되는 연산자로, REGEXP
연산자와 달리 인덱스 레인지 스캔을 사용할 수 있다.
%: 0 또는 1개 이상의 문자
_: 정확히 1개의 문자
IN 연산자
범위로 검색하는 것이 아니라 여러 번의 동등 비교로 실행하기 때문에 일반적으로 빠르게 실행된다. 인자로 상수를 사용하거나 서브쿼리를 사용할 수 있다.
단일 값이 아닌 튜플로 비교할 수도 있는데, 이 경우에도 MySQL 8.0부터는 인덱스 레인지 스캔을 사용할 수 있다. NOT IN의 경우 인덱스 풀 스캔을 사용하게 되고, 레인지 스캔이 표시되더라도 실제 IN과 같이 효율적으로 실행되지는 않는다.
참고자료
Last updated
Was this helpful?