요르딩딩
[TIP] 쿼리작성 팁 (mybatis) 본문
1. select insert into
select 후 insert 보다 > select insert into를 활용하여 디비접근을 최소화하면 실행속도를 높일 수 있다.
INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;
2. mybatis의<selectkey> 태그
: insert 후 저장된 row 데이터의 auto_increment 키값을 가져와야 할때
참고 : yookeun.github.io/java/2014/07/11/mybatis-selectkey/
3. 'EXPLAIN'
'EXPLAIN' 을 사용하면 쿼리를 실행하기전에 실행계획을 분석하여 출력한다.
출처: https://denodo1.tistory.com/306 [dBack]
4.<![CDATA[쿼리]]>
mybatis 부등호 오류날때 대체 : <![CDATA[<]]> or <![CDATA[쿼리]]>
5. mybatis LIKE문
like '%'||#{company_text}||'%'
6. <foreach> 태그
List 를 IN절로 받아서 사용할때
WHERE
slip_no IN
<foreach collection="slip_no_list" item="listItem" open="(" close=")" separator=",">
#{listItem}
</foreach>
7. 숫자나 날짜를 특정 포맷의 문자로 변환하는 함수
PostgreSQL : TO_CHAR(숫자/날짜, 포맷)
PostgreSQL : TO_TIMESTAMP(컬럼명, 'YYYYMMDD') + INTERVAL '1' DAY
MYSQL : DATE_FORMAT(날짜, 포맷)]
예시)
PostgreSQL: TO_CHAR(컬럼명 , 'YYYY/MM/DD HH24:MI:SS')
MYSQL : DATE_FORMAT(컬럼명, '%Y.%m.%d %H:%i')
[해당날짜 범위 조회]
AND 컬럼명 <![CDATA[>=]]> TO_TIMESTAMP(변수, 'YYYYMMDD')
AND 컬럼명 <![CDATA[<]]> TO_TIMESTAMP(변수, 'YYYYMMDD') + INTERVAL '1' DAY
AND ts BETWEEN TIMESTAMP(#{startDate}) and TIMESTAMP(#{endDate}+1)
7-1. 날짜 증가, 감소하는 함수
// MYSQL 기준
DATE_ADD(NOW(), INTERVAL 1 SECOND);
// second, minute, hour, day, month, year
// MYSQL 기준
DATE_SUB(NOW(), INTERVAL 1 SECOND);
// second, minute, hour, day, month, year
결과 : 2017-01-11 12:00:00
8. CASE WHEN THEN ELSE END
CASE
WHEN fc.charge_state = '1' THEN fc.pre_discount_total_amount
ELSE 0
END as alias
9. Inline view (인라인 뷰)
서브쿼리같은 종류
procedures에 변수를 넣어두고 같이 사용가능하다.
[view]
CREATE OR REPLACE
ALGORITHM = UNDEFINED VIEW `v_table` AS
SELECT
`s`.`s_no` AS `s_no`,
`ss`.`shared` AS `sharedby`,
`ss`.`user_no` AS `user_no`
FROM
(`t_sdset` `s`
LEFT JOIN `t_sdset_share` `ss` ON
(`s`.`s_no` = `ss`.`s_no`
AND `ss`.`shared` = 'Master'))
WHERE
`s`.`comp` = `s_param1`()
AND `s`.`reg_user_no` = `s_param2`()
[procedures]
CREATE DEFINER=`ABCID`@`%` FUNCTION `데이터베이스명`.`s_param1`() RETURNS int(11)
NO SQL
DETERMINISTIC
return @s_param1
https://coding-factory.tistory.com/224
10. COALESCE 함수
COALESCE 함수는 나열된 인수의 값을 순차적으로 체크하여 NULL이 아닌 첫 번째 인수를 반환한다.
모든 인수가 NULL인 경우에는 NULL을 반환한다.
11. CDATA
mybatis에서 부등호 사용할때 이용.
<if test="search!=null and searchto!=null">
and date_format(insert_time, '%Y%m') <![CDATA[>=]]> #{search_from}
and date_format(insert_time, '%Y%m') <![CDATA[<=]]> #{search_to}
</if>
12. Mybatis null 체크, equals 체크
Null 체크 : <if test="type!=null and type!=''">
Equals 체크 : <if test="type.equals('true')">
13. TRUNCATE TABLE
- 기존에 사용하던 테이블의 모든 로우를 제거하기 위한 명령어이다.
- DROP TABLE과의 차이점
- DROP TABLE은 테이블의 존재 자체가 삭제하는 반면 TRUNCATE TABLE은 테이블은 존재하는 레코드만 모두 삭제한다.
'[Web] > [DB & Mybatis]' 카테고리의 다른 글
[DB] 쿼리 최적화 (0) | 2021.05.28 |
---|---|
[DB] 인덱스 장점/단점 (0) | 2021.05.21 |
[BASE] DataBase 강의2 정리 (0) | 2021.03.07 |
[TIP] DB 포괄열 (0) | 2020.12.23 |
[TIP] DB 인덱스 (0) | 2020.12.23 |