전체보기: 525개의 글
데이터 사전(Data Dictionary)이란데이터 사전(Data Dictionary)이란 대부분 읽기전용으로 제공되는 테이블 및 뷰들의 집합으로 데이터베이스 전반에 대한 정보를 제공 한다.오라클 데이터베이스는 명령이 실행 될 때 마다 데이터 사전을 Access 한다.DB작업동안 Oracle은 데이터 사전을 읽어 객체의 존재여부와 사용자에게 적합한 Access 권한이 있는지를 확인 한다. 또한 Oracle은 데이터 사전을 계속 갱신하여 DATABASE 구조, 감사, 사용자권한, 데이터등의 변경 사항을 반영 한다.데이터 사전에 저장되는 내용은 아래와 같다.- 오라클의 사용자 정보- 오라클 권한과 롤 정보- 데이터베이스 스키마 객체(TABLE, VIEW, INDEX, CLUSTER, SYNONYM, SEQU..
UNION과 UNION ALL의 차이는 정렬작업의 수행 여부이다.UNION은 중복을 제거해야 하기 때문에 정렬작업을 수행하므로 성능이 저하된다.UNION, MINUS, INTERSECT는 전체범위를 모두 액세스 하는 정렬작업을 수행하기 때문에 부분범위처리가 불가능하다.UNION : 합집합UNION은 두 테이블의 결합을 나타내며, 결합시키는 두 테이블의 중복되지 않은 값들을 반환 한다.-- 부서번호를 조회하는 UNION 예제.SELECT deptno FROM emp UNIONSELECT deptno FROM dept; DEPTNO-------- 10 20 30 40 UNION ALL : 중복을 포함하는 합집합UNION과 같으나 두 테이블의 중복되는 값 까지 반환 한다.-- 부서번호를 조회하는 UNION A..
Scalar Subquery란?SELECT 절에서 사용하는 Subquery 이다.Scalar Subquery의 특징한 개의 로우만 반환 한다.메인 쿼리에서 추출되는 데이터 건 수 만큼 수행되기 때문에 조인으로 수행 될 때보다 수행회수가 적을 수 있다.일치하는 값이 없는 경우 NULL을 반환 한다.코드성 테이블에서 코드값을 조회 할 때, 불필요한 조인을 하지 않기 위해 많이 사용한다.Scalar Subquery 예제아래는 일반적인 Scalar Subquery 예이다.-- 직업이 ‘MANAGER’인 사원의 사원명, 부서명을 조회하는 예제SELECT ename, (SELECT dname FROM dept d WHERE d.deptno = e.deptno) deptnoFROM emp eWHERE job ='MA..
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 is NO..
Multiple-Column Subquery란?결과 값이 두 개 이상의 컬럼을 반환하는 Subquery이다Pairwise(쌍비교) SubquerySubquery가 한 번 실행되면서 두 개 이상의 컬럼을 검색해서 주 쿼리로 넘겨 준다.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(비쌍비교) SubqueryWHERE 절에서 두 개..
Multiple-Row Subquery란?- 하나 이상의 행을 반환하는 Subquery이다- 단일 행 연산자를 사용하지 못하며, 다중 행 연산자(IN, NOT IN, ANY, ALL, EXISTS)만 사용이 가능하다.IN 연산자- IN 연산자는 하나의 컬럼이 여러개의 '=' 조건을 가지는 경우에 사용- OR는 IN을 포함한다. IN을 사용해 표현할 수 있는 것은 당연히 OR로 표현할 수 있다.- 하지만 OR로 표한한 것은 IN으로 표현하지 못할때가 있다. (OR에서 LIKE같은 연산자를 사용한 경우)- IN은 반드시 하나의 컬럼이 비교되어야 하므로 나중에 인덱스 구성에 대한 전략을 수립할 때 유리하다.- 그러므로 가능한 OR보다는 IN 을 사용하는 것이 좋다.-- 부서별로 가장 급여를 많이 받는 사원의 ..
Single-Row Subquery- SELECT 문장에서 오직 하나의 행(값)만 반환하는 Query이다- 단일 행 연산자(=,>, >=,
Subquery란?- Subquery는 다른 하나의 SQL 문장의 절에 NESTEDED된 SELECT 문장 이다.- SELECT, UPDATE, DELETE, INSERT와 같은 DML문과 CREATE TABLE 또는 VIEW의 WHERE절이나 HAVING절에서 사용 된다.- 보통 Subquery는 Main Query 이전에 한 번 실행된다.- Subquery는 괄호로 묶어야 한다.- 단일 행 연산자(=, >, >=,
GROUP BY절- GROUP BY 절은 데이터들을 원하는 그룹으로 나눌 수 있다.- 나누고자 하는 그룹의 컬럼명을 SELECT절과 GROUP BY절 뒤에 추가하면 된다.- 집계함수와 함께 사용되는 상수는 GROUP BY 절에 추가하지 않아도 된다. (개발자 분들이 많이 실수 함)- 아래는 집계 함수와 상수가 함께 SELECT 절에 사용되는 예이다.-- 부서별 사원수 조회SELECT '2005년' year, deptno 부서번호, COUNT(*) 사원수 FROM emp GROUP BY deptno ORDER BY COUNT(*) DESC; YEAR 부서번호 사원수------ ---------- ----------2005년 30 62005년 20 52005년 10 3아래 예제는 부서별로 그룹하여 부서번호,..
집계 함수란 여러행 또는 테이블 전체 행으로부터 하나의 결과값을 반환하는 함수이다.집계함수(Aggregate function)의 이해- GROUP BY절을 이용하여 그룹 당 하나의 결과로 그룹화 할 수 있다.- HAVING절을 사용하여 집계함수를 이용한 조건 비교를 할 수 있다.- MIN, MAX 함수는 모든 자료형에 사용 할 수 있다.- 일반적으로 가장 많이 사용하는 집계함수에는AVG(평균), COUNT(개수), MAX(최대값), MIN(최소값), SUM(합계) 등이 있다.COUNTCOUNT 함수는 검색된 행의 수를 반환 한다.-- 검색된 행의 총 수 4개를 반환. 즉 4개의 부서가 존재한다.SELECT COUNT(deptno) FROM dept; COUNT(DEPTNO)------------- 4 M..