'개발자/Oracle'에 해당되는 글 7건

오라클 10g 부터 정규식이 생겨 regexp_replace , regexp_like 함수를 사용할 수 있습니다.


그러나 9i에선 사용하고 싶은데 어떻게!??


http://phil-sqltips.blogspot.kr/2009/06/regexpreplace-regexplike-for-oracle-9i.html


위 링크에 가시면 10g에서 사용하는 함수를 생성할 수 있게 구성되었어요 참고하세요

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

Oracle구조  (0) 2013.01.26
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
블로그 이미지

김진리

,

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
블로그 이미지

김진리

,

oracle에서 현재 날짜,시간 나타내기

SELECT sysdate from dual;    현재 시간은 sysdate 이고  dual 은 oracle에서 제공하는 빈 테이블.


to_char  number 형을 char형으로 변형 , date 형을 char형으로 변형  

                                       select to_char (sysdate) from dual;

to_date char형을 date형으로 변형                                               

  select to_date( to_char (sysdate))from dual;


to_number char형을 number로 변형                                            

                                              select to_number ( to_char (sysdate))from dual;


sysdate 를 format 변형하여 출력 


SELECT to_char(sysdate,'RR/MM/DD') FROM dual;      현재 날짜를 년/월/일 형태로 출력.

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

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

김진리

,

Basic Query

개발자/Oracle 2013. 1. 24. 21:01

DISTINCT

SELECT DISTINCT job FROM emp;   emp 테이블의 직업을 검색하는데 중복 제한을 둔다.

 

CASE

SELECT ename, CASE deptno WHEN 10 THEN sal * 1.1

WHEN 20 THEN sal * 1.2

ELSE sal END new_sal

FROM emp;

select 2번째 자리에 검색 할 칼럼을 CASE 문을 사용하여 deptno 가 10번이면 1.1을 곱하고 20이면 1.2를 곱하고 나머지는 sal그대로 출력 CASE 문 마지막에는 END로 닫는다.  new_sal 는 select 결과의 alias 이다.

 

WHERE BETWEEN

SELECT ename,sal

FROM emp

WHERE sal BETWEEN 1500 AND 2000;

sal 칼럼 안에 1500 과 2000 사이값을 검색한다.

IN     어떤조건이라도 만족할시 찾아낸다.

SELECT dname

FROM dept

WHERE deptno IN(10,20);                     deptno 가 10이거나 20번 부분을 다 찾아낸다.

ex)  IN(10,20,30) 이면 10,20,30 인 부분을 전부 다 찾아 낸다.

IN  는 =ANY 와 같다.

 

Like

wildcard % 는 0개 이상의 문자를 대표한다.

wildcard _ 는 1개의 문자를 대표한다.  escape 문자 바로뒤에서 사용된 wildcard 문자는 일반 문자로 인식된다.  ( _ 로 문자로 사용하기위해 escape 를 사용!)

ex )  WHERE LIKE '%X\_Y' ESCAPE '\';

 

ORDER BY

 SELECT dname FROM dept ORDER BY dname;

dname 칼럼을 정렬 시킨다. ( DESC 내림차순 , ASC 오름차순)

 

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

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

김진리

,

DML : Data Manipulation Language     ->     select , insert , update , delete , merge

DDL : Data Definition Language           ->     create, alter, drop, rename, truncate

DCL : Data Control Language             ->      grant, revoke

TCL : Transaction Control Language    ->      commit, rollback, savepoint

3개로 분류시 DML 에 TCL 가 포함된다.  

◆ Null value

 Null 은 0 이나 space 등과는 다르다.   -> Null 은 Null 일뿐.

산술 연산 수식에 Null인 값이 하나라도 포함되어 있다면 결과값은 항상 Null 이다.

NOT NULL 이나 PRIAMRY KEY 제약 조건을 갖는 column 은 Null 일 수 없다.

Oracle Database에서 Null인 column은 Length가 0이므로 data를 위한 물리적 공간을 차지하지 않는다.

◆NVL Function

NVL ( expr1, expr2)

만약 expr1이 null 이면 expr2 를 반환한다.

 

◆ 환경설정

set pagesize 100     100줄을 한페이지로 설정하는 명령   ( 옵션이 0 이면) 한페이지에 전부다 출력

 

spool 이름    이름.lst 로 결과 off 할지 저장.   

spool off

 더 많은 옵션은

show all 하면 나온다.

 

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

Oracle구조  (0) 2013.01.26
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
블로그 이미지

김진리

,