💻 IT/📌 DataBase 23

[DB/SQL] ORACLE LAG,LEAD 함수 사용법 정리 (이전, 다음값)

오늘은 오라클 함수 중에 LAG, LEAD에 대해서 정리해보겠습니다. LAG, LEAD란?LAG, LEAD 함수는 행의 이전 값을 찾거나 다음행을 찾는 용도로 사용된다.- LAG : 질의 결과 행의 이전 값을 찾을 때 사용  LAG(EXPR [,OFFSET] [,DEFAULT]) OVER([PARTITION_BY_CLAUSE] ORDER_BY_CLAUSE)- LEAD : 질의 결과 행의 이전 값을 찾을 때 사용  LEAD(EXPR [,OFFSET] [,DEFAULT]) OVER([PARTITION_BY_CLAUSE] ORDER_BY_CLAUSE)expr : 대상 컬럼명offset : 값을 가져올 행의 위치 기본값은 1 (생략가능)default : 값이 없을 경우 기본값 (생략가능)partition_by_..

[DB/SQL] 날짜, 시간 형식 표현하는 법 | TO_CHAR로 표현

보통 DATE 타입을 SELECT 하면 툴에 설정되어 있는 형식으로 표현이 되는데요, 원하는 날짜&시간 형식에 맞게 표현하는 법을 알려드리겠습니다. (툴에 설정되어있는 시간포맷 변경방법은 아래 참고해 주세요!) [DB TOOL] SQL Developer 날짜 형식 변경방법 | 시간 포멧 변경오늘은 SQL Developer에서 날짜형식을 변경하는 법을 알려드리겠습니다. SQL Developer에서 기본 날짜형식SELECT SYSDATE FROM DUAL디벨로퍼에서 현재일자를 표시해 보면 RR/MM/DD 형식으로 표시되고 있는데요,godsu94.tistory.com  TO_CHAR 함수 사용TO_CHAR는 데이터타입을 지정형식으로 출력할 수 있게 하는 함수입니다. 이 함수로 원하는 날짜형식을 출력할 수 있는..

[DB/SQL] ORACLE LISTAGG 함수 사용법 정리 | 행을 열로 바꾸기

오늘은 여러 행의 칼럼을 하나의 값으로 합칠 수 있는 LISTAGG 함수를 정리해 보겠습니다. LISTAGG 함수LISTAGG([합칠 칼럼명], [구분자]) WITHIN GROUP(ORDER BY [정렬 칼럼명])lISTaGG함수는 그룹함수이기 때문에 GROUP BY와 PARTITION BY절과 같이 사용해야 한다.  예제[테스트 데이터]  1. LISTAGG 함수로 칼럼 합치기SELECT LISTAGG(EMP_NAME, ',') WITHIN GROUP(ORDER BY AGE) AS EMP_NAME FROM EMP_TABLE WHERE POSITION = '사원'쿼리를 확인해 보면 사원인 직책(POSITION)만 잡아서 직원이름을 합친 결과를 볼 수 있다.   2. GROUP BY 절을 이용하..

[DB/SQL] ORACLE NVL 함수 사용법 정리

오늘은 쿼리 작성 시 NULL 체크를 하는 NVL 함수 사용법을 정리해 보겠습니다. NVL 함수NVL 함수는 값이 NULL 인경우에 지장 된 값을 출력할 수 있고, 아닌 경우 원래 값을 출력한다.NVL("값", "지정값") SELECT * FROM EMP_TABLE SELECT EMP_TABLE.ETC ,NVL(EMP_TABLE.ETC,'지정값') FROM EMP_TABLE예제를 보면 EMP_TABLE에는 ETC라는 기타 항목이 있는데, 현재 값이 모두 NULL로 되어있다. 하지만 NVL 함수를 이용해서 NULL 경우 '지정값'이 보이게 출력되고 있다.  NVL2 함수NVL2 함수는 값이 NULL 인 경우에는 지정값1을 출력하고, NULL 아닌 경우에는 지정값2를 출력한다.NVL2("값",..

[DB/SQL] ORACLE WITH절 사용법 정리

오늘은 SQL 작성 시에 자주 사용되는 임시테이블 WITH절에 대해서 정리해 보겠습니다.  WITH 절이란?WTTH 절은 오라클에서 정의된 문장으로 공유 메모리에 임시 테이블을 생성하여 반복 재사용이 가능하도록 할 수 있는 절이다.  메모리에 임시 테이블을 생성해서 동일 테이블 접근을 최소화하고 디스크 IO로 접근하는 것보다 성능을 개선할 수 있기 때문에 사용한다.  왜 WITH절을 사용하는 것일까? WITH절은 복잡하고 반복적인 SQL문을 사용하는 경우 이름을 부여해서 재사용할 수 있게 해서 쿼리의 성능을 높일 수 있다. 이름을 부여한다는 점은 QUERY BLOCK을 만들어 자주 실행되는 경우 한 번만 파씽되고 플랜 계획도 수립되어 쿼리 성능 향상에 도움이 된다. WITH TEST_WITH AS( ..

[DB/SQL] 오라클 PARTITION BY 정리 | 집계함수 사용 | 순위함수 사용

오늘은 쿼리를 작성할 때 유용하게 사용되는 PARTITION BY 문법을 정리해 보겠습니다. 함수() OVER([PARTITION BY 열이름] ORDER BY 열 이름) 오라클에서 집계(그룹화)하여 표현할 때는 GROUP BY절을 이용해서 보여줄 수 있지만, 각각 행마다 집계된 값을 표시하기 위해서는 PATITION BY 절로도 표시할 수 있다. CREATE TABLE emp_table( emp_id NUMBER NOT NULL, emp_name VARCHAR2(100) NOT NULL, gender VARCHAR2(10) NULL, age NUMBER NULL, position..

[DB/SQL] 데이터베이스 한글 바이트 확인 | ORACLE 한글 | 한글 Byte | DB 한글 확인 | DB 한글 몇바이트 | 오라클 한글 바이트

최근에 데이터 입력을 하다가 한글 1000자 이상을 못넣는 현상을 발견했어요DB 확인해보니 컬럼 값이 4000Byte가 MAX로 되어있더라고요 ~_~ 한글은 2Byte인줄 알았는데 저희회사에서는 3Byte로 넣고 있더라구요!그래서 요번에는 DB마다 캐릭터 셋 확인하는 방법을 알려드리겠습니다~ SELECT * FROM NLS_DATABASE_PARAMETERSWHERE PARAMETER = 'NLS_CHARACTERSET' OR PARAMETER = 'NLS_NCHAR_CHARACTERSET'  해당 쿼리르 조회해보시면 캐릭터 셋마다 저장 속성을 볼 수 있는데요! [한글을 지원하는 캐릭터셋]1. KO16KSC56012. KO16MSWIN9493. AL32UTF84. UTF8 [KO..

[DB/SQL] 계층형 쿼리 정리 ( START WITH, CONNECT BY PRIOR, ORDER SIBLINGS BY)

최근에 회사에서 종속된 관계를 다루는 쿼리를 짜면서..계층형 쿼리를 짜게 되었는데요~알아두면 좋을거같아서 정리해보겠습니다!  문법정리- 계층형 쿼리란? 부모, 자식 간의 수직관계를 트리 구조 형태로 보여주는 쿼리   예제 [테이블 생성]위에 문법을 적용할 테이블을 준비했습니다. 간단하게 테스트하시는 분은 따라해보시면 좋습니다.CREATE TABLE DPT ( HI_DPT_CD VARCHAR2(20), --상위부서 LO_DPT_CD VARCHAR2(20), --하위부서 SEQ number(3) --부서이력 STDT VARCHAR2(8) --시작일시);어디 조직이든 한번씩은 있는 부서 테이블 입니다.  [테스트 데이터 입력]/*ITHQ : IT본부ITDV : IT개발팀ITDVS : IT개발셀*/IN..

[DB/ORACLE] 오라클 데이터베이스 테이블 조회하는 방법

오늘은 오라클 데이터베이스의 테이블 조회하는 방법을 알려드리겠습니다~오라클 테이블 목록을 조회하는 방법은 3가지가 있습니다 SELECT ORACLE TABLESELECT * FROM ALL_TABLESALL_TABLES는 권한을 가진 모든 테이블을 조회합니다. SELECT * FROM ALL_TAB_COMMENTS WHERE TABLE_TYPE = 'TABLE'ALL_TAB_COMMENTS는 권한을 가진 테이블 목록과 설명을 조회할때 사용합니다. SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'TABLE'ALL_OBJECTS는 권한을 가진 테이블의 최초 생성일시와 최종 변경일시를 확인 할 수 있습니다. 감사합니다.