일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Java의정석
- 스프링
- Numpy
- 김영한
- 분석함수
- 서블릿
- 제네릭
- 인프런
- Secure Coding
- 자바의정석
- 불친절한SQL프로그래밍
- 스프링 부트와 JPA
- Spring
- Python
- 자바공부
- REGEXP_SUBSTR
- 항해플러스 백엔드
- 불친절한 SQL 프로그래밍
- 스프링입문
- java
- 스프링 핵심원리
- 이것이자바다
- JPA
- 자바연습문제
- 스프링MVC
- inflearn
- docker
- 자바의정석 연습문제
- 시큐어코딩
- 항해플러스
- Today
- Total
목록Study/불친절한 SQL 프로그래밍 (18)
Continuous Challenge
♣ CURSOR(커서)란? 쿼리문에 의해서 반환되는 결과값들을 저장하는 메모리 공간. SELECT 문을 통해 결과값들이 나올 때 이 결과들은 메모리 공간에 저장하게 되는데 이때 이 메모리 공간을 '커서'라고 한다. ♣ FETCH란? 커서에서 원하는 결과값을 추출하는 것. 더보기 SELECT의 결과가 하나의 행(단일 튜플)일 경우는 INTO 절을 이용해 변수에 저장할 수 있지만, 결과가 복수행(복수 튜플)일 경우는 INTO절로 이를 처리할 수가 없다. 이렇게 복수 행의 결과를 행 단위로 처리하기 위해서 사용하는 것이 CURSOR이다. CURSOR 표현식은 서브 쿼리의 결과를 중첩 커서(nested cursor)로 반환한다. 중첩 커서는 PL/SQL의 REF CURSOR와 동일한 유형이다. 예제를 위해 다음..
756P REGEXP_LIKE 조건 REGEXP_LIKE 조건은 source_char가 pattern과 일치하면 TRUE, 일치하지 않으면 FALSE를 반환한다. REGEXP_LIKE(source_char, pattern [, match_param]) 매개변수 설명 source_char 검색 문자열 pattern 검색 패턴 match_param 일치 옵션 아래의 일치 옵션을 사용할 수 있다. 기본값은 c다. icnmx 형식으로 다수의 옵션을 합께 지정할 수도 있다. 옵션 설명 i 대소문자 무시 c 대소문자 구분 n dot(.)를 개행 문자와 일치 m 다중 행 모드 (앵커(^,$)에 영향) x 검색 패턴의 공백 문자를 무시 REGEXP_REPLACE 함수 REGEXP_REPLACE 함수는 source_ch..
744P 정규 표현식 정규 표현식은 문자열의 규칙을 표현하는 검색 패턴으로 주로 문자열 검색과 치환에 사용된다. 24.1.1.1 기본 연산자 연산자 영문 설명 . dot 모든 문자와 일치 (newline 제외) | or 대체 문자를 구분 \ backslach 다음 문자를 일반 문자로 처리 24.1.1.2 앵커 앵커(anchor)는 검색 패턴의 시작과 끝을 지정한다. 연산자 영문 단일 행 방식 다중 행 방식 ^ carrot 문자열의 시작 행의 시작 $ dollar 문자열의 끝 행의 끝 24.1.1.3 수량사 수량사(quantifier)는 선행 표현식의 일치 횟수를 지정한다. 패턴을 최대로 일치시키는 탐욕적(greedy) 방식으로 동작한다. 연산자 설명 ? 0회 또는 1회 일치 * 0회 또는 그 이상의 횟수..
16.2 재귀 서브 쿼리 팩토링 11.2 버전부터 재귀 서프 쿼리 팩토링 기능을 사용할 수 있다. 재귀 서브 쿼리 팩토링은 ANSI 표준 SQL 문법이다. 계층 쿼리 절보다 복잡하지만 다양한 기능을 사용할 수 있다. 16.2.1 기본 문법 재귀 서브 쿼리 팩토링은 WITH절을 사용한다. 재귀 서브 쿼리 팩토링의 WITH 절은 서브 쿼리, SEARCH절, CYCLE절로 구성된다. WITH query_name ([c_alias [, c_alias]) AS (subquery) [search_clause][cycle_clause] 서브 쿼리는 UNION ALL 연산자로 구성된다. UNION ALL 연산자의 상단 쿼리가 START WITH 절, 하단 쿼리가 CONNECT BY 절의 역할을 수행한다. WITH 절에..
16.1 계층 쿼리 절 계층 쿼리 절은 오라클 데이터베이스의 전통적인 계층 쿼리 구문이다. 16.1.1 기본 문법 계층 쿼리 절은 WHERE 절 다음에 기술하며, FROM절이 수행된 후 수행된다. START WITH절과 CONNECT BY 절로 구성되며, START WITH 절이 수행된 후 CONNECT BY 절이 수행된다. START WITH절은 생략이 가능하다. [START WITH condition] CONNECT BY [NOCYCLE] condition 절 설명 START WITH 절 루트 노드를 생성하며 1번만 수행 CONNECT BY 절 루트 노드의 하위 노드를 생성하며 조회 결과가 없을 때까지 반복 수행 유형 항목 설명 연산자 PRIOR 직전 상위 노드의 값을 반환 CONNECT_BY_ROO..
15.1.1 ROWNUM 문법 ORDER BY 절로 행을 정렬하고, 정렬된 행을 ROWNUM 슈도 칼럼으로 제한한다. ROWNUM 슈도 칼럼은 행이 반환되는 순서대로 순번을 반환한다. 1부터 시작하고 행이 반환될 때마다 순번이 증가한다. Top-N 쿼리는 시스템 성능에 미치는 영향이 크기 때문에 작성 표준을 신중하게 결정해야 한다. 현재까지는 ROWNUM 방식을 가장 많이 사용하고 있다. SELECT empno, sal, ROWNUM AS rn WHERE ROWNUM = 2; 위의 쿼리는 결과가 반환되지 않는다. ROWNUM 슈도 칼럼은 1부터 시작하고 행이 반환될 때마다 순번이 증가하기 때문에 ROWNUM = 2 조건은 항상 FALSE 다. sal을 오름차순으로 정렬하여 상위 5개의 행을 조회할 때, ..
379p 14.2.6 기타 함수 LAG 함수 LAG 함수는 현재 행에서 offset 이전 행의 value_expr을 반환한다. offset은 행 기준이며 기본값은 1이다. default에 이전 행이 없을 경우 반환할 값을 지정할 수 있다. default의 기본값은 널이다. LAG (value_expr [, offset [, default]]) [IGNORE NULLS] OVER ([query_partition_clause] order_by_clause) LEAD 함수 LEAD 함수는 현재 행에서 offset 이후 행의 value_expr을 반환한다. LEAD (value_expr [, offset [, default]]) [IGNORE NULLS] OVER ([query_partition_clause] ..
12.5.1 SUBQUERY FACTORING 절 SUBQUERY FACTORING 절을 사용하면 서브 쿼리에 이름을 부여하고, 이름이 부여된 서브쿼리를 메인 쿼리에서 반복 사용할 수 있다. WITH query_name AS (subquery) [, query_name AS (subquery)]... SELECT * FROM query_name;
p.204 10.2.1 ROLLUP ROLLUP은 지정한 표현식의 계층별 소계와 총계를 집계한다. ROLLUP(expression_list [, expression_list] ...) ROLLUP은 아래와 같이 동작한다. expr을 뒤쪽부터 하나씩 제거하는 방식이다. 결과에서 (a, b, c)는 a, b, c의 소계, ()는 총계를 의미한다. GROUP BY 결과 ROLLUP (a) (a), ( ) ROLLUP (a, b) (a, b), (a), ( ) ROLLUP (a, b, c) (a, b, c), (a, b), (a), ( ) 10.2.2 CUBE CUBE는 지정한 표현식의 모든 조합을 집계한다. CUBE (expression_list [, expression_list] ...) CUBE는 아래와 ..