hyeonga_code
Database_12_데이터 제한 및 관리_논리 조건 연산자 본문
-- 논리 조건
-- AND : 구성 요소 조건이 모두 참인 경우 참을 반환합니다.
-- OR : 구성 요소 조건 중 하나라도 참인 경우 참을 반환합니다.
-- NOT : 조건이 거짓이면 참을 반환합니다.
-- AND
-- 이름이 K로 시작하고 a가 들어가는 직원 정보
SELECT employee_id, last_name, salary, hire_date
FROM employees
WHERE last_name LIKE 'K%'
AND last_name LIKE '%a%';
/*
EM_ID LAST_NAME SALARY HIRE_DATE
------------------------------------------------------------------------------
101 Kochhar 17000 04/09/21
*/
-- 이름에 i 와 a 가 포함된 직원 정보
SELECT employee_id, last_name, salary, hire_date
FROM employees
WHERE last_name LIKE '%i%'
AND last_name LIKE '%a%';
/*
EM_ID LAST_NAME SALARY HIRE_DATE
------------------------------------------------------------------------------
142 Davies 3100 12/01/29
201 Hartstein 13000 11/02/17
*/
-- OR
-- 이름에 i나 a가 하나라도 포함된 직원 정보
SELECT employee_id, last_name, salary
FROM employees
WHERE last_name LIKE '%i%'
OR last_name LIKE '%a%';
/*
EM_ID LAST_NAME SALARY
---------------------------------
100 King 24000
...
206 Gietz 8300
*/
-- AND, OR 혼합 사용
-- K로 시작하면서 a가 들어가거나 i가 들어가는 직원 정보
SELECT employee_id, last_name
FROM employees
WHERE last_name LIKE '%i%'
OR last_name LIKE '%a%'
AND last_name LIKE 'K%';
/*
EM_ID LAST_NAME
--------------------------------
100 King
101 Kochhar
142 Davies
201 Hartstein
205 Higgins
206 Gietz
*/
-- 괄호로 우선 순위를 변경할 수도 있습니다.
-- 이름에 i나 a가 들어가면서 K로 시작하는 직원 정보
SELECT employee_id, last_name
FROM employees
WHERE (last_name LIKE '%i%'
OR last_name LIKE '%a%')
AND last_name LIKE 'K%';
/*
EM_ID LAST_NAME
--------------------------------
100 King
101 Kochhar
*/
-- NOT
-- 부정을 의미합니다.
SELECT employee_id, last_name, salary
FROM employees
WHERE salary NOT BETWEEN 4000 AND 16000;
/*
EM_ID LAST_NAME SALARY
-------------------------------------------------
100 King 24000
101 Kochhar 17000
102 De Haan 17000
141 Rajs 3500
142 Davies 3100
143 Matos 2600
144 Vargas 2500
*/
SELECT employee_id id, last_name, salary
FROM employees
WHERE salary BETWEEN 4000 AND NULL;
-- 결과가 나오지 않습니다.
SELECT employee_id EM_ID, last_name, department_id DP_ID
FROM employees
WHERE department_id IN (60,80,NULL);
'''
= 같은 의미입니다.\
WHERE department_id=60
OR department_id=80
OR department_id=NULL;
'''
/*
EM_ID LAST_NAME DP_ID
------------------------------------------
103 Hunold 60
104 Ernst 60
107 Lorentz 60
149 Zlotkey 80
174 Abel 80
176 Taylor 80
*/
SELECT employee_id EM_ID, last_name, department_id DP_ID
FROM employees
WHERE department_id=60
OR department_id=80
OR department_id=NULL;
SELECT employee_id EM_ID, last_name, department_id DP_ID
FROM employees
WHERE department_id NOT IN (60,80,NULL);
SELECT employee_id EM_ID, last_name, department_id DP_ID
FROM employees
WHERE department_id <> 60
OR department_id <> 80
OR department_id <> NULL;
SELECT employee_id EM_ID, last_name, department_id DP_ID
FROM employees
WHERE department_id IN (60,80)
OR department_id IS NOT NULL;
-- 연산자 우선순위
-- 산술 > 연결 > 비교 > IS NULL, LIKE, IN > BETWEEN > NOT 논리 조건 > AND 논리 조건 > OR 논리 조건
'Oracle Database' 카테고리의 다른 글
Database_14_문자 함수_DUAL, LOWER, UPPER, INITCAP (0) | 2023.07.17 |
---|---|
Database_13_데이터 제한 및 관리_SET, UNION, UNION ALL, INTERSECT, MINUS, ORDER BY (0) | 2023.07.16 |
Database_11_데이터 제한 및 관리_비교 조건 연산자 (0) | 2023.07.14 |
Database_10_데이터 제한 및 정렬_WHERE 절 (0) | 2023.07.13 |
Database_09_오라클 데이터베이스 sqldeveloper SQL 자격 검증 시험 대비 실습 환경 설정 (0) | 2023.07.11 |