목록ORACLE SQL (39)
craftmanager
데이터 사전의 괄호 명칭(dict, obj, tabs, cols..등)은 데이터사전의 시노님이다. 시노님을 이용하여 조회 할 수도 있다. 데이터 사전 뷰 DICTIONARY (DICT) - 권한이 있는 데이터사전에 대한 데이터사전명과 설명 정보를 제공한다. -- USER_INDEX로 시작하는 데이터사전을 조회하는 예이다. SELECT * FROM DICT WHERE TABLE_NAME LIKE 'USER_INDEX%'; DICT_COLUMNS - 데이터사전의 컬럼에대한 정보를 조회 할 수 있다. -- USER_INDEXES 데이터사전의 컬럼 정보를 조회하는 예이다 SELECT * FROM DICT_COLUMNS WHERE TABLE_NAME ='USER_INDEXES'; 자주 사용하는 데이터 사전 USE..
데이터 사전(Data Dictionary)이란 데이터 사전(Data Dictionary)이란 대부분 읽기전용으로 제공되는 테이블 및 뷰들의 집합으로 데이터베이스 전반에 대한 정보를 제공 한다. 오라클 데이터베이스는 명령이 실행 될 때 마다 데이터 사전을 Access 한다. DB작업동안 Oracle은 데이터 사전을 읽어 객체의 존재여부와 사용자에게 적합한 Access 권한이 있는지를 확인 한다. 또한 Oracle은 데이터 사전을 계속 갱신하여 DATABASE 구조, 감사, 사용자권한, 데이터등의 변경 사항을 반영 한다. 데이터 사전에 저장되는 내용은 아래와 같다. - 오라클의 사용자 정보 - 오라클 권한과 롤 정보 - 데이터베이스 스키마 객체(TABLE, VIEW, INDEX, CLUSTER, SYNONY..
UNION과 UNION ALL의 차이는 정렬작업의 수행 여부이다. UNION은 중복을 제거해야 하기 때문에 정렬작업을 수행하므로 성능이 저하된다. UNION, MINUS, INTERSECT는 전체범위를 모두 액세스 하는 정렬작업을 수행하기 때문에 부분범위처리가 불가능하다. UNION : 합집합 UNION은 두 테이블의 결합을 나타내며, 결합시키는 두 테이블의 중복되지 않은 값들을 반환 한다. -- 부서번호를 조회하는 UNION 예제. SELECT deptno FROM emp UNION SELECT deptno FROM dept; DEPTNO -------- 10 20 30 40 UNION ALL : 중복을 포함하는 합집합 UNION과 같으나 두 테이블의 중복되는 값 까지 반환 한다. -- 부서번호를 조회..
Scalar Subquery란? SELECT 절에서 사용하는 Subquery 이다. Scalar Subquery의 특징 한 개의 로우만 반환 한다. 메인 쿼리에서 추출되는 데이터 건 수 만큼 수행되기 때문에 조인으로 수행 될 때보다 수행회수가 적을 수 있다. 일치하는 값이 없는 경우 NULL을 반환 한다. 코드성 테이블에서 코드값을 조회 할 때, 불필요한 조인을 하지 않기 위해 많이 사용한다. Scalar Subquery 예제 아래는 일반적인 Scalar Subquery 예이다. -- 직업이 ‘MANAGER’인 사원의 사원명, 부서명을 조회하는 예제 SELECT ename, (SELECT dname FROM dept d WHERE d.deptno = e.deptno) deptno FROM emp e WH..
Inline View (From절 Subquery)란? FROM절에 오는 Subquery이다. FROM절에서 원하는 데이터를 조회하여 가상의 집합을 만들어 조인을 수행하거나 가상의 집합을 다시 조회 할 때 사용한다. Inlivew View 안에 또 다른 Inline View가 올 수 있다. -- 부서번호 20의 평균 급여보다 크고, -- 부서번호 20에 속하지 않은 관리자를 조회하는 예제이다. SELECT b.empno, b.ename, b.job, b.sal, b.deptno FROM (SELECT empno FROM emp WHERE sal >(SELECT AVG(sal) FROM emp WHERE deptno = 20)) a, emp b WHERE a.empno = b.empno AND b.mgr ..
Multiple-Column Subquery란? 결과 값이 두 개 이상의 컬럼을 반환하는 Subquery이다 Pairwise(쌍비교) Subquery Subquery가 한 번 실행되면서 두 개 이상의 컬럼을 검색해서 주 쿼리로 넘겨 준다. SELECT empno, sal, deptno FROM emp WHERE (sal, deptno) IN (SELECT sal, deptno FROM emp WHERE deptno = 30 AND comm is NOT NULL); EMPNO SAL DEPTNO ---------- ---------- ---------- 7521 1250 30 7654 1250 30 7844 1500 30 7499 1600 30 Nonpairwise(비쌍비교) Subquery WHERE 절..
Multiple-Row Subquery란? - 하나 이상의 행을 반환하는 Subquery이다 - 단일 행 연산자를 사용하지 못하며, 다중 행 연산자(IN, NOT IN, ANY, ALL, EXISTS)만 사용이 가능하다. IN 연산자 - IN 연산자는 하나의 컬럼이 여러개의 '=' 조건을 가지는 경우에 사용 - OR는 IN을 포함한다. IN을 사용해 표현할 수 있는 것은 당연히 OR로 표현할 수 있다. - 하지만 OR로 표한한 것은 IN으로 표현하지 못할때가 있다. (OR에서 LIKE같은 연산자를 사용한 경우) - IN은 반드시 하나의 컬럼이 비교되어야 하므로 나중에 인덱스 구성에 대한 전략을 수립할 때 유리하다. - 그러므로 가능한 OR보다는 IN 을 사용하는 것이 좋다. -- 부서별로 가장 급여를 많..