[Oracle SQL] 조건 검색과 비교, 논리 연산(WHERE, AND, OR, NOT)데이터베이스/Oracle SQL2023. 11. 20. 00:30
Table of Contents
본 게시글은 이수안컴퓨터연구소의 데이터베이스 유튜브 동영상을 개인적으로 정리하는 글입니다.
WHERE
- 특정 조건을 만족하는 데이터만 조회
- 연산자, 컬럼명, 표현식, 숫자, 문자 등을 이용한 조건 제시
- 숫자뿐만 아니라 문자나 날짜 값을 비교하는 것도 가능( ‘A’ < ‘C’ , ‘2019-12-01’ < ‘2019-12-02’ 등)
- 조건에서 문자나 날짜 값은 작은따옴표로 묶어서 표현
연산자
산술 연산자(+, -, *, /)
비교 연산자(=, <>, (!=), >, >=, <, <=)
논리 연산자(AND, OR, NOT)
집합 연산자(UNION, UNION ALL, MINUS, INTERSECT)
SQL 연산자(BETWEEN, IN, LIKE, IS NULL)
- 연산자 우선순위
연산자 | 설명 |
*, / | 산술 연산자 |
+, - | 산술 연산자 |
=, !=, ^=, <>, >, >=, <, <= | 대소 비교 연산자 |
IS (NOT) NULL, (NOT) LIKE, (NOT) IN | (그 외 비교 연산자) |
BETWEEN A AND B | SQL 연산자 |
NOT | 논리 연산자 |
AND | 논리 연산자 |
OR | 논리 연산자 |
비교연산자
- 연산자 앞뒤의 값을 비교하여 데이터 조회
연산자 | 설명 |
= | 같다 |
<> | 다르다 |
< | 작다 |
> | 크다 |
<= | 작거나 같다 |
>= | 크거나 같다 |
--employees 테이블에서 employee_id가 110인 모든 열의 값을 조회
SELECT * FROM employees WHERE employee_id = 110;
--employees 테이블에서 employee_id가 110이 아닌 모든 열의 값을 조회
SELECT * FROM employees WHERE employee_id <> 110;
--employees 테이블에서 employee_id가 110보다 작은 모든 열의 값을 조회
SELECT * FROM employees WHERE employee_id < 110;
--employees 테이블에서 employee_id가 110보다 큰 모든 열의 값을 조회
SELECT * FROM employees WHERE employee_id > 110;
--employees 테이블에서 employee_id가 110보다 작거나 같은 모든 열의 값을 조회
SELECT * FROM employees WHERE employee_id <= 110;
--employees 테이블에서 employee_id가 110보다 크거나 같은 모든 열의 값을 조회
SELECT * FROM employees WHERE employee_id >= 110;
논리연산자
- 여러 조건을 논리 연산자로 연결시켜 데이터 조회
연산자 | 설명 |
AND | 모든 조건을 만족해야 조회 |
OR | 여러 조건 중 하나만 만족해도 조회 |
NOT | 조건을 만족하지 않는 것만 조회 |
--employees 테이블에서 employee_id가 120이상, 130이하인 모든 열의 값을 조회
SELECT * FROM employees WHERE employee_id >= 120 AND employee_id <= 130;
--employees 테이블에서 salary가 10000 이상, 12000이하인 모든 열의 값을 조회
SELECT * FROM employees WHERE salary >= 10000 AND salary <= 12000;
--employees 테이블에서 manager_id가 100이거나 120인 모든 열의 값을 조회
SELECT * FROM employees WHERE manager_id = 100 OR manager_id = 120;
--employees 테이블에서 last_name이 King 이거나 Smith인 모든 열의 값을 조회
SELECT * FROM employees WHERE last_name = 'King' OR last_name = 'Smith';
--employees 테이블에서 department_id가 50이 아닌 모든 열의 값을 조회
SELECT * FROM employees WHERE NOT department_id = 50;
--employees 테이블에서 department_id가 50이 아니거나 80이 아닌 모든 열의 값을 조회
SELECT * FROM employees WHERE NOT department_id = 50 AND NOT department_id = 80;
연습 문제
--employee 테이블에서 first_name이 david인 직원 조회
SELECT * FROM employees WHERE first_name = 'David';
--jobs 테이블에서 최소 월급이 4000달러인 직업 조회
SELECT * FROM jobs WHERE min_salary = 4000;
--jobs 테이블에서 최소 월급이 8000달러 초과인 직업 조회
SELECT * FROM jobs WHERE min_salary > 8000;
--jobs 테이블에서 대 월급이 10000달러 이하인 직업 조회
SELECT * FROM jobs WHERE max_salary <= 10000;
--jobs 테이블에서 최소 월급이 4000달러 이상이고 최대 월급이 10000달러 이하인 직업 조회
SELECT * FROM jobs WHERE min_salary >= 4000 AND max_salary <= 10000;
--employees 테이블에서 job_id가 'IT_PROG'이면서 salary가 5000초과인 직원 조회
SELECT * FROM employees WHERE job_id = 'IT_PROG' AND salary > 5000;