오라클과제 (190507)
1. 날짜 용어 정리
1. PM
오후의 영문 표기
2. HH, HH12, HH24
HH, HH12는 01~12시 형태로 표현하고,
HH24는 시간을 01~23시 형태로 표현한다.
3. MI 는 분을 00분~59분 형태로 표현한다.
4. SS 는 초를 01초~59초 형태로 표현한다.
5. SSSSS : 초 (자정부터 현 시간 까지) 즉, 0~86399초 사이라는 의미다.
6. 밀리수의 표시 자리수 지정. ss.ff2 / ss.ff3
7. D, d
D와 d는 주중을 일로 표현한다.
7 : 토요일 1 : 월요일 순서로 ... 진행되고 오늘 같은 경우 3이 된다.
select to_char(sysdate,'D') from dual;
8. DD, DDD, dd, ddd
DDD의 경우 1월 1일부터 지금까지 얼마나 지났는지 일수로 표시한다.
DD의 경우 이번달 5월을 기준으로 몇일이 지났는지 일수로 표시한다.
소문자도 같은 값이 출력되는 것을 확인할 수 있다.
9. DAY, DY, day
10. FM
to remove padded blanks
11. MM, MON, MONTH
MM의 경우 숫자로 05 형태로 나옴. mm도 같은 결과값을 받을 수 있음.
MON, MONTH의 경우
ALTER SESSION SET NLS_LANGUAGE = 'KOREAN' 으로 하는 경우 5월이라고 나옴
12. YYYY, YYY, YY, Y, y
13. RRRR, RR
RR은 YY와 다름.
14. YEAR, Year
2. 해당월 마지막 법정영업일
-> DECODE란 오라클에서만 지원하는 함수로서 SELECT문장내에서 비교연산을 수행해 주는 아주 편리한
함수입니다. 형식은 다음과 같이 사용하시면 됩니다.
sql> DECODE(deptname, 'A',1,0)
-> deptname이 'A'와 같으면 1을 갖고 아니면 0을 갖게 됩니다.
-> LAST_DAY(SYSDATE)
SELECT DECODE(TO_CHAR(LAST_DAY(SYSDATE),'D'),
7,LAST_DAY(SYSDATE)-1,
1,LAST_DAY(SYSDATE)-2))
AS "LAST DAY" FROM DUAL;
7은 토요일인 경우이고, 1은 일요일인 경우이다. 그러므로 정수값에서 일정한 값을 빼주는 연산을 해준다.
3. 부서별
4. ERD (EMP, DEPT, SALGRADE) 를 그리고 설명
정수는 NUMBER(p) 또는 NUMBER(p,0) 으로 정의
123.89 NUMBER(6,1) 일 경우 123.9
123.89 NUMBER(6,-2) 일 경우 100
123.89 NUMBER(3) 일 경우 124
5. JOIN ( RDBMS 의 꽃 )
집합연산자는 수직적 결합을 테이블의 JOIN은 데이터의 수평적 결합을 지원함.
JOIN의 구분은 FROM 절에 복수의 테이블이 왔을 때 JOIN임을 의미한다.
데이터를 기반으로 연결고리를 갖는다? 필요시에만 연산을 통해 연결을 한다
WHERE EMP.DEPTNO = DEPT.DEPTNO → 이 부분이 연산에 해당하는 부분이다.
조인의 종류에는 INNER JOIN, CROSS JOIN, OUTER JOIN, SELF JOIN 등이 있음.
1. 내부 조인 ( = INNER JOIN ) ( = EQUI JOIN ) ( = SIMPLE JOIN )
INNER JOIN은 키 값이 있는 테이블의 컬럼 값을 비교 후 조건에 맞는 값을 가져오는 것이다. 간단히 말하면 서로 연관된 내용만 검색하는 조인 방법이다.
JOIN 표현에는 두 가지 방법이 있는데
명시적 표현과 암시적 표현이 있다.
1) 명시적 표현
명시적 조인표현 에서는 테이블에 조인을 하라는 것을 지정하기 위해 'JOIN' 키워드를 사용하고 ON의 키워드를
조인에 대한 구문을 지정하는데 사용한다.
-> ANSI JOIN인 경우
2) 암시적 표현
암시적 조인 표현은 SELECT 구문의 FROM절에서 콤마(,)를 사용하여 단순히 조인을 위한 여러 테이블을 나열하기만
하면된다.
-> ORACLE에서 사용법
INNER JOIN의 결과 테이블
2. 상호 조인 ( = CROSS JOIN ) ( = 곱집합)
CROSS JOIN은 Cartesian Product(카디션 곱)이라고도 하며 조인되는 두 테이블에서 곱집합을 반환한다.
즉, 두 번째 테이블로부터 각 열과 첫 번째 테이블에서 각 열이 한번씩 결합된 열을 만들 것이다.
예를 들어 m열을 가진 테이블과 n열을 가진 테이블이 교차 조인되면
m*n 개의 열을 생성한다. 그래서 테이블의 각 값을 연결하여 테이블 행의 수를 모두 곱한 값만큼 만들어진다.
CROSS JOIN은 상호 모든 행에 대한 결합이 발생하는 것이므로, 위 예제에서처럼 ON 구문을 사용할 수 없다.
CROSS JOIN은 대개 테스트로 사용할 대용량의 테이블을 생성할 경우에 사용된다.
3. 외부 조인 ( = OUTER JOIN )
소외 받은 OUTSIDER DATA를 보겠다. 그 기준을 왼쪽으로 볼거냐, 오른쪽으로 볼거냐
OUTER JOIN은 조인하는 여러테이블에서 한 쪽에는 데이터가 있고,
한 쪽에는 데이터가 없는 경우, 데이터가 있는 쪽 테이블의 내용을 모두 출력하는 것입니다.
1) LEFT OUTER JOIN : 조인문의 왼쪽에 있는 테이블의 모든 결과를 모두 가져온 후 오른쪽 테이블의 데이터를 매칭하고,
매칭되는 데이터가 없는 경우 NULL로 표시한다.
SELECT 검색할 컬럼 FROM 테이블명 LEFT OUTER JOIN 테이블명2 ON 테이블.컬럼명 = 테이블2.컬럼명;
SELECT 검색할 컬럼 FROM 테이블명, 테이블명2 WHERE 테이블.컬럼명 = 테이블2.컬럼명(+);
2) RIGHT OUTER JOIN
조인문의 오른쪽에 있는 테이블의 모든 결과를 가져온 후 왼쪽의 테이블의 데이터를 매칭하고,
매칭되는 데이터가 없는 경우 NULL을 표시한다.
SELECT 검색할 칼럼 FROM 테이블명 RIGHT OUTER JOIN 테이블명2 ON 테이블명 = 테이블명2;
SELECT 검색할 컬럼 FROM 테이블명, 테이블명2 WHERE 테이블.컬럼명(+) = 테이블2.컬럼명;
3) FULL OUTER JOIN
LEFT OUTER JOIN 과 RIGHT OUTER JOIN을 합친 것으로, 양쪽 모두 조건이 일치하지 않는 것까지 모두 결합해 출력한다
SELECT 검색할 컬럼 FROM 테이블명 FULL OUTER JOIN 테이블명2 ON 테이블.컬럼명 = 테이블2.컬럼명;
4. 셀프 조인 ( = SELF JOIN )
COLUMN 들 간의 관계를 가지고 JOIN을 하는 것을 SELF JOIN이라 한다.
식별자(=고유성, 존재성)