유용한 mysql 문법

이름·2021년 6월 18일
0

(1) [ON DUPLICATE KEY UPDATE] mysql 4.1 버전 이상부터 지원

  • 해당 방식은 INSERT를 하다가 PK값이 이미 존재하면 UPDATE를 한다.
    이 조건을 만족하기 위해 테이블에 무조건 PK값이 지정이 되어있어야 정상적으로 동작한다.

(2) WHERE 절 뒤에 나오는 컬럼에 함수를 사용하지 말아야 한다.

  • 이유 : 인덱싱이 안되서 느려진다.
    따라서 아래 처럼 CONCAT 사용해서 조회한다.

  • WHERE UPDATE_DATE BETWEEN CONCAT(#{strtDate}, '000000') AND CONCAT(#{endDate}, '235959')

(3) IFNULL 사용법

  • SELECT IFNULL(Column명, "Null일 경우 대체 값") FROM 테이블명;

(4) 현재 시간

  • DATE_FORMAT(now(), '%Y%m%d%H%i%s')

(5) WITH 절

  • SQL에서 서브쿼리를 사용할 때 새로운 테이블이 생성된다.

이러한 서브쿼리가 계속 사용된다면 메모리 차원에서 문제가 생길 수 있다.

따라서 우리는 with 절을 이용해서 temporary 한 테이블을 만들수 있다.

with 임시 테이블 이름 as (쿼리)

with max_budget (value) as (select max(budget) from department) select dept_name from department, max_budget where department.budget = max_budget.value;

=> 학과 테이블로부터 budget 의 최대값을 저장하는 max_budget 이라는 임시테이블을 만든다.

=> 만들었던 임시테이블을 where 절에서 budget을 비교할때 사용한다.

  • 같은 시간에 여러 개의 with 절을 동시에 돌리면 임시테이블이 견딜 수 있는 정도가 넘어가 오히려 느려진다고 한다.

0개의 댓글