[SQL] 기초4

Walter Mitty·2022년 11월 9일
0

SQL

목록 보기
12/15

중첩 함수

  • 단행 행(row) 함수는 여러번 중첩될 수 있습니다.
  • 중첩 함수는 가장 안쪽부터 바깥쪽 순으로 계산됩니다.


조건 표현식

  • SQL 문 안에서 IF-THEN-ELSE 논리를 사용할 수 있도록 해준다.

  • 다음 두 방법을 사용한다

    • CASE 표현식
    • DECODE 함수
  • CASE 표현식

select last_name, job_id, salary,
    case job_id when 'IT_PROG'  then 1.10*salary
                when 'ST_CLERK' then 1.15*salary
                when 'SA_REP'   then 1.20*salary
    else salary end "REVISED_SALARY"
from employees;   

job_id의 값을 확인해서
1. job_id가 IT_PROG면 급여 10% 인상
2. job_id가 ST_CLERK면 급여 15% 인상
3. job_id가 SA_REP면 급여 20% 인상


  • DECODE 표현식
select last_name, job_id, salary,
    decode(job_id,  'IT_PROG',  1.10*salary,
                    'ST_CLERK', 1.15*salary,
                    'SA_REP',   1.20*salary,
            salary)      
    REVISED_SALARY            
from employees;   

job_id의 값이 테스트된다.
1. job_id가 IT_PROG면 급여 10% 인상
2. job_id가 ST_CLERK면 급여 15% 인상
3. job_id가 SA_REP면 급여 20% 인상


  • IF 표현식
select last_name, job_id, salary,
    if job_id = 'IT_PROG'  then 1.10*salary
    if job_id = 'ST_CLERK' then 1.15*salary
    if job_id = 'SA_REP'   then 1.20*salary
    else salary = salary
from employees;   

  • 카티시안 곱(Cartesian Product)
    • 카티시안 곱은 다음 경우에 생성된다
      • 조인 조건을 생략한 경우
      • 조인 조건이 부적합한 경우
      • 첫번째 테이블의 모든 행이 두번째 테이블의 모든 행에 조인된 경우
    • 카티시안 곱이 생성되지 않도록 하려면 WHERE절에 항상 유요한 조인 조건을 포함시키면된다.
    • 너무 많은 행을 생성해서 결과가 유용하게 사용되지는 않는편.
    • 적정 양의 데이터를 시뮬레이트하기 위해 많은 수의 행을 생성해야 하는 경우 같은 일부 테스트에서 유용하다

조인 유형

  • 오라클 전용 조인
    • 등가 조인
    • 비등가 조인
    • 포괄 조인
    • 자체 조인

  • SQL 표준 조인
    • 교차 조인
    • 자연 조인
    • Using 절
    • 전체 또는 한쪽 포괄 조인
    • 포괄 조인에 대한 임의의 조인 조건

  • 등가 조인

    사원의 부서 이름을 판별하기 위해 EMPLOYEES 테이블의 DEPARTMENT_ID 열의 값을 DEPARTMENTS 테이블의 DEPARTMENT_ID 값과 비교한다.
    EMPLOYEES 테이블과 DEPARTMENTS 테이블의 관계는 등가 조인이다.
    죽, 두 테이블의 DEPARTMENT_ID열 값이 동일해야 한다.
    등가 조인 유형은 주로 기본 키와 외래 키를 보조 수단으로 포함한다.

  • AND 연산자를 사용한 추가 검색 조건

    • 테이블을 조인할 경우 조인뿐만 아니라 고려 대상인 행을 제한하기 위해 WHERE 절에 조건을 추가해야 하는 경우가 있다.
      예를들어, 사원 Matos의 부서 번호 및 부서 이름을 표시하려면 WHERE절에 조건을 추가해야한다.
      AND last_name = 'Matos';
  • 세 개 이상의 테이블 조인

    • n개의 테이블을 조인하려면 최소 n-1개의 조인 조건이 필요하다
    • 각 사원의 이름, 부서 이름 및 도시를 표시하려면
    select last_name, department_name, city
    from employees e, departments d,  locations l
    where e.department_id = d.department_id
    and d.location_id = l.location_id;
  • 비등가 조인

    • 동등 연산자가 아닌 연산자를 포함하는 조인 조건이다.
    • EMPLOYEES 테이블의 SALARY열이 JOB_GRADES 테이블의 LOWEST_SALARY 열 값과 HIGHEST_SALARY 열 값 사이에 있어야 한다.
      관계는 등호(=) 이외의 연산자를 사용해서 얻는다.
  • 포괄 조인

    • 행이 조인 조건을 만족하지 않으면 질의 결과에 나타나지 않는다.
    • 포괄 조인을 사용하면 조인 조건을 만족하지 않는 행도 볼 수 있다
    • 포괄 조인 연산자는 더하기 기호(+)입니다.

  • 내부 조인(inner join)
  • 포괄 조인(outer join)

그룹함수

SELECT		[column, ] group function(column), ...
FROM		table
[WHERE		condition]
[GROUP BY	column]
[ORDER BY	column];

  • 숫자 데이터에 사용 가능한 함수
    • AVG()
    • SUM()
  • 숫자 문자 다 사용 가능한 함수
    • MAX() - 숫자라면 가장 큰 숫자, 문자열이면 z
    • MIN() - 숫자라면 가장 작은 숫자, 문자열이면 a

0개의 댓글