Database/Oracle SQL: 43개의 글
시노님은 오라클 객체(테이블, 뷰, 시퀀스, 프로시저)에 대한 대체이름(Alias)를 말하며, 실질적으로 그 자체가 객체가 아니라 객체에 대한 직접적인 참조 이다. 시노님을 사용하는 이유① 데이터베이스의 투명성을 제공하기 위해서 사용 한다고 보면 된다. 시노님은 다른 유저의 객체를 참조할 때 많이 사용을 한다.② 만약에 실무에서 다른 유저의 객체를 참조할 경우가 있을 때 시노님을 생성해서 사용을 하면은 추후에 참조하고 있는 오프젝트가 이름을 바꾸거나 이동할 경우 객체를 사용하는 SQL문을 모두 다시 고치는 것이 아니라 시노님만 다시 정의하면 되기 때문에 매우 편리 하다.③ 객체의 긴 이름을 사용하기 편한 짧은 이름으로 해서 SQL코딩을 단순화 시킬 수 있다.④ 또한 객체를 참조하는 사용자의 오브젝트를 감..
시퀀스란?- 유일(UNIQUE)한 값을 생성해주는 오라클 객체이다.- 시퀀스를 생성하면 기본키와 같이 순차적으로 증가하는 컬럼을 자동적으로 생성 할 수 있다.- 보통 PRIMARY KEY 값을 생성하기 위해 사용 한다.- 메모리에 Cache되었을 때 시퀀스값의 액세스 효율이 증가 한다.- 시퀀스는 테이블과는 독립적으로 저장되고 생성된다. 시퀀스 생성-- 시퀀스 생성 SyntaxCREATE SEQUENCE sequence_name [START WITH n] [INCREMENT BY n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE] [CACHE | NOCACHE] - START WITH : 시퀀스의 시작 값을 지정한다. n을 1..
뷰란?- 뷰는 하나의 가상 테이블이라 생각 하면 된다.- 뷰는 실제 데이터가 저장 되는 것은 아니지만 뷰를 통해 데이터를 관리 할수 있다.- 뷰는 복잡한 Query를 통해 얻을 수 있는 결과를 간단한 Query로 얻을 수 있게 한다.- 한 개의 뷰로 여러 테이블에 대한 데이터를 검색 할 수 있다.- 특정 평가 기준에 따른 사용자 별로 다른 데이터를 액세스할 수 있도록 한다.뷰의 제한 조건.- 테이블에 NOT NULL로 만든 컬럼들이 뷰에 다 포함이 되 있어야 한다.- ROWID, ROWNUM, NEXTVAL, CURRVAL등과 같은 가상컬럼에 대한 참조를 포함하고 있는 뷰에는 어떤 데이터도 INSERT 할 수 없다- WITH READ ONLY 옵션을 설정한 뷰도 데이터를 갱신 할 수 없다.- WITH C..
인덱스는 테이블이나 클러스트에서 쓰여지는 선택적인 객체로서, 오라클 데이터베이스 테이블내의 원하는 레코드를 빠르게 찾아갈 수 있도록 만들어진 데이터 구조이다.- 자동 인덱스 : 프라이머리 키 또는 UINQUE 제한 규칙에 의해 자동적으로 생성되는 인덱스.- 수동 인덱스 : CREATE INDEX 명령을 실행해서 만드는 인덱스인덱스를 생성하는 것이 좋은 컬럼① WHERE절이나 join조건 안에서 자주 사용되는 컬럼② null 값이 많이 포함되어 있는 컬럼③ WHERE절이나 join조건에서 자주 사용되는 두 개이상의 컬럼들다음과 같은 경우에는 인덱스 생성이 불필요 하다.① 테이블이 작을 때② 테이블이 자주 갱신될 때오라클 인덱스는 B-tree(binary search tree)에 대한 원리를 기반으로 하고 ..
데이터 사전의 괄호 명칭(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'; 자주 사용하는 데이터 사전USER_OBJEC..
데이터 사전(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 절에서 두 개..