Oracle

ORACLE 공부 5일차 2020/08/11

햄찌개 2020. 8. 28. 17:02


2020-08-11
01)
SELECT 문 사용형식
SELECT *|  [DISTINCT] 컬럼명 [AS]["] 컬럼별칭["],

FORM 테이블명 [테이블 별칭], [.........]
[WHERE 조건 [AND | OR 조건 ] ...........]
[GROUP BY 컬럼명 [, 컬럼명 , ...............]
[HAVING 조건] 
[ORDER BY 컬럼명 | 컬럼 INDEX, .......];

1. 조건
1)관계 연산자를 사용하여 조건문 구성
        개발언어의 if문에 사용되는 조건문과 동일
        >, <, >=, <=, !(<>), = 사용
2)논리 연산자 (NOT(!), AND, OR)
        복수개의 조건문을 구성
3)기타 연산자
        ANY, SOME, IN, ALL, EXISTS 등이 제공됨

IN연산자 
    컬럼 값이 복수개로 주어진 값 중 어느 하나와 일치하면 전체가 참(TRUE)을 반환
(사용형식) 
    컬럼명(표현식) IN (값1, 값2, ........)
    -OR 연산자로 변환 가능 
 select A.EMP_NAME AS 사원명, 
           A.DEPARTMENT_ID AS 부서코드, 
           B.DEPARTMENT_NAME AS 부서명,
           C.JOB_TITLE AS 직무명
     FROM EMPLOYEES A, DEPARTMENTS B, JOBS C
    WHERE A.DEPARTMENT_ID IN(30, 40, 60) 
    --  WHERE (A.DEPARTMENT_ID = 30 
    --OR A.DEPARTMENT_ID = 40
    -- OR A.DEPARTMENT_ID = 60) 를 IN으로 줄인다
      AND A.DEPARTMENT_ID = B.DEPARTMENT_ID
      AND A.JOB_ID = C.JOB_ID;   
    


 ANY(SOME) 연산자 (IN을 =ANY로 사용가능)
    컬럼 값이 복수개로 주어진 값 중 어느 하나와 일치하면 전체가 참(TRUE)을 반환
(사용형식) 
    컬럼명(표현식) 관계연산자 ANY (값1, 값2, ........)
    -OR 연산자로 변환 가능 
    -IN 연산자로 변환 할 때 관계연산자는 생략
 select A.EMP_NAME AS 사원명, 
           A.DEPARTMENT_ID AS 부서코드, 
           B.DEPARTMENT_NAME AS 부서명,
           C.JOB_TITLE AS 직무명
     FROM EMPLOYEES A, DEPARTMENTS B, JOBS C
    WHERE A.DEPARTMENT_ID =ANY(30, 40, 60) 
    --  WHERE (A.DEPARTMENT_ID = 30 
    --OR A.DEPARTMENT_ID = 40
    -- OR A.DEPARTMENT_ID = 60) 를 ANY으로 줄인다
      AND A.DEPARTMENT_ID = B.DEPARTMENT_ID
      AND A.JOB_ID = C.JOB_ID;