
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 |
반응형
'Oracle DataBase' 카테고리의 다른 글
6. ORACLE 정리 :: 서브쿼리(SUBQUERY) - 단일행, 다중행, 다중열, 상관, 스칼라 (2) | 2024.06.04 |
---|---|
5. ORACLE 정리 :: 집합 연산자(UNION)와 JOIN문 (0) | 2024.06.03 |
4. ORACLE 함수(Function) :: 그룹 함수 정리 (0) | 2024.05.31 |
3. ORACLE 함수(Function) :: 단일행 함수 정리 (3) | 2024.05.31 |
1. ORACLE :: DataBase와 SQL Developer 사용하기 (0) | 2024.04.29 |