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 '#';
-- ☞ 나만의 와일드 카드는 기존 와일드카드를 문자로 인식되게 하는 것 임
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
'데이터베이스' 카테고리의 다른 글
[ORACLE] 함수 - 단일행 함수와 그룹 함수 (0) | 2025.03.12 |
---|---|
[ORACLE] SQL - ORDER BY (ASC/DESC) (0) | 2025.03.12 |
[ORACLE] SQL - SELECT문 (0) | 2025.03.12 |
[ORACLE] SQL - DQL, DML, DDL, DCL, TCL (0) | 2025.03.11 |
[ORACLE] 관계형 데이터베이스(RDB) (0) | 2025.02.28 |