ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQL] ORDER BY, DISTINCT, SQL ์—ฐ์‚ฐ์ž
    Computer Science/DB 2023. 4. 5. 21:47
    728x90

    ๐Ÿ’กํ”ผ๋“œ๋ฐฑ Tip

    1. SQL Developer ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์—์„œ์˜ NULL ํ‘œ๊ธฐ

    Putty ํ„ฐ๋ฏธ๋„์„ ์ด์šฉํ•˜์—ฌ ์˜ค๋ผํด SQL ์ฟผ๋ฆฌ ํ•ด๋ณด๊ธฐ

    1. putty๋ฅผ ์ด์šฉํ•˜์—ฌ VM ์ ‘์†
    1. Oracle DBMS ์ ‘์†
    $ sqlplus scott/
    SCOTT> SELECT DISTINCT COMM FROM EMP;
    ๐Ÿ’ก
    SQL Developer์—์„œ๋Š” (null) ๊ฐ’์„ ๋”ฐ๋กœ ์ฒ˜๋ฆฌํ•ด ์‹œ๊ฐ์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ์ง€๋งŒ, ํ„ฐ๋ฏธ๋„์„ ์ด์šฉํ•˜์—ฌ SQL ์ฟผ๋ฆฌ์‹œ์—๋Š” null์„ ํ‘œ๊ธฐํ•ด์ฃผ์ง€ ์•Š์•„ null์„ ๊ตฌ๋ณ„ํ•˜์ง€ ๋ชปํ•œ๋‹ค.

    2. ๋˜๋„๋ก SQL์—์„œ R-Value๊ฐ€ ํƒ€์ž…์ด ๋ณ€ํ•˜๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค.

    ๐Ÿ’ก
    L-Value = R-Value์—์„œ ๋˜๋„๋ก ์˜ค๋ฅธ์ชฝ ๊ฐ’์„ ํƒ€์ž… ๋ณ€๊ฒฝํ•˜๋„๋ก SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค. โ†’ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์บ์ŠคํŒ…์˜ ํšŸ์ˆ˜๋ฅผ ๋˜๋„๋ก ์ ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•จ์ด๊ณ , ์„ฑ๋Šฅ ๊ฐœ์„ ์˜ ์ด์œ ๊ฐ€ ๋œ๋‹ค.
    ๐Ÿ’ก
    sal like โ€˜2%โ€™ sal = โ€˜2000โ€™

    3. ์ˆซ์ž/๋‚ ์งœ, ๋ฌธ์ž ์•”์‹œ์  ํƒ€์ž… ์บ์ŠคํŒ…

    ๐Ÿ’ก
    ๋‚ด๋ถ€์ ์œผ๋กœ ์ˆซ์ž ํƒ€์ž…์ด ๋ฉ”๋ชจ๋ฆฌ, ๊ณ„์‚ฐ์˜ ์šฉ์ดํ•œ ์ด์ ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์•”์‹œ์  ํƒ€์ž… ์บ์ŠคํŒ… ๋ฐœ์ƒ ์‹œ์— ๋Œ€๋ถ€๋ถ„ ์ˆซ์ž๋‚˜ ๋‚ ์งœ ์šฐ์„ ์œผ๋กœ ์บ์ŠคํŒ… ๋œ๋‹ค.

    ๐Ÿ“˜ ORDER BY

    ๐Ÿ’ก
    [์—ญํ• ] ์ง€์ •ํ•œ ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ ์ •๋ ฌ(Sorting) - ORDER BY๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์œผ๋ฉด ๋ถ€ํ•˜๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. - SQL ๋ฌธ๋ฒ•์ ์œผ๋กœ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์œ„์น˜. (์‹คํ–‰๋„ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์‹คํ–‰๋œ๋‹ค.)
    ๐Ÿ’ก
    [๊ธฐ์ค€] ์ •๋ ฌ์‹œ ๊ฐ’ ๋น„๊ต๊ธฐ์ค€ ์ˆซ์ž : ~ ์ž‘์€ ์ˆ˜/ํฐ ์ˆ˜ ๋น„๊ต EX) 123 < 456 ๋ฌธ์ž : ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ(ASCII) EX) โ€˜SCOTT' < โ€˜T' โ†’ ๋ฌธ์ž๋Š” ์ฒซ ๊ธ€์ž๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๋น„๊ต๋œ๋‹ค. ๋‚ ์งœ : ์ˆซ์ž์™€ ๋™์ผ EX) โ€˜2003/11/16' > โ€˜19990916' โ†’ DBMS ๋‚ด๋ถ€์—์„œ๋Š” ์ˆซ์ž๋กœ ์ €์žฅ๋˜๊ณ , ์ถœ๋ ฅ ์‹œ์—๋Š” ๋ฌธ์ž์—ด๋กœ ํ‘œ๊ธฐ โ†’ ๋”ฐ๋ผ์„œ ์ˆซ์ž ๋น„๊ต์™€ ๋™์ผํ•˜๋‹ค. NULL : Oracle DBMS ๊ฐ€์žฅ ํฐ ๊ฐ’์œผ๋กœ ๊ฐ„์ฃผ , MS SQL-Server: ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์œผ๋กœ ๊ฐ„์ฃผ [์ •๋ ฌ ๋ฐฉํ–ฅ(๋ฐฉ๋ฒ•)] ASC : ์˜ค๋ฆ„์ฐจ์ˆœ(ASCENDING ORDER) , DEFAULT DESC : ๋‚ด๋ฆผ์ฐจ์ˆœ(DESCENDING ORDER)
    ๐Ÿ’ก
    // ์ •๋ ฌ๋ฐฉํ–ฅ? Default(ASC) โ‘  SELECT ENAME, HIREDATE, SAL, COMM FROM EMP ORDER BY ENAME ;

    // SQL ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ASC ๋ช…์‹œํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. โ‘ก SELECT ENAME, HIREDATE, SAL, COMM FROM EMP ORDER BY ENAME asc;

    // ๋‚ ์งœ ๊ธฐ์ค€ ์ •๋ ฌ โ‘ข SELECT ENAME, HIREDATE, SAL, COMM FROM EMP ORDER BY HIREDATE desc;

    โ†’ ๋‚ ์งœ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ๋˜์—ˆ๋‹ค. // column name ๊ธฐ์ค€ ์ •๋ ฌ โ‘ฃ SELECT ENAME, HIREDATE, SAL, COMM FROM EMP ORDER BY ENAME;

    // column position ๊ธฐ์ค€ ์ •๋ ฌ โ‘ค SELECT ENAME, HIREDATE, SAL, COMM FROM EMP ORDER BY 2;

    โ†’ ๋‘๋ฒˆ์งธ ์ปฌ๋Ÿผ HIREDATE๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๋˜์—ˆ๋‹ค.

    // ORDER BY ์— Column Alias์˜ฌ ์ˆ˜ ์žˆ๋‹ค. โ‘ฅ SELECT ENAME, SAL*12 as ์—ฐ๋ด‰ FROM EMP ORDER BY ์—ฐ๋ด‰;

    โ†’ SAL*12์˜ Alias์ธ ์—ฐ๋ด‰ ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๋˜์—ˆ๋‹ค. // expression, NULL ์œ„์น˜ โ‘ฆ 1) SELECT ENAME, HIREDATE, SAL, COMM FROM EMP ORDER BY COMM * 12;

    โ†’ ORDER BY ๋‹ค์Œ์— ๊ณ„์‚ฐ ์‹์ด ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

    โ†’ COMM * 12์˜ ๊ฐ’์— ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์—ˆ๋‹ค. 2) SELECT ENAME, HIREDATE, SAL, COMM FROM EMP ORDER BY COMM * 12 NULLS FIRST;

    // โ‘ง SELECT DEPTNO,JOB,ENAME FROM EMP ORDER BY DEPTNO;

    // ORDER BY์— ๋ณต์ˆ˜ ๊ฐœ์˜ ์ปฌ๋Ÿผ // ์ฒซ๋ฒˆ์งธ ์ปฌ๋Ÿผ ๊ธฐ์ค€ ์ •๋ ฌ ํ›„, ๋‘๋ฒˆ์งธ ์ปฌ๋Ÿผ ๊ธฐ์ค€ ์ •๋ ฌ (์กฐํ•ฉ์˜ ์ˆœ์„œ์Œ) โ‘จ SELECT DEPTNO,JOB,ENAME FROM EMP ORDER BY DEPTNO,JOB;

    // DEPTNO๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ, JOB์€ ๋‚ด๋ฆผ์ฐจ์ˆœ โ‘ฉ SELECT DEPTNO,JOB,ENAME FROM EMP ORDER BY DEPTNO,JOB desc; // ์ฐจ์ด์ ์€?

    ๐Ÿ“˜ DISTINCT

    ๐Ÿ’ก
    ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•„ํ„ฐ๋งํ•˜์—ฌ ์กฐํšŒ(SELECT) - ์กฐํšŒ ์‹œ ์‚ฌ์šฉํ•˜๋ฉฐ, ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋˜์ง€๋Š” ์•Š๋Š”๋‹ค. - HASH ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ ์šฉ๋˜์–ด ์ค‘๋ณต์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
    ๐Ÿ’ก
    // ์ „์ฒด Row(๋ ˆ์ฝ”๋“œ) ๊ฐœ์ˆ˜ ๋งŒํผ, โ‘  SELECT JOB FROM EMP;

    // ์ง๊ตฐ ์ข…๋ฅ˜, Oracle โ‘ก SELECT UNIQUE JOB FROM EMP;

    // DISTINCT - ANSI โ‘ข SELECT DISTINCT JOB FROM EMP;

    โ†’ DISTINCT์™€ UNIQUE๋Š” ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. โ†’ DISTINCT ํ‚ค์›Œ๋“œ๊ฐ€ ANSI ํ‘œ์ค€์ด๋ฏ€๋กœ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

    โ‘ฃ SELECT DISTINCT DEPTNO, JOB FROM EMP; // ์ค‘๋ณต ๋ฐ์ดํ„ฐ(?)

    • ์ปฌ๋Ÿผ(๋“ค)์˜ ์กฐํ•ฉ์˜ ์ค‘๋ณต ํ•„ํ„ฐ๋ง

    โ‘ค SELECT JOB FROM EMP ORDER BY JOB;

    • distinct ์—ฐ์‚ฐ ๋‚ด๋ถ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜: Oracle 9i: Sort , 10g: Hash

    โ‘ฅ SELECT DISTINCT JOB, DISTINCT DEPTNO FROM EMP; // ๋ฒ”์œ„?

    • DISTINCT ๋Š” ๋งจ ์•ž ํ•˜๋‚˜๋งŒ ๊ฐ€๋Šฅ (๊ฐ ์ปฌ๋Ÿผ ์กฐํ•ฉ์— ๋Œ€ํ•œ ์ค‘๋ณต ์ œ๊ฑฐ)

    โ‘ฆ SELECT JOB, DISTINCT DEPTNO FROM EMP; // ์œ„์น˜?

    • DISTINCT๋Š” ๋งจ ์•ž์— ์œ„์น˜ํ•ด์•ผ ํ•œ๋‹ค.
    • ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์กฐํ•ฉ์— ๋Œ€ํ•œ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ ์ด๋ฏ€๋กœ, JOB์„ ๋จผ์ € select ํ•˜๊ณ  ์ดํ›„ ์ค‘๋ณต์ œ๊ฑฐ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

    โ‘ง SELECT COMM FROM EMP WHERE COMM IS NOT NULL; // 4 Rows

    โ†’NULL์ด ์•„๋‹Œ, ๊ฐ’์„ ๊ฐ€์ง„ ์ปฌ๋Ÿผ๋“ค์ด ์ถœ๋ ฅ๋˜์—ˆ๋‹ค.

    โ‘จ SELECT DISTINCT COMM FROM EMP; // 5 Rows ??

    • * NULL๊ณผ DISTINCT

    โ†’ NULL ๊ฐ’๋„ DISTINCT ์ฒ˜๋ฆฌ๋˜์–ด ๊ฐ ์ค‘๋ณต์ด ์ œ๊ฑฐ๋œ ํ•ญ๋ชฉ์ด ๋‚˜์˜จ๋‹ค.

    ๐Ÿ“˜ SQL ์—ฐ์‚ฐ์ž

    BETWEEN

    • ๋ฒ”์œ„ ์—ฐ์‚ฐ์ž (ํ•˜ํ•œ ๊ฐ’๊ณผ ์ƒํ•œ ๊ฐ’ ์‚ฌ์ด์˜ ๋ฒ”์œ„ ๊ฒ€์ƒ‰ ์—ฐ์‚ฐ์ž)
    ๐Ÿ’ก
    // ์ˆซ์ž ํƒ€์ž… // BETWEEN ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ โ‘  SELECT ENAME,SAL,HIREDATE FROM EMP WHERE SAL between 1000 and 2000;

    // ๋น„๊ต ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ โ‘ก SELECT ENAME,SAL,HIREDATE FROM EMP WHERE SAL >= 1000 and SAL <= 2000;

    โ†’ โ‘ ,โ‘ก๋Š” ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. BETWEEN ์—ฐ์‚ฐ์ž๋ฅผ ๋ชฐ๋ผ๋„, ๋น„๊ต ์—ฐ์‚ฐ์„ ํ†ตํ•ด ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค. โ†’ BETWEEN ์—ฐ์‚ฐ์ž๋Š” DBMS์—์„œ ๋‚ด๋ถ€์ ์œผ๋กœ ๋น„๊ต ์—ฐ์‚ฐ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ฒ˜๋ฆฌํ•œ๋‹ค.

    // ์ด์œ ๋Š”? โ‘ข SELECT ENAME,SAL,HIREDATE FROM EMP WHERE SAL between 2000 and 1000;

    โ†’ between์€ ํ•˜ํ•œ ๊ฐ’ and ์ƒํ•œ ๊ฐ’ ์œผ๋กœ ๋ช…์‹œํ•ด์•ผ ํ•œ๋‹ค. // ๋ฌธ์ž ํƒ€์ž… โ‘ฃ SELECT ENAME,SAL,HIREDATE FROM EMP WHERE ENAME BETWEEN 'C' AND 'Kโ€™;

    // ๋ฌธ์ž โ†’ ๋‚ ์งœ ํƒ€์ž…, ์•”์‹œ์  ๋ฐ์ดํ„ฐํ˜•๋ณ€ํ™˜ โ‘ค SELECT ENAME,SAL,HIREDATE FROM EMP WHERE HIREDATE BETWEEN '81/02/20' AND '82/12/09โ€™;

    // ๋‚ ์งœ ํƒ€์ž…, ๋ช…์‹œ์  ํ˜•๋ณ€ํ™˜, ๊ฒ€์ƒ‰์ด ์•ˆ๋˜๋Š” ์ด์œ ๋Š” ? โ‘ฅ SELECT ENAME,SAL,HIREDATE FROM EMP WHERE HIREDATE BETWEEN to_date('81/02/20','yy/mm/dd') AND to_date('82/12/09','yy/mm/dd');

    โ†’ โ€˜rr/mm/ddโ€™ ๋กœ ํฌ๋ฉง์„ ๋ณ€๊ฒฝํ•˜๋ฉด ๋œ๋‹ค.

    // ๋‚ ์งœ ํ‘œ๊ธฐ ํฌ๋ฉง ์ดํ•ด ์•”๊ธฐ โ‘ฆ SELECT ENAME,HIREDATE, TO_CHAR(HIREDATE,'YYYY/MM/DD'), TO_CHAR(HIREDATE,'YYYY/MM/DD HH24:MI:SS'), // Date์— ์‹œ๊ฐ„์ •๋ณดํ™•์ธ TO_CHAR(HIREDATE,'RRRR/MM/DD HH24:MI:SS'), TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') // sysdate์— ์‹œ๊ฐ„์ •๋ณดํ™•์ธ FROM EMP;

    SELECT ENAME,SAL,HIREDATE FROM EMP WHERE HIREDATE BETWEEN to_date('81/02/20โ€™,โ€™rr/mm/dd') AND to_date('82/12/09','yy/mm/dd');

    โ‘ง SELECT ENAME,SAL,HIREDATE FROM EMP WHERE HIREDATE BETWEEN to_date('1981/02/20','yyyy/mm/dd') AND to_date('1982/12/09','yyyy/mm/dd');

    โ‘จ SELECT ENAME,SAL,HIREDATE FROM EMP WHERE HIREDATE BETWEEN to_date('81/02/20','rr/mm/dd') AND to_date('82/12/09','rr/mm/dd'); โ‘ฉ SELECT ENAME,SAL,HIREDATE FROM EMP WHERE HIREDATE BETWEEN to_date('2081/02/20','yyyy/mm/dd') AND to_date('2082/12/09','yyyy/mm/dd');

    LIKE

    ๐Ÿ’ก
    ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋Œ€ํ•œ ํŒจํ„ด ๋งค์นญ ์—ฐ์‚ฐ์ž - ์ •ํ™•ํ•œ ๊ฐ’์„ ๋ชฐ๋ผ๋„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. * Wildcard ๋ฌธ์ž โ‘  % : 0๊ฐœ ์ด์ƒ์˜ ๋ชจ๋“  ๋ฌธ์ž โ‘ก _ : 1๊ฐœ์˜ ๋ชจ๋“  ๋ฌธ์ž, ์œ„์น˜๊ฐ€ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง. * ๋ฐ์ดํ„ฐ ์–‘์ด ๋งŽ์•„์งˆ ๊ฒฝ์šฐ like ์‚ฌ์šฉ์„ ์ž์ œํ•˜์ž.
    ๐Ÿ’ก
    * ํƒ€์ž… ์บ์ŠคํŒ…์‹œ, like ์—ฐ์‚ฐ์ž๋Š” ๋ฌธ์ž์—ด์— ๋Œ€ํ•œ ํŒจํ„ด ๋งค์นญ ์—ฐ์‚ฐ์ž ์ด๋ฏ€๋กœ, ๊ธฐ์กด ์ปฌ๋Ÿผ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌธ์ž์—ด๋กœ ์บ์ŠคํŒ… ๋œ ํ›„ ํŒจํ„ด ๋งค์นญ๋˜์–ด ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ดํ•ด์ค€๋‹ค.
    ๐Ÿ’ก
    // pattern matching โ‘  SELECT ENAME FROM EMP WHERE ENAME like 'A%';

    โ†’ ENAME์ด A๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ

    โ‘ก SELECT ENAME FROM EMP WHERE ENAME like '_A%';

    โ†’ ENAME์ด ๋‘๋ฒˆ์งธ์— A๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ฒƒ

    โ‘ข SELECT ENAME FROM EMP WHERE ENAME like '%L%E%';

    โ†’ ENAME์ด ์ค‘๊ฐ„์— L๊ณผ E๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ฒƒ โ‘ฃ SELECT ENAME FROM EMP WHERE ENAME like '%LE%';

    โ†’ ENAME์ด LE๊ฐ€ ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ โ‘ค SELECT ENAME FROM EMP WHERE ENAME like '%A%';

    โ†’ ENAME์— A๊ฐ€ ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ โ‘ฅ SELECT ENAME FROM EMP WHERE ENAME NOT like '%A%';

    โ†’ A๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ // ๋‚ ์งœ , ์•”์‹œ์  ํ˜•๋ณ€ํ™˜ โ‘ฆ SELECT ENAME,HIREDATE FROM EMP WHERE HIREDATE like '81%';

    โ†’ HIREDATE์˜ โ€˜81โ€™๋…„๋„์˜ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ โ†’ HIREDATE๋Š” ๋‚ ์งœ ํƒ€์ž…์ด๋‹ค. โ†’ ์›๋ž˜ ๋Œ€๋กœ๋ผ๋ฉด, ๋‚ ์งœ ํƒ€์ž…์ด ๋ฌธ์ž์—ด ํƒ€์ž…๋ณด๋‹ค ์šฐ์„ ์ด์ง€๋งŒ, like ํŠน์„ฑ ์ƒ ๋ฌธ์ž์—ด์˜ ํŒจํ„ด ๋งค์นญ ์—ฐ์‚ฐ์ž์ด๋ฏ€๋กœ HIREDATE ์ปฌ๋Ÿผ ๊ฐ’์ด ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

    // ์ˆซ์ž , โ‘ง SELECT ENAME,SAL FROM EMP WHERE SAL like 2%; โ†’ (์—๋Ÿฌ) like ๋‹ค์Œ์—” ํ•ญ์ƒ ๋ฌธ์ž๊ฐ€ ์™€์•ผ ํ•œ๋‹ค!! // ์•”์‹œ์  ํ˜•๋ณ€ํ™˜ โ‘จ SELECT ENAME,SAL FROM EMP WHERE SAL like '2%';

    โ†’ L-Value์ธ SAL์ด ๋ฌธ์ž ํ˜•์œผ๋กœ ์•”์‹œ์  ํƒ€์ž… ๋ณ€ํ™˜๋˜์–ด ํŒจํ„ด ๋งค์นญ๋œ ๊ฐ’์ด ์ถœ๋ ฅ ๋œ๋‹ค.

    // ๋ช…์‹œ์  ํ˜•๋ณ€ํ™˜ โ‘ฉ SELECT ENAME,SAL FROM EMP WHERE TO_CHAR(SAL) like '2%';

    โ†’ 9๋ฒˆ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๋ช…์‹œ์ ์œผ๋กœ ํƒ€์ž… ๋ณ€ํ™˜์„ ์ ์–ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

    ๐Ÿ’ก
    ํƒ€์ž… ๋ณ€ํ™˜ ์œ ์˜ // ๋‚ ์งœ HIREDATE like โ€˜81%โ€™ // ์ˆซ์ž SAL like 2% // ์ˆซ์ž SAL like โ€˜2%โ€™ // ๋ฌธ์ž to_char(SAL) like โ€˜2%โ€™

    ๐Ÿ’ก
    customer ๋ฐ์ดํ„ฐ์—์„œ ์—ฌ์˜๋„์— ๊ฑฐ์ฃผํ•˜๋Š” ๊น€์”จ ์„ฑ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ like๋กœ ๊ฒ€์ƒ‰ํ•ด๋ณด๊ธฐ select * from customer where ADDRESS1 like '%์—ฌ์˜๋„%' and NAME like '๊น€%';

    IN

    ๐Ÿ’ก
    ๋ฆฌ์ŠคํŠธ ์—ฐ์‚ฐ์ž
    ๐Ÿ’ก
    // ์ˆซ์ž โ‘  SELECT EMPNO, JOB FROM EMP WHERE EMPNO IN (7369,7521,7654);

    // ์ฐจ์ด์  ? โ‘ก SELECT EMPNO, JOB FROM EMP WHERE EMPNO = 7369 or EMPNO = 7521 or EMPNO=7654;

    โ†’ โ‘ ,โ‘ก์˜ ๊ฒฐ๊ณผ ๊ฐ’์€ ๊ฐ™๋‹ค. IN์„ ๋ชฐ๋ผ๋„ OR ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•ด ๋™์ผํ•œ ๋กœ์ง์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. โ†’ IN์˜ ์ฒ˜๋ฆฌ๋Š” DBMS ๋‚ด๋ถ€์ ์œผ๋กœ ๊ฐ’์ด OR์—ฐ์‚ฐ์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค. // ๋ฌธ์ž โ‘ข SELECT EMPNO,ENAME,JOB FROM EMP WHERE JOB IN ('clerk','manager');

    โ†’ ์กฐํšŒ๊ฐ€ ์•ˆ๋œ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ณ„์ด ๋˜๋ฏ€๋กœ, โ€˜CLERKโ€™๊ณผ โ€˜MANAGERโ€™๋กœ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค. SELECT EMPNO,ENAME,JOB FROM EMP WHERE JOB IN ('CLERK','MANAGER');

    // ๋‚ ์งœ? โ‘ฃ SELECT EMPNO,ENAME,HIREDATE FROM EMP WHERE HIREDATE IN ('81/05/01','81/02/20');

    โ†’ ์•”์‹œ์  ํ˜•๋ณ€ํ™˜ ๋ฐœ์ƒ โ†’ IN ๋’ค ๋ฌธ์ž์—ด ํƒ€์ž…์ด ๋‚ ์งœ ํƒ€์ž…์œผ๋กœ ์บ์ŠคํŒ… ๋˜์–ด ์ฒ˜๋ฆฌ๋œ๋‹ค. // ๋‹ค์ค‘์ปฌ๋Ÿผ๋ฆฌ์ŠคํŠธ , in (1..1000) โ‘ค SELECT EMPNO,ENAME,JOB,DEPTNO FROM EMP WHERE (JOB,DEPTNO) in (('MANAGER',20),('CLERK',20));

    โ†’ ๋‚ด๋ถ€์ ์ธ ๊ด„ํ˜ธ ๋‚ด ์ฝค๋งˆ๋Š” AND์˜ ์—ญํ• ์„ ํ•˜๊ณ , ๋ฐ”๊นฅ ์ฝค๋งˆ๋Š” OR ์—ญํ• ์„ ํ•œ๋‹ค.

    ANY(or), ALL(and)

    ๐Ÿ’ก
    ANY(SOME) :๋ฆฌ์ŠคํŠธ๋‚ด์— ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฐ’์ด 1๊ฐœ ์ด์ƒ์ด๋ฉด ๊ฒฐ๊ณผ ๋ฆฌํ„ด (OR)

    ALL :๋ฆฌ์ŠคํŠธ๋‚ด์— ๋ชจ๋“ ๊ฐ’์ด ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ๊ฒฐ๊ณผ ๋ฆฌํ„ด (AND) โ‘  SELECT ENAME, SAL FROM EMP WHERE SAL > (1500,2450,3000); // Error ?? ๋‹จ์ผ๊ฐ’ ๋น„๊ต ์—ฐ์‚ฐ์ž โ‘ก SELECT ENAME, SAL FROM EMP WHERE SAL > ANY(1500,2450,3000); // OR , SAL > 15000 โ‘ข SELECT ENAME, SAL FROM EMP WHERE SAL >= ALL(1500,2450,3000); // AND , SAL >= 3000 โ‘ฃ SELECT ENAME, SAL FROM EMP WHERE SAL = ANY (1500,2450,3000); // ANY = SOME โ‘ค SELECT ENAME, SAL FROM EMP WHERE SAL = SOME (1500,2450,3000); SELECT ENAME, SAL FROM EMP WHERE SAL IN (1500,2450,3000); // 0 Rows๊ฐ€ ๊ฒ€์ƒ‰๋˜๋Š” ์ด์œ ? โ‘ฅ SELECT ENAME, SAL FROM EMP WHERE SAL = ALL (1300,2450,3000);


    ๐Ÿ“์ผ์ผ ๊ณผ์ œ

    1. EMP ํ…Œ์ด๋ธ”์—์„œ ์‚ฌ๋ฒˆ,์ด๋ฆ„,์ง๋ฌด,๊ธ‰์—ฌ,๋ถ€์„œ๋ฒˆํ˜ธ ๋ฐ์ดํ„ฐ ์‚ฌ์ด์— ๊ตฌ๋ถ„์ž ,๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ์˜ˆ์ œ SQL ์ž‘์„ฑ

    ๐Ÿ’ก
    SQL Script file - text file - N ์ค„์˜ SQL - ๋ฐ˜๋ณต ์‹คํ–‰
    ๐Ÿ’ก
    SET ๋ช…๋ น์–ด - ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •ํ•˜๋Š” ๋ช…๋ น์–ด
    ๐Ÿ’ก
    CSV(Comma-Separated Values) ํŒŒ์ผ์—์„œ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ํฌ๋งท ์ถœ๋ ฅ a) SPOOL, SQL Script file ์‚ฌ์šฉํ•ด์„œ emp_list.csv ํŒŒ์ผ์ƒ์„ฑ >> excel b) set ๋ช…๋ น์–ด(SQL*PLUS) ์‚ฌ์šฉ >> excel
    $ sqlplus scott/tiger

    a) SPOOL, SQL Script file ์‚ฌ์šฉํ•ด์„œ emp_list.csv ํŒŒ์ผ์ƒ์„ฑ >> excel

    SPOOL emp_list.csv
    SELECT empno || ',' || ename || ',' || job || ',' || sal || ',' || deptno FROM EMP
    SPOOL off;

    b) set ๋ช…๋ น์–ด(SQL*PLUS) ์‚ฌ์šฉ >> excel

    b_1)

    -- ํŽ˜์ด์ง€ ํฌ๊ธฐ๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ํŽ˜์ด์ง€ ๊ตฌ๋ถ„์„ ์—†์•ฑ๋‹ˆ๋‹ค.
    set pagesize 0
    
    -- ์ถœ๋ ฅ๋œ ๋ฐ์ดํ„ฐ์˜ ์ขŒ์šฐ ์—ฌ๋ฐฑ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
    set trimspool on
    
    -- ์ปฌ๋Ÿผ๋ช…๊ณผ ๋ฐ์ดํ„ฐ ์‚ฌ์ด์— ๊ตฌ๋ถ„์ž๋ฅผ ์ถœ๋ ฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    set headsep off
    
    -- ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ฒฐ๊ณผ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    set feedback off
    
    -- ์ถœ๋ ฅํ•  ํ•œ ์ค„์˜ ์ตœ๋Œ€ ๊ธธ์ด๋ฅผ 2000์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    set linesize 2000
    
    -- NUMBER ํƒ€์ž… ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•  ๋•Œ ์ตœ๋Œ€ ์ž๋ฆฟ์ˆ˜๋ฅผ 2000์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    set numw 2000
    
    -- ์‹คํ–‰ ์‹œ๊ฐ„ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    set timing off
    
    spool emp_list.csv;
    SELECT EMPNO || ',' || ENAME || ',' || JOB || ',' || SAL || ',' || DEPTNO FROM EMP;
    spool off;
    @good.sql

    b_2) create_csv_emp.sql

    -- ','๋กœ ๊ตฌ๋ถ„๋œ ์ปฌ๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ๋ถ„์ž๋ฅผ ','๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    SET COLSEP ','
    
    -- ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์—์„œ ํ—ค๋”๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
    SET HEADING OFF
    
    -- ์ถœ๋ ฅ๋œ ๋ฐ์ดํ„ฐ์˜ ์ขŒ์šฐ ์—ฌ๋ฐฑ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
    set trimspool on
    
    -- ์ปฌ๋Ÿผ๋ช…๊ณผ ๋ฐ์ดํ„ฐ ์‚ฌ์ด์— ๊ตฌ๋ถ„์ž๋ฅผ ์ถœ๋ ฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    set headsep off
    
    -- ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ฒฐ๊ณผ์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
    SET FEEDBACK OFF
    
    -- ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€๋กœ ๋‚˜๋ˆ„์ง€ ์•Š๊ณ , ํ•œ ํŽ˜์ด์ง€์— ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    SET PAGESIZE 0
    
    -- ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ CSV ํ˜•์‹์œผ๋กœ ๋งˆํฌ์—…ํ•ฉ๋‹ˆ๋‹ค.
    SET MARKUP CSV ON
    
    SPOOL emp_list.csv
    SELECT empno, ename, job, sal, deptno FROM EMP;
    SPOOL OFF
    
    -- ๋งˆํฌ์—…์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.
    SET MARKUP CSV OFF
    @create_csv_emp.sql

    cf) export๋กœ csv ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ

    2. โ‘ข SQL ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ Oracle 9i ์—์„œ๋Š” ์ •๋ ฌ๋˜์–ด ๋‚˜ํƒ€๋‚˜์ง€๋งŒ Oracle 10g์ดํ›„ ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” ์ •๋ ฌ๋œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š”๋‹ค. ์ด์œ ๋ฅผ ์ฐพ์•„ ์„ค๋ช…

    ๐Ÿ’ก
    Oracle 9i ์—์„œ DISTINCT์˜ ๋‚ด๋ถ€์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ๊ตฌํ˜„๋˜์–ด ์žˆ์—ˆ๋‹ค. Oracle 10g ์ดํ›„ ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” DISTINCT๋ฅผ Hash ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ ฌ๋œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š”๋‹ค.

    3. โ‘ฅโ‘ฆ SQL์ด ์™œ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š”์ง€ Select Syntax Diagram์„ ๋ณด๊ณ  ์„ค๋ช…

    ๐Ÿ’ก
    โ‘ฅ SELECT DISTINCT JOB, DISTINCT DEPTNO FROM EMP; // ๋ฒ”์œ„?
    • DISTINCT ๋Š” ๋งจ ์•ž ํ•˜๋‚˜๋งŒ ๊ฐ€๋Šฅ (๊ฐ ์ปฌ๋Ÿผ ์กฐํ•ฉ์— ๋Œ€ํ•œ ์ค‘๋ณต ์ œ๊ฑฐ)

    โ‘ฆ SELECT JOB, DISTINCT DEPTNO FROM EMP; // ์œ„์น˜?

    • DISTINCT๋Š” ๋งจ ์•ž์— ์œ„์น˜ํ•ด์•ผ ํ•œ๋‹ค.
    • ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์กฐํ•ฉ์— ๋Œ€ํ•œ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ ์ด๋ฏ€๋กœ, JOB์„ ๋จผ์ € select ํ•˜๊ณ  ์ดํ›„ ์ค‘๋ณต์ œ๊ฑฐ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

    4. Interactive SQL ๊ณผ Embedded SQL๋ฅผ ์„ค๋ช… ํ•˜๊ณ  ๊ฐ๊ฐ์˜ ์‚ฌ์šฉ์˜ˆ์‹œ๋ฅผ ์ฐพ์•„์„œ ๋ฐœํ‘œ

    ๐Ÿ’ก
    Interactive SQL๊ณผ Embedded SQL์€ ๋‘˜ ๋‹ค SQL(Structured Query Language)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

    Interactive SQL์€ ์‚ฌ์šฉ์ž๊ฐ€ SQL ๋ช…๋ น์„ DBMS๋กœ ์ง์ ‘ ์ „์†กํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ƒํ˜ธ ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” SQL ์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์‹คํ–‰ํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ์ฆ‰์‹œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    Embedded SQL์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด(์˜ˆ: C, C++, Java) ๋‚ด์—์„œ SQL ์ฝ”๋“œ๋ฅผ ๋‚ด์žฅํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ฝ”๋“œ ๋‚ด์— SQL ๋ฌธ์„ ์‚ฝ์ž…ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • Java - Host Language
    • SQL -

    ๊ฐ๊ฐ์˜ ์‚ฌ์šฉ ์˜ˆ์‹œ๋กœ, ์šฐ๋ฆฌ๊ฐ€ ์‹ค์Šต์œผ๋กœ SQL Developer๋ฅผ ํ™œ์šฉํ•˜์—ฌ DBMS ์„œ๋ฒ„์— ์ง์ ‘ SQL ์ฟผ๋ฆฌ๋ฅผ ์ „์†กํ•˜๋Š” ๊ฒƒ์ด Interactive SQL ๋ฐฉ๋ฒ•์ด๊ณ , ์ถ”ํ›„ JAVA์—์„œ JDBC๋ฅผ ํ™œ์šฉํ•˜์—ฌ SQL ์ฝ”๋“œ๋ฅผ ๋‚ด์žฅํ•˜์—ฌ ์ฟผ๋ฆฌํ•˜๋Š” ๊ฒƒ์ด Embedded SQL์˜ ์˜ˆ์‹œ ์ž…๋‹ˆ๋‹ค.

    ๐Ÿ’ก
    ์ถ”ํ›„ Interactive SQL์„ ํ†ตํ•ด SQL์„ ๊ฐœ๋ฐœ ๋ฐ ๊ธฐ๋Šฅ, ์„ฑ๋Šฅ์„ ๊ฒ€์ฆํ•˜๊ณ , embeded SQL๋กœ ํ•ด๋‹น SQL์„ ๋„ฃ์–ด ๊ฐœ๋ฐœํ•œ๋‹ค.

    5. SELECT * FROM SALGRADE WHERE 3000 BETWEEN LOSAL AND HISAL; ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์„ค๋ช…

    ๐Ÿ’ก
    ๊ฒฐ๊ณผ

    "salgrade" ํ…Œ์ด๋ธ”์—์„œ "losal"๊ณผ "hisal" ์‚ฌ์ด์— 3000์ด ํฌํ•จ๋˜๋Š” ํ–‰์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    "salgrade" ํ…Œ์ด๋ธ”์€ ๊ธ‰์—ฌ ๋ฒ”์œ„์™€ ํ•ด๋‹น ๋ฒ”์œ„์— ๋Œ€ํ•œ ๋“ฑ๊ธ‰์„ ํฌํ•จํ•˜๋Š” ํ…Œ์ด๋ธ”์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ด ์ฟผ๋ฆฌ๋Š” 3000๋‹ฌ๋Ÿฌ์˜ ๊ธ‰์—ฌ๊ฐ€ ์–ด๋–ค ๋“ฑ๊ธ‰์— ์†ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.

    6. ์•„๋ž˜์˜ SQL ์‹คํ–‰์‹œ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰์ด ์•ˆ๋˜๋Š” ์ด์œ ๋ฅผ ๋‚ ์งœ ํฌ๋งท YY ์™€ RR์˜ ์ฐจ์ด์ ์„ ์กฐ์‚ฌํ•œ ํ›„ ์„ค๋ช…

    SELECT ENAME,SAL,HIREDATE FROM EMP
    WHERE HIREDATE BETWEEN to_date('81/02/20','yy/mm/dd')
    AND to_date('82/12/09','yy/mm/dd');

    ๐Ÿ’ก
    yy : 0์„ ๊ธฐ์ค€์œผ๋กœ 100๋…„ ์ฃผ๊ธฐ๋กœ ์—ฐ๋„๋ฅผ ํ‘œ๊ธฐํ•จ. ๋”ฐ๋ผ์„œ, 2000๋…„๋Œ€๋งŒ ํ‘œ๊ธฐํ•  ์ˆ˜ ์žˆ๊ณ , 1900๋…„๋Œ€๋Š” ํ‘œ๊ธฐํ•  ์ˆ˜ ์—†๋‹ค. rr : 50์„ ๊ธฐ์ค€์œผ๋กœ 100๋…„๋Œ€๋ฅผ ๋‚˜๋ˆˆ๋‹ค. ๋”ฐ๋ผ์„œ, 00์—์„œ 49๊นŒ์ง€๋Š” 2000๋…„์—์„œ 2049๋…„๊นŒ์ง€์˜ ์—ฐ๋„๋กœ, 50์—์„œ 99๊นŒ์ง€๋Š” 1950๋…„์—์„œ 1999๋…„๊นŒ์ง€์˜ ์—ฐ๋„๋กœ ํ•ด์„๋œ๋‹ค.

    โ†’ ๋”ฐ๋ผ์„œ ์œ„ SQL ์ฝ”๋“œ๋ฅผ yy๋กœ๋Š” 2081๋…„, 2082๋…„๋Œ€๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์œผ๋ฏ€๋กœ ํ•ด๋‹น ์—ฐ๋„์— ์†ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๊ณ  ์ถœ๋ ฅ๋˜์—ˆ๋‹ค.

    โ†’ rr ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ 1981๋…„, 1982๋…„์œผ๋กœ ์ •์ƒ ์ธ์‹๋˜์–ด ์ •์ƒ์ ์œผ๋กœ ํ•ด๋‹น ์—ฐ๋„์— ์†ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถœ๋ ฅ๋˜์—ˆ๋‹ค.

    7. LIKE ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ENAME์— '_' ๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ์‚ฌ์›๋“ค์„ ์ฐพ๋Š” SQL ์ž‘์„ฑ ENAME ์ปฌ๋Ÿผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •(UPDATE)ํ•˜์—ฌ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์˜ˆ์‹œ ์ถœ๋ ฅ -ํžŒํŠธ : escape option

    EMP ํ…Œ์ด๋ธ” ENAME ์ปฌ๋Ÿผ ๋ฐ์ดํ„ฐ ์ˆ˜์ • (UPDATE)

    update emp
    set ENAME = '_'||ENAME
    WHERE (JOB = 'SALESMAN');
    ๐Ÿ’ก
    ์œ„ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด JOB์ด SALESMAN์ธ ์‚ฌ๋žŒ์˜ ์ด๋ฆ„์— โ€˜_โ€™๊ฐ€ ๋“ค์–ด๊ฐ€๋„๋ก ์ˆ˜์ •ํ–ˆ๋‹ค.

    โ€˜_โ€™๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ์‚ฌ์› ์ฐพ๋Š” SQL ์ž‘์„ฑ

    select * from emp
    where ENAME LIKE '%\_%' escape '\';
    ๐Ÿ’ก
    ์ •์ƒ์ ์œผ๋กœ โ€˜_โ€™๊ฐ€ ํฌํ•จ๋œ ์ด๋ฆ„์„ ๊ฐ€์ง„ ํ–‰์ด ์ถœ๋ ฅ๋˜์—ˆ๋‹ค.



    Uploaded by N2T

    728x90
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Keydi's Tistory