hyeonga_code

Database_43_SUB QUERY_서브쿼리에서의 널(NULL) 값 본문

Oracle Database

Database_43_SUB QUERY_서브쿼리에서의 널(NULL) 값

hyeonga 2023. 8. 2. 09:59
반응형

 

-- 서브쿼리에서의 널 값
        -- IN 연산자를 사용할 경우 서브쿼리 결과 집합에 널 값이 존재해도 무관합니다.
        
        -- 부하직원이 없는 모든 사원을 표시하기 위한 다음 SQL문은 논리적으로 12개의 행을 반환해야합니다.
SELECT last_name, manager_id
FROM employees
WHERE employee_id NOT IN (SELECT manager_id FROM employees); 
        -- King 직원의 manger_id 가 null 값이므로 아무 데이터도 출력되지 않았습니다.


        
        -- 서브쿼리에 다음과 같은 WHERE 절을 포함시켜 부하 직원이 없는 모든 사원을 표시할 수 있습니다.
            -- 이 경우 NOT EXISTS 연산자로 대체될 수 있습니다.
SELECT last_name, manager_id
FROM employees
WHERE employee_id NOT IN (SELECT manager_id FROM employees
                                                  WHERE manager_id IS NOT NULL); 
    /*
        LAST_NAME   M_ID        
        -------------------------------
        Ernst                 103
        Lorentz             103
        Rajs                  124
        Davies              124
        Matos               124
        Vargas              124
        Abel                  149
        Taylor                149
        Grant                149
        Whalen             101
        Fay                   201
        Gietz                 205
    */


    
-- 테이블 칼럼의 정보를 조회합니다.
DESC employees;
    -- 정보를 조회했을 때 MANAGER_ID, DEPARTMEMT_ID 은 NOT NULLL입니다.
    -- 언젠가 NULL 값이 들어갈 수 있습니다. >>> 결과가 출력되지 읺을 수 있습니다.
    /*
    이름                         널?                   유형           
    ---------------------------------------------------------------- 
    EMPLOYEE_ID      NOT NULL     NUMBER(6)    
    FIRST_NAME                               VARCHAR2(20) 
    LAST_NAME          NOT NULL     VARCHAR2(25) 
    EMAIL                     NOT NULL     VARCHAR2(25) 
    PHONE_NUMBER                        VARCHAR2(20) 
    HIRE_DATE            NOT NULL     DATE         
    JOB_ID                   NOT NULL     VARCHAR2(10) 
    SALARY                                        NUMBER(8,2)  
    COMMISSION_PCT                      NUMBER(2,2)  
    MANAGER_ID                               NUMBER(6)    
    DEPARTMENT_ID                        NUMBER(4)    
    */
   

반응형