Programming/SQL

[Oracle] SELECT문 기본문법(4) - IS NULL / IN / 연결연산자( || ) / ORDER BY절 / 연산자 우선순위

Jayna. 2024. 1. 17. 16:00
728x90

 

 

[Oracle] SELECT문 (3) - 논리연산자(AND, OR) / BETWEEN AND / LIKE

[Oracle] SELECT (2) - DISTINCT / WHERE절 / 비교연산자 2024.01.17 - [Programming/SQL] - [Oracle] SELECT문 (1) - 산술연산 / 별칭(AS) / 컬럼값을 통한 산술 연산 / SYSDATE 오늘날짜 / 리터럴 DISTINCT 조회하고자 하는 컬럼의

jaynarecord.tistory.com

 

IS NULL

비교대상컬럼 IS NULL -- 컬럼값이 NULL인 경우
비교대상컬럼 IS NOT NULL -- 컬럼값이 NULL이 아닌 경우
-- 보너스를 받지 않는 사원들(BONUS 컬럼값이 NULL)의 사번, 이름, 급여, 보너스
SELECT EMP_ID, EMP_NAME, SALARY, BONUS
  FROM EMPLOYEE
 WHERE BONUS IS NULL;

-- 보너스를 받는 사원들(BONUS 컬럼값이 NULL)의 사번, 이름, 급여, 보너스
SELECT EMP_ID, EMP_NAME, SALARY, BONUS
  FROM EMPLOYEE
 WHERE BONUS IS NOT NULL;
 
-- 사수가 없는 사원들의 사원명, 사원번호, 사수사번(NULL), 부서코드 조회
SELECT EMP_NAME, EMP_ID, MANAGER_ID, DEPT_CODE
  FROM EMPLOYEE
 WHERE MANAGER_ID IS NULL;
 
-- 사수도 없고, 부서배치도 받지 않은 사원들의 모든 컬럼 조회
SELECT *
  FROM EMPLOYEE
 WHERE MANAGER_ID IS NULL AND DEPT_CODE IS NULL;
 
-- 부서배치는 받지 않았지만, 보너스는 받는 사원의 사원명, 보너스, 부서코드 조회
SELECT EMP_NAME, BONUS, DEPT_CODE
  FROM EMPLOYEE
 WHERE DEPT_CODE IS NULL AND BONUS IS NOT NULL;
728x90

 

IN

비교대상컬럼 값에 내가 제시한 목록들 중 일치하는 값이 있는지?

비교대상컬럼 IN (값, 값, 값, ...)
-- 부서코드가 D6이거나 D8이거나 D5인 사원들의 이름, 부서코드, 급여
SELECT EMP_NAME, DEPT_CODE, SALARY
  FROM EMPLOYEE
-- WHERE DEPT_CODE = 'D6' OR DEPT_CODE = 'D8' OR DEPT_CODE = 'D5';  
 WHERE DEPT_CODE IN ('D6', 'D8', 'D5');
 
-- 그외 사원들
SELECT EMP_NAME, DEPT_CODE, SALARY
  FROM EMPLOYEE
 WHERE DEPT_CODE NOT IN ('D6', 'D8', 'D5');

 

연결 연산자 ( || )

여러 컬럼값들을 마치 하나의 컬럼인 것처럼 연결시켜주는 연산자로
컬럼과 리터럴(임의의 문자열)을 연결할 수 있다.

SELECT EMP_ID || EMP_NAME || SALARY AS "연결됨"
  FROM EMPLOYEE;

 

ORDER BY 절

SELECT문 가장 마지막에 기입하는 구문으로 실행순서 또한 가장 마지막

SELECT 조회할 컬럼, 컬럼, ...
  FROM 테이블명
 WHERE 조건식 --생략가능
 ORDER BY [정렬할 컬럼/별칭/컬럼순번] [ASC/DESC]
 [NULLS FIRST / NULLS LAST] --생략가능
 
 
 /*
 ASC  : 오름차순 정렬(생략시 기본값), 기본적으로 NULLS LAST
 DESC : 내림차순 정렬, 기본적으로 NULLS FIRST
 
 NULLS FIRST : NULL이 포함되어 있을 경우 앞으로 배치(내림차순시 기본값)
 NULLS LAST  : NULL 이 포함되어 있을 경우 뒤로 배치(오름차순시 기본값)
 */

 
 

연산자 우선순위

1. (  )
2. 산술연산자
3. 연결연산자
4. 비교연산자
5. IS NULL, LIKE, IN
6. BETWEEN AND
7. NOT
8. AND
9. OR
 
 

 

[Oracle] SELECT문 (1) -  산술연산 / 별칭(AS) / 컬럼값을 통한 산술 연산 / SYSDATE 오늘날짜 / 리터럴

들어가기 전에... 쿼리 작성시 대, 소문자 구분은 상관없지만, 보통은 대문자로 작성함 SELECT 데이터를 조회하거나 검색할때 사용되는 명령어 명령어, 키워드, 테이블명, 컬럼명은 대소문자를 가

jaynarecord.tistory.com

 

728x90