본문 바로가기

Database

(16)
[오류] Data truncation: Invalid JSON text in argument 1 to function json_contains: "Invalid value." at position 0. Data truncation: Invalid JSON text in argument 1 to function json_contains: "Invalid value." at position 0.=> JSON 문법 오류  쿼리문의 having절 조건을 아래처럼 했더니 오류가 났다. (배열이 파라미터값을 포함하는지 확인하는 조건)having json_contains(json_arrayagg(info.user_cd), '"#{code}"')*** 숫자인 경우는 ' #{integer} ' 로만 감싸고, 문자열인 경우에는 ' "#{string}" ' 한번 더 감싸줘야 한다. JSON_CONTAINS 함수를 사용할 때, 검사할 배열과 비교대상 모두 JSON 형식이어야 한다.json_arrayagg 함수로 문자열 컬럼..
[오류] Parameter index out of range (2 > number of parameters, which is 1). Parameter index out of range (2 > number of parameters, which is 1). 전달되는 파라미터는 두개인데 SQL쿼리문에서 사용하는 건 하나여서 난 오류. 전달하는 파라미터에 code를 추가했는데 where절에 code = #{code} 추가를 안했다. with value as ( select entity_id , json_arrayagg( json_object( "id", id , "seq", seq , "text", text , "code", code )) as 'val' from (테이블1) where id = #{Id} and code = #{code} ) select /* 요기 주석 맨 끝 슬래쉬도 없어서 수정 후에도 같은 오류가 또 남 */ id a..
[MyBatis] foreach 태그 지원 옵션 * MyBatis foreach태그 (구 ibatis [ iterate ) collection : 전달받은 인자. List or Array 형태만 가능. item : 전달받은 인자 값을 alias명으로 대체. open : 구문이 시작될때 삽입할 문자열. close : 구문이 종료될 때 삽입할 문자열. separator : 반복 되는 사이에 출력할 문자열. index : 반복되는 구문 번호. 0부터 순차적으로 증가. SELECT * FROM users WHERE id IN #{itemId} 즉, idList = {ID1, ID2, ID3, ID4...} 이런식으로 데이터가 들어있으면 SELECT * FROM users WHERE id IN (ID1, ID2, ID3, ID4, ...) 위같은 형태가 되는거다.
[DB기초] 옵티마이저, 테이블 스캔 방식 * 옵티마이저 (optimizer) SQL쿼리를 실행할 때 가장 효율적인 처리 경로를 생성해주는 컴포넌트 - 규칙 기반 옵티마이저 (Rule-Based Optimizer, RBO) 정해진 규칙의 우선순위에 따라 실행 방법을 결정. => 조인 여부, 종류 / 인덱스 여부 등 - 비용 기반 옵티마이저 (Cost-Based Optimizer, CBO) 가능한 실행 경로들 중 최소한의 비용을 가지는 경로를 선택. => DBMS의 통계정보 활용 (테이블, 컬럼, 인덱스, I/O, CPU성능 등) * 참고블로그 * https://coding-factory.tistory.com/743 [DB] 데이터베이스 옵티마이저(Optimizer)에 대하여 옵티마이저(Optimizer)란? 옵티마이저는 가장 효율적인 방법으로 S..
[DB문법] 집계함수, group by, grouping, rollup * 집계함수 & null값 - count (*) : 테이블의 행 수를 반환 (Null값 포함) - count (column) : 지정 column의 Null이 아닌 값의 수를 집계 (Null값 제외) - SUM, AVG : Null이 아닌 값들만 집계 (Null값 제외) * grouping group by 절과 함께 사용되어 특정 행이 원래의 데이터 그룹에 속하는지, => 0을 반환 아니면 그룹화 연산자( rollup, cube, grouping set )에 의해 생성된 요약 행인지 구별하는 데 사용. => 1을 반환 * rollup group by column1, column2 ... with rollup group by rollup ( column1, column2 ..) => column1 과 co..
[DB문법] 날짜&시간, case when, null값 처리 SELECT _with절https://dbaant.tistory.com/22 [MYSQL] With 절 사용 방법MySQL에서 'WITH'절은 서브쿼리를 만들고 재사용 가능한 공통 테이블 표현식(Common Table Expression, CTE)을 정의하는 방법입니다. WITH절을 사용하여 쿼리를 단순화하고 가독성을 높일 수 있습니다. 다음dbaant.tistory.com UNION(DISTINCT), UNION ALLhttps://sewonzzang.tistory.com/45 [SQL] UNION / UNION ALL, WITHUNION / UNION ALL UNION : 조회한 다수의 SELECT문을 하나로 합치고 싶을 때 유니온(UNION)을 사용할 수 있습니다. UNION은 UNION (DIST..
[데이터베이스(강의)] 9. stored function * stored function - 사용자가 정의한 함수 - DBMS에 저장되고 사용되는 함수 - SQL의 select, insert, update, delete statement에서 사용할 수 있다. - 임직원의 ID를 열자리 정수로 랜덤하게 발급하고 싶다. - ID의 맨 앞자리는 1로 고정이다. mysql> delimiter $$ mysql> CREATE FUNCTION id_generator() -> RETURNS int -> NO SQL -> BEGIN -> RETURN (1000000000 + floor(rand()*1000000000)); => 여기에서 끝내지 않기 위해 -> END -> $$ => 임시로 바꿔준거다 mysql> delimiter ; => 다시 원래대로 바꿔준다 mysql> C..
[데이터베이스(강의)] 8. SQL로 데이터 조회 (group by, aggregate function, order b) * ORDER BY - 조회 결과를 특정 attribute(s) 기준으로 정렬하여 가져오고 싶을 때 사용한다. - default 정렬 방식은 오름차순이다 - 오름차순 정렬은 ASC로 표기한다. - 내림차순 정렬은 DESC로 표기한다. - 임직원들의 정보를 연봉 순서대로 정렬해서 알고 싶다. SELECT * FROM employee ORDER BY salary; => 기본이 오름차순 (ASC) SELECT * FROM employee ORDER BY salary DESC; - 임직원들의 정보를 연봉 순서대로 정렬해서 알고 싶다. + 부서별정렬 SELECT * FROM employee ORDER BY dept_id ASC, salary DESC; => dept_id 기준 내림차순 정렬 이후 salary 기준..