DB/쿼리(10)
-
[SQL] SQL WITH RECURSIVE 사용
WITH 구문 WITH 구분 이후에 오는 쿼리에서 임시 테이블의 테이블명을 사용하여 값을 참조할 수 있음 WITH TABLE명 AS ( SELECT - ) WITH RECURSIVE 문 (재귀 쿼리) 프로그래밍에서 재귀 함수가 있듯이, SQL에서 사용하는 재귀쿼리 기법 WITH RECURSIVE 구분은 가상 테이블을 생성하면서 가상 테이블 자신의 값을 참조하여 재귀적으로 호출하는 방식 WITH [RECURSIVE] TABLE명 AS ( SELECT - # RECURSIVE 사용 시 필수. Non-Recursive 문장 :: 첫번째 루프에서만 실행됨 (초기값 세팅) [UNION ALL] SELECT - # Recursive 문장:: 읽어 올 때마다 행의 위치가 기억되어 다음번 읽어 올 때 다음 행으로 이동..
2023.12.12 -
[SQL] 오라클 컬럼을 데이터로 바꾸는 UNPIVOT
UNPIVOT - UNPIVOT 오라클에서 가로 행의 데이터를 세로로 출력 *좌측의 테이블구조를 우측의 테이블구조로 조회되도록 함. - UNPIVOT 사용방법 'UNPIVOT 대상 테이블' 에서 기존 컬럼(속성)이 UNPIVOT시에는 데이터화되어 가로(로우)로 조회됨. 어떤 컬럼들을 조회할지 'IN' 절에 명시해야함. 'IN' 절에 명시되는 속성들은 모두 동일한 타입이어야함 (UNION ALL과 동일한 원리). 'FOR' 다음에는 'IN'절에서 명시한 컬럼을 조회시 어떤 명으로 조회될지 별칭을 지정. 'FOR' 전에는 'IN'절에서 명시한 컬럼의 실제 데이터가 조회될 때 어떤 명으로 조회될지 별칭을 지정 SELECT * FROM ( [UNPIVOT 대상 테이블] ) UNPIVOT [IN절에 명시할 컬럼의..
2023.02.02 -
[SQL] 오라클 데이터를 컬럼으로 바꾸는 PIVOT
PIVOT - PIVOT 오라클에서 기본적으로 조회되는 세로 행의 데이터를 가로로 뒤집어서 조회되도록 함. *좌측의 테이블구조를 우측의 테이블구조로 조회되도록 함. SELECT 출력할 컬럼 FROM [PIVOT 대상 테이블] PIVOT( [집계함수] FOR [컬럼(가로)으로 출력할 열] IN ([조건 대상 값]) ); --조건 대상값은 컬럼으로 출력할 열 내 존재하는 데이터여야 타깃데이터가 조회됨. (ALIAS 역할이 되기도 함) *예제테이블(오라클 내에 SCOTT 계정 내 기본적으로 제공되는 EMP 테이블 사용)- 예제테이블 기본조회 SELECT DEPTNO , JOB , AVG(SAL) AS SAL FROM EMP GROUP BY DEPTNO, JOB ORDER BY DEPTNO, JOB; - [목적..
2023.01.31 -
[SQL] 오라클 계층형쿼리 START WITH ~ CONNECT BY
계층형쿼리란? 한 테이블에 레코드들이 계층관계(상위,하위)를 이루며 존재할 때, 이 관계에 따라 레코드를 계층관계(상위,하위)의 한 구조로 데이터를 가져올 때 사용되는 쿼리 계층형쿼리설명 예제데이터생성 [DEPTH_1] 동물 --[DEPTH_2] 포유류 ----[DEPTH_4] 사자 ----[DEPTH_5] 호랑이 ----[DEPTH_6] 치타 --[DEPTH_3] 조류 ----[DEPTH_7] 닭 ----[DEPTH_8] 비둘기 ----[DEPTH_9] 독수리 /* 예제테이블생성 */ CREATE TABLE ANI_DEPTH_TAB ( ANIMAL_DEPTH_CD VARCHAR2(8) NOT NULL PRIMARY KEY, PAR_ANIMAL_DEPTH_CD VARCHAR2(8), ANIMAL_NM V..
2023.01.30 -
[SQL] 논리연산자 우선순위
[연산자의 우선순위] AND > OR WHERE구 내에서 AND가 OR보다 우선순위가 먼저임. ex) SELECT * FROM sample24 WHERE a = 1 OR a = 2 AND b = 1 OR b = 2; 1. a=1 2. a=2 AND b=1 3. b=2 'a열이 1이다' 또는 'a열이 2이고 b열이 1이다 ' 또는 'b열이 2이다' 만약, 'a열이 1이거나 2면서 b열이 1이거나 2이다' 를 검색하고 할 경우, ex) SELECT * FROM sample24 WHERE (a = 1 OR a = 2 ) AND ( b = 1 OR b = 2); 참고 : SQL 첫걸음 도서/ 저자:아사이 아츠시/옮김:박준용/한빛미디어
2022.08.24 -
[SQL] 특수문자의 이스케이프 처리방법
[SQL작성시 이스케이프 처리 방법] \(백슬래시)를 사용하여 특수문자의 이스케이프를 처리 이스케이프 처리가 필요한 특수 문자 특수문자 이스케이프 처리를 안했을 경우 & * 와일드 카드 문자로 사용 @ 쿼리의 첫 번째 문자일 경우 구문 오류가 생성됨. xmlxp 표현식에서는 속성을 참조할 때 사용됨. [] xmlxp 표현식에서 요소 및 속성의 컨텐츠를 검색할 때 사용됨. {} 구문오류 발생. \ ^(캐럿) 가중치(부스팅) 용어에 사용됨. : 필드의 콘텐츠에서 검색할 때 사용됨. = 구문 오류를 생성 ! 쿼리의 첫번째 문자일 경우 구문오류 발생. / xmlxp 표현식에서 슬래시가 요소 경로 구분자로 사용됨. > ,
2022.08.24