๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ORACLE/SQL

[ORACLE] WHERE ๋ช…๋ น์–ด ๊ธฐ๋ณธ ์‚ฌ์šฉ :: ๋งˆ์ด์ž๋ชฝ

by ๐ŸŒปโ™š 2019. 9. 8.

ORACLE WHERE ๋ช…๋ น์–ด ๊ธฐ๋ณธ ์‚ฌ์šฉ

SELECT๋ฌธ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š”๋ฐ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด WHERE ๋ช…๋ น์–ด๋Š” SELECTํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ•˜๋Š” ์กฐ๊ฑด์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.  WHERE์ ˆ์„ ์ž˜ ์‚ฌ์šฉํ•˜๋ฉด ๋งŽ์€ ๋ฐ์ดํ„ฐ ์ค‘ ๋”ฑ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๊ฒ€์ƒ‰ํ•˜์—ฌ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•ด๋‹น๊ธ€์—์„œ๋Š” Oracle 11g ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  HR ๊ณ„์ •์˜ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์Šตํ–ˆ์Šต๋‹ˆ๋‹ค.


๊ธฐ๋ณธ WHERE ๋ช…๋ น ํ…์ŠคํŠธ ์กฐ๊ฑด

ํŠน์ • ํ…์ŠคํŠธํ˜•ํƒœ์˜ ํ•„๋“œ์— ์›ํ•˜๋Š” ๊ฐ’์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ณ ์žํ• ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด๋œ๋‹ค.
์กฐ๊ฑด์€ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆซ์ž, ๋ฌธ์ž, ๋‚ ์งœ ๋“ฑ์„ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฐธ๊ณ ๋กœ ๋ณ„์นญ์„ ์‚ฌ์šฉํ• ๋•Œ๋Š” ํฐ๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ, ๊ฐ’์„ ๋‚˜ํƒ€๋‚ผ๋•Œ๋Š” ์ž‘์€ ๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•ด์ค˜์•ผ ํ•œ๋‹ค.
๋ช…๋ น : SELECT [ํ•„๋“œ1], [ํ•„๋“œ2] ... FROM [ํ…Œ์ด๋ธ”] WHERE [์กฐ๊ฑด];

QUERY

EMPLOYEES ํ…Œ์ด๋ธ”์—์„œ EMPLOYEE_ID, LAST_NAME, FIRST_NAME ํ•„๋“œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ LAST_NAME ์ด 'King'์ธ ์กฐ๊ฑด์œผ๋กœ ์ฝ์–ด์˜จ๋‹ค.
1
SELECT EMPLOYEE_ID, LAST_NAME, FIRST_NAME FROM EMPLOYEES WHERE LAST_NAME = 'King';
cs


RESULT




NULL ์กฐ๊ฑด ์ฒ˜๋ฆฌ

๋ฐ์ดํ„ฐ ์ค‘ NULL์ธ ๊ฐ’, NULL์ด ์•„๋‹Œ๊ฐ’ ์ฝ์–ด์˜ค๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. NULL์ธ ๊ฒฝ์šฐ '=' ํ˜น์€ '<>'๋กœ ์กฐ๊ฑด์„ ์ž‘์„ฑํ•˜๋ฉด ์•„๋ฌด๋ฐ์ดํ„ฐ๋„ ๋‚˜์˜ค์ง€ ์•Š์„๊ฒƒ์ด๋‹ค.

๋ช…๋ น : SELECT [ํ•„๋“œ1], [ํ•„๋“œ2] ... FROM [ํ…Œ์ด๋ธ”] WHERE [ํ•„๋“œ] IS NULL/NOT NULL;


QUERY

EMPLOYEES ํ…Œ์ด๋ธ”์—์„œ COMMISSION_PCT ๊ฐ€ NULL์ธ/NULL์ด ์•„๋‹Œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜จ๋‹ค.
1
2
SELECT FIRST_NAME, LAST_NAME, COMMISSION_PCT FROM EMPLOYEES WHERE COMMISSION_PCT IS NULL;
SELECT FIRST_NAME, LAST_NAME, COMMISSION_PCT FROM EMPLOYEES WHERE COMMISSION_PCT IS NOT NULL;
cs


RESULT




AND ์กฐ๊ฑด

AND์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์กฐ๊ฑด์˜ ๊ต์ง‘ํ•ฉ๋˜๋Š” ๋ถ€๋ถ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š”๋‹ค.

๋ช…๋ น : SELECT [ํ•„๋“œ1], [ํ•„๋“œ2] ... FROM [ํ…Œ์ด๋ธ”] WHERE [์กฐ๊ฑด1] AND [์กฐ๊ฑด2] AND ...;


QUERY

EMPLOYEES ํ…Œ์ด๋ธ”์—์„œ SALARY๊ฐ€ 10000์„ ์ดˆ๊ณผํ•˜๊ณ  HIRE_DATE๊ฐ€ 08/01/01 ์ดํ›„์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜จ๋‹ค.
1
SELECT * FROM EMPLOYEES WHERE SALARY > 10000 AND HIRE_DATE >= '08/01/01';
cs


RESULT




OR ์กฐ๊ฑด

OR์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์กฐ๊ฑด์˜ ํ•ฉ์ง‘ํ•ฉ๋˜๋Š” ๋ถ€๋ถ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š”๋‹ค.

๋ช…๋ น : SELECT [ํ•„๋“œ1], [ํ•„๋“œ2] ... FROM [ํ…Œ์ด๋ธ”] WHERE [์กฐ๊ฑด1] OR [์กฐ๊ฑด2] OR ...;


QUERY

EMPLOYEES ํ…Œ์ด๋ธ”์—์„œ DEPARTMENT_ID๊ฐ€ 100 ์ด๊ฑฐ๋‚˜ MANAGER_ID๊ฐ€ 90์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š”๋‹ค.
1
SELECT FIRST_NAME, LAST_NAME, DEPARTMENT_ID FROM EMPLOYEES WHERE DEPARTMENT_ID = 100 OR MANAGER_ID = 90;
cs


RESULT




<> ์—ฐ์‚ฐ์ž & NOT ํ•จ์ˆ˜ ์‚ฌ์šฉ

NULL๊ฐ’์€ IS NOT ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•„๋‹Œ๊ฐ’์„ ์กฐํšŒํ–ˆ๊ณ , ๊ทธ์™ธ ํ…์ŠคํŠธ, ์ˆซ์ž ๋‚ ์งœ ๋“ฑ์˜ ํƒ€์ž… ๋ฐ์ดํ„ฐ๋Š” '<>' ์—ฐ์‚ฐ์ž ํ˜น์€ NOT ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ์•„๋‹Œ๊ฐ’์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ช…๋ น1 : SELECT [ํ•„๋“œ1], [ํ•„๋“œ2] ... FROM [ํ…Œ์ด๋ธ”] WHERE [ํ•„๋“œ] <> [๊ฐ’];

๋ช…๋ น2 : SELECT [ํ•„๋“œ1], [ํ•„๋“œ2] ... FROM [ํ…Œ์ด๋ธ”] WHERE NOT([์กฐ๊ฑด]);

QUERY

๋ช…๋ น1(<>) :  EMPLOYEES ํ…Œ์ด๋ธ”์—์„œ DEPARTMENT_ID๊ฐ€ 100์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ 90์ด ์•„๋‹Œ ๊ฐ’์„ ์ค‘๋ณต์ œ๊ฑฐํ•˜์—ฌ ์ถœ๋ ฅ
๋ช…๋ น2(NOT()) :  EMPLOYEES ํ…Œ์ด๋ธ”์—์„œ DEPARTMENT_ID๊ฐ€ 100, 110 ์ด ์•„๋‹Œ ๊ฐ’์„ ์ค‘๋ณต์ œ๊ฑฐํ•˜์—ฌ ์ถœ๋ ฅ
1
2
3
4
5
--<>
SELECT DISTINCT DEPARTMENT_ID FROM EMPLOYEES WHERE DEPARTMENT_ID <> 100 OR DEPARTMENT_ID <> 90;
 
--NOT
SELECT DISTINCT DEPARTMENT_ID FROM EMPLOYEES WHERE NOT(DEPARTMENT_ID = 100 OR DEPARTMENT_ID = 110);
cs


RESULT

๋ช…๋ น1 ๊ณผ ๋ช…๋ น2์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ์ฒ˜์Œ์—๋Š” ์ด์ƒํ•˜๋‹ค๋Š” ์ƒ๊ฐ์„ ํ• ์ˆ˜ ์žˆ์ง€๋งŒ, ์กฐ๊ฑด์„ ์ž˜ ๋ณด๋ฉด ์ดํ•ด๋ ๊ฒƒ์ด๋‹ค.
๋ช…๋ น1์˜ ๊ฒฝ์šฐ DEPARTMENT_ID๊ฐ€ 100์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ DEPARTMENT_ID๊ฐ€ 90์ด ์•„๋‹Œ ์กฐ๊ฑด์ด๋‹ค.
์ฆ‰, 100์ด ์•„๋‹Œ๊ฒฝ์šฐ์—์„œ 90์„ ํฌํ•จํ•œ ๋ฐ์ดํ„ฐ์™€ 90์ด ์•„๋‹Œ๊ฒฝ์šฐ์—์„œ 100์„ ํฌํ•จํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๊ธฐ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์ถœ๋ ฅ์ด ๋ ๊ฒƒ์ด๋‹ค.

๋ฐ˜๋ฉด ๋ช…๋ น2์˜ ๊ฒฝ์šฐ NOT ํ•จ์ˆ˜๋Š” DEPARTMENT_ID ๊ฐ’์ด 100์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ 110์ด ์•„๋‹Œ ์กฐ๊ฑด์„ ํ•˜๋‚˜์˜ ์กฐ๊ฑด์œผ๋กœ ํŒ๋‹จํ•˜์—ฌ 100๊ณผ 110์ด ์ œ์™ธ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜จ๋‹ค.

๋‘๊ฐ€์ง€ ์กฐ๊ฑด์˜ ์ฐจ์ด์ ์„ ์ž˜ ์•Œ๊ณ  ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.
[##_1N|cfile28.uf@99F53D3A5D74F668215980.png|width="364" height="318" filename="SELECTWHERE

๋Œ“๊ธ€