반응형

sql 8

[ORACLE/오라클] 계층형 쿼리를 이용한 트리구조 데이터 정렬하기

어떤 테이블에서 아래와 같이 컬럼으로 부모 자식 간의 관계가 정의되어 있지 않고, 한 컬럼에 부모 데이터, 자식 데이터가 다모두 존재하면서 이 컬럼에서 부모 데이터와 자식 데이터를 구분할 수 있는 패턴이 존재하는 경우, 계층형 쿼리를 이용해서 해당 데이터의 계층 구조를 컬럼으로 분산할 수 있다. 예를 들어 아래와 같은 데이터가 있다고 가정할 때, 코드 코드명 A 자동차 A0 세단 A01 K8 A1 SUV A11 쏘렌토 자동차라는 ROOT 데이터 아래 LEAF노드로 A0, A01, A1, A11로 나뉘는 걸 파악할 수 있다. 부모/자식 코드로 혼재되어 있는 데이터를 컬럼별로 나누는 작업을 진행한다. SELECT 코드 AS 코드 , 코드명 AS 코드명 , SUBSTR(코드,1,LENGTH(코드)-1) AS ..

[ORACLE/오라클] 딕셔너리 뷰를 이용해 테이블 명세서 작성

딕셔너리 뷰를 이용해서 특정 스키마에 있는 테이블들의 명세를 추출할 수 있다. ※ 테이블 정보 추출은 ALL_TABLES, ALL_TAB_COLS, ALL_TAB_COMMENTS, ALL_COL_COMMENTS 제약조건 추출은 ALL_CONSTRAINTS, ALL_CONS_COLUMNS을 이용한다. (제약조건은 PRIMARY KEY만 추출) /* SCOTT 스키마의 테이블 정보 조회 */ SELECT A.OWNER , A.TABLE_NAME , C.COMMENTS , B.COLUMN_NAME , D.COMMENTS , B.DATA_TYPE , B.DATA_LENGTH , B.DATA_PRECISION , B.DATA_SCALE , B.NULLABLE FROM ALL_TABLES A , ALL_TAB_CO..

[ORACLE/오라클] 딕셔너리 뷰를 이용해 SELECT문 만들기

기본제공되는 SCOTT 스키마로 SELECT 구문을 만들기 위해서 (SELECT ~ FROM ~) ALL_TAB_COLS, ALL_TAB_COMMENTS, ALL_COL_COMMENTS 를 이용한다. ※ DBA_* 로 시작하는 딕셔너리 뷰는 데이터베이스 내에 생성된 모든 스키마의 오브젝트를 조회할 수 있고, ALL_*로 시작되는 뷰는 현재 사용자의 조회 권한 범위 내의 스키마를 조회할 수 있으며, USER_*로 시작되는 뷰는 현재 접속한 사용자의 스키마 정보를 확인할 수 있다. /* SCOTT 스키마의 테이블 정보 조회 */ SELECT * FROM ALL_TAB_COLS WHERE 1=1 AND OWNER = 'SCOTT'; /* SCOTT 스키마의 테이블 정보 조회 */ SELECT * FROM AL..

[ORACLE/오라클] 날짜 테이블, 달력 테이블 만들기

CONNECT BY 구문을 이용해서 날짜 테이블을 만들 수 있다. 계층형 질의에서 쓰이는 구문이지만 조금 응용을 하면 원하는 범위의 날짜를 구할 수 있다. 아래의 예시를 보자. SELECT LEVEL FROM DUAL CONNECT BY LEVEL < 5; LEVEL ---------- 1 2 3 4 CONNECT BY를 조건절 처럼 걸었더니 4개의 행만이 나왔다. LEVEL 값이 차례대로 4까지 나온 것을 응용하여 금일 기준 +3 일까지 구할 수 있다. SELECT LEVEL , SYSDATE + (LEVEL -1) FROM DUAL CONNECT BY LEVEL < 5; LEVEL SYSDATE+(LEV ---------- ------------ 1 05-MAY-23 2 06-MAY-23 3 07-M..

[ORACLE/오라클] 유저 생성과 권한

■ 유저 생성 오라클에서 유저를 생성할 때는 아래와 같은 구문으로 생성한다. (DEV01 유저를 생성하고 해당 유저의 디폴트 TABLESPACE는 TS_DEV01로 설정한다.) --sqlplus 접속 sqlplus "/as sysdba" --19c이상 버전일 경우 pdb로 세션 변경 alter session set container=orclpdb; --user 생성 create user dev01 identified by dev01 default tablespace ts_dev01 temporary tablespace temp; --user생성 확인 select * from dba_users where 1=1 and username = 'DEV01'; 이렇게 생성하고 나서 접속을 시도하면 접속이 되지 않..

[ORACLE/오라클] WINDOW 환경에서 SCOTT계정 생성

오라클을 실습하다 보면 간혹 SCOTT이 생성되어 있지 않은 경우가 있다. 이럴 경우 아래 경로에 파일에 SCOTT.SQL 파일을 찾을 수 있다. %ORACLE_HOME%\rdbms\admin 해당파일을 찾았다면 폴더 주소 입력창에서 'CMD' 입력한다. 입력 후 SQLPLUS를 실행시켜 접속 후, @SCOTT.SQL 명령어로 SCOTT.SQL 파일을 실행한다. SCOTT.SQL 파일 내용은 ① SCOTT 유저 생성 -> ② CONN SCOTT/TIGER 접속 -> ③ 데이터 스크립트 실행 으로 이루어져있다. 이 때, 19C 이상에서 PDB에 SCOTT을 만들 경우, - ALTER PLUGGABLE DATABAES PDB OPEN; 를 실행시킨 후 ② SCOTT.SQL에 아래라인을 추가한다. - ALTE..

[ORACLE/오라클] 다이나믹 SQL 구현

사이트를 다니다보면 가끔씩 컬럼에 SQL 문장 자체를 가지고 있는 경우가 있다. Cursor로 행별 데이터를 받아 실행하는 로직을 익명 블록으로 구현함 /* 선언부 */ DECLARE V_SQL VARCHAR2(4000); --커서를 생성한다 --SELECT 결과값을 담는다. CURSOR STR_SQL IS SELECT REPLACE(STR_SQL,';','') FROM --INSERT SQL이 있는 테이블 INSERT_SQL; /* 실행부 */ BEGIN OPEN STR_SQL; --커서오픈 LOOP --루프 시작 FETCH STR_SQL INTO V_SQL; --루프를 돌면서 순차적으로 결과행을 V_SQL에 담는다. EXIT WHEN STR_SQL%NOTFOUND; --커서에서 더이상 데이터가 없을 ..

[SQLD/ 실습소스] SQLD 실습을 위한 소스 공유 (노랭이 SQL기본)

노랭이 책 2장.1단원 SQL 기본 SQLD 문제 실습 및 결과 확인을 위해 일부문제만 간추려서 스크립트를 만들었습니다. 해당 소스 파일을 공유합니다. 파일은 sql, txt 파일 두 가지 입니다. txt 파일은 다운로드 후 그대로 복사하여 실행시키면 됩니다. sql파일 실행관련해서는 아래의 포스팅을 확인 바랍니다. https://scaredev.tistory.com/5 [ORACLE/오라클] SQLPLUS 를 이용하여, SQL 파일 실행 1. SQL파일 준비 실행시킬 스크립트를 SQL파일로 생성합니다. (SQL파일은 확장자가 .sql 입니다) 2. SQLPLUS 접속 SQLPLUS는 오라클 설치시 제공되는 오라클 클라이언트 도구이자 상호작용을 위한 사용자 scaredev.tistory.com

기타/SQLD 2021.09.10
반응형