데이터베이스

[ORACLE] SELECT - 연산자, 연산자 우선순위

Seong-Jun 2025. 3. 12. 19:01
728x90
반응형
SMALL

SQL에서 데이터를 조회하거나 조건 등을 설정할 때 연산자를 사용할 수 있다.

연결연산자

연결연산자는 || 기호를 사용하여 여러 컬럼을 하나의 컬럼인 것처럼 연결하거나 컬럼과 리터럴을 연결할 수 있다.

SELECT (EMP_NAME || '의 급여는 ' || SALARY || '원 입니다.') AS "급여정보"
FROM EMPLOYEE;

논리연산자

여러 개의 제한 조건 결과를 하나의 논리 결과로 만들어준다.

연산자 설명
AND 여러 조건이 동시에 TRUE일 경우에만 TRUE 값 반환
OR 여러 조건들 중 하나의 조건이라도 TRUE이면 TRUE를 반환
NOT 조건 결과의 반대 값으로 반환(NULL은 NULL 반환)

 

비교연산자

표현식 사이의 관계를 비교하기 위해 사용하고 비교 결과는 논리결과(TRUE / FALSE / NULL) 중 하나가 된다.

단, 비교하는 두 컬럼의 값/표현식의 데이터타입은 일치해야 한다.
연산자 설명
= ORACLE에서 동등 비교는 = 기호를 사용하여 비교한다.
양쪽의 컬럼 값이 같다는 의미이다.
>, < 크다, 작다 (초과, 미만)
>=, <= 크거나 같다, 작거나 같다 (이상, 이하)
<>, !=, ^= 같지 않다
BETWEEN A AND B A이상 B이하
LIKE / NOT LIKE 문자 패턴 비교
IS NULL / IS NOT NULL NULL 값 비교 연산자.
NULL은 무조건 IS NULL 혹은 IS NOT NULL을 통해서만 비교가 가능하다.
A IS NULL => A가 NULL 일 경우 TRUE
A IS NOT NULL => A가 NULL이 아닐 경우 TRUE
IN / NOT IN 비교 값 목록에 포함 / 미포함 되는지 여부 비교

 

BETWEEN AND 연산자

-- 급여가 350만원 이상 600만원 이하인 모든 사원의 사원명, 사번, 급여 조회
	-- 논리 연산자 : AND, OR로 조건 연결할 수 있음
SELECT EMP_NAME AS "사원명", EMP_ID AS "사원번호", SALARY AS "급여"
FROM EMPLOYEE
WHERE SALARY BETWEEN 3500000 AND 6000000;
-- WHERE SALARY >= 3500000 AND SALARY <= 6000000;

LIKE 연산자

비교하고자 하는 컬럼의 값이 제시한 특징 패턴에 만족할 경우 조회한다.

특정 패턴 : '%', '_'를 와일드카드로 사용
  • % : 0글자 이상
    • 비교대상컬럼 LIKE '문자%' → 비교대상컬럼의 값이 문자로 "시작"되는 것을 조회
    • 비교대상컬럼 LIKE '%문자' → 비교대상컬럼의 값이 문자로 "끝"나는 것을 조회
    • 비교대상컬럼 LIKE '%문자%' → 비교대상컬럼의 값에 문자가 "포함"되는 것을 조회 → 키워드 검색!
  • _ : 1글자
    • 비교대상컬럼 LIKE '_문자' → 비교대상컬럼의 값에서 문자 앞에 무조건 한 글자가 오는 경우를 조회 
    • 비교대상컬럼 LIKE '__문자' → 비교대상컬럼의 값에서 문자 앞에 무조건 두 글자가 오는 경우를 조회
    • 비교대상컬럼 LIKE '_문자_' → 비교대상컬럼의 값에서 문자 앞, 뒤로 무조건 한 글자씩 오는 경우를 조회
-- 사원들 중에 "전"씨 성을 가진 사원의 사원명, 급여, 입사일 조회
SELECT EMP_NAME AS "사원명", SALARY AS "급여", HIRE_DATE AS "입사일"
FROM EMPLOYEE
WHERE EMP_NAME LIKE '전%';

-- 사원명에 "하"가 포함된 사원의 사원명, 주민번호, 연락처 조회
SELECT EMP_NAME AS "사원명", EMP_NO AS "주민번호", PHONE AS "연락처"
FROM EMPLOYEE
WHERE EMP_NAME LIKE '%하%';

SELECT EMP_NAME AS "사원명", PHONE AS "연락처"
FROM EMPLOYEE
WHERE EMP_NAME LIKE '_하_';

추가로 LIKE 연산 중 와일드카드 기호가 포함된 값을 찾아야 하는 경우 ESCAPE 옵션을 사용해야 한다!

-- 사원들 중 이메일에 4번째 자리가 _인 사원의 사번, 이름, 이메일 조회
SELECT EMP_ID AS "사번", EMP_NAME AS "이름", EMAIL AS "이메일"
FROM EMPLOYEE
WHERE EMAIL LIKE '____%';
-- ☞ 와일드 카드로 사용되는 문자와 컬럼에 담긴 문자가 동일하기 때문에 모두 와일드카드로 인식됨
-- ☞ 나만의 와일드 카드를 사용해야함 ESCAPE 옵션 추가!

SELECT EMP_ID AS "사번", EMP_NAME AS "이름", EMAIL AS "이메일"
FROM EMPLOYEE
WHERE EMAIL LIKE '___#_%' ESCAPE '#';
-- ☞ 나만의 와일드 카드는 기존 와일드카드를 문자로 인식되게 하는 것 임

ESCAPE 사용

IN 연산자

비교하려는 값 목록에 일치하는 값이 있으면 TRUE를 반환하는 연산자

-- 부서코드가 'D6'이거나 'D8'이거나 'D5'인 사원들의 사원명, 부서코드, 급여를 조회
SELECT EMP_NAME AS "사원명", DEPT_CODE AS "부서코드", SALARY AS "급여"
FROM EMPLOYEE
-- WHERE DEPT_CODE = 'D6' OR DEPT_CODE = 'D8' OR DEPT_CODE = 'D5';
WHERE DEPT_CODE IN('D6',  'D8', 'D5');

연산자 우선순위

우선순위 연산자
1 산술연산자
2 연결연산자
3 비교연산자
4 NULL 여부 비교 / LIKE / IN
5 BETWEEN AND
6 논리 연산자 NOT
7 논리 연산자 AND
8 논리 연산자 OR

 

728x90
반응형
LIST