일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- devops
- springboot
- php
- db
- Spring Batch
- tool
- linux
- javascript
- laravel
- jsp
- IntelliJ
- Gradle
- MySQL
- AWS
- Web Server
- Oracle
- 맛집
- it
- redis
- JVM
- Spring
- ubuntu
- Design Patterns
- jenkins
- ReactJS
- 요리
- elasticsearch
- Git
- Spring Boot
- java
- Today
- Total
목록Oracle (13)
아무거나
로컬세팅시 자주 사용하는 명령들을 귀찮아서 한 번에 저장하였다. Docker 설치(CentOS8) sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce Elasticsearch + Kibana + Cerebro 설치 (Docker Compose 또는 Docker 중 선택) Docker Compose [docker-compose.yml] version: '3.6' services: elasticsearch: image: 'docker.e..
ORA-01795 항목의 수가 1,000개 넘어갈 경우 발생하는 에러 IN 구문 사용시 항목의 수가 1,000개가 넘어가면 에러가 발생한다. 해결1: 복수 컬럼 SubQuery 사용 WHERE (0, 비교컬럼) IN ((0, 조건1), (0, 조건2), (0, 조건3), ...) 해결2: Mybatis 기준 foreach 구문을 사용하는 경우 WHERE (1, A1.PROD_NO) IN (1, #{prodNo})
1. 12g 이전 버전 SELECT ROW_NUM, LOG_NO, SVC_NM, DB_NM, TBL_NM, PROCDR_NM, CALL_URL, CALL_MTHD_SP_VAL, CALL_PARA_VAL, EXEC_TME, LOG_DESC, INPT_DM FROM ( SELECT ROW_NUMBER () OVER (ORDER BY INPT_DM DESC) AS ROW_NUM, LOG_NO, SVC_NM, DB_NM, TBL_NM, PROCDR_NM, CALL_URL, CALL_MTHD_SP_VAL, CALL_PARA_VAL, EXEC_TME, LOG_DESC, INPT_DM FROM TB_CM_OP_L ) WHERE ROW_NUM BETWEEN ((NVL(1, 0)-1) * 10 + 1) AND (NVL(..
OVER 함수 및 PARTITION BY 사용법 예제 데이터 예제 쿼리 반환되는 행의 수를 계산하여 줄인다. (GROUP BY) SELECT EXEC_TME, COUNT(*) AS LOG_CNT FROM TB_CM_OP_L GROUP BY EXEC_TME; 모든 행을 분할, 반환 된 행의 수에 영향을 미치지 않고 결과가 누적되어 계산되는 방식 주로 누적집계나 누적합계에 많이 사용됨 -> 1번 row에 3이 1개, 3번 row에 3이 또 있으므로 2개로 표시 즉, 값이 누적되어 계산됨 (PARTITION BY) SELECT ROW_NUMBER() OVER (PARTITION BY EXEC_TME ORDER BY INPT_DM DESC) AS ORDER_INPT_DM_LOG FROM TB_CM_OP_L; 5..
실행계획(SQLDeveloper 툴에서는 단축키 F10) -- 1. 실행계획에 대한 정보를 저장 (실제 조회 쿼리가 실행되는게 아님) EXPLAIN PLAN SET STATEMENT_ID = 'EXPLAIN_TEST' INTO PLAN_TABLE FOR SELECT * FROM TEST_TABLE; -- 2. 실행계획 테이블에 저장된 정보를 조회하여 해당 정보를 확인 SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE', 'EXPLAIN_GDS', 'ALL'))
스칼라 서브쿼리 SQL에서 단일 값을 스칼라(=Scala)값 이라고 표현한다. 즉, 스칼라 서브쿼리(=Scala Subquery)는 SELECT절에 오는 서브쿼리로 결과값으로 1행만 반환하는것을 말한다. -- SELECT문 안에 SELECT문으로 스칼라 서브쿼리 사용 SELECT board_title, ( SELECT board_contents FROM tb_board AS a WHERE a.board_no = b.board_no ) AS board_contents, board_no FROM tb_board AS b WHERE board_contents like '%contents%';
-- 예시로 TB_SAMPLE_ONE, TB_SAMPLE_TWO 각각 두개의 테이블이 있고 ID, STATUS 값으로 조인을하여 TB_SAMPLE_ONE 의 TITLE을 TB_SAMPLE_TWO의 TITLE로 업데이트하자 UPDATE ( SELECT a.TITLE, b.TITLE AS MODIFY_TITLE FROM TB_SAMPLE_ONE a, TB_SAMPLE_TWO b WHERE 1=1 AND a.ID = b.ID AND a.STATUS = b.STATUS ) r SET r.TITLE = r.MODIFY_TITLE;
여러 행으로 되어있는 값을 구분자로 하나의 행으로 표시 // Table Name: MEMBER, Separate Column: LOGIN_ID SELECT LISTAGG(LOGIN_ID, ', ') WITHIN GROUP(ORDER BY LOGIN_ID) separate FROM MEMBER; separate -------------------------- bkjeon, tester, bong92 1 row selected.
Dual Table: 간단하게 함수를 이용해서 결과값을 확인 할 때 사용하는 오라클 자체에서 제공하는 테이블 즉, 테이블 생성 없이 가상 데이터를 만들어 테스트를 할 때 주로 사용한다. SELECT SYSDATE FROM DUAL; SELECT 10 * 20 FROM DUAL; ... 위와 같은 식으로 테이블없이 값을 미리 확인할 수 있다.
문자열 제거 (LTRIM, RTRIM, TRIM) LTRIM: 컬럼에서 지정한 문자를 왼쪽에서 부터 제거 (기본옵션은 공백제거) SELECT LTRIM('테스트 ') AS TEST_ONE, // 테스트(공백제거) LTRIM('테스트', '테스') AS TEST_TWO, // 트 LTRIM('테스트', '스') AS TEST_THREE // 테스트 -> 문자열의 시작이 '스'가 아니므로 전체 문자가 나옴 FROM DUAL RTRIM: 컬럼에서 지정한 문자를 오른쪽에서 부터 제거 (기본옵션은 공백제거) SELECT RTRIM(' 테스트') AS TEST_ONE, // 테스트(공백제거) RTRIM('테스트', '스트') AS TEST_TWO, // 테 RTRIM('테스트', '스') AS TEST_THREE ..