/
SELECT

SELECT

SELECT๋Š” ๋งˆํฌ๋ฒ ์ด์Šค์—์„œ ๊ฐ์ข… ํ…Œ์ด๋ธ”๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ฑฐ๋‚˜ ํ•„ํ„ฐ๋ง ๋ฐ ์กฐ์ž‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ๋ฌธ์ด๋‹ค.

SELECT Syntax


select_stmt UNION ALL select_stmt
SELECT target_list FROM TableList WHERE Condition GROUP BY Expr ORDER BY Expr [Desc] HAVING Expr SERIES BY Expr LIMIT N[,N] DURATION TimeExpr;


SET OPERATOR


์—ฌ๋Ÿฌ ๊ฐœ์˜ Select๋ฌธ์˜ ๊ฒฐ๊ณผ๋ฅผ ํ•˜๋‚˜์˜ ์งˆ์˜ ๊ฒฐ๊ณผ๋กœ ์ „๋‹ฌ๋ฐ›์„ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค. ๋งˆํฌ๋ฒ ์ด์Šค๋Š” UNION ALL ์ง‘ํ•ฉ ์—ฐ์‚ฐ์ž๋งŒ์„ ์ง€์›ํ•œ๋‹ค. ์ง‘ํ•ฉ ์—ฐ์‚ฐ์ž๋Š” ์ขŒ์šฐ์— ๊ธฐ์ˆ ๋œ Select๋ฌธ์ด (1) ๊ฐ™๊ฑฐ๋‚˜ ํ˜ธํ™˜๊ฐ€๋Šฅํ•œ ํƒ€์ž…์ด๋ฉฐ (2) ์งˆ์˜ ๊ฒฐ๊ณผ๊ฐ’์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋™์ผํ•œ ๊ฒฝ์šฐ์—๋งŒ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋‘ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ผ์น˜ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ์˜ค๋ฅ˜๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.

๋‹ค์Œ์˜ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ณ€ํ™˜์ด๋‚˜ ํ˜ธํ™˜์„ฑ ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  • ๋ถ€ํ˜ธ ์žˆ๋Š” ์ •์ˆ˜ํ˜• ํƒ€์ž…๊ณผ ๋ถ€ํ˜ธ ์—†๋Š” ์ •์ˆ˜ํ˜• ํƒ€์ž…์€ ํ˜ธํ™˜์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.

  • ์ •์ˆ˜ํ˜• ํƒ€์ž…์€ ์‹ค์ˆ˜ํ˜• ํƒ€์ž…๊ณผ ํ˜ธํ™˜์ด ๋˜๋ฉฐ ์งˆ์˜ ๊ฒฐ๊ณผ๋Š” ์‹ค์ˆ˜ํ˜• ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ๋ฐ˜ํ™˜๋œ๋‹ค.

  • ๋ฌธ์žํ˜• ํƒ€์ž…์€ ๊ธธ์ด๊ฐ€ ๋‹ฌ๋ผ๋„ ํ˜ธํ™˜์ด ๋œ๋‹ค.

  • IPv6 ํƒ€์ž…๊ณผ IPv4 ํƒ€์ž…์€ ํ˜ธํ™˜์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.

  • ๋‘ ๊ฐœ์˜ SELECT ๋ฌธ ์ค‘ ํ•ญ์ƒ ์™ผ์ชฝ ์งˆ์˜์˜ ์ปฌ๋Ÿผ๋ช…์ด ์‚ฌ์šฉ๋œ๋‹ค.

์‹คํ–‰ ์˜ˆ์ œ

SELECT i1, i2 FROM table_1
UNION ALL
SELECT c1, c2 FROM table_2


TARGET LIST


Select ๋ฌธ์ด ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์ปฌ๋Ÿผย ๋˜๋Š” Subquery ์˜ ๋ฆฌ์ŠคํŠธ์ด๋‹ค.

Target list์— ์‚ฌ์šฉ๋œ Subquery๋Š” WHERE ์กฐ๊ฑด์ ˆ์—์„œ ์‚ฌ์šฉ๋˜๋Š” Subquery์™€ ๊ฐ™์ด ๋‘ ๊ฐœ ์ด์ƒ์˜ ๊ฐ’์„ ๊ฐ–๊ฑฐ๋‚˜ ๋‘ ๊ฐœ ์ด์ƒ์˜ ๊ฒฐ๊ณผ ์ปฌ๋Ÿผ์„ ๊ฐ–๋Š” ๊ฒฝ์šฐ์—๋Š” ์˜ค๋ฅ˜๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.

SELECT i1, i2 ...
SELECT i1 (Select avg(c1) FROM t1), i2 ...


CASE ๊ตฌ๋ฌธ

CASE <simple_case_expression|searched_case_expression> [else_clause] END

simple_case_expression ::=
    expr WHEN comparison_expr THEN return_expr 
        [WHEN comparison_expr THEN return_expr ...]

searched_case_expression ::=
    WHEN condtion_expr THEN return EXPR [WHEN condtion_expr THEN return EXPR ...]

else_clause ::=
    ELSE else_value_expr

์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋žจ ์–ธ์–ด์˜ IF... THEN... ELSE๋ธ”๋ก์„ ์ง€์›ํ•˜๋Š” ํ‘œํ˜„์‹์ด๋‹ค. simple_case_expression์€ ํ•˜๋‚˜์˜ ์ปฌ๋Ÿผ์ด๋‚˜ ํ‘œํ˜„์‹์ด when ๋’ค์— ์˜ค๋Š” comparison_expr ๊ฐ’๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ return_expr์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ˜•ํƒœ๋กœ ์ˆ˜ํ–‰๋˜๋ฉฐ ์ด when ... then ์ ˆ์€ ์›ํ•˜๋Š” ๋งŒํผ ๋ฐ˜๋ณตํ•˜์—ฌ ๊ธฐ์ˆ ํ•  ์ˆ˜ ์žˆ๋‹ค.

searched_case_expression์€ CASE ์ดํ›„์— ํ‘œํ˜„์‹์„ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  when์ ˆ์— ๋น„๊ต์—ฐ์‚ฐ์ž๋ฅผ ํฌํ•จํ•œ ์กฐ๊ฑด์ ˆ์„ ๊ธฐ์ˆ ํ•œ๋‹ค. ๊ฐ ๋น„๊ต์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ์ด๋ฉด then ์ ˆ์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. else ์ ˆ์€ when ์ ˆ๋“ค์˜ ๊ฐ’์ด ๋งŒ์กฑํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ(expression ๊ฒฐ๊ณผ๊ฐ€ NULL์ธ ๊ฒฝ์šฐ์—๋„) else_value๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

select * from t1;
I1          I2          
---------------------------
2           2           
1           1           
[2] row(s) selected.

select case i1 when 1 then 100 end from t1;
case i1 when 1 then 100 end 
------------------------------
NULL        
100         
[2] row(s) selected.

simple_case_expression์˜ ์˜ˆ์ œ์—์„œ i1 ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด 2์ธ ๊ฒฝ์šฐ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์ด ์—†์œผ๋ฉด NULL์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

select case when i1 > 0 then 100 when i1 > 1 then 200 end from t1;
case when i1 > 0 then 100 when i1 > 1 then 200 end
------------------------------------------
100         
100         
[2] row(s) selected.

searched_case_expression์—์„œ ๋งŒ์กฑํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ์กฐ๊ฑด์ ˆ์„ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ ์ฒซ ๋ฒˆ์งธ ์กฐ๊ฑด์ ˆ์˜ ๋ฐ˜ํ™˜๊ฐ’์ธ 100์ด ๋ฐ˜ํ™˜๋˜๋ฉฐ ๋‘ ๋ฒˆ์งธ ์กฐ๊ฑด์ ˆ์€ ์‹คํ–‰์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.


FROM


FROM ์ ˆ์—๋Š” ํ…Œ์ด๋ธ” ์ด๋ฆ„์ด๋‚˜ Inline view๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ…Œ์ด๋ธ” ๊ฐ„์˜ Join์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ํ…Œ์ด๋ธ” ํ˜น์€ Inline view๋ฅผ ์‰ผํ‘œ(,)๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ๋‚˜์—ดํ•œ๋‹ค.

FROM table_name

table_name๋กœ ์ง€์ •ํ•œ ํ…Œ์ด๋ธ” ๋‚ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•œ๋‹ค.


SUBQUERY(INLINE VIEW) ์‚ฌ์šฉ

FROM (Select statement)

๊ด„ํ˜ธ๋กœ ๋‘˜๋ ค์ณ์ง„ subquery์˜ ๋‚ด์šฉ์— ๋Œ€ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•œ๋‹ค.


๋งˆํฌ๋ฒ ์ด์Šค ์„œ๋ฒ„๋Š” correlated subquery๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ outer query์—์„œ subquery ๋‚ด์˜ column์„ ์ฐธ์กฐํ•  ์ˆ˜ ์—†๋‹ค.


JOIN(INNER JOIN)

FROM TABLE_1, TABLE_2

๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ” table_1 ๊ณผ table_2๋ฅผ JOINํ•œ๋‹ค. INNER JOIN์€ ํ…Œ์ด๋ธ”์ด 3๊ฐœ ์ด์ƒ ๋‚˜์—ด๋  ๋•Œ์—๋„ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ WHERE ์ ˆ์— ๊ฒ€์ƒ‰ ์กฐ๊ฑด์ ˆ๊ณผ JOIN ์กฐ๊ฑด์ ˆ์„ ๋ชจ๋‘ ๊ธฐ์ˆ ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

SELECT t1.i1, t2.i1 FROM t1, t2 WHERE t1.i1 = t2.i1 AND t1.i1 > 1 AND t2.i2 = 3;


INNER JOIN ๋ฐ OUTER JOIN

ANSI ์Šคํƒ€์ผ์˜ INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN์„ ์ง€์›ํ•œ๋‹ค. FULL OUTER JOIN์€ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.

FROM TABLE_1 [INNER|LEFT OUTER|RIGHT OUTER] JOIN TABLE_2 ON expression

ANSI ์Šคํƒ€์ผ JOIN์ ˆ์˜ ON์ ˆ์—๋Š” JOIN์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ์กฐ๊ฑด์ ˆ์„ ์‚ฌ์šฉํ•œ๋‹ค. OUTER JOIN ์งˆ์˜์—์„œ where์ ˆ์— Inner table(ON ์ ˆ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ์•Š์œผ๋ฉด NULL์ด ์ฑ„์›Œ์ง€๋Š” ํ…Œ์ด๋ธ”)์— ๋Œ€ํ•œ ์กฐ๊ฑด์ ˆ์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ์งˆ์˜๋Š” INNER JOIN์œผ๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

SELECT t1.i1 t2.i1 FROM t1 LEFT OUTER JOIN t2 ON (t1.i1 = t2.i1) WHERE t2.i2 = 1;

์œ„ ์งˆ์˜๋Š” WHERE ์ ˆ์˜ ์กฐ๊ฑด t2.i2 = 1์— ์˜ํ•˜์—ฌ INNER JOIN์œผ๋กœ ๋ณ€ํ™˜๋œ๋‹ค.


PIVOT


PIVOT ๊ตฌ๋ฌธ์€ ๋งˆํฌ๋ฒ ์ด์Šค 5.5.6 ๋ฒ„์ „๋ถ€ํ„ฐ ์ง€์›ํ•œ๋‹ค.


pivot_clause:

PIVOT ๊ตฌ๋ฌธ์€ ROW๋กœ ์ถœ๋ ฅ๋˜๋Š” GROUP BY์— ๋Œ€ํ•œ ์ง‘๊ณ„ ๊ฒฐ๊ณผ๋ฅผ ์ปฌ๋Ÿผ์œผ๋กœ ์žฌ๋ฐฐ์—ดํ•˜์—ฌ ๋ณด์—ฌ์ค€๋‹ค.

Inline view์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜ํ–‰๋œ๋‹ค.

  • Inline view์˜ ๊ฒฐ๊ณผ ์ปฌ๋Ÿผ ์ค‘ PIVOT ์ ˆ์— ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ์ปฌ๋Ÿผ์œผ๋กœ GROUP BY๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„ PIVOT IN ์ ˆ์— ๋‚˜์—ด๋œ ๊ฐ’ ๋ณ„๋กœ ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • ๊ฒฐ๊ณผ๋กœ ๋‚˜์˜จ grouping ์ปฌ๋Ÿผ๊ณผ ์ง‘๊ณ„ ๊ฒฐ๊ณผ๋ฅผ ํšŒ์ „ํ•˜์—ฌ ์ปฌ๋Ÿผ์œผ๋กœ ๋ณด์—ฌ์ค€๋‹ค.

์˜ˆ)ย ์—ฌ๋Ÿฌ ์„ผ์„œ๋กœ๋ถ€ํ„ฐ ์ˆ˜์ง‘๋œ ๋ฐ์ดํ„ฐ์—์„œ ๊ฐ device ๋ณ„๋กœ value ๊ฐ’์„ ์ง‘๊ณ„ํ•ด์„œ ์ถœ๋ ฅํ•˜๋ผ.

CASE ๊ตฌ๋ฌธ์„ ํ†ตํ•ด ์ˆ˜ํ–‰ํ•ด์•ผํ•˜๋Š” ์งˆ์˜๋ฅผ PIVOT ๊ตฌ๋ฌธ์„ ํ†ตํ•ด ๊ฐ„๋‹จํžˆ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

-- w/o PIVOT
SELECT * FROM (
    SELECT
             regtime,
             SUM(CASE WHEN tagid = 'FRONT_AXIS_TORQUE' THEN dvalue ELSE 0 END)  AS front_axis_torque,
             SUM(CASE WHEN tagid = 'REAR_AXIS_TORQUE' THEN dvalue ELSE 0 END)  AS rear_axis_torque,
             SUM(CASE WHEN tagid = 'HOIST_AXIS_TORQUE' THEN dvalue ELSE 0 END)  AS hoist_axis_torque,
             SUM(CASE WHEN tagid = 'SLIDE_AXIS_TORQUE' THEN dvalue ELSE 0 END)  AS slide_axis_torque
    FROM     result_d
    WHERE    regtime BETWEEN TO_DATE('2018-12-07 00:00:00') AND TO_DATE('2018-12-08 05:00:00')
    GROUP BY regtime
) WHERE front_axis_torque >= 40 AND rear_axis_torque >= 20;
 
-- w/ PIVOT
SELECT * FROM (
    SELECT regtime, tagid, dvalue FROM result_d
    WHERE  regtime BETWEEN TO_DATE('2018-12-07 00:00:00') AND TO_DATE('2018-12-08 05:00:00')
) PIVOT (SUM(dvalue) FOR tagid IN ('FRONT_AXIS_TORQUE', 'REAR_AXIS_TORQUE', 'HOIST_AXIS_TORQUE', 'SLIDE_AXIS_TORQUE'))
WHERE front_axis_torque >= 40 AND rear_axis_torque >= 20;

-- Result
regtime                         'FRONT_AXIS_TORQUE'         'REAR_AXIS_TORQUE'          'HOIST_AXIS_TORQUE'         'SLIDE_AXIS_TORQUE'        
------------------------------------------------------------------------------------------------------------------------------------------------------
2018-12-07 16:42:29 840:000:000 12158                       7244                        NULL                        NULL                       
2018-12-07 14:56:26 220:000:000 3308                        663                         NULL                        NULL                       
2018-12-07 12:20:13 844:000:000 3804                        113                         NULL                        NULL                       
2018-12-07 11:10:01 957:000:000 8729                        5384                        NULL                        NULL                       
2018-12-07 17:46:57 812:000:000 7500                        4559                        NULL                        NULL                       
2018-12-07 14:30:06 138:000:000 5080                        6817                        NULL                        -429                       
2018-12-07 13:09:20 464:000:000 5233                        1869                        -7253                       NULL                       
2018-12-07 15:43:03 539:000:000 7491                        4453                        NULL                        NULL 
...

WHERE


SUBQUERY์˜ ์‚ฌ์šฉ

์กฐ๊ฑด์ ˆ์— ๋Œ€ํ•ด์„œ subquery์˜ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. IN ๊ตฌ๋ฌธ์„ ์ œ์™ธํ•œ ์กฐ๊ฑด์ ˆ์—์„œ subquery๊ฐ€ ๋‘ ๊ฐœ ์ด์ƒ์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฆฌํ„ดํ•˜๊ฑฐ๋‚˜, subquery์˜ ๊ฒฐ๊ณผ ์ปฌ๋Ÿผ์ด ๋‘ ๊ฐœ ์ด์ƒ์ธ ๊ฒฝ์šฐ๋Š” ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.

WHERE i1 = (SELECT MAX(c2) FROM T1)

subquery๋ฅผ ์กฐ๊ฑด์—ฐ์‚ฐ์ž ์˜ค๋ฅธ์ชฝ์— ๊ด„ํ˜ธ๋ฅผ ๋‘˜๋Ÿฌ์ณ์„œ ์‚ฌ์šฉํ•œ๋‹ค.


SEARCH ๊ตฌ๋ฌธ

์ผ๋ฐ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ๋ฌธ๋ฒ•์ด ๋™์ผํ•˜๋‹ค. ๋‹จ,ย ๋ฐ˜๋“œ์‹œ keyword index๋ฅผ ๋“ฑ๋กํ•ด์•ผ ํ•˜๋ฉฐ,ย ํ…์ŠคํŠธ ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ์—ฐ์‚ฐ์ž ํ‚ค์›Œ๋“œ์ธ "SEARCH"๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ, ๋ถ€๊ฐ€์ ์ธ ๊ฒ€์ƒ‰ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

-- drop table realdual;
create table realdual (id1 integer, id2 varchar(20), id3 varchar(20));

create keyword index idx1 on realdual (id2);
create keyword index idx2 on realdual (id3);

insert into realdual values(1, 'time time2', 'series series2');

select * from realdual;

select * from realdual where id2 search 'time';
select * from realdual where id3 search 'series' ;
select * from realdual where id2 search 'time' and id3 search 'series';

์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Mach> create table realdual (id1 integer, id2 varchar(20), id3 varchar(20));
Created successfully.

Mach> create keyword index idx1 on realdual (id2);
Created successfully.

Mach> create keyword index idx2 on realdual (id3);
Created successfully.

Mach> insert into realdual values(1, 'time time2', 'series series2');
1 row(s) inserted.

Mach> select * from realdual;
ID1         ID2                   ID3                   
------------------------------------------------------------
1           time time2            series series2  
[1] row(s) selected.

Mach> select * from realdual where id2 search 'time';
ID1         ID2                   ID3
------------------------------------------------------------
1           time time2            series series2
[1] row(s) selected.

Mach> select * from realdual where id3 search 'series';
ID1         ID2                   ID3
------------------------------------------------------------
1           time time2            series series2
[1] row(s) selected.

Mach> select * from realdual where id2 search 'time' and id3 search 'series';
ID1         ID2                   ID3
------------------------------------------------------------
1           time time2            series series2
[1] row(s) selected.


ESEARCH ๊ตฌ๋ฌธ

ESEARCH ๊ตฌ๋ฌธ์€ ASCII ๋ฌธ์ž ํ…์ŠคํŠธ์— ๋Œ€ํ•œ ํ™•์žฅ ๊ฒ€์ƒ‰์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒ€์ƒ‰ ํ‚ค์›Œ๋“œ์ด๋‹ค. ์ด๋Ÿฌํ•œ ํ™•์žฅ์„ ์œ„ํ•ด % ๋ฌธ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ํŒจํ„ด์˜ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ด Like ์—ฐ์‚ฐ์—์„œ ์•ž์— %๊ฐ€ ์˜ค๋Š” ๊ฒฝ์šฐ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ฒ€์‚ฌํ•ด์•ผ ํ•˜์ง€๋งŒ, ESEARCH์˜ ์žฅ์ ์€ ์ด ๊ฒฝ์šฐ์—๋„ ๋น ๋ฅด๊ฒŒ ํ•ด๋‹น ๋‹จ์–ด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฐ ์žˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ์˜๋ฌธ ๋ฌธ์ž์—ด(์—๋Ÿฌ ๋ฌธ์ž์—ด ํ˜น์€ ์ฝ”๋“œ)์˜ ์ผ๋ถ€๋ฅผ ์ฐพ์„ ๋•Œ ๋งค์šฐ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ์ œ

select id2 from realdual where id2 esearch 'bbb%';
id2
--------------------------------------------
bbb ccc1
aaa bbb1

[2] row(s) selected.

๊ฒ€์ƒ‰ pattern 'bbb%'์— ์˜ํ•˜์—ฌ bbb1๋„ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์— ํฌํ•จ๋œ๋‹ค.


select id3 from realdual where id3 esearch '%cd%';
id3
--------------------------------------------
cdf def1
bcd/cdf1ad
abc, bcd1
[3] row(s) selected.

% ๋ฌธ์ž๋Š” ๊ฒ€์ƒ‰ pattern์˜ ์ฒ˜์Œ, ๋ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฐ€์šด๋ฐ์— ์žˆ์–ด๋„ ๋™์ž‘ํ•œ๋‹ค.

select id3 from realdual where id3 esearch '%cd%';
id3
--------------------------------------------
cdf def1
bcd/cdf1ad
abc, bcd1
[3] row(s) selected.


NOT SEARCH ๊ตฌ๋ฌธ

NOT SEARCH๋Š” SEARCH๊ตฌ๋ฌธ์—์„œ ๊ฒ€์ƒ‰๋˜๋Š” ์กฐ๊ฑด ์ด์™ธ์˜ ๋ ˆ์ฝ”๋“œ๋“ค์— ๋Œ€ํ•ด์„œ ์ฐธ์„ ๋ฆฌํ„ดํ•˜๋Š” ๊ตฌ๋ฌธ์ด๋‹ค.

NOT ESEARCH๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

create table t1 (id integer, i2 varchar(10));
create keyword index t1_i2 on t1(i2);
insert into t1 values (1, 'aaaa');
insert into t1 values (2, 'bbbb');

select id from t1 where i2 not search 'aaaa';

id
--------------------------------------------
2
[1] row(s) selected.


REGEXP ๊ตฌ๋ฌธ

REGEXP ๊ตฌ๋ฌธ์€ ์ •๊ทœํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํŠน์ • ์ปฌ๋Ÿผ์˜ ํŒจํ„ด์„ ์ •๊ทœํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๊ฒŒ ๋œ๋‹ค.

ํ•œ๊ฐ€์ง€ ์ฃผ์˜ํ•  ์ ์€ REGEXP ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด ๊ฒ€์ƒ‰ ๋ฒ”์œ„๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ๋‹ค๋ฅธ ์ปฌ๋Ÿผ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ์กฐ๊ฑด์„ ๋„ฃ์–ด์„œ ์ „์ฒด์ ์ธ ๊ฒ€์ƒ‰ ๋น„์šฉ์„ ๋‚ฎ์ถฐ์•ผ ํ•œ๋‹ค.

ํŠน์ • ํŒจํ„ด์„ ๊ฒ€์‚ฌํ•˜๊ณ ์ž ํ•  ๋•Œ์—๋Š” SEARCH ํ˜น์€ ESEARCH๋ฅผ ํ†ตํ•ด ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•˜๋„๋ก ํ•˜๊ณ , ์ด๋ฅผ ํ†ตํ•ด ์ „์ฒด์ ์ธ ๋ฐ์ดํ„ฐ ๊ฑด์ˆ˜๊ฐ€ ์ž‘์•„์ง„ ์ƒํƒœ์—์„œ ๋‹ค์‹œ REGEXP๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ์‹œ์Šคํ…œ ์ „์ฒด ํšจ์œจ ํ–ฅ์ƒ์— ๋„์›€์ด ๋œ๋‹ค

Mach> 
create table realdual (id1 integer, id2 varchar(20), id3 varchar(20));
create table dual (id integer);
insert into dual values(1);
insert into realdual values(1, 'time1', 'series1 series21');
insert into realdual values(1, 'time2', 'series2 series22');
insert into realdual values(1, 'time3', 'series3 series32');


Mach> select * from realdual where id2 REGEXP 'time' ;
ID1         ID2                   ID3                   
------------------------------------------------------------
1           time3                 series3 series32
1           time2                 series2 series22
1           time1                 series1 series21
[3] row(s) selected.

Mach> select * from realdual where id2 REGEXP 'time[12]' ;
ID1         ID2                   ID3                   
------------------------------------------------------------
1           time2                 series2 series22
1           time1                 series1 series21
[2] row(s) selected.

Mach> select * from realdual where id2 REGEXP 'time[13]' ;
ID1         ID2                   ID3                   
------------------------------------------------------------
1           time3                 series3 series32
1           time1                 series1 series21
[2] row(s) selected.

Mach> select * from realdual where id2 regexp 'time[13]' and id3 regexp 'series[12]';
ID1         ID2                   ID3                   
------------------------------------------------------------
1           time1                 series1 series21  
[1] row(s) selected.

Mach> select * from realdual where id2 NOT REGEXP 'time[12]';
ID1         ID2                   ID3                   
------------------------------------------------------------
1           time3                 series3 series32 
[1] row(s) selected.

Mach> SELECT 'abcde' REGEXP 'a[bcd]{1,10}e' from dual;
'abcde' REGEXP 'a[bcd]{1,10}e' 
---------------------------------
1           
[1] row(s) selected.


IN ๊ตฌ๋ฌธ

column_name IN (value1, value2,...)

IN ๊ตฌ๋ฌธ์€ ๋’ค์˜ value ๋ฆฌ์ŠคํŠธ์—์„œ ๋งŒ์กฑํ•  ๊ฒฝ์šฐ TRUE๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. OR๋กœ ์—ฐ๊ฒฐ๋œ ๊ตฌ๋ฌธ๊ณผ ๋™์ผํ•˜๋‹ค.


IN ๊ตฌ๋ฌธ๊ณผ SUBQUERY์˜ ์‚ฌ์šฉ

์กฐ๊ฑด์ ˆ์˜ IN ๊ตฌ๋ฌธ์˜ ์˜ค๋ฅธ์ชฝ์— subquery๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ, IN ์กฐ๊ฑด์ ˆ์˜ ์™ผ์ชฝ์—๋Š” ์ปฌ๋Ÿผ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ปฌ๋Ÿผ์„ ์ง€์ •ํ•˜๋ฉด ์˜ค๋ฅ˜๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์˜ค๋ฅธ์ชฝ์˜ subquery์—์„œ ๋ฆฌํ„ด๋˜๋Š” ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์ด ์™ผ์ชฝ ์ปฌ๋Ÿผ๊ฐ’์— ์กด์žฌํ•˜๋Š”์ง€๋ฅผ ๊ฒ€์‚ฌํ•œ๋‹ค.

WHERE i1 IN (Select c1 from ...)

๋งˆํฌ๋ฒ ์ด์Šค ์„œ๋ฒ„๋Š” correlated subquery๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ outer query์—์„œ subquery ๋‚ด์˜ column์„ ์ฐธ์กฐํ•  ์ˆ˜ ์—†๋‹ค.


BETWEEN ๊ตฌ๋ฌธ

column_name BETWEEN value1 AND value2

BETWEEN ๊ตฌ๋ฌธ์€ column์˜ ๊ฐ’์ด value1๊ณผ value2 ๋ฒ”์œ„์— ์žˆ์„ ๊ฒฝ์šฐ, TRUE๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

RANGE ๊ตฌ๋ฌธ

column_name RANGE duration_spec;

-- duration_spec : integer (YEAR | WEEK | HOUR | MINUTE | SECOND);

์ง€์ •๋œ ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด ์‹œ๊ฐ„ ์กฐ๊ฑด์ ˆ์„ ์‰ฝ๊ฒŒ ์ง€์ •ํ•˜๋Š” Range ์—ฐ์‚ฐ์ž๋ฅผ ์ œ๊ณตํ•œ๋‹ค. Range ์—ฐ์‚ฐ์ž๋Š” (BEFORE ํ‚ค์›Œ๋“œ๋กœ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ) ํŠน์ • ์‹œ์ ์„ ์ง€์ •ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ํ˜„์žฌ ์‹œ์ ๋ถ€ํ„ฐ์˜ ์‹œ๊ฐ„ ๋ฒ”์œ„๋ฅผ ์—ฐ์‚ฐ์˜ ๋Œ€์ƒ ์กฐ๊ฑด์œผ๋กœ ์ง€์ •ํ•œ๋‹ค. ์ด ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์†์‰ฝ๊ฒŒ ์›ํ•˜๋Š” ์‹œ๊ฐ„ ๋ฒ”์œ„ ๋‚ด์˜ ๊ฒฐ๊ณผ ๋ ˆ์ฝ”๋“œ๋“ค์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

select * from test where id < 2 and c1 range 1 hour;
ID          C1                              
-----------------------------------------------
1           2014-07-25 09:28:53 706:707:001 
[1] row(s) selected.


GROUP BY / HAVING


GROUP BY ์ ˆ์€ SELECT ๋ฌธ์œผ๋กœ ๊ฒ€์ƒ‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ํŠน์ • ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃนํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋ฉฐ, ๊ทธ๋ฃน๋ณ„๋กœ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ์ง‘๊ณ„ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ๋ฃน๋ณ„ ์ง‘๊ณ„๋ฅผ ๊ตฌํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ฃน์ด๋ž€ GROUP BY ์ ˆ์— ๋ช…์‹œ๋œ ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด ๋™์ผํ•œ ์ปฌ๋Ÿผ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋ ˆ์ฝ”๋“œ๋“ค์„ ์˜๋ฏธํ•œ๋‹ค.

GROUP BY ์ ˆ ๋’ค์— HAVING ์ ˆ์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๊ทธ๋ฃน ์„ ํƒ์„ ์œ„ํ•œ ์กฐ๊ฑด์‹์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, GROUP BY ์ ˆ๋กœ ๊ตฌ์„ฑ๋˜๋Š” ๋ชจ๋“  ๊ทธ๋ฃน ์ค‘ HAVING ์ ˆ์— ๋ช…์‹œ๋œ ์กฐ๊ฑด์‹์„ ๋งŒ์กฑํ•˜๋Š” ๊ทธ๋ฃน๋งŒ ์กฐํšŒํ•œ๋‹ค.

SELECT ...
GROUP BY { col_name | expr } ,...[ HAVING <search_condition> ] 

select id1, avg(id2) from exptab where id2 group by id1 order by id1;
id1 ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ id2์˜ ํ‰๊ท ๊ฐ’์„ ๊ตฌํ•œ๋‹ค.



ORDER BY


ORDER BY ์ ˆ์€ ์งˆ์˜ ๊ฒฐ๊ณผ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ ๋˜๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ฉฐ, ASC ๋˜๋Š” DESC์™€ ๊ฐ™์€ ์ •๋ ฌ ์˜ต์…˜์„ ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด ๋””ํดํŠธ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค. ORDER BY ์ ˆ์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด, ์กฐํšŒ๋˜๋Š” ๋ ˆ์ฝ”๋“œ์˜ ์ˆœ์„œ๋Š” ์งˆ์˜์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.

SELECT ...
ORDER BY {col_name | expr} [ASC | DESC]

select id1, avg(id2) from exptab where id2 group by id1 order by id1;
id1 ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ id2์˜ ํ‰๊ท ๊ฐ’์„ ๊ตฌํ•œ๋‹ค.


SERIES BY


SERIES BY ์ ˆ์€ ์ •๋ ฌ๋œ ๊ฒฐ๊ณผ์ง‘ํ•ฉ์„ SERIES BY ์กฐ๊ฑด์ ˆ์„ ๋งŒ์กฑํ•˜๋Š” ์—ฐ์†๋œ ๊ฒฐ๊ณผ๊ฐ’๋“ค๋กœ ์ถ”์ถœํ•œ๋‹ค. ๋งŒ์•ฝ ORDER BY ์ ˆ์ด ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” _ARRIVAL_TIME ์ปฌ๋Ÿผ๊ฐ’์„ ์ด์šฉํ•˜์—ฌ ์ •๋ ฌ๋œ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜๋ฏ€๋กœ, _ARRIVAL_TIME ์ปฌ๋Ÿผ์ด ์—†๋Š” ํœ˜๋ฐœ์„ฑ ํ…Œ์ด๋ธ”์ด๋‚˜ ์ฐธ์กฐ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์งˆ์˜๋‚˜, GROUP BY ์ ˆ์„ ์ด์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฐ˜๋“œ์‹œ ORDER BY ์ ˆ์„ ์ด์šฉํ•ด์•ผ ํ•œ๋‹ค.

์กฐ๊ฑด์ ˆ์„ ๋งŒ์กฑํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ’๋“ค์€ ๊ฐ™์€ SERIESNUM() ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ
CREATE TABLE T1 (C1 INTEGER, C2 INTEGER);
INSERT INTO T1 VALUES (0, 1);

INSERT INTO T1 VALUES (1, 2);

INSERT INTO T1 VALUES (2, 3);

INSERT INTO T1 VALUES (3, 2);

INSERT INTO T1 VALUES (4, 1);

INSERT INTO T1 VALUES (5, 2);

INSERT INTO T1 VALUES (6, 3);

INSERT INTO T1 VALUES (7, 1);


์•„๋ž˜์˜ ์งˆ์˜๋Š” ๋‹ค์Œ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
SELECT C1,C2 FROM T1 ORDER BY C1 SERIES BY C2>1;
C1          C2          
---------------------------
1           2           
2           3           
3           2           
5           2           
6           3    

C2 ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด 1 ๋ณด๋‹ค ํฐ C1์˜ RANGE๊ฐ’์„ ์•Œ๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ, SERIESNUM ํ•จ์ˆ˜๋กœ ๊ฐ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์–ด๋Š ๊ทธ๋ฃน์— ํฌํ•จ๋˜๋Š”์ง€๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ RANGE๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.


LIMIT


LIMIT ์ ˆ์€ ์ถœ๋ ฅ๋˜๋Š” ๋ ˆ์ฝ”๋“œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ œํ•œํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์˜ ํŠน์ • ํ–‰๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ํ–‰๊นŒ์ง€ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด ์ •์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค

LIMIT [offset,] row_count

select id1, avg(id2) from exptab where id2 group by id1 order by id1 LIMIT 10;


DURATION


DURATION์€ _arrival_time์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ ๋ฒ”์œ„๋ฅผ ์†์‰ฝ๊ฒŒ ๊ฒฐ์ •ํ•˜๋„๋ก ํ•ด ์ฃผ๋Š” ํ‚ค์›Œ๋“œ์ด๋‹ค. BEFORE ๊ตฌ๋ฌธ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์–ด ํŠน์ • ์‹œ์ ์˜ ํŠน์ • ๋ฐ์ดํ„ฐ ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•˜๊ฒŒ ํ•ด ์ค€๋‹ค. ์ด DURATION์„ ์ž˜ ํ™œ์šฉํ•˜๋ฉด ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์„ ํ˜„๊ฒฉํ•˜๊ฒŒ ์˜ฌ๋ฆผ๊ณผ ๋™์‹œ์— ์‹œ์Šคํ…œ ๋ถ€ํ•˜๋ฅผ ํš๊ธฐ์ ์œผ๋กœ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๋‹ค. ๋” ์ž์„ธํ•œ ํ™œ์šฉ ์šฉ๋„๋Š” ๋‹ค์Œ์„ ์ฐธ์กฐํ•œ๋‹ค.

DURATION Number TimeSpec [BEFORE/AFTER Number TimeSpec]
TimeSpec : YEAR | MONTH | WEEK |  DAY | HOUR | MINUTE | SECOND
create table t8(i1 integer);
insert into t8 values(1);
insert into t8 values(2);

select i1 from t8;

# BEFORE ์ ˆ ์—†์ด
select i1 from t8 duration 2 second;
select i1 from t8 duration 1 minute;
select i1 from t8 duration 1 hour;
select i1 from t8 duration 1 day;
select i1 from t8 duration 1 week;
select i1 from t8 duration 1 month;
select i1 from t8 duration 1 year;

# DURATION ๊ตฌ๋ฌธ ์ „์ฒด๋ฅผ ์จ์„œ
select i1 from t8 duration 1 second before 1 day;
select i1 from t8 duration 1 minute before 1 day;
select i1 from t8 duration 1 hour before 1 day;
select i1 from t8 duration 1 day before 1 day;
select i1 from t8 duration 1 week before 1 day;
select i1 from t8 duration 1 month before 1 day;
select i1 from t8 duration 1 year before 1 day;

์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Mach> create table t8(i1 integer);
Created successfully.

Mach> insert into t8 values(1);
1 row(s) inserted.

Mach> insert into t8 values(2);
1 row(s) inserted.

Mach> select i1 from t8;
i1          
--------------
2           
1           
[2] row(s) selected.

# BEFORE ์ ˆ ์—†์ด
Mach> select i1 from t8 duration 2 second;
i1          
--------------
2           
1           
[2] row(s) selected.

Mach> select i1 from t8 duration 1 minute;
i1          
--------------
2           
1           
[2] row(s) selected.

Mach> select i1 from t8 duration 1 hour;
i1          
--------------
2           
1           
[2] row(s) selected.

Mach> select i1 from t8 duration 1 day;
i1          
--------------
2           
1           
[2] row(s) selected.

Mach> select i1 from t8 duration 1 week;
i1          
--------------
2           
1           
[2] row(s) selected.

Mach> select i1 from t8 duration 1 month;
i1          
--------------
2           
1           
[2] row(s) selected.

Mach> select i1 from t8 duration 1 year;
i1          
--------------
2           
1           
[2] row(s) selected.

# DURATION ๊ตฌ๋ฌธ ์ „์ฒด๋ฅผ ์จ์„œ
Mach> select i1 from t8 duration 1 second before 1 day;
i1          
--------------
[0] row(s) selected.

Mach> select i1 from t8 duration 1 minute before 1 day;
i1          
--------------
[0] row(s) selected.

Mach> select i1 from t8 duration 1 hour before 1 day;
i1          
--------------
[0] row(s) selected.

Mach> select i1 from t8 duration 1 day before 1 day;
i1          
--------------
[0] row(s) selected.

Mach> select i1 from t8 duration 1 week before 1 day;
i1          
--------------
[0] row(s) selected.

Mach> select i1 from t8 duration 1 month before 1 day;
i1          
--------------
[0] row(s) selected.

Mach> select i1 from t8 duration 1 year before 1 day;
i1          
--------------
[0] row(s) selected.


SAVE DATA


์งˆ์˜์˜ ๊ฒฐ๊ณผ๋ฅผ CSV ๋ฐ์ดํ„ฐ ํŒŒ์ผ๋กœ ๋ฐ”๋กœ ์ €์žฅํ•œ๋‹ค.

SAVE DATA INTO 'file_name.csv' [{FIELDS | COLUMNS} [TERMINATED BY 'char'] [ENCLOSED BY 'char'] ] [HEADER ON|OFF] [ENCODED BY coding_name] AS select query;

์˜ต์…˜์˜ ์„ค๋ช…์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์˜ต์…˜

์„ค๋ช…

(FIELDS|COLUMNS) TERMINATED BY 'term_char'

ENCLOSED BY 'escape_char'

์ƒ์„ฑํ•  csv ํŒŒ์ผ์˜ ์ปฌ๋Ÿผ ๊ตฌ๋ถ„์ž์™€ ์ด์Šค์ผ€์ดํ”„ ๊ตฌ๋ถ„์ž๋ฅผ ์ง€์ •ํ•œ๋‹ค.

HEADER (ON|OFF)

์ƒ์„ฑํ•  csv ํŒŒ์ผ์˜ ์ฒซ๋ฒˆ์งธ ๋ผ์ธ์— ์ปฌ๋Ÿผ๋ช…์„ ์ž…๋ ฅํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ OFF์ด๋‹ค.

ENCODED BY coding_name

coding_name = ( UTF8, MS949, KSC5601, EUCJP, SHIFTJIS, BIG5, GB231280 )

์ถœ๋ ฅ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์˜ ์ธ์ฝ”๋”ฉ ํฌ๋งท์„ ์ง€์ •ํ•œ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ UTF8์ด๋‹ค.

SAVE DATA INTO '/tmp/aaa.csv' AS select * from t1; 
-- select ๋ฌธ์„ ์‹คํ–‰ํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ '/tmp/aaa.csv' ํŒŒ์ผ์— csv ํฌ๋ฉง์œผ๋กœ ๊ธฐ๋กํ•œ๋‹ค.
 
SAVE DATA INTO '/tmp/ccc.csv'  FIELDS TERMINATED BY ';' ENCLOSED '\''  HEADER ON ENCODED BY 'MS949' AS select * from t1 where i1 > 100;
-- select ๋ฌธ์„ ์‹คํ–‰ํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ /tmp/ccc.csvํŒŒ์ผ์— ๊ธฐ๋กํ•œ๋‹ค. ํ•„๋“œ ๊ตฌ๋ถ„์ž์™€ ์ด์Šค์ผ€์ดํ”„ ๊ตฌ๋ถ„์ž๋ฅผ ๊ฐ๊ฐ ์ง€์ •ํ•˜๊ณ  ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ธ์ฝ”๋”ฉ์€ MS949๋กœ ์„ค์ •ํ•œ๋‹ค.

Related content