dev/데이터베이스 (20) 썸네일형 리스트형 Oracle FlashBack Query 오라클에서 FlashBack Query를 통해 특정 시점의 테이블 데이터를 복원할 수 있습니다. 예제 테이블은 이전의 계층형 쿼리의 예제 테이블로 현재 row 8건을 가지고 있습니다. 예제 쿼리를 보면 FlashBack Query를 통해 예제 테이블의 10분 전 데이터를 조회하고 있습니다. ID가 8인 row가 추가되지 않은 것을 확인할 수 있습니다. AS OF TIMESTAMP는 특정 시점의 데이터를 조회하고 SYSTIMESTAMP - INTERVAL '10' MINUTES는 현재 시간 기준 10분 전의 시점을 지정하고 있습니다. 조금 더 복잡한 쿼리를 작성해야 되면 AS OF TIMESTAMP 절 뒤에 WHERE 절을 추가하면 됩니다. 오라클에서 데이터를 모르고 삭제하거나 수정한 경우 FlashB.. Oracle Hierarchical Query 오라클에서 한 테이블의 상속관계 row들을 계층형 쿼리로 조회할 수 있습니다. 다른 RDBMS에서 상속관계 row들을 조회하려면 join을 통해야 하는데 오라클 계층형 쿼리를 사용하면 쉽게 조회할 수 있습니다. 예제 테이블을 보게 되면 PARENT_CD를 통해 row들이 계층형 관계를 갖고 있습니다. 예제 쿼리 1을 보게 되면 START WITH를 통해 조회할 데이터의 루트 노드를 지정하는데 ID가 1인 row를 루트 노드로 지정합니다.(3라인) CONNECT BY PRIOR를 통해 부모 노드에 속하는 자식 노드들을 조회합니다.(4라인) PRIOR 뒤에 자식 노드의 ID 컬럼이 부모 노드를 참조하면 부모 노드부터 자식 노드를 순뱡향 조회합니다. 예제 쿼리 2와 3을 보면 각각 ID가 2인 3인 노.. Oracle Pivot 오라클에서 여러 행의 특정 컬럼을 하나의 행으로 조회하려면 Pivot을 사용하면 됩니다. 예제 테이블의 CODE 컬럼 기준으로 집계하여 Pivot을 통해 COL1, COL2 컬럼 합계를 구하겠습니다. 위의 예제 쿼리를 설명하면 서브 쿼리에서 CODE 컬럼 기준으로 집계하여 COL1, COL2 컬럼의 합계를 구합니다.(8 ~ 13라인) 서브 쿼리 결과를 Pivot에서 변환합니다.(14 ~ 23라인) 앞의 서브 쿼리에서 CODE 컬럼 기준으로 COL1, COL2 합계값을 구했기 때문에 MAX(COL1_SUM), MAX(COL2_SUM)을 통해서 Pivot에서 값을 구합니다. FOR CODE IN을 통해 각 CODE 별 컬럼을 생성합니다. 여기서 CODE는 SQL 예약어가 아니라 예제 테이블의 컬럼명입니다.. Dbeaver import export Dbeaver에 테이블 데이터를 csv로 import/export 기능이 지원됩니다. 먼저 데이터 import(추가)하는 방법입니다. 입력할 테이블을 오른쪽 마우스 클릭한 뒤 "데이터 가져오기"를 선택합니다. "CSV에서 가져오기"를 선택하고 "다음"을 선택합니다. ""을 선택하여 csv 파일을 업로드합니다. csv파일 업로드 된 것을 확인합니다. csv파일에 따라 import settings를 따로 작성해야 하는데 저는 디폴트로 했습니다. "다음"을 선택합니다. 입력할 csv 파일을 확인합니다. csv 파일 업로드 옵션을 확인하고 "다음"을 선택합니다. "다음"을 선택합니다. "Start"를 선택하면 csv파일이 테이블에 추가됩니다. csv파일이 해당 테이블에 추가된 것을 확인할 수 있습니다. 이번에는.. DBeaver query plan DBeaver에서 쿼리를 실행할 때 해당 쿼리가 효율적인지 확인하는 방법이 있습니다. "실행계획 보기"를 이용하면 쉽게 확인할 수 있습니다. 예시 join 쿼리의 실행 계획을 조회하기 위해 오른쪽 마우스를 클릭해서 "실행 -> 실행계획 보기" 를 선택합니다. 팝업 화면이 표출되는데 "확인" 버튼을 클릭합니다. DBeaver 하단에 실행계획을 조회할 수 있습니다. 각 항목에 대해 설명드리면 Node Type: sql을 실행시키는 각각의 단계 Entity: 조회하는 테이블 Cost: sql 실행하는 데 걸린 비용 Time: sql 실행하는 데 걸린 시간 Rows: sql 실행하면서 가져오는 row 수 Condition: sql 실행 조건문 이렇게 생각하시면 될 거 같습니다. 아니면 "EXPLAIN ANALY.. dbeaver ERD 조회 dbeaver에서 간단히 ERD 조회하는 방법이 있습니다. dbeaver에서 조회하려는 데이터베이스의 스키마를 더블클릭하고 엔티티 관계도 탭을 선택하면 해당 스키마의 ERD를 조회할 수 있습니다. starUml로 ERD를 그리는 시간이 부족하면 위와 같은 방법으로 하는 것도 나쁘지 않을 거 같습니다. ntile 사용법 PostgreSQL에서 특정 데이터를 기준으로 그룹으로 나눠야 할 때 ntile 함수를 사용하면 손쉽게 할 수 있습니다. 예제 테이블에서 col2 컬럼을 기준으로 ntile 함수 예제를 진행하겠습니다. 빨간색 상자를 보면 ntile 함수 파라미터로 "6"이 있는데 이 파라미터는 ntile이 분할하는 그룹 수입니다. 즉 6개의 그룹으로 나누겠다는 뜻입니다. 그리고 뒤에 있는 over는 각 로우를 어떻게 정렬할 건지 나타내고 있습니다. 따라서 col2 컬럼 기준으로 내림차순으로 정렬하겠다는 뜻입니다. 여기서 조금 더 나아가서 각 그룹별 최소값과 최대값을 구하려면 다음과 같이 하면 됩니다. 이전의 쿼리를 with문으로 묶어서 각 그룹별 최소값과 최대값을 구합니다. 빨간색 상자를 보면 lag함수를 사용해서 최대.. dbeaver 스크립트 파일 위치 dbeaver에서 스크립트 파일을 생성해서 쿼리를 작성하면서 종종 내가 생성한 스크립트 파일의 위치는 어디인지 궁금한 적이 있어서 구글링하다가 마침내 그 방법을 찾았습니다. 의외로 간단한데 현재 작성중인 스크립트 탭을 오른쪽 마우스 클릭해서 "Open Folder in Explorer"을 선택하면 해당 스크립트 파일 저장위치를 확인할 수 있습니다. 이전 1 2 3 다음