Oracle구조

개발자/Oracle 2013. 1. 26. 16:55

오라클의 구조


오라클의 인스턴스  - 오라클 데이터 베이스를 엑세스하는 수단, 항상 한번에 한개의 데이터

베이스만 연다. 

SGA - System Global Area  로 오라클 서버의 메모리 영역 ( 오라클 서버가 실행될때마다 SGA가 

메모리에 할당) ,  oracle의 인스턴스에 대한 데이터와 제어 정보를 가지는 공유 메모리 영역의 집합


사용자가 오라클 서버에 사용 하는 절차


'개발자 > Oracle' 카테고리의 다른 글

오라클 9i 정규식 사용법  (0) 2016.06.10
Advanced Query ( Aggregation )  (0) 2013.01.26
Table Join Type  (0) 2013.01.26
oracle Date Format  (0) 2013.01.26
Basic Query  (0) 2013.01.24
블로그 이미지

김진리

,

GROUP BY - MAX(sal)  MIN(sal) 과 같은 Function  을 사용시 다른 칼럼도 조회 할려고 할때.

                  조회 칼럼에 job 이라고 선언한 후 group by job 이라고 표시해야 된다.


job,empno 이라는 칼럼을 조회하고 싶을시 group by job,empno 라고 명시 해야한다.  

SELECT job,max(sal),min(sal) 

FROM emp

GROUP BY job;



group by 가 없으면 error 가 된다.

HAVING - 

SELECT column , agrregate_function
FROM table
WHERE condition   ( SELECT 의 조건절 )
GROUP BY group_by_expression   ( 함수외 표현할 칼럼)
HAVING aggregate_condition    ( 함수의 조건절 )
ORDER BY column  ( 해당 칼럼의 정렬 기본이 DESC) 

1) FROM clause의 table 에서 where clause 를 만족하는 row들을 찾는다.
2) 1)의 결과 row들을 GROUP BY clause에 따라 grouping 한다.
3) 2)의 결과 group 들에 대해 HAVING clause 를 만족하는 group 들을 찾는다.
4) 3)의 결과 group 들에 대해 SELECT list의 expression을 구한다.
5) 4)의 결과를 ORDER BY clause에 따라 정렬한다.



'개발자 > Oracle' 카테고리의 다른 글

오라클 9i 정규식 사용법  (0) 2016.06.10
Oracle구조  (0) 2013.01.26
Table Join Type  (0) 2013.01.26
oracle Date Format  (0) 2013.01.26
Basic Query  (0) 2013.01.24
블로그 이미지

김진리

,

Table Join Type

개발자/Oracle 2013. 1. 26. 16:15

Oracle term

- Cartesian Product   행갯수를 곱하여 출력

- Equijoin                 = (같을)조건

SELECT * 

FROM dept d , emp e 

WHERE d.deptno = e.deptno;


- Non-equijoin          Equal(=) 이외의 연산자를 사용하여 Join condition을 작성한 경우 non-equijoin 이라한다.

SELECT e.ename, e.job , e.sal, s.grade

FROM emp e,salgrade s

WHERE e.sal between s.losal and s.hisal;


- Outer Join            dept , emp 두 테이블의 겹치는 결과를 제외한 나머지 emp에 관하여 NULL 로 반환하여 표시한다.


SELECT d.dname, e.ename

FROM dept d, emp e

WHERE d.deptno = e.deptno(+);



SELECT d.dname, e.ename

FROM dept d, emp e

WHERE d.deptno(+) = e.deptno;



- Self join                자기테이블의 칼럼 2개를 스스로 join 하여 값을 출력

SELECT emp.ename , mgr.ename

FROM emp,emp mgr

WHERE emp.mgr = mgr.empno;


emp 의 테이블

self join 결과


행의갯수는 신경쓰지마시고 봐주세요.


ANSI Term               ANSI 표준 'Join'

- Cross join             = Cartesian Product 와 같다.

- Natural Join , Join Using, Join On


Natural Join (중복된 속성 중 하나를 제거 하여 정렬)

SELECT * FROM dept natural join emp;

dept , emp 테이블에서 중복된 속성은 deptno 이다.



Join Using  ( 특정한 속성을 사용하여 Join)

SELECT * FROM dept JOIN emp USING(deptno);   dept,emp 테이블의 deptno만 사용하여 정렬


Join On  ( 다른 조인들과 달리 , 컬럼 이름이 달라도 Join을 할 수 있다.)

SELECT * FROM dept d JOIN emp e ON ( d.deptno = e.dept );


- Right Outer Join, Left Outer Join, Full Outer Join

RIGHT OUTER JOIN  - 오른쪽 배치된 테이블에 데이터가 존재하지 않을 경우


SELECT e.ename , d.dname FROM dept d RIGHT OUTER JOIN emp e USING(deptno);




LEFT OUTER JOIN   -  왼쪽에 배치된 테이블에 데이터가 존재하지 않을 경우


SELECT e.ename , d.dname FROM dept d LEFT OUTER JOIN emp e USING(deptno);



FULL OUTER JOIN   -  양쪽모두 데이터가 존재하지 않을 경우


SELECT e.ename , d.dname FROM dept d FULL OUTER JOIN emp e USING(deptno);



'개발자 > Oracle' 카테고리의 다른 글

Oracle구조  (0) 2013.01.26
Advanced Query ( Aggregation )  (0) 2013.01.26
oracle Date Format  (0) 2013.01.26
Basic Query  (0) 2013.01.24
DML,DDL,CDL,TCL,Null  (0) 2013.01.24
블로그 이미지

김진리

,