본문 바로가기

Study

(35)
0. 웹 애플리케이션을 만드는 순서 생활코딩 사이트를 참고하며 웹 애플리케이션을 만들어 보려고 한다. 1. 구상 2. 기획(계획) - 무엇을 만들 것인지 - 어떤 기능들이 있는지 3. 디자인 - 사용자가 편리하게 이용할 수 있도록 사용자 경험(UX)을 발전시키는 것 4. 개발 5. 테스트(QA) 'Start Small' - 작게 시작해서 끊임없이 개선하는, 반복적인 작업을 통해서 정말로 필요한 웹 애플리케이션을 만들었으면 좋겠다.
[불친절한 SQL 프로그래밍] CURSOR 표현식 ♣ CURSOR(커서)란? 쿼리문에 의해서 반환되는 결과값들을 저장하는 메모리 공간. SELECT 문을 통해 결과값들이 나올 때 이 결과들은 메모리 공간에 저장하게 되는데 이때 이 메모리 공간을 '커서'라고 한다. ♣ FETCH란? 커서에서 원하는 결과값을 추출하는 것. 더보기 SELECT의 결과가 하나의 행(단일 튜플)일 경우는 INTO 절을 이용해 변수에 저장할 수 있지만, 결과가 복수행(복수 튜플)일 경우는 INTO절로 이를 처리할 수가 없다. 이렇게 복수 행의 결과를 행 단위로 처리하기 위해서 사용하는 것이 CURSOR이다. CURSOR 표현식은 서브 쿼리의 결과를 중첩 커서(nested cursor)로 반환한다. 중첩 커서는 PL/SQL의 REF CURSOR와 동일한 유형이다. 예제를 위해 다음..
[불친절한 SQL 프로그래밍] [24장] 정규 표현식(2) (REGEXP_LIKE, REGEXP_REPLACE, REGEXP_SUBSTR, REGEXP_INSTR, REGEXP_COUNT) 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..
[불친절한 SQL 프로그래밍] [24장] 정규 표현식(1) (feat. REGEXP_SUBSTR) 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회 또는 그 이상의 횟수..
[불친절한 SQL 프로그래밍] [16장] 계층 쿼리(2) (WITH, SEARCH, CYCLE) 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 절에..
[불친절한 SQL 프로그래밍] [16장] 계층 쿼리(1) (START WITH, CONNECT BY) 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..
[불친절한 SQL 프로그래밍] [15장] Top-N 쿼리 - 15.1 기본 문법 (ROWNUM 방식, 분석함수(ROW_NUMBER, PERCENT_RANK) 방식) 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개의 행을 조회할 때, ..
[불친절한 SQL 프로그래밍] [14장] 분석 함수 - 14.2 분석 함수 (LAG, LEAD, LISTAGG 함수) 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] ..