SQL 3. ๋จ์ผ ํ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฐ๊ณผ๋ฌผ ๋ณ๊ฒฝ
๐๋ฌธ์ ํจ์
1. ๋์๋ฌธ์ ๋ณํ ํจ์
SELECT employee_id, last_name
FROM employees
WHERE UPPER(last_name) = 'higgins';
SELECT 'The job id for '||UPPER(last_name)||' is '||LOWER(job_id) AS "EMPLOYEE DETAILS"
FROM employees;
2. ๋ฌธ์ ์กฐ์ ํจ์
SELECT employee_id, CONCAT(first_name, last_name) NAME,
job_id, LENGTH(last_name), INSTR(last_name, 'a') "Contains 'a'?"
FROM employees
WHERE SUBSTR(job_id, -1, 1) = 'n';
๐ข์ซ์ ํจ์
round(ab.cde, 2)-> ์์์ ์
์งธ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผ ab.cd
round(ab.cde, 0)-> ์์์ ์ฒซ์งธ์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผ ab
round(ab.cde, -1) ->์ผ์์๋ฆฌ์์ ๋ฐ์ฌ๋ฆผ a0
trunc(ab.cde, 2) -> ์์์ ์
์งธ์๋ฆฌ์์ ๋ฒ๋ฆผ ab.cd
trunc(ab.cde) -> ์์์ ์ฒซ์งธ์๋ฆฌ์์ ๋ฒ๋ฆผ ab
trunc((ab.cde, -1) -> ์ผ์ ์๋ฆฌ์์ ๋ฒ๋ฆผ a0
mod(salary, 5000) -> salary๋ฅผ 5000์ผ๋ก ๋๋ ๋๋จธ์ง
๐๋ ์ง ํจ์
- ์ค๋ผํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ด๋ถ ์ซ์ ํ์(์ธ๊ธฐ-๋
-์-์ผ-์-๋ถ-์ด)์ผ๋ก ๋ ์ง ์ ์ฅ
- ๊ธฐ๋ณธ ๋ ์ง ํ์ ๋ฐ ์
๋ ฅ ํ์์ DD-MON-RR
1. ๋ ์ง ์ฐ์ฐ
SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKS
FROM employees
WHERE department_id = 90;
2. ๋ ์ง ์กฐ์ ํจ์
ํจ์ | ๊ฒฐ๊ณผ |
MONTHS_BETWEEN (A, B) | ๋ ๋ ์ง ๊ฐ์ ์ ์ |
ADD_MONTHS (A, B) | ๋ ์ง์ ์ ์ถ๊ฐ |
NEXT_DAY (๋ ์ง, ์์ผ) | ์ง์ ๋ ๋ ์ง ๋ค์์ผ๋ก ์ฒ์ ๋ง๋๋ ์์ผ |
LAST_DAY (๋ ์ง) | ์์ ๋ง์ง๋ง ๋ |
ROUND(A, B) | ๋ ์ง ๋ฐ์ฌ๋ฆผ |
TRUNC(A, B) | ๋ ์ง ๋ด๋ฆผ |
SELECT employee_id, hire_date, MONTHS_BETWEEN (SYSDATE, hire_date) "TENURE",
ADD_MONTHS(hire_date, 6) "REVIEW",
NEXT_DAY(hire_date, '๊ธ์์ผ'), LAST_DAY(hire_date)
FROM employees
WHERE MONTHS_BETWEEN (SYSDATE, hire_date) < 200;
ํจ์ | ๊ฒฐ๊ณผ |
SYSDATE = 03/07/25๋ผ๊ณ ๊ฐ์ | |
ROUND(SYSDATE, 'MONTH') | 03/08/01 |
ROUND(SYSDATE, 'YEAR') | 04/01/01 |
TRUNC(SYSDATE, 'MONTH') | 03/07/01 |
TRUNC(SYSDATE, 'YEAR') | 03/01/01 |
๐จ๋ณํ ํจ์
1. ์์์ ๋ฐ์ดํฐ ์ ํ ๋ณํ
: ์ค๋ผํด ์๋ฒ๋ ํํ์์์ ์๋์ผ๋ก(์์์ ์ผ๋ก) ๋ณํ ๊ฐ๋ฅ
์์ค | ๋์ |
VARCHAR2/CHAR | NUMBER |
VARCHAR2/CHAR | DATE |
NUMBER | VARCHAR2/CHAR |
DATE | VARCHAR2/CHAR |
2. ๋ช
์์ ๋ฐ์ดํฐ ์ ํ ๋ณํ
1) ๋ ์ง์ TO_CHARํจ์๋ฅผ ์ฌ์ฉ
TO_CHAR(date, 'format_model')
* format model ํ์๋ชจ๋ธ :
์์ ๋ฐ์ดํ๋ก ๋ฌถ๊ณ , ๋์๋ฌธ์ ๊ตฌ๋ถ
์ผํ๋ก ๋ ์ง ๊ฐ์ ํ์๋ชจ๋ธ๊ณผ ๊ตฌ๋ถ
์์์ ์ ํจํ ๋ ์ง ํ์ ์์๋ฅผ ํฌํจํ ์ ์์.
์ฑ์์ง ๊ณต๋ฐฑ์ ์ ๊ฑฐํ๊ฑฐ๋, ์ ํ0์ ์ ๊ฑฐํ๋ ค๋ฉด ์ฑ์ฐ๊ธฐ๋ชจ๋ fm์ฌ์ฉ(fm ๋ถ์ง์์ผ๋ฉด ๋น์๋ฆฌ์ 0์ด ๋ถ๊ณ , ๋ถ์ผ๋ฉด 0์์ด ์ซ์๋ง ๋์ด)
* ์๊ฐ์์๋ ๋ ์ง์์ ์๊ฐ ๋ถ๋ถ์ ํ์์ง์ (HH24:MI:SS AM -> 15:45:32 PM)
* ๋ฌธ์์ด์ ํฐ ๋ฐ์ดํ๋ก ๋ฌถ์ด ์ถ๊ฐ (DD "of" MONTH -> 12 of OCTOBER)
* ์ซ์ ์ ๋ฏธ์ด๋ ์ซ์๋ฅผ ์์ด์ฒ ์ฐจ๋ก ํ๊ธฐ (ddspth -> fourteenth)
SELECT last_name, TO_CHAR(hire_date, 'fmDdspth "of" Month YYYY fmHH:MI:SS AM') HIREDATE
FROM employees;
2) ์ซ์์ TO_CHARํจ์๋ฅผ ์ฌ์ฉ
: ์ซ์๋ฅผ ๋ฌธ์๋ฐ์ดํฐ ์ ํ์ผ๋ก ๋ณํ
TO_CHAR(number, 'format_model')
3) TO_NUMBER ๋ฐ TO_DATEํจ์ ์ฌ์ฉ
TO_NUMBER(char[, 'format_model'])
TO_DATE(char[, 'format model]')
* fx ์์ ์ : (fix) ๋ชจ์์๋ฅผ ๋๊ฐ์ด ๋ง๋ค์ด์ผํจ. TO_DATE ํจ์์ ๋ฌธ์ ์ธ์ ๋ฐ ๋ ์ง ํ์ ๋ชจ๋ธ์ ๋ํด ์ ํํ ์ผ์น๋ฅผ ์ง์
SELECT last_name, hire_date
FROM employees
WHERE hire_date = TO_DATE('5์ 11, 2004', '**fx**Month DD, YYYY'); // ์ค๋ฅ ๋ฐ์. ๊ณต๋ฐฑ ๋์นธ์ด๊ธฐ ๋๋ฌธ์ ์ผ์นํ์ง ์์
โ์ผ๋ฐ ํจ์
ํจ์ | ์ค๋ช |
NVL(number_column, expr2) NVL(date_column, '95/01/01') NVL(character_column, 'Unavailable') |
null๊ฐ์ expr2 ๊ฐ์ผ๋ก ๋ณํ |
NVL2(expr1, expr2, expr3) | expr1์ด null์ด ์๋๋ฉด expr2๋ฐํ, null์ด๋ฉด expr3 ๋ฐํ |
NULLIF(expr1, expr2) | expr1=expr2 ๊ฐ์ผ๋ฉด null๋ฐํ, ๋ค๋ฅด๋ฉด expr1๋ฐํ(expr1๊ฐ์๋ null์ง์ ํ ์ ์์) |
COALESCE(expr1, expr2, ...exprn) | null์ด ์๋ ๊ฒฝ์ฐ์ ํด๋น ํํ์ ๋ฐํ. (expr1์ด null์ด๋ฉด expr2ํ์ธ, expr2 null์ด ์๋๋ฉด expr2 ๋ฐํ) |
* ๋ฐ์ดํฐ ์ ํ์ ๋ฐ๋์ ์ผ์นํด์ผ ํจ. |
SELECT last_name, salary, commission_pct, COALESCE((salary+(commission_pct\*salary)), salary+2000, salary) "New Salary"
FROM employees;
๐ ์กฐ๊ฑด๋ถ ํํ์ (IF-THEN-ELSE๋ ผ๋ฆฌ)
- CASE์
SELECT last_name, job_id, salary,
CASE job_id WHEN 'IT_PROG' THEN 1.10*salary
WHEN 'ST_CLERK' THEN 1.15*salary
WHEN 'SA_REP' THEN 1.20*salary
ELSE salary END "Revised_Salary"
FROM employees;
- DECODE ํจ์
SELECT last_name, salary
DECODE (TRUNC(salary/2000, 0),
0, 0.00,
1, 0.09,
2, 0.20,
3, 0.30,
0.45) TAX_RATE
FROM employees
WHERE department_id = 80;
'Programming > SQL, Oracle' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
SQL 4. ๊ทธ๋ฃน ํจ์๋ฅผ ์ฌ์ฉํ ์ง๊ณ ๋ฐ์ดํฐ ๋ณด๊ณ (0) | 2023.10.12 |
---|---|
SQL 2. ๋ฐ์ดํฐ ์ ํ ๋ฐ ์ ๋ ฌ (WHERE/ORDER BY) (0) | 2023.09.04 |
SQL 1. SELECT๋ฌธ์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ๊ฒ์ (0) | 2023.08.22 |
์ค๋ผํด ๋ฐ์ดํฐ๋ฒ ์ด์ค (0) | 2023.08.22 |
SQL*plus (2) | 2023.08.21 |