Study📚/Oracle

Oracle - SELECT 문 관찰

woo!na 2023. 10. 22. 20:31

- SELECT 문의 처리(PARSING 순서)

SELECT 컬럼명   -- ⑤ ┐
FROM 테이블명   -- ① ┘
WHERE 조건절    -- ② +
GROUP BY 절     -- ③ +
HAVING 조건절   -- ④ +
ORDER BY 절     -- ⑥ +

 

SELCT 컬럼명 FROM 테이블명 -> 필수

그 외 -> 옵션(있어도 그만 없어도 그만) BUT 저들의 순서가 바뀌면 안 됨

 

- WHERE 조건절에 해당하는 데이터만 조회

-- EMP 테이블에서 부서번호가 20번인 직원들의 데이터들 중
-- 사원번호, 사원명, 직종, 급여, 부서번호 조회
SELECT NO, NAME, POSITION, SAL, DEPTNO
FROM EMP
WHERE DEPTNO = 20;

-- EMP 테이블에서 부서번호가 20번과 30번 직원들의 데이터들 중
-- 사원번호, 사원명, 직종명, 급여, 부서번호 항목을 조회한다.
SELECT NO, NAME, POSITION, SAL, DEPTNO
FROM EMP
WHERE DEPTNO = 20 OR DEPTNO = 30;
-- WHERE DEPTNO IN (20, 30);

 

- 컬럼에 별칭 부여하기

테이블을 조회하는 과정에서 각 컬럼의 이름에는 별칭(ALIAS)을 부여할 수 있다.
기본 구문의 형식은 『컬럼명 AS "별칭이름"』의 형태로 작성되며 이 때, 『AS』는 생략이 가능하다.
또한, 별칭 이름을 감싸는 『""』도 생략이 가능하지만 『""』를 생략할 경우 별칭 내에서 공백은 사용할 수 없다.
공백의 등장은 해당 컬럼의 표현에 대한 종결을 의미하므로 별칭(ALIAS)의 이름 내부에 공백을 사용해야 할 경우 『""』를 사용하여 별칭을 부여할 수 있도록 한다.

-- EMP 테이블에서 직종이 CLERK 인 사원들의 사원명을 조회한다.
SELECT NAME AS "사원명"
FROM EMP
WHERE JOB = 'CLERK';
-- WHERE JOB IN ('CLERK');
-- 대소문자 엄.격.히 구분한다.

 

-Null

NULL 은 상태의 값을 의미하며 실제 존재하지 않는 값이기 때문에 NULL이 연산에 포함될 경우 그 결과는 무조건 NULL이다.

NULL 은 실제 존재하는 값이 아니기 때문에 일반적인 연산자(>=, <=, =, >, <, !=, <>(같지 않다), ^=(같지 않다))를 활용하여 비교할 수 없다.

SELECT NULL, NULL+2, NULL-2, NULL*2, NULL/2
FROM DUAL;
--==>> (null) (null) (null) (null) (null)

WHERE 조건절에서 NULL 활용하기

-- TBL_EMP 테이블에서 커미션(COMM, 수당)이 NULL인 직원의
-- 사원명, 직종명, 급여, 커미션 항목을 조회한다.
SELECT ENAME 사원명, JOB 직종명, SAL 급여, COMM 커미션
FROM TBL_EMP
WHERE COMM IS NULL;

-- TBL_EMP 테이블에서 커미션(COMM, 수당)이 NULL이 아닌 직원의
-- 사원명, 직종명, 급여, 커미션 항목을 조회한다.
SELECT ENAME 사원명, JOB 직종명, SAL 급여, COMM 커미션
FROM TBL_EMP
WHERE COMM IS NOT NULL;
-- WHERE NOT COMM IS NULL;