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'์ธ ์กฐ๊ฑด์ผ๋ก ์ฝ์ด์จ๋ค.
| 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์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์จ๋ค.
| 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 ์ดํ์ธ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์จ๋ค.
| 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์ธ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋๋ค.
| 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 ์ด ์๋ ๊ฐ์ ์ค๋ณต์ ๊ฑฐํ์ฌ ์ถ๋ ฅ
| --<> 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 |
๋๊ธ