21.08.24

.·2021년 9월 5일
0

playdata

목록 보기
22/35
post-thumbnail

DAY25

📝 수업진행순서(?)
DML,DDL,TCL 순서로 진행 (CRUD) -> 설치 -> 스키마 (계정,권한,테이블) -> SELECT 구문 -> 집계함수 -> 함수 (숫자,문자열,날짜) -> 조인 (테이블간의 컬럼 매칭) -> 서브쿼리 (중첩쿼리) -> CRUD [VIEW] -> 제약조건 -> 트랜잭션 -> 트리거 -> 인덱스 -> 사용자함수, 프로시저(PL/SQL)


✏️ 기타 단일 행 함수 - DECODE

SELECT 구문으로 IF-ELSE 논리를 제한적으로 구현한 오라클 함수

DECODE(expr,search1, result1[,searchN,resultN,...][, default])

expr : 대상 컬럼 또는 문자열
search1 : expr과 비교하려는 값
result1 : IF expr = search1인 경우 반환하는 값
default : expr와 search1이 일치하지 않은 경우 기본 리턴값
		  default를 지정하지 않고 expr과 search1이 일치하지 않으면 NULL값을 리턴

✏️ DECODE함수와 유사한 ANSI 표준 구문

- CASE expr WHEN search1 THEN result1 [WHEN...THEN,,][ELSE default] END
- CASE WHEN condition1 THEN result1 [WHEN...THEN,,][ELSE default] END


SELECT SUM(SALARY), SUM (DISTINCT SALARY) FROM EMPLOYEE; // SUM (DISTINCT SALARY) -> 중복데이터 제거

Q14) BONUS_PCT를 연산하는데 기본 평균, 중복제거 평균, NULL포함 평균을 구해보자
	SELECT AVG(BONUS_PCT) "기본 평균" , AVG(DISTINCT BONUS_PCT) "중복 제거 평균" , AVG(NVL(BONUS_PCT,0)) "NULL포함 평균"
    FROM EMPLOTEE;

✏️ JOIN

JOIN의 필요성을 생각해보자
 - 서로 연관되는 다른 테이블에 존재하는 컬럼들을 한번에 조회하기 위해 사용되는 기법

SELECT EMP_NAME. DEPT_NAME, D.DEPT_ID
FROM EMPLOYEE E, DEPARTMENT D
WHERE E.DEPT_ID = D.DEPT_ID;

양쪽 테이블에 동일한 이름의 컬럼이 모두 존재하는 경우 
 -> WHERE절 : 테이블의 구분 필요
 -> SELECT절 : 양쪽 테이블의 컬럼 값은 동일하지만, 문법 상 어떤 테이블이 컬럼값을 표시할 것인지 구분 필요

JOIN -> ANSI표준 구문
	SELECT 
   FROM TABLE1 {
   				[INNER] JOIN TABLE2 ON (condition1 [and condition2...])|
                   [INNER] JOIN TABLE2 USING (column1 [,...]) |
                   
                   NATURAL [INNER] JOIN TABLE2 |
                   LEFT | RIGHT | FULL [OUTER] JOIN TABLE2 ON (condition1 [and condition2...])|
                   LEFT | RIGHT | FULL [OUTER] JOIN TABLE2 USING (column1 [,...]) |
                   CROSS JOIN TABLE2}
   WHERE

0개의 댓글