연산자
- 동등 비교
- Null safe <=>
NULL을 하나의 값으로 인식하고 비교함으로 NULL을 반환하지 않는다. - Null unsafe =
NULL을 비교시에는 NULL을 반환한다.
- Null safe <=>
- 부정 비교 <>, !=
- NOT 연산 !, NOT
- AND, OR 연산
- divide 연산 /, DIV, %, MOD
- REGEXP 연산 REGEXP, RLIKE
- 정규 표현식을 비교하는 연산자
- 문자열 칼럼 비교에 사용할 때 REGEXP 조건의 비교는 인덱스 레인지 스캔을 사용 X
- LIKE 연산
- % : 0 또는 1 이상의 모든 문자
- _ : 정확히 하나의 문자
- ESCAPE : %, _ 문자 비교를 위해서 escape 문자를 설정하여 %, _사용이 가능하게 함
- ex) select ‘a%’ LIKE ‘a/%’ ESCAPE ‘/‘;
- BETWEEN 연산
- 범위가 크거나 특정 구간의 선택도가 높을 때, 제한된 값을 동등 비교하는 IN의 사용을 통해서 성능을 개선할 여지가 있음
- IN 연산
- IN 연산자에 상수값을 입력으로 전달하는 경우는 다른 DBMS만큼 최적화를 수행
- IN 연산자의 입력이 상수가 아니라 서브 쿼리인 경우에는 상당히 느려질 수 있음
내장 함수
IFNULL(a, b)
- a : NULL 비교 대상
- b : NULL 인 경우 반환 값
- return if ( a = NULL ) a else b
ISNULL(a)
- return if ( a = NULL) true else false
NOW(), SYSDATE()
- NOW() : 하나의 SQL에서 동일한 결과 보장
- SYSDATE() : 호출되는 시점에 따른 결과 반환
- SYSDATE() 보다는 NOW()를 사용하거나 환경 변수로 NOW() 처럼 동작하게 처리하기를 권장한다.
DATE_FORMAT
날짜를 문자열로 변환한다.SELECT DATE\_FORMAT(NOW(), ‘%Y-%m-%d %H:%i:%s’) AS current\_dttm; 결과 : 2023-03-23 12:33:44
STR_TO_DATE
문자열을 날짜 데이터로 변경한다.SELECT STR\_TO\_DATE(‘2023-03-23 12:33:44’, ‘%Y-%m-%d %H:%i:%s’) AS current\_dttm 결과 : 2023-03-23 12:33:44
DATE_ADD, DATE_SUB
특정 날짜에서 년도나 월일 또는 시간을 더하거나 뺄 때 사용SELECT DATE_ADD(NOW(), INTERVAL 1 DAY) AS tomorrow; SELECT DATE_ADD(NOW(), INTERVAL 1 DAY) AS tomorrow;
타임 스템프 연산 UNIX_TIMESTAMP, FROM_UNIXTIME
SELECT UNIX_TIMESTAMP('2023-03-03 03:03:00'); 결과 : 23404995 (단순한 예제 값입니다. 실제와는 다름니다)
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP('2023-03-03 03:03:00')); 결과 : 2023-03-03 03:03:00
문자열 처리
RPADSELECT RPAD('HELLO', 10, '_'); 결과 : HELLO_____
LPAD
SELECT LPAD('HELLO', 10, '_'); 결과 : _____HELLO
RTRIM
SELECT RTRIM(' HELLO '); 결과 : ' HELLO'
LTRIM
SELECT LTRIM(' HELLO '); 결과 : 'HELLO '
TRIM
SELECT TRIM(' HELLO '); 결과 : 'HELLO'
'db > MySql' 카테고리의 다른 글
SELECT 최적화 (0) | 2023.03.17 |
---|---|
MySQL의 주요 처리 방식 (0) | 2023.03.06 |
DB 실행 계획 분석 EXPLAIN - 2 (0) | 2023.03.05 |
DB 실행 계획 분석 EXPLAIN - 1 (0) | 2023.02.22 |