728x90
반응형

DB 236

[DB][MySQL] JSON_TABLE - GROUP_CONCAT()

✅ 2. GROUP_CONCAT() — 여러 행을 하나의 문자열로 합침📌 용도여러 row의 값을"A, B, C" 처럼 하나의 문자열로 합치고 싶을 때 사용.📌 예시위에서 JSON_TABLE로 펼친 결과를 다시 하나로 합치면?SELECT p.product_id, GROUP_CONCAT(jt.name ORDER BY jt.id SEPARATOR ', ') AS tag_namesFROM product pCROSS JOIN JSON_TABLE( p.tags, '$.items[*]' COLUMNS ( id VARCHAR(10) PATH '$.id', name VARCHAR(100) PATH '$.name' )) AS jtGROUP BY p.product..

DB 2025.10.27

[DB][MySQL] JSON_TABLE()

✅ 1. JSON_TABLE() — JSON 배열을 행(row)으로 펼치는 함수📌 용도테이블 안에 JSON 형식으로 들어 있는 배열 데이터를정규 테이블처럼 행 단위로 꺼내 쓸 수 있게 만드는 함수.📌 예제 테이블product ( product_id INT, tags JSON -- 예: {"items":[{"id":"1","name":"전자"},{"id":"3","name":"가전"}]})📌 JSON_TABLE 사용 예SELECT p.product_id, jt.id AS tag_id, jt.name AS tag_nameFROM product pCROSS JOIN JSON_TABLE( p.tags, '$.items[*]' COLUMNS ( i..

DB 2025.10.26

[DB][MyBatis][MySQL] MyBatis + MySQL에서 실제로 가능한 resultSetType

💡 중요MySQL JDBC 드라이버(mysql-connector-j)에서는 사실상 FORWARD_ONLY만 완전 지원됩니다.resultSetTypeMySQL 실제 지원 여부FORWARD_ONLY✅ 정상 지원SCROLL_INSENSITIVE❌ 내부적으로 FORWARD_ONLY로 다운그레이드됨SCROLL_SENSITIVE❌ 지원 안 됨 → 결국 FORWARD_ONLY가 됨➡ MyBatis XML에서 SCROLL_INSENSITIVE라고 써도 그대로 FORWARD_ONLY로 동작합니다.✔ 2. 실무에서 어떤 타입을 써야 하나?⭐ 결론: MySQL + MyBatis에서는 그냥 FORWARD_ONLY 쓰는 게 정답입니다.어차피 MySQL이 SCROLL_* 지원을 안 함가장 빠르고, 메모리 가장 적게 쓰고, 안정..

DB 2025.10.22

[DB][MyBatis] resultSetType 비교 그림

🔍 ResultSet Type 비교 그림1️⃣ FORWARD_ONLY➡️➡️➡️ 앞으로만 이동 가능[ row1 ] → [ row2 ] → [ row3 ] → [ row4 ] ↑ 시작점 (뒤로 이동 불가)커서는 오직 한 방향, 앞으로만 이동뒤로 이동 ❌특정 row로 점프 ❌가장 빠르고 메모리 효율적아주 많은 데이터 조회할 때 주로 사용 (기본값)2️⃣ SCROLL_INSENSITIVE⬅️➡️ 앞뒤 자유 이동 가능[ row1 ] ↔ [ row2 ] ↔ [ row3 ] ↔ [ row4 ] 커서를 앞뒤로 자유롭게 움직일 수 있음특정 row로 점프 가능데이터 변경사항은 반영되지 않음(조회 후 DB 값이 바뀌어도 ResultSet에는 반영 안 됨)3️⃣ SCROLL_SENSITIVE⬅️➡️ 🔄 실시간..

DB 2025.10.21

[DB][MyBatis] resultSetType

1. 기본 의미resultSetType 속성은 MyBatis가 내부적으로 JDBC ResultSet을 생성할 때 커서를 어떻게 이동시킬지를 정의합니다.FORWARD_ONLY커서를 앞으로만 이동할 수 있음기본값이며, 성능이 가장 빠름이전 행으로 돌아가거나 랜덤 접근이 불가큰 데이터셋 조회 시 메모리 부담이 적음SCROLL_INSENSITIVE커서를 앞뒤로 이동 가능ResultSet이 변경되어도 영향을 받지 않음대형 데이터셋에서는 성능이 떨어질 수 있음SCROLL_SENSITIVE커서를 앞뒤로 이동 가능DB에서 ResultSet이 변경되면 바로 반영됨업데이트 실시간 반영이 필요한 경우 사용2. 언제 쓰는가?데이터가 많고, 단순히 한 방향으로만 읽어오는 경우 → FORWARD_ONLY 사용특정 행으로 돌아가서..

DB 2025.10.20

[DB][Oracle] ALTER TABLE ... ADD 안에서 컬럼 정의와 동시에 COMMENT 를 지정하는 문법

Oracle은 ADD + COMMENT 원샷 문법 없음무조건 별도 COMMENT 구문 필요-- 1) 새로운 컬럼 추가 (ADD)ALTER TABLE EMP_TEST ADD EMP_TYPE VARCHAR2(10) DEFAULT 'N' NOT NULL;-- 2) 새로 추가한 컬럼에 COMMENT 달기 (별도 실행 필요)COMMENT ON COLUMN EMP_TEST.EMP_TYPE IS '사원구분';📌 설명:위 1번 ALTER TABLE ... ADD 에서는 COMMENT 를 바로 붙일 수 없음반드시 2번처럼 COMMENT ON COLUMN 구문을 별도로 실행해야 함따라서 Oracle 에서는 “ADD + COMMENT 한 문장 처리”는 불가능👉 만약 “한 번에 실행하고 싶다”면, PL/SQL 블록으로..

DB 2025.09.19

[DB][Oracle] 계산식 적을 때 Alias 사용하기

Oracle 기준❌ 안 되는 경우 SELECT COALESCE(SUM(DTL.REAL_AMT), 0) AS REAL_AMT, COALESCE(SUM(DTL.REAL_AMT), 0) * 0.1 AS REAL_AMT_10P, REAL_AMT + REAL_AMT_10P AS REAL_AMT_TOTAL -- ❌ alias 직접 사용 불가→ SELECT 절 안에서는 같은 레벨의 alias 를 바로 참조할 수 없어요.그래서 REAL_AMT 와 REAL_AMT_10P 를 여기서 그대로 쓰면 에러 납니다. ✅ 되는 방법 2: 서브쿼리 감싸기 SELECT REAL_AMT, REAL_AMT_10P, REAL_AMT + REAL_AMT_10P AS REAL_AMT_TOTALFROM ( ..

DB 2025.09.18
728x90
반응형