Join과 서브쿼리

노건우·2023년 7월 24일
0
post-thumbnail

Outer Join

Left Outer Join

  • 왼쪽 테이블이 기준이 된다.
    조인 조건에 부합하는 데이터가 조인 당하는 테이블(오른쪽)에
    있으면 해당 데이터를, 부재하면 NULL로 select 된다.
    select * from tableA t1 left outer join tableB t2
    SELECT 	e.EMPLOYEE_ID, e.FIRST_NAME , d.DEPARTMENT_ID, d.DEPARTMENT_NAME  
    FROM 	EMPLOYEES e 
    	LEFT OUTER JOIN DEPARTMENTS d 
    	ON e.DEPARTMENT_ID = d.DEPARTMENT_ID 
    ;

``

  • right outer join
    오른쪽 테이블이 기준이 된다
    조인 조건에 부합하는 데이터가 조인 당하는 테이블에 있으면
    해당 데이터를, 부재하면 NULL로 select가 된다.
    select * from tableA t1 right outer join tableB b2

    SELECT 	e.EMPLOYEE_ID, e.FIRST_NAME , d.DEPARTMENT_ID, d.DEPARTMENT_NAME  
    FROM 	EMPLOYEES e 
    	RIGHT OUTER JOIN DEPARTMENTS d 
    	ON e.DEPARTMENT_ID = d.DEPARTMENT_ID 
    ;
    '''
    
  • full outer join
    양쪽 테이블 모두가 기준이 된다
    조인 조건에 부합하는 데이터가 조인 당하는 테이블에 있으면
    해당테이블을, 부재하면 NULL로 SELECT 된다.

    SELECT 	e.EMPLOYEE_ID , e.FIRST_NAME 
    	,	d.DEPARTMENT_ID , d.DEPARTMENT_NAME 
    FROM 	EMPLOYEES e 
    	FULL OUTER JOIN DEPARTMENTS d ON e.DEPARTMENT_ID = d.DEPARTMENT_ID 
    ;

SubQuery

  • 서브쿼리(SubQuery)란?
    Main Query에 반대되는 개념으로 이름을 붙인 것
    메인쿼리를 구성하는 소단위 쿼리
    select, insert, delete, update절에서 모두 사용 가능
    서브쿼리의 결과 집합을 메인 쿼리가 중간 결과값으로 사용
    서브쿼리 자체는 일반 쿼리와 다를 바가 없다.

char vs varchar2
-예를 들어 가변형 문자형 데이터타입인 varchar2에 10이라는 공간을 할당하고 abc라고 데이터를 입력했다고 치면 그 데이터는 10이라는 데이터 공간을 할당했기 때문에
10byte까지만 데이터를 입력받을 수 있고, 3글자만 입력되었으므로 그 데이터 공간은 3byte가 됩니다.
-반대로 고정형 문자형 데이터 타입인 char에 10이라는 데이터 공간을 할당하고 마찬가지로 abc라는 데이터를 입력했다고 치면 그 데이터는 3글자만 입력되었지만
데이터 공간은 10byte가 된다.
-남/여 같이 한 글자만 들어올 수 있는 것이 아니라면 대부분은 varchar2를 사용한다.

3-4 숫자형 데이터 타입

  • Number(P,S)
    -가변숫자
    -P는 소수점을 포함한 전체 자릿수를 의미하고, S는 소수점 자릿수를 의미한다.
    number는 가변숫자이므로 P와S를 입력하지 않으면 저장 데이터의 크기에 맞게 자동으로 조절된다.

입력값 타입(P,S) 저장되는 값
123.89 NUMBER 123.89
123.89 NUMBER(3) 124(반올림된다)
123.89 NUMBER(4,2) 에러발생
123.89 NUMBER(3,2) 에러
123.89 NUMBER(5,2) 123.89
123.89 NUMBER(6,1) 123.9

profile
초보 개발자 이야기

0개의 댓글