본문 바로가기

데이터베이스/ORACLE

(30)
22. SELF JOIN 1. SELF-JOIN (셀프 조인) 하나의 테이블에 두 개의 별칭을 부여하여 조인 연산을 수행하는 방식 예제) 거래처테이블에서 거래처 코드가 'P10101'인 거래처와 같은 지역에 속한 거래처를 조회하시오 (거래처코드, 거래처명, 주소) SELECT B.BUYER_ID AS 거래처코드, B.BUYER_NAME AS 거래처명, B.BUYER_ADD1 ||' '|| B.BUYER_ADD2 AS 주소 FROM BUYER A, BUYER B WHERE UPPER(A.BUYER_ID) = 'P10101' -- A 테이블은 P10101에대한 자료만 가지게됨 AND SUBSTR(A.BUYER_ADD1,1,2) = SUBSTR(B.BUYER_ADD1,1,2) -- 전체자료를 B테이블에서 출력해야한다. 예제) 사원테이..
21. SEMI JOIN 1. SEMI JOIN ( 세미 조인 ) 서브 쿼리를 사용하여 서브 쿼리의 결과에 존재하는 데이터만 메인 쿼리에서 추출하는 조인 방법 IN과 EXISTS 연산자가 사용됨 예제) 사원테이블에서 급여가 5000 이상인 사원이 존재하는 부서 번호와 부서명을 추출하시오 -- 어느부분을 메인으로 어느부분을 서브로 구성할것인지 판단해줘야한다. -- 최종출력해줘야하는 부분이 메인쿼리이다. -- 자료를 제공해주는것이 서브쿼리가 되는것. (메인쿼리 - 부서번호와 부서명을 추출) SELECT A.DEPARTMENT_ID AS 부서번호, A.DEPARTMENT_NAME AS 부서명 FROM DEPARTMENTS A WHERE A.DEPARTMENT_ID IN ( 서브쿼리 ) ; (서브쿼리 - 급여가 5000이상인 사원이존재..
20. TABLE JOIN 1. JOIN ( 테이블 조인 ) ⇒ 두개의 테이블에서 공통된 컬럼이 반드시존재 해야함 관계형 데이터베이스 시스템의 가장 중요한 기능 정규화 등으로 분리된 테이블들을 이용하여 필요한 컬럼들을 조회 테이블 사이의 관계(Relationship)를 이용한 연산 ( 사용형식 ) SELECT [테이블명|테이블별칭.] 컬럼명,..... FROM 테이블명1 [별칭], 테이블명2 [별칭], ...... WHERE [테이블명|테이블별칭.]컬럼명 연산자 [테이블명|테이블별칭.]컬럼명 --- 조인조건 AND [테이블명|테이블별칭.]컬럼명 연산자 [테이블명|테이블별칭.]컬럼명 --- 조인조건 AND [일반조건]; .테이블별칭은 복수개의 테이블에 이름이 동일한 컬럼이 존재하는 경우 .조인조건은 사용된 테이블이 n개일때 n-1개..
19. ROLLUP / CUBE 1. ROLLUP 그룹별 소계와 총계를 반환 ( 사용 형식 ) SELECT 컬럼명1, 컬럼명2, 집계함수 FROM 테이블명 [WHERE 조건] GROUP BY [컬럼명...]ROLLUP(컬럼명,...) . ROLLUP다음 ( )안에 기술된 순서에 따른 (오른쪽->왼쪽) 레벨별 집계처리를 반환 . ROLLUP다음 ( )안에 n개의 컬럼이 사용된 경우 n+1개의 종류 만큼 집계반환 EX)ROLLUP(PERIOD,REGION,GUBUN)을 기술한 경우 'GUBUN'을 기준으로 집계 한 후 'REGION,GUBUN'으로 집계 후 'PERIOD,REGION,GUBUN'으로 집계를 반환한 후 전체집계 반환 예제) KOR_LOAN_STATUS 테이블에서 ROLLUP을 사용하여 기간, 지역별 대출잔액 집계를 조회하시오..
18. 집계 함수 / RANK 함수 1. 집계 함수 SUM, AVG, COUNT, MIN, MAX 보통 GROUP BY 절과 같이 사용 ⇒ SELECT 절에서 일반항목과 집계함수가 같이 사용될 때에는 무조건 GROYP BY를 사용해야 한다. (GROUP BY절 사용해야 하는 경우) . SELECT절에서 일반항목(칼럼, 수식)과 집계 함수가 같이 사용된 경우 . GROUP BY 칼럼명 1 [, 칼럼명 2,....] -- 칼럼명 1을 만들고 그 속에서 칼럼명 2를 가지고 그룹을 만듦 . SELECT절에서 사용된 일반항목(칼럼, 수식)은 반드시 GROUP BY 절에 기술해야 한다.! . 집계 함수에 부여된 조건은 HAVING절에 기술 ⇒ SELECT / FROM / WHERE / GROUP BY / HAVING / ORDER BY 순서 . GR..
17. NULL처리 함수 1. NULL 처리 함수 테이블에 저장된 데이터 중 NULL 자료 값은 연산 시 오류를 유발 NVL, NVL2, NULLIF, IS NULL(IS NOT NULL) 등으로 NULL값을 처리 ⇒ = NULL 하면 처리 못한다. IS NULL 로서 해줘야 한다. 1) NVL(expr1, expr2) 'expr1'의 값이 NULL 이면 'expr2'를 반환하고 'expr1'의 값이 NULL 이 아니면 자기 자신의 값 ('expr1')을 반환 'expr1'과 'expr2'는 같은 데이터 타입이어야 함 예제) 사원 테이블에서 사원들의 보너스를 계산하여 조회하시오 단, 80번과 50번 부서에 속한 사원만 조회하시오 보너스 = 본봉 * 영업실적(COMMISSION_PCT)의 30%이다. ( Alias은 사원번호, 사..
16. 변환 함수 ( CONVERSION FUNCTION ) 1. 변환 함수 데이터의 형 변환을 담당 CAST, TO_DATE, TO_CHAR, TO_NUMBER SELECT * FROM EMPLOYEES WHERE HIRE_DATE >= '20050101' -- 문자열과 날짜타입이만남// 이항연산이 수행될대에는 연산자보다 각각의 데이터타입을 일치시키는것이 먼저일어남 -- '20050101'이 날짜형으로 형변환 후에 비교가 일어난다. 묵시적으로 형변함 -- 오라클은 문자열이 우선이아니다 -- 오라클에서는 숫자가 우선이다. SELECT '20'+7 FROM dual; --27 -- 문자열이 숫자로 변하고 연산이 이루어진다 -- 묵시적 형변환 1) CAST 명시적 형 변환 함수 ( 사용 형식 ) CAST(expr AS type) . 'expr'로 표현된 데이터를 't..
15. 날짜 함수 ( DATE_FUNCTION ) 1. 날짜 함수 1) SYSDATE 시스템이 제공하는 날짜 정보(년, 월, 일, 시, 분, 초) 덧셈과 뺄셈의 대상이 될 수 있다.('/'와 '*'는 허용되지 않음) 출력은 년월일까지만 출력(시분초까지 출력하기 위하여 TO_CHAR함수가 필요) 예제) 사원들의 입사일을 기준으로 오늘 날짜에서 한 달 이내에 입사한 사원들에게 특별 상여금을 지급하려 한다. Alias는 사원번호, 이름, 부서 번호, 급여, 상여금, 지급액 단, 상여금은 본봉의 10%이다. SELECT EMPLOYEE_ID AS 사원번호, EMP_NAME AS 이름, DEPARTMENT_ID AS 부서번호, HIRE_DATE AS 입사일, SALARY AS 급여, SALARY *0.1 AS 상여금, SALARY + (SALARY*0.1) AS..