SQL 2. 데이터 μ œν•œ 및 μ •λ ¬ (WHERE/ORDER BY)

2023. 9. 4. 10:35
728x90
SELECT * | [DISTINCT] column | expreession [alias], ...
FROM table
[WHERE condition(s)];

🀠 데이터 μ œν•œμ€ WHERE 절 μ‚¬μš©

WHERE μ ˆμ„ μ‚¬μš©ν•˜μ—¬ λ°˜ν™˜λ˜λŠ” ν–‰μ„ μ œν•œ. (FROM절 λ‹€μŒ)
condition(s) : μ—΄ μ΄λ¦„, ν‘œν˜„식, μƒμˆ˜ λ° λΉ„ꡐ μ—°μ‚°μžλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€. μ‘°κ±΄μ€ ν•˜λ‚˜μ΄μƒμ˜ ν‘œν˜„식과 λ…Όλ¦¬(λΆ€μšΈ) μ—°μ‚°μžμ˜ μ‘°ν•©μ„ μ§€μ •ν•˜κ³  TRUE, FALSE, UNKNOWN κ°’을 λ°˜ν™˜ν•©λ‹ˆλ‹€.


1. λ¬Έμžμ—΄ 및 λ‚ μ§œ

' '둜 λ‘˜λŸ¬μŒˆ. 
문자 κ°’은 λŒ€/μ†Œλ¬Έμž κ΅¬λΆ„
λ‚ μ§œ κ°’은 ν˜•식 κ΅¬λΆ„ (DD-MON-RR)

SELECT last_name, job_id, department_id
FROM employees
WHERE last_name = 'Whalen'; // last_name이 'Whalen'인 μ‚¬λžŒμœΌλ‘œ μ œν•œ

SELECT last_name
FROM employees
WHERE hire_date = '17-FEB-96'; 
//μ—λŸ¬ >> ORA-01858: a non-numeric character was found where a numeric was expected
//κ·ΈλŸ¬λ―€λ‘œ '96-02-17'둜 바꿔야함.


- λ‚ μ§œ ν˜•식을 μ‘°νšŒν•˜λŠ” λ°©λ²•

 >> sys_date ν•¨μˆ˜λ‘œ 쑰회 κ°€λŠ₯ν•˜λ‹€. (dualμ΄λΌλŠ” 더미데이터 ν™œμš©)

SELECT sysdate
from dual;

//κ²°κ³Ό >>SYSDATE 23/07/18(λ…„/μ›”/일) >> 이것이 λ‚ μ§œ ν˜•μ‹


2. 비ꡐ μ—°μ‚°μž

 

- IN μ—°μ‚°μž : κ°’ 리슀트 쀑 μΌμΉ˜ν•˜λŠ” κ°’ 검색

SELECT employee_id, last_name, salary, manager_id
FROM employees
WHERE manager_id IN (100,101,201);
//λ§€λ‹ˆμ €μ•„μ΄λ””κ°€ 100μ΄κ±°λ‚˜ 101μ΄κ±°λ‚˜ 201인 것

- LIKE μ—°μ‚°μž >>  νŒ¨ν„΄ 일치 확인 : μœ νš¨ν•œ 검색 λ¬Έμžμ—΄ κ°’μ˜ μ™€μΌλ“œμΉ΄λ“œ 검색을 μˆ˜ν–‰.

  • %λŠ” 0개 μ΄μƒμ˜ 문자
  • _λŠ” ν•˜λ‚˜μ˜ 문자
SELECT first_name
FROM employees
WHERE first_name LIKE 'S%' ; // μ„±μ˜ 첫 κΈ€μžκ°€ S인 μ‚¬λžŒ

SELECT last_name
FROM employees
WHERE last_name LIKE '\_o%' ; // μ„±μ˜ 쀑간 κΈ€μžμ— oκ°€ μžˆλŠ” μ‚¬λžŒ

+ ESCAPE μ‹λ³„μž : μ‹€μ œ %, _기호λ₯Ό 검색할 수 있음.

SELECT employee_id, last_name, job_id
FROM employees
WHERE job_id LIKE '%SA\_%' ESCAPE '\';

- IS NULL μ—°μ‚°μž : nullν…ŒμŠ€νŠΈ + AND, OR

SELECT last_name, manager_id
FROM employees
WHERE manager_id IS NULL
AND job_id LIKE '%MAN%';

SELECT last_name, manager_id
FROM employees
WHERE salary >= 10000
OR job_id LIKE '%MAN%';

- NOT μ—°μ‚°μž μ‚¬μš©

SELECT last_name, job_id
FROM employees
WHERE job_id NOT IN ('IT_PROG', 'ST_CLERK'); //job_idκ°€ 'IT_PROG' ν˜Ήμ€ 'ST_CLERK'κ°€ μ•„λ‹Œ 것


3. μš°μ„  μˆœμœ„ κ·œμΉ™

* κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•˜μ—¬ μš°μ„ μˆœμœ„ κ·œμΉ™μ„ μž¬μ •μ˜

 

4.ORDER BY 절 μ‚¬μš©

: ORDER BYμ ˆμ€ SELECT문의 맨 λ§ˆμ§€λ§‰μ— 옴
ASC : μ˜€λ¦„μ°¨μˆœ, κΈ°λ³Έκ°’
DESC: λ‚΄λ¦Όμ°¨μˆœ

SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date; //κΈ°λ³Έ μ˜€λ¦„μ°¨μˆœ

SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date DESC; //λ‚΄λ¦Όμ°¨μˆœ

SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY 3; //μ„Έλ²ˆμ§Έ (department_id)

SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY department_id, salary DESC; //λΆ€μ„œμ•„μ΄λ”” μ˜€λ¦„μ°¨μˆœ, μ›”κΈ‰ λ‚΄λ¦Όμ°¨μˆœ


5. μΉ˜ν™˜ λ³€μˆ˜ μ‚¬μš©

: & 및 && μΉ˜ν™˜μ„ μ‚¬μš©ν•˜μ—¬ 값을 μž„μ‹œλ‘œ μ €μž₯. λ³€μˆ˜ μ•žμ— &λ₯Ό 뢙이면 μœ μ €κ°€ 값을 μž…λ ₯ν•˜λ„λ‘ ν•  수 있음.
λ‚ μ§œ κ°’ 및 문자 값에 λŒ€ν•΄ ' ' μ‚¬μš©

SELECT employee_id, last_name, salary, department_id
FROM employees
ORDER BY employee_id = &employee_num; //μž…λ ₯κ°’ λ°›κΈ°

SELECT employee_id, last_name, salary, department_id
FROM employees
ORDER BY job_id = '&job_title';

 

- μ—΄ μ΄λ¦„, ν‘œν˜„식 λ° ν…μŠ€νŠΈ μ§€μ •

SELECT employee_id, last_name, &column_name
FROM employees
WHERE &condition
ORDER BY &order_column;


- μœ μ €κ°€ 맀번 값을 μž…λ ₯ν•  ν•„μš” 없이 λ³€μˆ˜ 값을 μž¬μ‚¬μš©ν•˜λ €λŠ” 경우 && μ‚¬μš©.

SELECT employee_id, last_name, &&column_name
FROM employees
ORDER BY &column_name;


DEFINE λͺ…λ Ήμ–΄ μ‚¬μš©

DEFINEλͺ…λ Ή : λ³€μˆ˜λ₯Ό μƒμ„±ν•˜κ³  값을 ν• λ‹Ή.
UNDEFINEλͺ…λ Ή : λ³€μˆ˜ μ œκ±°.

DEFINE employee_num = 200
SELECT employee_id, last_name, salary, department_id
FROM employees
WHERE employee_id = &employee_num;
UNDEFINE employee_num


VERIFY λͺ…λ Ήμ–΄ μ‚¬μš©

: SET VERIFY ON - μΉ˜ν™˜ λ³€μˆ˜λ₯Ό κ°’μœΌλ‘œ λ°”κΎΈκΈ° 전후에 μΉ˜ν™˜ λ³€μˆ˜μ˜ ν‘œμ‹œλ₯Ό ν† κΈ€

SET VERIFY ON
SELECT employee_id, last_name, salary
FROM employees
WHERE employee_id = &employee_num;

set verify on
set verify off

728x90

BELATED ARTICLES

more