๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์ด๋ก /DB

[๋ฌด์กฐ๊ฑด ๋”ฐ๋ผํ•ด๋ณด๊ธฐ]DML ๊ธฐ๋ณธ์ฟผ๋ฆฌ๋ฌธ, ์—ฐ์‚ฐ์ž, ๋น„๊ต ,NVL

by 6161990 2021. 5. 25.

๐Ÿ“Œ DML(Data Manipulation Language(๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด))

  • SELECT : ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ช…๋ น๋ฌธ , ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์ด๋‚˜ ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ

๐Ÿ“ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ์ปฌ๋Ÿผ : SELECT [*] FROM [ํ…Œ์ด๋ธ”๋ช…]

-- [๊ฒŒ์‹œํŒ]์˜ ๋ชจ๋“ (*) ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ

SELECT * FROM [BOARD];

20210507122624

๐Ÿ“ํ…Œ์ด๋ธ”์˜ ํŠน์ • ์ปฌ๋Ÿผ : SELECT [๊ฐ€์ ธ์˜ฌ ์ปฌ๋Ÿผ๋ช…] FROM [ํ…Œ์ด๋ธ”๋ช…]

--ํŠน์ • ์ปฌ๋Ÿผ์˜ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ
SELECT [WRITER] FROM [BOARD];
SELECT [WRITER], SUBJECT FROM [BOARD];

20210507130128

 

 

๐Ÿ“ DML ์—ฐ์‚ฐ : SELECT [์—ฐ์‚ฐํ•  ์ปฌ๋Ÿผ1 (+,-,*,/) ์—ฐ์‚ฐํ•  ์ปฌ๋Ÿผ2)] FROM [ํ…Œ์ด๋ธ”๋ช…]

-- ๊ฐ ์‚ฌ์›๋“ค์˜ ๊ธ‰์—ฌ์•ก๊ณผ ๊ธ‰์—ฌ์•ก์—์„œ 1000์„ ๋”ํ•œ ๊ฐ’, 200์„ ๋บ€ ๊ฐ’ ๋“ฑ ์‚ฐ์ˆ ์—ฐ์‚ฐ
SELECT SAL, SAL +1000, SAL- 200, SAL *2, SAL/2  FROM EMP;

20210507125507

 

 

๐Ÿ“ DML ์—ฐ์‚ฐ NULL ๊ฐ’ ์ฒ˜๋ฆฌ

-- ๊ฐ ์‚ฌ์›์˜ ๊ธ‰์—ฌ์•ก, ์ปค๋ฏธ์…˜, ๊ธ‰์—ฌ+ ์ปค๋ฏธ์…˜ ์•ก์ˆ˜ ์‚ฐ์ˆ ์—ฐ์‚ฐ
SELECT SAL, COMM, SAL+COMM  FROM EMP;

20210507125615

 

 

๐Ÿ“ข NVL์˜ ์ด์šฉ

๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ฒŒ ๋˜๋ฉด row ๋‹จ์œ„๋กœ ์ €์žฅ์ด ๋œ๋‹ค. ์ผ๋ถ€ ์ปฌ๋Ÿผ์€ ๊ฐ’์„ ์ €์žฅํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ๋•Œ๋Š” NULL ๊ฐ’์ด ๋“ค์–ด๊ฐ„๋‹ค. NULL์€ '๋ฌดํ•œ๋Œ€' ๋˜๋Š” '๋ฌด์˜๋ฏธ'์˜ ๊ฐ’์„ ๋œปํ•œ๋‹ค. ๋ณดํ†ต ์ง€๊ธˆ ๋‹น์žฅ ๋„ฃ์„ ๊ฐ’์ด ์—†์„ ๋•Œ ์ด์šฉํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์—ฐ์‚ฐ์‹œ ์ฃผ์˜ํ•  ์ ์€ ์–ด๋–ค ๊ฐ’๊ณผ NULL์„ ์—ฐ์‚ฐํ•˜๋ฉด ๊ฒฐ๊ณผ๋Š” NULL์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

๋”ฐ๋ผ์„œ ์—ฐ์‚ฐ์ด ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์€ ๊ฒฝ์šฐ NULL์„ 0์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ, NVL ์„ ์ด์šฉํ•œ๋‹ค.

-- NVL์„ ์ด์šฉํ•œ ์ปค๋ฏธ์…˜, ๊ธ‰์—ฌ+ ์ปค๋ฏธ์…˜ ์•ก์ˆ˜ ์‚ฐ์ˆ ์—ฐ์‚ฐ 
SELECT SAL, NVL(COMM,0), SAL+NVL(COMM,0) FROM EMP;
=> NVL(COMM,0) : 'COMM' ์ปฌ๋Ÿผ์— NULL์ด ๋“ค์–ด๊ฐ€ ์žˆ์œผ๋ฉด '0'์„ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค 

20210507130821

 

 

๐Ÿ“ ConCat ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ž์—ด๊ณผ ์ปฌ๋Ÿผ์˜ ๊ฐ’์„ ์—ฐ๊ฒฐํ•˜์—ฌ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ

-- ๋ฌธ์ž์—ด || ์ปฌ๋Ÿผ || ๋ฌธ์ž์—ด || ์ปฌ๋Ÿผ
--์‚ฌ์›๋“ค์˜ ์ด๋ฆ„๊ณผ ์ง๋ฌด๋ฅผ ๋‹ค์Œ ์–‘์‹์œผ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค.
-- 000์‚ฌ์›์˜ ๋‹ด๋‹น ์ง๋ฌด๋Š” XXX์ž…๋‹ˆ๋‹ค.
SELECT ENAME || '์‚ฌ์›์˜ ๋‹ด๋‹น ์ง๋ฌด๋Š” ' || JOB || '์ž…๋‹ˆ๋‹ค' FROM EMP;

20210507131250

 

 

๐Ÿ“ Distinct๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€์ ธ์˜จ ๋กœ์šฐ๋“ค ์ค‘ ์ค‘๋ณต๋œ ๋กœ์šฐ๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ

-- SELECT DISTINCT [์ปฌ๋Ÿผ๋ช…] FROM [ํ…Œ์ด๋ธ”๋ช…]
--์‚ฌ์›๋“ค์ด ๊ทผ๋ฌดํ•˜๊ณ  ์žˆ๋Š” ๊ทผ๋ฌด ๋ถ€์„œ์˜ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
SELECT DEPTNO FROM EMP;
SELECT DISTINCT DEPTNO FROM EMP;

20210507131445

)

 

 

20210507131436

๐Ÿ“ ์กฐ๊ฑด์ ˆ , SQL ๋ฌธ์€ ํ…Œ์ด๋ธ” ๋‚ด์˜ ๋ชจ๋“  ๋กœ์šฐ์— ๋Œ€ํ•ด ์ ์šฉ์„ ํ•˜๊ฒŒ๋˜๋ฏ€๋กœ, ์–ด๋–ค ์กฐ๊ฑด์— ๋งž๋Š” ๋กœ์šฐ์— ๋Œ€ํ•ด์„œ๋งŒ ์ž‘์—…์„ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์กฐ๊ฑด์ ˆ์„ ์ด์šฉํ•จ.

  • SELECT ~ FROM ๊นŒ์ง€๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ๋กœ์šฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ๊ฐ ๋กœ์šฐ๋ฅผ ์กฐ๊ฑด์ ˆ๊ณผ ๋น„๊ตํ•˜์—ฌ ์ฐธ์ธ ๋กœ์šฐ๋งŒ ๋‚จ๊ฒจ์ฃผ๊ณ  ๊ฑฐ์ง“ ๋กœ์šฐ๋Š” ์ œ๊ฑฐํ•œ๋‹ค.
  • ๋น„๊ต์—ฐ์‚ฐ์ž : < , > , <= , >= , = , (<>,!=,^= : '๋‹ค๋ฅด๋‹ค')
    ```
    • SELECT [์ปฌ๋Ÿผ๋ช…] FROM [ํ…Œ์ด๋ธ”๋ช…] WHERE [์กฐ๊ฑด์ ˆ]
  • -๊ทผ๋ฌด ๋ถ€์„œ๊ฐ€ 303๋ฒˆ์ธ ์‚ฌ์›๋“ค์˜ ๋ฒˆํ˜ธ, ์ด๋ฆ„, ๊ทผ๋ฌด๋ถ€์„œ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค
    SELECT EMPNO, ENAME, DEPTNO FROM EMP WHERE DEPTNO=303;
  • <img width="337" alt="20210507133858" src="https://user-images.githubusercontent.com/74708028/117399045-95231380-af3a-11eb-8615-5a41be316efa.png">
--๊ทผ๋ฌด ๋ถ€์„œ ๋ฒˆํ˜ธ๊ฐ€ 10๋ฒˆ์ด ์•„๋‹Œ ์‚ฌ์›๋“ค์˜ ์‚ฌ์›๋ฒˆํ˜ธ, ์ด๋ฆ„, ๊ทผ๋ฌด๋ถ€์„œ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
SELECT EMPNO, ENAME, DEPTNO FROM EMP WHERE DEPTNO <> 303;

20210507133956

 

 

--๊ธ‰์—ฌ๊ฐ€ 300์ด์ƒ์ธ ์‚ฌ์›๋“ค์˜ ์‚ฌ์›๋ฒˆํ˜ธ, ์ด๋ฆ„, ๊ธ‰์—ฌ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
SELECT EMPNO, ENAME, SAL FROM EMP WHERE SAL >=300;

20210507134116

 

 

--์ด๋ฆ„์ด ๊น€์ œ๋‹ˆ์ธ ์‚ฌ์›์˜ ์‚ฌ์›๋ฒˆํ˜ธ, ์ด๋ฆ„, ์ง๋ฌด, ๊ธ‰์—ฌ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE ENAME='๊น€์ œ๋‹ˆ';

20210507134220

 

 

 

--2021๋…„ 0507 ์ดํ›„์— ์ž…์‚ฌํ•œ ์‚ฌ์›์˜ ์‚ฌ์›๋ฒˆํ˜ธ, ์ด๋ฆ„, ์ž…์‚ฌ์ผ์„ ๊ฐ€์ ธ์˜จ๋‹ค.
SELECT EMPNO, ENAME, HIREDATE FROM EMP WHERE HIREDATE >= '21/05/07';

20210507134400

 

 

๐Ÿ“ ๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž , ๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ์กฐ๊ฑด์‹์„ ๋ฌถ์–ด ํ•˜๋‚˜์˜ ์กฐ๊ฑด์‹์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

  • and(์ขŒ์šฐ ์กฐ๊ฑด์‹ ๋ชจ๋‘ ์ฐธ), or(์ขŒ์šฐ ์กฐ๊ฑด์‹ ๋‘˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ฐธ์ด๋ฉด ์ฐธ), not(์กฐ๊ฑด์‹์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ถ€์ •), between and(๋ฒ”์œ„์กฐ๊ฑด), in(ํ•ญ๋ชฉ์กฐ๊ฑด)
    -- SELECT [์ปฌ๋Ÿผ๋ช…] FROM [ํ…Œ์ด๋ธ”๋ช…] WHERE [์กฐ๊ฑด์ ˆ (๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž) ์กฐ๊ฑด์ ˆ]
    -- 303 ๋ถ€์„œ์— ๊ทผ๋ฌดํ•˜๊ณ  ์žˆ๋Š” ์ง๋ฌด๊ฐ€ ์—ฐ๊ทนํŒ€์ธ ์‚ฌ์›์˜ ์‚ฌ์›๋ฒˆํ˜ธ, ์ด๋ฆ„, ๊ทผ๋ฌด๋ถ€์„œ, ์ง๋ฌด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
    SELECT EMPNO, ENAME, DEPTNO FROM EMP WHERE DEPTNO=303 AND JOB='์—ฐ๊ทนํŒ€';
    20210507174011

 

-- SELECT [์ปฌ๋Ÿผ๋ช…] FROM [ํ…Œ์ด๋ธ”๋ช…] WHERE [์กฐ๊ฑด์ ˆ (๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž) ์กฐ๊ฑด์ ˆ]
--์ž…์‚ฌ๋…„๋„๊ฐ€ 21์ธ ์‚ฌ์› ์ค‘์— ๊ธ‰์—ฌ๊ฐ€ 400 ์ด์ƒ์ธ ์‚ฌ์›์˜ ์‚ฌ์›๋ฒˆํ˜ธ, ์ด๋ฆ„, ๊ธ‰์—ฌ, ์ž…์‚ฌ์ผ์„ ๊ฐ€์ ธ์˜จ๋‹ค. 
SELECT EMPNO, ENAME, SAL, HIREDATE FROM EMP WHERE HIREDATE >= '21/01/01' AND HIREDATE <= '21/12/31' AND SAL >= 300;
SELECT EMPNO, ENAME, SAL, HIREDATE FROM EMP WHERE HIREDATE BETWEEN '21/01/01' AND '21/12/31' AND SAL >= 300;

20210507174442

 

 

-- SELECT [์ปฌ๋Ÿผ๋ช…] FROM [ํ…Œ์ด๋ธ”๋ช…] WHERE [์กฐ๊ฑด์ ˆ (๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž) ์กฐ๊ฑด์ ˆ]
--๊ธ‰์—ฌ๊ฐ€ 300๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ 500๋ณด๋‹ค ์ž‘์ง€ ์•Š์€ ์‚ฌ์›์˜ ์‚ฌ์›๋ฒˆํ˜ธ, ์ด๋ฆ„, ๊ธ‰์—ฌ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
SELECT EMPNO, ENAME, SAL FROM EMP WHERE NOT (SAL >= 300 AND SAL <= 500);
SELECT EMPNO, ENAME, SAL FROM EMP WHERE NOT (SAL BETWEEN 300 AND  500);

20210507175138

 

 

-- SELECT [์ปฌ๋Ÿผ๋ช…] FROM [ํ…Œ์ด๋ธ”๋ช…] WHERE [์กฐ๊ฑด์ ˆ (๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž) ์กฐ๊ฑด์ ˆ]
--๋ถ€์„œ ๋ฒˆํ˜ธ๊ฐ€ 304, 303,309 ๊ฐ€ ์•„๋‹Œ ์‚ฌ์›๋“ค์˜ ์‚ฌ์›๋ฒˆํ˜ธ, ์ด๋ฆ„์„ ๊ฐ€์ ธ์˜จ๋‹ค.
SELECT EMPNO, ENAME FROM EMP WHERE DEPTNO <> 304 AND DEPTNO <> 303 AND DEPTNO <> 309;
SELECT EMPNO, ENAME FROM EMP WHERE NOT (DEPTNO = 304 OR DEPTNO = 303 OR DEPTNO = 309);
SELECT EMPNO, ENAME FROM EMP WHERE NOT (DEPTNO IN(304,303,309));

20210507175558

 

 

๐Ÿ“ ๋ฌธ์ž์—ด ๋น„๊ต, ์กฐ๊ฑด๋ฌธ์—์„œ ๋ฌธ์ž์—ด ์ปฌ๋Ÿผ๋„ = ๊ณผ <>๋กœ ๋น„๊ต๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

  • ๋งŒ์•ฝ ๋ฌธ์ž์—ด ์ปฌ๋Ÿผ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฐ’์ด ํŠน์ • ๋ฌธ์ž์—ด์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š”์ง€ ํŒŒ์•…ํ•˜๊ณ  ์‹ถ์„ ๋•Œ like ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • like ์—ฐ์‚ฐ์ž
    SELECT [์ปฌ๋Ÿผ๋ช…] FROM [ํ…Œ์ด๋ธ”๋ช…] WHERE [์ปฌ๋Ÿผ๋ช…] LIKE '์™€์ผ๋“œ์นด๋“œ'
    • _ : ๊ธ€์ž ํ•˜๋‚˜๋ฅผ ์˜๋ฏธ
    • % : ๊ธ€์ž 0๊ฐœ ์ด์ƒ์„ ์˜๋ฏธ
--์ด๋ฆ„์ด '์ด'๋กœ ์‹œ์ž‘ํ•˜๋Š” ์‚ฌ์›์˜ ์ด๋ฆ„๊ณผ ์‚ฌ์› ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
SELECT ENAME, EMPNO FROM EMP WHERE ENAME LIKE '์ด%';

20210508100105

 

 

--์ด๋ฆ„์ด '๋‹ˆ'๋กœ ๋๋‚˜๋Š” ์‚ฌ์›์˜ ์ด๋ฆ„๊ณผ ์‚ฌ์› ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
SELECT ENAME, EMPNO FROM EMP WHERE ENAME LIKE '%๋‹ˆ';

20210508100125

 

 

--์ด๋ฆ„์— '๊ต'๊ฐ€ ํฌํ•จ๋˜์–ด์žˆ๋Š” ์‚ฌ์›์˜ ์ด๋ฆ„๊ณผ ์‚ฌ์› ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
SELECT ENAME, EMPNO FROM EMP WHERE ENAME LIKE '%๊ต%';

20210508100147

 

 

--์ด๋ฆ„์˜ ๋‘๋ฒˆ์งธ ๊ธ€์ž๊ฐ€ '์šฐ'์ธ ์‚ฌ์›์˜ ์‚ฌ์› ์ด๋ฆ„, ์‚ฌ์› ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
SELECT ENAME, EMPNO FROM EMP WHERE ENAME LIKE '_์šฐ%';

20210508100208

 

 

--์ด๋ฆ„์ด 4๊ธ€์ž์ธ ์‚ฌ์›์˜ ์‚ฌ์› ์ด๋ฆ„, ์‚ฌ์› ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
SELECT ENAME, EMPNO FROM EMP WHERE ENAME LIKE '____';

20210508100230

 

 

๐Ÿ“ NULL ๋น„๊ต, NULL์€ ์ •ํ•ด์ ธ ์žˆ์ง€ ์•Š์€ ๊ฐ’ ํ˜น์€ ๋ฌดํ•œ๋Œ€์˜ ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š” ๊ฐ’์ด๋‹ค.

  • NULL์€ = ์ด๋‚˜ <>๋ฅผ ํ†ตํ•ด ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด NULL์ธ์ง€ ์—ฐ์‚ฐํ•  ์ˆ˜ ์—†๋‹ค.
  • NULL ๋น„๊ต๋Š” IS NULL ์ด๋‚˜ IS NOT NULL์„ ์ด์šฉํ•ด์•ผํ•œ๋‹ค.

--์‚ฌ์› ์ค‘์— ์ปค๋ฏธ์…˜์„ ๋ฐ›๋Š” ์‚ฌ์›์˜ ์‚ฌ์›๋ฒˆํ˜ธ, ์ด๋ฆ„, ์ปค๋ฏธ์…˜์„ ๊ฐ€์ ธ์˜จ๋‹ค.
SELECT ENAME, EMPNO FROM EMP WHERE COMM <> NULL; (ERROR)
SELECT ENAME, EMPNO FROM EMP WHERE COMM IS NOT NULL;

20210508095637

 

 

--์‚ฌ์› ์ค‘์— ์ปค๋ฏธ์…˜์„ ๋ฐ›์ง€ ์•Š๋Š” ์‚ฌ์›์˜ ์‚ฌ์›๋ฒˆํ˜ธ, ์ด๋ฆ„, ์ปค๋ฏธ์…˜์„ ๊ฐ€์ ธ์˜จ๋‹ค.
SELECT ENAME, EMPNO FROM EMP WHERE COMM = NULL; (ERROR)
SELECT ENAME, EMPNO FROM EMP WHERE COMM IS NULL;

20210508095657