데이터베이스/Oracle SQL

[Oracle SQL] 조건 검색과 비교, 논리 연산(WHERE, AND, OR, NOT)

ReBugs 2023. 11. 20.

본 게시글은 이수안컴퓨터연구소의 데이터베이스 유튜브 동영상을 개인적으로 정리하는 글입니다. 


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;

댓글