'Oracle' 카테고리의 다른 글
오라클 ROWNUM (2) | 2013.08.16 |
---|---|
오라클 조인(JOIN) (0) | 2013.08.16 |
오라클 그룹함수 사용 (0) | 2013.08.16 |
오라클 함수 사용 (0) | 2013.08.16 |
오라클 ROWNUM (2) | 2013.08.16 |
---|---|
오라클 조인(JOIN) (0) | 2013.08.16 |
오라클 그룹함수 사용 (0) | 2013.08.16 |
오라클 함수 사용 (0) | 2013.08.16 |
ROWID : 테이블의 특정 레코드로 랜덤하게 접근하기 위한 논리적인 주소값
ROWNUM : 오라클 내부적으로 처리하기 위한 각 레코드에 대한 일련번호
ROWNUM은 정렬 옵션이 적용되기 전에 생성되므로 아래와 같이 순서가 뒤죽박죽으로 출력
따라서 제대로된 결과를 조회하기 위해서는 아래와 같이 서브쿼리(인라인뷰)를 이용하여
원하는 결과를 먼저 정해놓은 다음 ROWNUM을 새로 적용
ROWNUM 실습
ppt (0) | 2014.07.28 |
---|---|
오라클 조인(JOIN) (0) | 2013.08.16 |
오라클 그룹함수 사용 (0) | 2013.08.16 |
오라클 함수 사용 (0) | 2013.08.16 |
- JOIN : 2개 이상의 테이블을 조합하여 필요한 데이터를 가져오는 방법
조인을 사용하지 않고 원하는 결과를 얻으려면 여러번 쿼리문을 작성
SELECT E.EMPNO
, E.ENAME
, E.DEPTNO
, D.DNAME
, D.LOC
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO;
ㆍINNER JOIN
SELECT [ 테이블 1. 컬럼 ], [ 테이블 2. 컬럼]
FROM [ 테이블 1], [ 테이블 2]
WHERE [ 테이블 1. 컬럼 ] = [ 테이블 2. 컬럼 ];
SELECT [ 테이블 1. 컬럼 1], [ 테이블 2. 컬럼 1]
FROM [ 테이블 1]
JOIN [ 테이블 2]
ON [ 테이블 1. 컬럼 ] = [ 테이블 2. 컬럼]
SELECT E.*, D.*
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO;
SELECT E.*, D.*
FROM EMP E
JOIN DEPT D
ON E.DEPTNO = D.DEPTNO;
ㆍOUTER JOIN : 2개 이상의 테이블에서 데이터가 매칭되지 않아도 함께 출력
위와 같은 형태의 데이터를 조인하면 아래와 같이 매칭되는 데이터만 출력되는 문제가 생김
모든 데이터가 매칭되지 않아도 데이터를 출력할 필요가 있을때 OUTER JOIN 사용
ㆍLEFT OUTER JOIN
SELECT D1.*, D2.*
FROM DEPT D1, DEPT D2
WHERE D1.DEPTNO = D2.DEPTNO (+);
※ (+) : 외부 조인 연산자
SELECT D1.*, D2.*
FROM DEPT01 D1
LEFT OUTER JOIN DEPT02 D2
ON D1.DEPTNO = D2.DEPTNO;
ㆍRIGHT OUTER JOIN
SELECT D1.*, D2.*
FROM DEPT D1, DEPT D2
WHERE D1.DEPTNO (+) = D2.DEPTNO; ;
SELECT D1.*, D2.*
FROM DEPT01 D1
RIGHT OUTER JOIN DEPT02 D2
ON D1.DEPTNO = D2.DEPTNO;
ㆍFULL OUTER JOIN
SELECT D1.*, D2.*
FROM DEPT01 D1
FULL OUTER JOIN DEPT02 D2
ON D1.DEPTNO = D2.DEPTNO;
※ FULL OUTER JOIN 은 (+) 외부 연산자 사용 불가
JOIN 실습
ppt (0) | 2014.07.28 |
---|---|
오라클 ROWNUM (2) | 2013.08.16 |
오라클 그룹함수 사용 (0) | 2013.08.16 |
오라클 함수 사용 (0) | 2013.08.16 |
ㆍSUM : 합계
SELECT SUM(SAL)
FROM EMP;
ㆍAVG : 평균
SELECT AVG(SAL)
FROM EMP;
ㆍMAX : 최대값
SELECT MAX(SAL)
FROM EMP;
ㆍMIN : 최소값
SELECT MIN(SAL)
FROM EMP;
ㆍCOUNT : 개수
SELECT COUNT(SAL)
FROM EMP;
ppt (0) | 2014.07.28 |
---|---|
오라클 ROWNUM (2) | 2013.08.16 |
오라클 조인(JOIN) (0) | 2013.08.16 |
오라클 함수 사용 (0) | 2013.08.16 |
- 숫자 관련 함수
ㆍ ABS : 절대값
SELECT ABS(-10)
FROM DUAL;
ㆍ FLOOR : 버림
SELECT FLOOR(12.567)
FROM DUAL;
ㆍ ROUND(대상, 자리수) : 반올림
SELECT ROUND(12.567)
FROM DUAL;
SELECT ROUND(12.567, 2)
FROM DUAL;
SELECT ROUND(12.567, -1)
FROM DUAL;
ㆍ TRUNC : 특정 자리 잘라냄
SELECT TRUNC(12.345, 2)
, TRUNC(12.345, -1)
, TRUNC(12.345)
FROM DUAL;
ㆍMOD : 나머지
SELECT MOD(17, 3)
FROM DUAL;
- 문자 관련 함수
ㆍUPPER : 대문자 변환
SELECT UPPER('testuser')
FROM DUAL;
ㆍLOWER : 소문자 변환
SELECT LOWER('TESTUSER')
FROM DUAL;
ㆍINITCAP : 이니셜만 대문자 변환
SELECT INITCAP('TESTUSER HOMEPAGE')
FROM DUAL;
ㆍLENGTH : 문자열 길이
SELECT LENGTH('TESTUSER')
, LENGTH('테스트사용자')
FROM DUAL;
ㆍSUBSTR(대상, 시작위치, 추출길이) : 문자열 일부 추출
SELECT SUBSTR('Welcome to testuser', 5, 2)
FROM DUAL;
SELECT SUBSTR('Welcome to testuser', -5, 2)
FROM DUAL;
ㆍINSTR(대상, 찾을문자, 시작위치, 발견되는위치인덱스) : 특정 문자 위치
SELECT INSTR('Welcome to testuser', 'e', 6, 3)
FROM DUAL;
ㆍLPAD(대상, 채울길이, 채울문자) : 왼쪽을 특정 문자로 지정한 길이만큼 채움
SELECT LPAD('testuser', 20, '@')
FROM DUAL;
ㆍRPAD(대상, 채울길이, 채울문자) : 오른쪽을 특정 문자로 지정한 길이만큼 채움
SELECT RPAD('testuser', 20, '@')
FROM DUAL;
ㆍLTRIM : 왼쪽 공백문자 제거
SELECT LTRIM(' testuser')
FROM DUAL;
ㆍRTRIM : 오른쪽 공백문자 제거
SELECT RTRIM('testuser ')
FROM DUAL;
ㆍTRIM : 양쪽 공백문자 제거
SELECT TRIM(' testuser ')
FROM DUAL;
ㆍREPLACE : 문자 변환
SELECT REPLACE('testuser', 't', 'T')
FROM DUAL;
ㆍCONCAT : 문자열 결합
SELECT CONCAT('Welcome to', ' testuser')
FROM DUAL;
※ || (파이프라인)을 사용해도 동일한 결과
SELECT 'Welcome to' || ' testuser'
FROM DUAL;
- 날짜 관련 함수
ㆍSYSDATE : 현재 날짜
SELECT SYSDATE
FROM DUAL;
SELECT SYSDATE-1 -- 어제
, SYSDATE+1 -- 내일
FROM DUAL;
ㆍMONTHS_BETWEEN : 날짜 사이 간격(월 단위)
SELECT MONTHS_BETWEEN(SYSDATE, '20130101')
FROM DUAL;
ㆍADD_MONTHS : 특정 일자에 월 단위로 더함
SELECT ADD_MONTHS(SYSDATE, 6)
FROM DUAL;
ㆍLAST_DAY : 해당 달의 마지막 날짜
SELECT LAST_DAY(SYSDATE)
FROM DUAL;
- 형 변환 관련 함수
ㆍTO_CHAR : 문자형으로 변환
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD')
FROM DUAL;
SELECT TO_CHAR(1234, '0000000000')
FROM DUAL;;
SELECT TO_CHAR(1234, '999,999')
FROM DUAL;
ㆍTO_NUMBER : 숫자형으로 변환
SELECT TO_NUMBER('20000') - 300
FROM DUAL;
ㆍTO_DATE : 날짜형으로 변환
SELECT MONTHS_BETWEEN(SYSDATE, TO_DATE('20130101', 'YYYYMMDD'))
FROM DUAL;
ㆍ NVL : NULL을 지정한 값으로 변환
SELECT NVL(NULL, 'EMPTY')
FROM DUAL;
- 조건 함수
ㆍDECODE(표현식, 조건1, 결과1, 조건2, 결과2, ..., 조건n, 결과n, 디폴트결과)
SELECT DECODE(10, 10, 'A', 20, 'B', 30, 'C', 'D')
FROM DUAL;
ㆍCASE
SELECT CASE 10
WHEN 10 THEN 'A'
WHEN 20 THEN 'B'
WHEN 30 THEN 'C'
ELSE 'D' END
FROM DUAL;
SELECT CASE
WHEN DEPTNO=10 THEN 'A'
WHEN DEPTNO=20 THEN 'B'
WHEN DEPTNO=30 THEN 'C'
ELSE 'D' END
FROM EMP;
FUNCTION 실습
ppt (0) | 2014.07.28 |
---|---|
오라클 ROWNUM (2) | 2013.08.16 |
오라클 조인(JOIN) (0) | 2013.08.16 |
오라클 그룹함수 사용 (0) | 2013.08.16 |