개발 한 스푼/MySQL 8

Mysql 숫자함수 (ABS, CEILING, FLOOR, ROUND, TRUNCATE)

ABS (절대값) : SELECT ABS(123) FROM DUAL -- 123 SELECT ABS(-10) FROM DUAL -- 10 ROUND (반올림) SELECT ROUND(1234.56789) FROM DUAL -- 1235 SELECT ROUND(1234.56789 ,1) FROM DUAL -- 1234.6 SELECT ROUND(1234.56789 ,4) FROM DUAL -- 1234.5679 SELECT ROUND(1234.56789 ,-1) FROM DUAL -- 1230 SELECT ROUND(1234.56789 ,-2) FROM DUAL -- 1200 CEILING (올림) SELECT CEILING(12.34) FROM DUAL -- 13 SELECT CEILING(12.99 ,..

GROUP BY 쿼리 개선하기

집계쿼리에 조인할 테이블이 많은 경우 먼저 집계한 다음에 조인하자! 기존 SELECT A.prodType, A.ctgryCd1, A.ctgryCd2, A.ctgryCd3 , B.code_nm AS prodTypeNm , (SELECT ctgryNm FROM t_info WHERE ctgryId = A.ctgryCd1 AND useYn = 'Y') AS ctgryNm1 , (SELECT ctgryNm FROM t_info WHERE ctgryId = A.ctgryCd2 AND useYn = 'Y') AS ctgryNm2 , (SELECT ctgryNm FROM t_info WHERE ctgryId = A.ctgryCd3 AND useYn = 'Y') AS ctgryNm3 , COUNT(A.seqNo) AS..

you do not have the SUPER privilege (Error Code: 1419)

문제 mysql 함수생성시 위 메시지 발생 원인 MySQL 전역변수 log_bin_trust_function_creators 속성 이 속성은 MySQL이 stored function과 trigger 생성에 제약을 강제할 수 있는 기능을 가진 속성으로 OFF로 설정시 CREATE ROUTINE 권한이 있어도 trigger 나 procedure 생성을 할 수 없다. log_bin_trust_function_creators 값은 default가 OFF 해당 속성 enable시 MySQL 입장에서 function에 대한 안정성 체크를 하지 않게 된다. 데이터베이스 서버가 마스터와 슬레이브 두대를 사용할 경우, (현재 회사 DB서버 백업설정이 이와 같다) 마스터 데이터 변경시 바이너리 로그를 사용하여 데이터를 복..

NOW()와 SYSDATE()의 차이

SELECT NOW(); SELECT SYSDATE(); 쿼리가 길어질 경우, 출력 되는 시간이 고정되느냐 변하느냐에 따른 차이가 있습니다. NOW 는 쿼리가 처음 시작되는 시간이 고정되지만 SYSDATE 는 연산할 때 마다 시간이 변합니다. 예를 들어, 한 번에 실행하는 쿼리가 몇 백줄이고, 중간중간에 현재 날짜와 시간을 조회하다고 가정하겠습니다. 그 긴 쿼리( 쿼리 단위 )가 실행 될 때를 기준으로 날짜와 시간을 사용할때는 NOW를 사용하고, 중간중간 날짜를 조회할 때를 기준으로 각각 날짜와 시간을 사용할때는 SYSDATE를 사용합니다. Ref) https://victorydntmd.tistory.com/143

계층형 쿼리

공지사항 게시판에 댓글 기능을 도입한다고 한다. 댓글-대댓글로 2 depth인 줄 알았으나, 대대댓글 3 depth가 될 수도 있고 아닐수도 있고 변경가능성 농후..하므로 일단 3 depth 기준으로 조회 쿼리를 짜기로 했다. 댓글-대댓글 구조의 테이블 설계는 SQLD 공부할 때 접했던 계층형 쿼리(start with, prior 등) 기능으로 간단하지 않을까했다. 주로 많이 사용하는 기능 WITH RECURSIVE 구문 CONNECT BY (Oracle) 재귀형 함수 짜기 더보기 MySQL 계층형 쿼리 구현하기 [SQL] 계층형 쿼리(댓글) START WITH / CONNECT BY PRIOR Mysql 로 oracle connect by 기능. 계층쿼리 with recursive 재귀쿼리 예시 Hie..

[MySQL] YEAR_MONTH() 현재 연도, 월 알아내기

MySQL 날짜함수, 시간함수 EXTRACT() - 날짜에서 년, 월, 일, 시간등을 추출 EXTRACT(unit FROM date) 의 형태 The EXTRACT() function uses the same kinds of unit specifiers as DATE_ADD() or DATE_SUB(), but extracts parts from the date rather than performing date arithmetic. YEAR_MONTH from date SELECT CONCAT(YEAR(NOW()), MONTH(NOW()));-- 20237 SELECT EXTRACT(YEAR_MONTH FROM NOW());-- 202307 ref https://learnsql.com/cookbook/h..

LIKE% 위치에 따른 인덱스 사용 여부

일하면서 쿼리를 짜다 = 검색을 LIKE로 바꾸니 그렇게 바꾸면 "어드민페이지는 검색어를 모두 넣어 제대로 검색하는게 맞고, 또한 검색시 인덱스 타기도 어렵다"는 말을 들었다. 인덱스는 잘 모르니까 찾아보니 아래 티스토리글이 매우 유익하게 설명하고 있었다. MySQL LIKE % 위치에 따른 인덱스 사용 여부 서론 Table 내 어떠한 칼럼에 index를 설정하여 Like 문을 통해 검색하는 경우 INDEX 설정을 하였어도 % 위치에 따라 INDEX 가 정상적으로 작동하는 경우가 있지만 반대로 잘못 사용한 경우 Full Scan 이 발 k3068.tistory.com MySQL에서 문자열 검색시 왜 'AB%' 를 제외한 나머지 방식(%AB, %AB%)은 인덱스를 타지 않을까? 데이터베이스 인덱스의 자료구..