GiantStepDEV
article thumbnail

โš™๏ธOracle Database Express Edition (XE) Release 11.2.0.2.0 (11gR2)

โš™๏ธScott ๊ณ„์ •์— ํƒ‘์žฌ๋˜์–ด ์žˆ๋Š” ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•˜์—ฌ ์‹ค์Šต(EMP, DEPT, BONUS, SALGRADE)

 

โš ๏ธ CRUD(Create, Read, Update, Delete) ์ค‘ Read์— ์†ํ•˜๋Š” DQL(SELECT๋ฌธ)

 

๐Ÿ’ก SELECT (DQL)

  • SQL๋ฌธ ์ค‘ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋ฉฐ ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด
  • SELECT๋ฌธ์—๋Š” ๋ฐ˜๋“œ์‹œ FROM ํ‚ค์›Œ๋“œ๊ฐ€ ์™€์•ผ ํ•จ.
SELECT * FROM ์กฐํšŒํ• ํ…Œ์ด๋ธ”;
SELECT ์กฐํšŒํ•  ์—ด, ์กฐํšŒํ•  ์—ด ... FROM ์กฐํšŒํ• ํ…Œ์ด๋ธ”;

๐Ÿธ ์‚ฌ์› ๋ฒˆํ˜ธ, ๋ถ€์„œ ๋ฒˆํ˜ธ๋งŒ ๋‚˜์˜ค๋„๋ก ์ฟผ๋ฆฌ๋ฌธ ์ž‘์„ฑ

SELECT EMPNO, DEPTNO FROM EMP;

๐Ÿธ ๋ณ„์นญ(ALIAS) ์‚ฌ์šฉํ•˜๊ธฐ

SELECT EMPNO "๋ฒˆ ํ˜ธ", ENAME "์ด ๋ฆ„" FROM EMP;
SELECT EMPNO ๋ฒˆํ˜ธ, ENAME ์ด๋ฆ„ FROM EMP;
SELECT EMPNO AS ๋ฒˆํ˜ธ, ENAME AS ์ด๋ฆ„ FROM EMP;

๐Ÿธ ์—ด ์ถ”๊ฐ€ํ•˜๊ธฐ

SELECT ENAME, SAL, SAL*12+COMM, COMM FROM EMP;
SELECT ENAME, SAL, SAL*12+COMM AS ์—ฐ๋ด‰, COMM FROM EMP;

์ค‘๋ณต ์ œ๊ฑฐ(DISTINCT)

  • ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ ๊ฐ’์ด ์ค‘๋ณต๋˜๋Š” ํ–‰์ด ์—ฌ๋Ÿฌ๊ฐœ ์กฐํšŒ๋˜๋Š”๋ฐ, ๊ฐ’์ด ์ค‘๋ณต๋œ ํ–‰์„ ํ•œ ๊ฐœ์”ฉ๋งŒ ์„ ํƒํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉ
SELECT DISTINCT DEPTNO FROM EMP;
SELECT DISTINCT JOB, DEPTNO FROM EMP;

์ปฌ๋Ÿผ๊ฐ’ ๊ณ„์‚ฐํ•˜๋Š” ์‚ฐ์ˆ ์—ฐ์‚ฐ์ž(+, -, *, /)

  • ์ž๋ฃŒํ˜•์ด ์ˆซ์ž์ธ ์ปฌ๋Ÿผ๊ฐ’๋“ค์„ ๊ณ„์‚ฐํ•œ ๊ฐ’ ์กฐํšŒ
SELECT ENAME, SAL, SAL * 12 AS "์—ฐ๋ด‰" FROM EMP;

WHERE ๊ตฌ๋ฌธ

  • ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์กฐํšŒ
SQL์—์„œ ๊ฐ™์€์ง€ ๋น„๊ตํ•˜๋Š” ์—ฐ์‚ฐ์ž๋Š” '=' ์ž…๋‹ˆ๋‹ค.

์—ฐ์Šต๋ฌธ์ œ

๐Ÿธ WHERE ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•ด ์‚ฌ์› ๋ฒˆํ˜ธ๊ฐ€ 7500 ๋ณด๋‹ค ํฐ ์‚ฌ๋žŒ๋งŒ ๊ณจ๋ผ์„œ ์‚ฌ์›๋ฒˆํ˜ธ, ์‚ฌ์›์ด๋ฆ„, ์ž…์‚ฌ์ผ, ๋ถ€์„œ๋ฒˆํ˜ธ ์ถœ๋ ฅ

SELECT EMPNO, ENAME, HIREDATE, DEPTNO FROM EMP WHERE EMPNO > 7500;

๐Ÿธ ๊ธ‰์—ฌ๊ฐ€ 2500 ์ด์ƒ์˜ ์‚ฌ์› ๋ฒˆํ˜ธ, ์ด๋ฆ„, ์ง๋ฌด, ๊ธ‰์—ฌ ์ถœ๋ ฅ

SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE SAL >= 2500;

๐Ÿธ ์ž…์‚ฌ์ผ์ด 81๋…„ 1์›” 1์ผ ์ดํ›„์ธ ์‚ฌ๋žŒ์„ ๋ชจ๋‘ ์ถœ๋ ฅ

๋‚ ์งœ๋ฅผ ๋น„๊ตํ•˜๊ฑฐ๋‚˜ ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•  ๋•Œ๋Š” ' '(์ž‘์€๋”ฐ์˜ดํ‘œ)๋กœ ๊ฐ์‹ธ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
SELECT * FROM EMP WHERE HIREDATE >= '81/01/01';

๐Ÿธ ์ง์—…์ด SALESMAN์ธ ์‚ฌ๋žŒ๋งŒ ์ถœ๋ ฅ

SELECT * FROM EMP WHERE JOB = 'SALESMAN';

๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž(AND, OR, NOT)

์—ฐ์Šต๋ฌธ์ œ

๐Ÿธ ๊ธ‰์—ฌ๊ฐ€ 2500๊ณผ ๊ฐ™๊ฑฐ๋‚˜ ํฌ๊ณ , ๋ถ€์„œ๊ฐ€ 20๋ฒˆ์ธ ์‚ฌ๋žŒ ์ถœ๋ ฅ

SELECT * FROM EMP WHERE SAL >= 2500 AND DEPTNO = 20;

๐Ÿธ ๊ธ‰์—ฌ๊ฐ€ 2500 ์ด์ƒ์ด๊ฑฐ๋‚˜ ๋ถ€์„œ๊ฐ€ 20๋ฒˆ์ธ ์‚ฌ๋žŒ ์ถœ๋ ฅ

SELECT * FROM EMP WHERE SAL >= 2500 OR DEPTNO = 20;

๐Ÿธ ๊ธ‰์—ฌ๊ฐ€ 2500 ์ด์ƒ์ด๊ณ , ๋ถ€์„œ๊ฐ€ 20๋ฒˆ์ด๊ณ , ์ž…์‚ฌ์ผ์ด 82๋…„ 1์›” 1์ผ ์ด์ „ ์ž…์‚ฌ์ž ์ถœ๋ ฅ

SELECT * FROM EMP WHERE SAL >= 2500 AND DEPTNO = 20 AND HIREDATE < '82/01/01';

๐Ÿธ ๊ธ‰์—ฌ๊ฐ€ 2500 ์ด์ƒ์ด๊ณ  ์ง์—…์ด MANAGER์ธ ์‚ฌ์›์˜ ์‚ฌ์›๋ฒˆํ˜ธ, ์ด๋ฆ„, ์ง์—…, ๊ธ‰์—ฌ, ๋ถ€์„œ๋ฒˆํ˜ธ ์ถœ๋ ฅ

SELECT EMPNO, ENAME, JOB, SAL, DEPTNO
    FROM EMP
    WHERE SAL >= 2500 AND JOB = 'MANAGER';

๋ถ€์ •์—ฐ์‚ฐ์ž

  • != , NOT, <>, !=
    4๊ฐ€์ง€ ๋‹ค ์“ธ ํ•„์š”๋Š” ์—†๊ณ  ์ด ์ค‘ ํŽธํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์“ฐ๋ฉด ๋จ.
    ์ฐธ๊ณ ๋กœ ์ €๋Š” ์ง์ „์— JAVA๋ฅผ ๋ฐฐ์šด์ง€๋ผ.. != ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ์“ฐ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿธ ๊ธ‰์—ฌ๊ฐ€ 2500 ์ด์ƒ์ด๊ณ , ์ง์ฑ…์ด SALESMAN์ด ์•„๋‹Œ ์‚ฌ๋žŒ ์ถœ๋ ฅ

SELECT * FROM EMP WHERE SAL >= 2500 AND JOB != 'SALESMAN';

IN ์—ฐ์‚ฐ์ž

  • ํŠน์ • ์—ด์— ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์กฐํšŒ

๐Ÿ“Œ ์ด์ „์— ํ•˜๋˜ ๋ฐฉ์‹

SELECT * 
    FROM EMP
    WHERE JOB = 'MANAGER' 
    OR JOB = 'SALESMAN' 
    OR JOB = 'CLERK';

๐Ÿ“Œ IN ์ ˆ๋กœ ๋ณ€๊ฒฝ

SELECT *
    FROM EMP
    WHERE JOB IN('MANAGER','SALESMAN','CLERK');

๐Ÿธ IN ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€์„œ๋ฒˆํ˜ธ๊ฐ€ 10,20๋ฒˆ ์‚ฌ์›์˜ ์‚ฌ์›๋ฒˆํ˜ธ, ์ด๋ฆ„, ์ž…์‚ฌ์ผ, ๊ธ‰์—ฌ ์ถœ๋ ฅ

SELECT EMPNO, ENAME, HIREDATE, SAL FROM EMP WHERE DEPTNO IN(10,20);

BETWEEN ์—ฐ์‚ฐ์ž

  • ์ผ์ •ํ•œ ๋ฒ”์œ„ ์กฐํšŒ
BETWEEN A AND B
  • A ์ด์ƒ B ์ดํ•˜

๐Ÿธ ๊ธ‰์—ฌ๊ฐ€ 2000์—์„œ 3000 ์‚ฌ์ด์— ์žˆ๋Š” ์‚ฌ์› ํ‘œ์‹œ

SELECT *
    FROM EMP
    WHERE SAL BETWEEN 2000 AND 3000;

๐Ÿธ BETWEEN ์ ˆ์„ ์‚ฌ์šฉํ•ด์„œ ๊ธ‰์—ฌ๊ฐ€ 1000์—์„œ 2500 ์‚ฌ์ด์ด๊ณ  ๋ถ€์„œ๊ฐ€ 10๊ณผ 30์ธ ์‚ฌ์› ์ถœ๋ ฅ

SELECT * FROM EMP WHERE SAL BETWEEN 1000 AND 2500 AND DEPTNO IN(10,30);

๐Ÿธ BETWEEN ์ ˆ์„ ์‚ฌ์šฉํ•ด์„œ ๊ธ‰์—ฌ๊ฐ€ 1000์—์„œ 2500 ์‚ฌ์ด์ด๊ณ , ๋ถ€์„œ๊ฐ€ 10,20์ด ์•„๋‹Œ ์‚ฌ์› ์ถœ๋ ฅ

SELECT *
    FROM EMP
    WHERE SAL BETWEEN 1000 AND 2500
    AND DEPTNO NOT IN(10,20);

๐Ÿธ BETWEEN ์ ˆ์„ ์‚ฌ์šฉํ•ด์„œ ์‚ฌ์›๋ฒˆํ˜ธ๊ฐ€ 7000์—์„œ 7999 ์‚ฌ์ด์ด๊ณ , ์ž…์‚ฌ์ผ์ด 81/05/01 ์ดํ›„์ธ ์‚ฌ์› ์ถœ๋ ฅ

SELECT * FROM EMP WHERE EMPNO BETWEEN 7000 AND 7999 AND HIREDATE > '81/05/01';

๐Ÿธ 1980๋…„์ด ์•„๋‹Œ ํ•ด์— ์ž…์‚ฌํ•œ ์‚ฌ์›์„ ์กฐํšŒํ•ด์„œ ์ถœ๋ ฅ

SELECT * FROM EMP WHERE HIREDATE NOT BETWEEN '80/01/01' AND '80/12/31';

โš ๏ธ EXTRACT ์ ˆ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•(์ถ”ํ›„ ๋ฐฐ์šธ ์˜ˆ์ •)

SELECT * FROM EMP WHERE EXTRACT(YEAR FROM HEREDATE) != 1980;

LIKE ์—ฐ์‚ฐ์ž

  • ์ผ๋ถ€ ๋ฌธ์ž์—ด์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด ํ•ด๋‹น ๋ฌธ์ž์—ด์ด ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ ์กฐํšŒ
  • % : ๊ธธ์ด์™€ ์ƒ๊ด€์—†์ด ๋ชจ๋“  ๋ฌธ์ž ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธ
  • _ : ๋ฌธ์ž 1์ž๋ฅผ ์˜๋ฏธ
SELECT * FROM EMP WHERE ENAME LIKE '%S%'; -- ์ด๋ฆ„์— S๊ฐ€ ํฌํ•จ๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ
SELECT * FROM EMP WHERE ENAME LIKE 'S____'; -- ์•ž์— S๊ฐ€ ์˜ค๊ณ  ๋’ค์— 4์ž๋ฆฌ
SELECT * FROM EMP WHERE ENAME LIKE '_L%'; -- ์ด๋ฆ„์˜ 2๋ฒˆ์งธ๊ฐ€ 'L'์ธ ์‚ฌ๋žŒ ์ถœ๋ ฅ

๐Ÿธ ์ด๋ฆ„์— AM์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š” ์‚ฌ์› ์ถœ๋ ฅ

SELECT * FROM EMP WHERE ENAME LIKE '%AM%';

๐Ÿธ ์ด๋ฆ„์— AM์ด ํฌํ•จ๋˜์ง€ ์•Š์€ ์‚ฌ์› ์ถœ๋ ฅ

SELECT * FROM EMP WHERE ENAME NOT LIKE '%AM%';

๐Ÿ’ก์กฐํšŒํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ์— ์™€์ผ๋“œ์นด๋“œ ๋ฌธ์ž๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ : \ ์„ ๋„ฃ์–ด์ฃผ๊ณ  ๋’ค์— ESCAPE '\'

      ๐Ÿ“ ์™€์ผ๋“œ ์นด๋“œ ๋ฌธ์ž : % _ * ? ~ ๋“ฑ๋“ฑ

SELECT * FROM EMP WHERE ENAME LIKE '%\%%' ESCAPE '\';

IS NULL / IS NOT NULL

  • NULL : 0๋„ ์•„๋‹ˆ๊ณ , ๋นˆ ๊ณต๊ฐ„๋„ ์•„๋‹˜์„ ์˜๋ฏธํ•จ.
                ์ฆ‰, ๋ฏธํ™•์ • ๊ฐ’์œผ๋กœ ์—ฐ์‚ฐ ๋ฐ ๋น„๊ต,  ํ• ๋‹น์ด ๋ถˆ๊ฐ€๋Šฅ!
SELECT * FROM EMP WHERE COMM IS NULL;
SELECT * FROM EMP WHERE COMM IS NOT NULL;

ORDER BY

  • ํŠน์ • ์ปฌ๋Ÿผ(์—ด) ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์ด๋‚˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
  • ๋ฐ˜.๋“œ.์‹œ. ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๊ธฐ์ˆ ๋˜์–ด์•ผ ํ•˜๋ฉฐ, ๋‚จ๋ฐœํ•˜๋ฉด ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ผ์นจ
  • ์ •๋ ฌ ์กฐ๊ฑด์„ ๊ธฐ์ˆ ํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
  • ASC : ์˜ค๋ฆ„์ฐจ์ˆœ, DESC : ๋‚ด๋ฆผ์ฐจ์ˆœ
  • ์ •๋ ฌ ์กฐ๊ฑด ์ปฌ๋Ÿผ์˜ ์ˆœ์„œ๋ฅผ ์ž…๋ ฅํ•ด๋„ ๋จ(1๋ถ€ํ„ฐ ์‹œ์ž‘)

๐Ÿธ ์‚ฌ์›๋ฒˆํ˜ธ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ

SELECT * FROM EMP ORDER BY EMPNO;

๐Ÿธ ๊ธ‰์—ฌ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ , ๊ธ‰์—ฌ๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ ์ด๋ฆ„ ๊ธฐ์ค€

SELECT * FROM EMP ORDER BY SAL, ENAME;

๐Ÿธ ๊ธ‰์—ฌ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ , ๊ธ‰์—ฌ๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ ์ด๋ฆ„์„ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ

SELECT * FROM EMP ORDER BY SAL, ENAME DESC;

๐Ÿธ ๋ณ„์นญ ์‚ฌ์šฉ๊ณผ ORDER BY

SELECT EMPNO AS ์‚ฌ์›๋ฒˆํ˜ธ, ENAME AS ์‚ฌ์›๋ช…, SAL AS ์›”๊ธ‰, HIREDATE AS ์ž…์‚ฌ์ผ
    FROM EMP ORDER BY ์›”๊ธ‰ DESC, ์‚ฌ์›๋ช… ASC;

์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ž (||)

  • SELECT ์กฐํšŒ์‹œ ์ปฌ๋Ÿผ ์‚ฌ์ด์— ํŠน์ •ํ•œ ๋ฌธ์ž๋ฅผ ๋„ฃ๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์—ฐ์‚ฐ์ž
SELECT ENAME || 'S JOB IS ' || JOB AS EMPLOYEE FROM EMP;

๐Ÿธ์—ฐ์Šต๋ฌธ์ œ๐Ÿถ

โš™๏ธ EMPํ…Œ์ด๋ธ” ๊ธฐ์ค€

  1. COMM์˜ ๊ฐ’์ด NULL์ด ์•„๋‹Œ ์ •๋ณด ์กฐํšŒ
  2. ์ปค๋ฏธ์…˜์„ ๋ฐ›์ง€ ๋ชปํ•˜๋Š” ์ง์› ์กฐํšŒ
  3. ๊ด€๋ฆฌ์ž๊ฐ€ ์—†๋Š” ์ง์› ์ •๋ณด ์กฐํšŒ
  4. ๊ธ‰์—ฌ๋ฅผ ๋งŽ์ด ๋ฐ›๋Š” ์ง์› ์ˆœ์œผ๋กœ ์กฐํšŒ
  5. ๊ธ‰์—ฌ๊ฐ€ ๊ฐ™์„ ๊ฒฝ์šฐ ์ปค๋ฏธ์…˜์„ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ ์กฐํšŒ
  6. ์‚ฌ์›๋ฒˆํ˜ธ, ์‚ฌ์›๋ช…, ์ง๊ธ‰, ์ž…์‚ฌ์ผ ์กฐํšŒ (๋‹จ, ์ž…์‚ฌ์ผ์„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ)
  7. ์‚ฌ์›๋ฒˆํ˜ธ, ์‚ฌ์›๋ช… ์กฐํšŒ (์‚ฌ์›๋ฒˆํ˜ธ ๊ธฐ์ค€ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ)
  8. ์‚ฌ์›๋ฒˆํ˜ธ, ์ž…์‚ฌ์ผ, ์‚ฌ์›๋ช…, ๊ธ‰์—ฌ ์กฐํšŒ (๋ถ€์„œ๋ฒˆํ˜ธ๊ฐ€ ๋น ๋ฅธ ์ˆœ, ๊ฐ™์€ ๋ถ€์„œ๋ฒˆํ˜ธ ์ผ ๋•Œ๋Š” ์ตœ๊ทผ ์ž…์‚ฌ์ผ ์ˆœ์œผ๋กœ ์ฒ˜๋ฆฌ)
-- 1.
SELECT * FROM EMP WHERE COMM IS NOT NULL;
-- 2.
SELECT * FROM EMP WHERE COMM IS NULL OR COMM = 0;
-- 3.
SELECT * FROM EMP WHERE MGR IS NULL;
-- 4.
SELECT * FROM EMP ORDER BY SAL DESC;
-- 5.
SELECT * FROM EMP ORDER BY SAL DESC,COMM DESC;
-- 6.
SELECT EMPNO, ENAME, JOB, HIREDATE FROM EMP ORDER BY HIREDATE;
-- 7.
SELECT EMPNO, ENAME FROM EMP ORDER BY EMPNO DESC;
-- 8.
SELECT DEPTNO, HIREDATE, ENAME, SAL FROM EMP ORDER BY DEPTNO,HIREDATE DESC;
profile

GiantStepDEV

@kongmi

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!