Oracle DataBase

2. ORACLE 연산자 정리 :: 비교연산자, 논리연산자, 연결연산자

JinHyung-dev 2024. 5. 14. 17:40

1. 연산자(transact)

1) 비교 연산자

  • 자바와 비슷하지만 조금 다름
  • 논리결과 = TRUE, FALSE, NULL 반환
  • 단, 비교하는 두 값은 서로 동일한 데이터 타입이어야 한다.
연산자 설명 비고
=, ><, >= 자바와 동일  
<>, !=, ^= 같지 않다  
BETWEEN 시작값 AND 끝값 특정 범위에 포함되는지 비교  
LIKE / NOT LIKE
컬럼명 LIKE 패턴
문자열 패턴 비교 _ : 아무 문자 1개가 있다는 의미 (___ : 3글자)
% : 아무문자가 0개 이상 있다는 의미
(%강 : 강으로 끝나는 글자 %명% : 명을 포함한 글자)
(_명% : 명을 포함한 최소 2글자)
IS NULL / IS NOT NULL Null 여부 비교 NULL 값을 찾아줌
IN / NOT IN (값1, 값2, …)
해당 값이 포함인지 미포함인지 비교 OR 연결되는 조건을 간단하게 처리가능
나중에 서브쿼리문(다중행)과 동등비교시 사용

 

-- 특정 부서 사원의 전체 데이터 조회하기
SELECT * FROM EMPLOYEE
WHERE DEPT_CODE = 'D5'; --리터럴이니까 ''로 묶어주기

-- 범위조회 연산자 : BETWEEN
SELECT EMP_NAME, SALARY, DEPT_CODE, HIRE_DATE
FROM EMPLOYEE
WHERE HIRE_DATE BETWEEN '00/01/01' AND '02/12/31';

-- 문자열 비교 연산자 : LIKE
-- 사원중 유씨 성을 가진 사원의 이름, 급여, 부서코드 조회
SELECT EMP_NAME, SALARY, DEPT_CODE
FROM EMPLOYEE
WHERE EMP_NAME LIKE '유%';

-- null 값 조회하기 : IS NULL
SELECT EMP_NAME, BONUS
FROM EMPLOYEE
WHERE BONUS IS NULL;
-- WHERE BONUS = NULL 에러는 안나지만 결과가 안나온다

-- 부서가 없는 사원 이름, 부서코드 조회 -> as, nvl, is null 사용
SELECT emp_name, nvl(dept_code, '인턴') as dept_code
FROM EMPLOYEE
WHERE dept_code is null;

날짜 대소비교

문자열로 날짜패턴을 작성해서 비교 진행

-- 날짜 대소비교
SELECT *
FROM EMPLOYEE
WHERE HIRE_DATE > '00/01/01';

--입사일이 00년 1월 1일부터 02년 12월 31일까지인 사원명, 급여, 부서코드, 입사일 조회
SELECT EMP_NAME, SALARY, DEPT_CODE, HIRE_DATE
FROM EMPLOYEE
WHERE HIRE_DATE > '00/01/01' AND HIRE_DATE < '02/12/31';

2) 논리 연산자

and가 우선되니 조심

연산자 설명
AND 여러 조건이 동시에 TRUE여야 TRUE
OR 하나라도 TRUE = TRUE
NOT 조건의 반대값으로 반환(NULL은 제외)

 

AND 연산 결과

  TRUE FALSE NULL
TRUE TRUE FALSE NULL
FALSE FALSE FALSE FALSE
NULL NULL FALSE NULL

 

OR 연산 결과

  TRUE FALSE NULL
TRUE TRUE TRUE TRUE
FALSE FALSE FALSE NULL
NULL TRUE NULL NULL

 

-- 논리연산자 우선순위 : 직책이 J7이거나 J2면서 월급 280만원 이상인 사원의 사원명, 직책코드, 급여 조회
SELECT EMP_NAME, JOB_CODE, SALARY
FROM EMPLOYEE
WHERE JOB_CODE IN ('J7', 'J2') AND SALARY >= 2800000;
-- JOB_CODE = 'J7' OR JOB_CODE = 'J2' AND SALARY >= 2800000; 라고 적을 시 and가 우선되어서 다른 결과가 나옴

3) 연결 연산자 (||)

여러 컬럼을 하나의 컬럼처럼 연결하거나 컬럼과 리터럴을 연결함

  • 컬럼 || 컬럼
SELECT EMP_ID || EMP_NAME || SALARY
FROM EMPLOYEE;
  • 컬럼 || 리터럴
SELECT EMP_NAME || '의 월급은' || SALARY || '원 입니다.'
FROM EMPLOYEE;

 

2. 연산자 우선순위

우선순위 연산자
1 산술 연산자
2 연결 연산자(
3 비교 연산자
4 IS NULL / IS NOT NULL
LIKE
IN / NOT IN
5 BETEWEEN AND
6 논리 - NOT
7 논리 - AND
8 논리 - OR
반응형