DB ํ•จ์ˆ˜ ์ •๋ฆฌ

2023. 2. 21. 11:09ใ†DB

์ง‘ํ•ฉ์—ฐ์‚ฐ์ž :

SELECT์ ˆ

UNION

SELECT์ ˆ;

 

SELECT ์ฟผ๋ฆฌ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๋™์‹œ์— ์‹คํ–‰.
์—ฌ๋Ÿฌ ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ™์ด ๋ณด์—ฌ์คŒ.

SELECT์ ˆ ์‚ฌ์ด ์‚ฌ์ด ์—ฌ๋Ÿฌ๋ฒˆ ์“ฐ๊ธฐ ๊ฐ€๋Šฅ.

SELECT EMPNO, ENAME, DEPTNO
FROM EMP
WHERE DEPTNO = 10
UNION --์ฟผ๋ฆฌ๋ฌธ ์—ฐ๊ฒฐ 
SELECT EMPNO, ENAME, DEPTNO
FROM EMP
WHERE DEPTNO = 20;

์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ์ค‘๋ณต ๋ฐ์ดํ„ฐ๋Š” ํ•œ๋ฒˆ๋งŒ ์กฐํšŒ
์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋„ ๋ชจ๋‘ ์กฐํšŒํ•˜๋ ค๋ฉด UNION ALL ์‚ฌ์šฉ

SELECT EMPNO, ENAME, DEPTNO
FROM EMP
WHERE DEPTNO = 10
UNION ALL
SELECT EMPNO, ENAME, DEPTNO
FROM EMP
WHERE DEPTNO = 10;

์ฟผ๋ฆฌ๋ฌธ์˜ ์ปฌ๋Ÿผ ๊ฐœ์ˆ˜ ๋™์ผ, ์ปฌ๋Ÿผ์˜ ์ž๋ฃŒํ˜• ๋™์ผ ํ•ด์•ผ ํ•œ๋‹ค.

์•„๋ž˜ ์ฟผ๋ฆฌ๋ฌธ ์˜ค๋ฅ˜

SELECT EMPNO, ENAME, DEPTNO
FROM EMP
WHERE DEPTNO = 10
UNION --์ฟผ๋ฆฌ๋ฌธ ์—ฐ๊ฒฐ 
SELECT EMPNO, ENAME
FROM EMP
WHERE DEPTNO = 20;

SAL์€ ์ž๋ฃŒํ˜•์ด ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— ์กฐํšŒ๋จ

๊ผญ ๊ฐ™์€ ์ปฌ๋Ÿผ๋ช…์œผ๋กœ ๋งž์ถ”์ง€ ์•Š์•„๋„ ๋œ๋‹ค!

SELECT EMPNO, ENAME, DEPTNO
FROM EMP
WHERE DEPTNO = 10
UNION --์ฟผ๋ฆฌ๋ฌธ ์—ฐ๊ฒฐ 
SELECT EMPNO, ENAME, SAL
FROM EMP
WHERE DEPTNO = 20;

๋”๋ฏธํ…Œ์ด๋ธ” :

์ฟผ๋ฆฌ๋ฌธ ์—ฐ์Šต์„ ์œ„ํ•ด ์˜ค๋ผํด์—์„œ ์ œ๊ณตํ•˜๋Š” ํ…Œ์ด๋ธ”

SELECT 10 * 20
FROM EMP; --๋ฐ์ดํ„ฐ์— ๋“ค์–ด๊ฐ„ ์ˆ˜๋งŒํผ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜์˜ด > ๋ถˆํŽธ >

SELECT 10 * 20, '์ž๋ฐ”'
FROM DUAL; -- DUAL > ์—ฐ์Šต์šฉํ…Œ์ด๋ธ” : ๋”๋ฏธํ…Œ์ด๋ธ”
--๋ฌธ์ž๋„ ๊ฐ€๋Šฅ!

 

๋ฌธ์ž์™€ ๊ด€๋ จ๋œ ํ•จ์ˆ˜ :

*๋ฐฐ์šด ํ•จ์ˆ˜ ๋ณต์Šต

UPPER(์ปฌ๋Ÿผ๋ช…) : ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜
LOWER(์ปฌ๋Ÿผ๋ช…) : ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜
INITCAP(์ปฌ๋Ÿผ๋ช…) : ๋‹จ์–ด์˜ ์ฒซ๊ธ€์ž๋งŒ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜

SELECT 'hello java'
    , UPPER('hello java')
    , LOWER('hello java')
    , INITCAP('hello java')
FROM DUAL;

๋ฌธ์ž์˜ ๊ธธ์ด๋ฅผ ์กฐํšŒํ•˜๋Š” ํ•จ์ˆ˜ :

LENGTH : ๊ธ€์ž์˜ ์ˆ˜

LENHTHB : ๋ฐ”์ดํŠธ ์ˆ˜

SELECT LENGTH('hello java') --๊ธ€์ž ์ˆ˜
    , LENGTHB('hello java')
    , LENGTH('ํ•œ๊ธ€')
    , LENGTHB('ํ•œ๊ธ€')--๋ฐ”์ดํŠธ ์ˆ˜
FROM DUAL;

๋ฌธ์ž์˜ ์ผ๋ถ€๋ฅผ ์ถ”์ถœํ•˜๋Š” ํ•จ์ˆ˜ :

SUBSTR ('๊ธ€์ž', ์ˆœ์„œ์ง€์ •)

SELECT 'HELLO WORLD'
    , SUBSTR('HELLO WORLD', 1, 3) --์ฒซ๋ฒˆ์งธ ๊ธ€์ž๋ถ€ํ„ฐ ๊ธ€์ž 3๊ฐœ
    , SUBSTR('HELLO WORLD', 2, 4) --๋‘๋ฒˆ์งธ ๊ธ€์ž๋ถ€ํ„ฐ ๊ธ€์ž 4๊ฐœ
    , SUBSTR('HELLO WORLD', 1) --1๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๊ธ€์ž ๋‹ค ์กฐํšŒ
FROM DUAL;

๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ํ•จ์ˆ˜ :

CONCAT , ||

CONCAT ์‚ฌ์šฉ์€ ๋ฒˆ๊ฑฐ๋กœ์›Œ ||์„ ์‚ฌ์šฉํ•˜์—ฌ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ์”€.

SELECT CONCAT('HELLO', 'WORLD')
    , CONCAT('HELLO', CONCAT('WORLD', 'ORACLE'))
    , 'HELLO' || 'WORLD' || 'ORACLE'
FROM DUAL;

๋ฌธ์ž์—ด ๋Œ€์ฒด ํ•จ์ˆ˜ :

REPLACE ('๋ฌธ์ž์—ด', '๋ณ€๊ฒฝํ•  ํ•ด๋‹น ๊ธ€์ž', 'ํ•ด๋‹น ๊ธ€์ž๋ฅผ ๋Œ€์ฒดํ•  ๊ธ€์ž')

SELECT '010-1111-2222'
    , REPLACE('010-1111-2222', '-', ' ')
    , REPLACE('010-1111-2222', '-', '')
FROM DUAL;

๋นˆ ๊ณต๊ฐ„์„ ํŠน์ • ๋ฌธ์ž๋กœ ์ฑ„์šฐ๋Š” ํ•จ์ˆ˜ : 

LPAD('๋ฌธ์ž์—ด', ๊ธ€์ž์ˆ˜, '๋นˆ๊ณต๊ฐ„์„ ๋ญ๋กœ ์ฑ„์šธ์ง€')

๋ฌธ์ž์—ด์ด ๊ธ€์ž์ˆ˜๋ณด๋‹ค ์ž‘์œผ๋ฉด ๋นˆ๊ณต๊ฐ„์ด ์ƒ๊ธฐ๊ณ  > ์™ผ์ชฝ๋ถ€ํ„ฐ ๊ทธ ๊ณต๊ฐ„์„ ์ฑ„์šฐ๋Š” ๊ฒƒ.

RPAD('๋ฌธ์ž์—ด', ๊ธ€์ž์ˆ˜, '๋นˆ๊ณต๊ฐ„์„ ๋ญ๋กœ ์ฑ„์šธ์ง€')

์˜ค๋ฅธ์ชฝ๋ถ€ํ„ฐ ๊ณต๊ฐ„ ์ฑ„์›€.

SELECT 'ORACLE'
    , LPAD('OACLE', 10, '#')
    , RPAD('OACLE', 10, '!')
FROM DUAL;

๊ณต๋ฐฑ์„ ์ œ๊ฑฐํ•˜๋Š” ํ•จ์ˆ˜ :

LTRIM('๋ฌธ์ž์—ด')

RTRIM('๋ฌธ์ž์—ด')

TRIM('๋ฌธ์ž์—ด')

SELECT LTRIM('   ORACLE   ') --์™ผ์ชฝ ์—ฌ๋ฐฑ ์ œ๊ฑฐ
    , RTRIM('   ORACLE   ') --์˜ค๋ฅธ์ชฝ ์—ฌ๋ฐฑ ์ œ๊ฑฐ
    , TRIM('   ORACLE   ') --์–‘์ชฝ ์—ฌ๋ฐฑ ์ œ๊ฑฐ
FROM DUAL;

์ˆซ์ž์™€ ๊ด€๋ จ๋œ ํ•จ์ˆ˜

๋ฐ˜์˜ฌ๋ฆผ ํ•จ์ˆ˜  : 

ROUND(์ˆซ์ž)

ROUND(์ˆซ์ž, ํ‘œ์‹œํ•˜๊ณ  ์‹ถ์€ ์†Œ์ˆ˜์  ์ž๋ฆฟ์ˆ˜)

SELECT 123.456
    , ROUND(123.456) --์†Œ์ˆ˜์  ์ฒซ๋ฒˆ์งธ ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผ
    , ROUND(123.456, 1) --๋ฐ˜์˜ฌ๋ฆผํ•ด์„œ ์†Œ์ˆ˜์  ์ฒซ๋ฒˆ์งธ์ž๋ฆฌ๊นŒ์ง€ ํ‘œ์‹œ ์ฆ‰, ๋‘๋ฒˆ์งธ ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผ
    , ROUND(123.456, 2) 
FROM DUAL;

์˜ฌ๋ฆผ ํ•จ์ˆ˜ : 

CEIL(์ˆซ์ž)

๋ฒ„๋ฆผ ํ•จ์ˆ˜ : 

FLOOR(์ˆซ์ž)

SELECT 123.456
    , CEIL(123.456) 
    , FLOOR(123.456)
FROM DUAL;

 

๋‚˜๋จธ์ง€ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜ :

MOD(์ˆซ์ž, ์ˆซ์ž)

*์ž๋ฐ”์—์„œ๋Š” %

SELECT MOD(10, 4) FROM DUAL;

โ˜…โ˜…ํ˜• ๋ณ€ํ™˜ ํ•จ์ˆ˜

์ˆซ์ž <-> ๋ฌธ์ž <-> ๋‚ ์งœ
์กฐ๊ฑด์—์„œ ๋‚ ์งœ๋ฅผ ๋น„๊ตํ•  ๋•Œ๋Š” ์ˆซ์ž๋Š” ์•ˆ๋˜๊ณ  ๋ฌธ์ž๋Š” ๊ฐ€๋Šฅํ•˜๋‹ค.
๋‹ค๋งŒ, ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ๋‚ ์งœ ํƒ€์ž…์œผ๋กœ ํ˜• ๋ณ€ํ™˜ ํ›„ ๋น„๊ต๋ฅผ ํ•˜๋Š” ๊ฒŒ ์ ์ ˆ!

--์—ฐ์Šต
--์ž…์‚ฌ์ผ์ด 07/03/01์ธ ์‚ฌ์›์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์กฐํšŒ
SELECT * 
FROM EMP
WHERE HIREDATE = '20070301'; --๋ฌธ์ž๋กœ ๋น„๊ต ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์•„๋‹˜.
--WHERE HIREDATE = '07/03/01'

--2005๋…„ 1์›” 1์ผ ์ดํ›„๋กœ ์ž…์‚ฌํ•œ ์‚ฌ์›์˜ ๋ชจ๋“  ์ •๋ณด ์กฐํšŒ
SELECT *
FROM EMP
WHERE HIREDATE >= '20050101'; --์กฐํšŒ ๊ฐ€๋Šฅํ•˜๋‚˜ ์ž๋ฃŒํ˜•์ด ์•ˆ ๋งž์Œ

ํ˜• ๋ณ€ํ™˜ ์ •์„ ๋ฐฉ๋ฒ• : 

- ๋‘˜ ๋‹ค ๋‚ ์งœ๋กœ ๋ณ€ํ™˜

SELECT *
FROM EMP
WHERE HIREDATE >= TO_DATE('20050101')

 

-๋‘˜ ๋‹ค ๋ฌธ์ž๋กœ ๋ณ€ํ™˜

--์‹œ,๋ถ„,์ดˆ๊นŒ์ง€ ๊ฐ™๊ฒŒ ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ
SELECT *
FROM EMP
WHERE TO_CHAR(HIREDATE, 'YYYYMMDDHH24MISS') >= ('20050101101010') 
--์‹œ,๋ถ„,์ดˆ ์ž…๋ ฅํ•˜๊ณ  ๋‚ด๊ฐ€ ์ž…๋ ฅํ•œ ๊ฒƒ๊ณผ ๋˜‘๊ฐ™์ด ๋‚ ์งœ๋ฅผ ๋ฌธ์ž๋กœ ๋งž์ถฐ์คŒ.

 

โ˜…์ˆซ์ž> ๋ฌธ์ž, ๋ฌธ์ž>์ˆซ์ž

*์ˆซ์ž๋Š” ์™ผ์ชฝ ์ •๋ ฌ ๋ฌธ์ž๋Š” ์˜ค๋ฅธ์ชฝ์— ์ •๋ ฌ๋จ. > ๋‹ค์‹œ ํ™•์ธ

TO_CHAR(๋ฌธ์ž๋กœ ๋ฐ”๊ฟ€ ์ˆซ์ž)

TO_NUMBER(์ˆซ์ž๋กœ ๋ฐ”๊ฟ€ ๋ฌธ์ž)

SELECT 1001
    , TO_CHAR(1001) 
    , '1001'
    , TO_NUMBER('1001')
FROM DUAL;

โ˜…๋‚ ์งœ > ๋ฌธ์ž, ๋ฌธ์ž > ๋‚ ์งœ ํ˜• ๋ณ€ํ™˜

- ๋‚ ์งœ๋ฅผ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ :

TO_CHAR(๋‚ ์งœ ์ž…๋ ฅ, ๋‚ ์งœ๋ฅผ ์–ด๋–ป๊ฒŒ ํ‘œ์‹œํ•  ๊ฒƒ์ธ์ง€)

๋‚ ์งœ ์ž…๋ ฅํ•˜๋Š” ๊ณณ์— ๋ฌธ์ž ๋„ฃ์œผ๋ฉด ์•ˆ ๋จ!

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD')
    , TO_CHAR(SYSDATE, 'YYYY')
    , TO_CHAR(SYSDATE, 'HH24:MI:SS') --์‹œ๊ฐ„๋งŒ ๋ฝ‘๊ธฐ๋„ ๊ฐ€๋Šฅ
    , TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') --๊ธฐํ˜ธ ์ƒ๋žตํ•ด๋„ ๊ฐ€๋Šฅ
    , TO_CHAR(SYSDATE, 'YYYY/MM/DD')
    , TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') --๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํ‘œํ˜„ ๋ฐฉ๋ฒ•
FROM DUAL;

--์—ฐ์Šต
--์˜ค๋Š˜ ๋‚ ์งœ๋ฅผ '2023๋…„ 02์›” 21์ผ'๋กœ ์ถœ๋ ฅ
SELECT TO_CHAR(SYSDATE, 'YYYY') ||'๋…„ '||
    TO_CHAR(SYSDATE, 'MM') ||'์›” '||
    TO_CHAR(SYSDATE, 'DD') ||'์ผ' AS ์˜ค๋Š˜๋‚ ์งœ --์ปฌ๋Ÿผ๋ช… ๊ธธ์–ด์ง ๋ณ„์นญ
FROM DUAL;

- ๋ฌธ์ž๋ฅผ ๋‚ ์งœ๋กœ ๋ณ€ํ™˜ : 

TO_DATE('๋ณ€๊ฒฝํ•  ๊ธ€์ž')

SELECT TO_DATE('20230221')
FROM DUAL;

์—ฐ์Šต

ํ…Œ์ด๋ธ” ๋ฐ์ดํŠธ ํ…Œ์ŠคํŠธ ์ƒ์„ฑ

CREATE TABLE DATE_TEST (
    NUM NUMBER PRIMARY KEY
    , MY_DATE DATE
);

๋ฐ์ดํ„ฐ ์‚ฝ์ž…

INSERT INTO DATE_TEST VALUES(1, SYSDATE);
INSERT INTO DATE_TEST VALUES(2, '20230221');
INSERT INTO DATE_TEST VALUES(3, '20230221101010'); --DATE ํƒ€์ž…์— ๋ฌธ์ž๋ฅผ ๋„ฃ์œผ๋ฉด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์‹œ๊ฐ„ ์ž…๋ ฅ > ์˜ค๋ฅ˜

1ํ–‰ 2ํ–‰์€ ์‚ฝ์ž… ๊ฐ€๋Šฅํ•˜๋‚˜ 3ํ–‰ ์˜ค๋ฅ˜

์•„๋ž˜์ฒ˜๋Ÿผ์€ ๊ฐ€๋Šฅ

SELECT NUM, MY_DATE
    , TO_CHAR(MY_DATE, 'YYYY-MM-DD')
    , TO_CHAR(MY_DATE, 'YYYY-MM-DD HH24:MI:SS')
FROM DATE_TEST;