mc.thd 2024. 12. 3. 17:19

OPEN SQL

  • abap ์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋ฉฐ DB interface๋ฅผ ํ†ตํ•ด์„œ native sql๋กœ ๋ฒˆ์—ญ๋ฉ๋‹ˆ๋‹ค.
Native SQL : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‚ฌ์šฉ๋˜๋Š” SQL ์–ธ์–ด
  • DML๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. DDL๊ณผ DCL์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  •  Local Buffer๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Native SQL ๋ณด๋‹ค ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

OPEN SQL๋กœ ํ•ด๊ฒฐ๋˜์ง€ ์•Š๋Š” ๋ณต์žกํ•œ SQL ์€ NATIVE SQL์„ ์ด์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

SELECT

  • SINGLE ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์กฐ๊ฑด์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ๋งŒ์•ฝ WHERE๊ตฌ๋ฌธ์ด ์ž˜๋ชป๋˜์–ด ์—ฌ๋Ÿฌ ๋ผ์ธ์ด ์กด์žฌํ•œ๋‹ค๋ฉด ์ž„์˜์˜ ๋ผ์ธ์„ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ๊ตฌ์กฐ์ฒด๋ฅผ ์ด์šฉํ•œ SELECT ๋ฌธ vs ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์„ ํ™œ์šฉํ•œ SELECT ๋ฌธ

๊ตฌ์กฐ์ฒด๋ฅผ ์ด์šฉํ•œ SELECT ~ ENDSELECT ๋ฌธ

DATA : gt_itab TYPE STANDARD TABLE OF sflight,
	   gs_wa TYPE sflight.
       
SELECT * INTO gs_wa FROM sflight WHERE carrid EQ 'AA'.
	WRITE : / gs_wa-carrid, gs_wa-connid.
ENDSELECT.

์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์„ ํ™œ์šฉํ•œ SELECT ๋ฌธ

DATA : gt_itab TYPE STANDARD TABLE OF sflight,
	   gs_wa TYPE sflight.
       
SELECT * INTO gt_itab FROM sflight WHERE carrid EQ 'AA'.

LOOP AT gt_itab INTO gs_wa.
	WRITE : / gs_wa-carrid,
    		  gs_wa-connid.
ENDLOOP.

 

์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์„ ํ™œ์šฉํ•˜์—ฌ ํ•œ ๋ฒˆ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋Š”๊ฒŒ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

 

์™œ๋ƒํ•˜๋ฉด ๊ตฌ์กฐ์ฒด๋ฅผ ํ™œ์šฉํ•œ ๊ฒฝ์šฐ SELECT ~ ENDSELECT ๊ตฌ๋ฌธ์ด ๋ฐ˜๋ณต ์ˆ˜ํ–‰๋  ๋•Œ ๋งˆ๋‹ค Application Server์™€ Database ๊ฐ„์˜ ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

FROM

  • UP TO n ROWS

์‚ฌ์šฉ์ž์˜ ์‹ค์ˆ˜๋กœ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜์—ฌ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” DB ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ UP TO n ROWS ๊ตฌ๋ฌธ์„ ํ†ตํ•ด์„œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž์˜ ์‹ค์ˆ˜ : ์˜ˆ๋ฅผ ๋“ค์–ด ์กฐํšŒ ์กฐ๊ฑด์— ๋‚ ์งœ๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

JOIN

  • JOIN ์— ์‚ฌ์šฉ๋˜๋Š” ํ•„๋“œ๊ฐ€ ์ธ๋ฑ์Šค์— ์กด์žฌํ•  ๋•Œ ๋น ๋ฅธ ์„ฑ๋Šฅ์ด ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค.
  • ๊ฐ€๋Šฅํ•˜๋ฉด LOOP ๋ฌธ ๋Œ€์‹  JOIN์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ์„ ์œ„ํ•ด์„œ ๋ฐ”๋žŒ์งํ•ฉ๋‹ˆ๋‹ค.
  • WHERE ์กฐ๊ฑด๊ณผ ON ๊ตฌ๋ฌธ์ด ๊ฐ™์ด ์ ํ˜€์žˆ์œผ๋ฉด WHERE ์กฐ๊ฑด์ด ๋จผ์ € ์ˆ˜ํ–‰๋˜๊ณ  ๊ทธ ๋‹ค์Œ ON ์กฐ๊ฑด์ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.
  • ABAP์—์„œ๋Š” LEFT OUTER JOIN๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

FOR ALL ENTRIES ๊ตฌ๋ฌธ

  • ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”๊ณผ DB์˜ ํ…Œ์ด๋ธ”์„ JOINํ•˜๋Š” ๊ฐœ๋… ์ž…๋‹ˆ๋‹ค.
  • LOOP ๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ SQL์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— JOIN๋ณด๋‹ค ๋น„ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.
  • ํ•˜์ง€๋งŒ ABAP์—์„œ ์œ ์šฉํ•˜๊ฒŒ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ๊ณผ ๋น„๊ตํ•˜๋Š” DB ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ ํƒ€์ž…์€ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • LIKE, BETWEEN, IN ๊ณผ ๊ฐ™์€ ๋น„๊ต๊ตฌ๋ฌธ์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค
  • ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์ด NULL ์ด๋ฉด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค.
  • ์˜ˆ์‹œ ์ฝ”๋“œ
DATA gt_spfli TYPE TABLE OF spfli.
DATA gt_sflight TYPE TABLE OF sflight.
DATA gs_sflight TYPE sflight.

SELECT * FROM spfli INTO TABLE gt_spfli.

SELECT * FROM sflight
	INTO TABLE gt_sflight
    FOR ALL ENTRIES IN gt_spfli
    WHERE carrid = gt_spfli-carrid
    AND connid = gt_spfli-connid.

LOOP AT gt_sflight INTO gs_sflight.
	WRITE : / gs_sflight-carrid, gs_sflight-connid.
ENDLOOP.

 

Scalar Subquery

  • where ๊ตฌ๋ฌธ์—  subquery๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Scalar Subquery๋Š” ๋ฐ˜๋“œ์‹œ ํ•œ ์ปฌ๋Ÿผ๋งŒ์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • Nested Loop ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
  • Scalar Subquery๊ฐ€ ์‹คํ–‰๋˜๋Š” ํšŸ์ˆ˜๋Š” row ์ˆ˜ ์ž…๋‹ˆ๋‹ค.

Non-scalar Subquery

  • subquery์˜ ๊ฒฐ๊ณผ๊ฐ€ ์กด์žฌํ•˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜, ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • EXISTS ๊ตฌ๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ์‹œ ์ฝ”๋“œ
DATA : gv_carrid TYPE sflight-carrid,
	   gv_connid TYPE sflight-connid,
       gt_paymentsum TYPE sflight-paymentsum.

SELECT SINGLE carrid connid paymentsum
	INTO (gv_carrid, gv_connid, gv_paymentsum)
    FROM sflight AS a
    WHERE EXISTS ( SELECT *
    	FROM spfli
        WHERE carrid = a~carrid
        AND connid = a~connid )
    AND a~carrid = 'AA'.
    
WRITE : gv_carrid, gv_connid, gv_paymentsum.

UPDATE ๊ตฌ๋ฌธ

  • work area๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค SET ๊ตฌ๋ฌธ์„ ํ™œ์šฉํ•ด์„œ ๊ฐœ๋ณ„ ์ปฌ๋Ÿผ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ์ด ์šฐ์ˆ˜ํ•˜๋‹ค.
UPDATE <target> SET <set 1> <set 2> WHERE <cond>.
UPDATE spfli
  SET cityto = ' Shanghai'
  WHERE carrid = 'KO'
  AND connid = '0001'.

 

MODIFY ๊ตฌ๋ฌธ

  • UPDATE ๊ตฌ๋ฌธ๊ณผ INSERT ๊ตฌ๋ฌธ์„ ํ•ฉํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • ํ‚ท๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋ฉด UPDATE๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ INSERT๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

ํšจ์œจ์ ์ธ SQL ๊ตฌ๋ฌธ ์ž‘์„ฑ

  • INDEX๋ฅผ ํ™œ์šฉํ•˜๋Š” SQL๊ตฌ๋ฌธ์„ ์ž‘์„ฑํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
ํšจ์œจ์ ์ด์ง€ ์•Š์€ SQL ํšจ์œจ์ ์ธ SQL
SEELCT * FROM sflight
INTO wa
WHERE carrid <> 'LH'
AND connid = '0400'.
SELECT * FROM sflight INTO wa
WHERE carrid IN
( SELECT carrid
FROM scarr
WHERE carrid <> 'LH' )
AND connid = '0400'.

 <> ์—ฐ์‚ฐ์ž๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹ , ์„œ๋ธŒ์ฟผ๋ฆฌ์™€ IN ์—ฐ์‚ฐ์ž๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์ธ๋ฑ์Šค ์‚ฌ์šฉ์„ ์ตœ์ ํ™”ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ORDER BY ๋Œ€์‹  SORT ๊ตฌ๋ฌธ
ํšจ์œจ์ ์ด์ง€ ์•Š์€ SQL ํšจ์œจ์ ์ธ SQL
SELECT * FROM sflight
INTO TABLE itab
WHERE carrid = 'LH'
ORDER BY carrid connid.
SELECT * FROM sflight
INTO TABLE itab
WHERE carrid = 'LH'.

SORT itab BY carrid connid.

ORDER BY ๊ตฌ๋ฌธ์€ ์ ์ ˆํ•œ ์ธ๋ฑ์Šค๊ฐ€ ์ˆ˜ํ–‰๋˜๋Š”๋ฐ ๋ฐฉํ•ด๊ฐ€ ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ SORT ๊ตฌ๋ฌธ์„ ๋Œ€์‹  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ธ๋ฑ์Šค์— ์‚ฌ์šฉ๋œ ํ•„๋“œ๋ฅผ ๋ชจ๋‘ ์ž‘์„ฑ

SFLIGHT ํ…Œ์ด๋ธ”์—์„œ 3๊ฐœ์˜ ํ•„๋“œ (CARRID, CONNID, FLDATE) ๋กœ ๊ตฌ์„ฑ๋œ ์ธ๋ฑ์Šค๊ฐ€ ์กด์žฌํ•œ๋‹ค๊ณ  ํ•  ๋•Œ

ํšจ์œจ์ ์ด์ง€ ์•Š์€ SQL ํšจ์œจ์ ์ธ SQL
" carrid ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ
SELECT * FROM sflight
INTO TABLE itab
WHERE connid = '0017'
AND fldate = '20140101'.
" range ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด carrid ํ•„๋“œ๋„ ์‚ฌ์šฉ
RANGES : r_carrid FOR sflight-carrid.
r_carrid-sign = 'I'.
r_carrid-option = 'EQ'.
r_carrid-low = ' '.
APPEND r_carrid. 

SELECT * FROM sflight INTO TABLE itab
WHERE carrid = r_carrid
AND connid = '0017'
AND fldate = '20140101'.

ํšจ์œจ์ ์ธ SQL ๊ตฌ๋ฌธ์˜ ๊ฒฝ์šฐ RANGE ๋ณ€์ˆ˜๋ฅผ ํ™œ์šฉํ•ด CARRID ์— ๋นˆ ๊ฐ’์„ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•˜์—ฌ WHERE ์ ˆ์—์„œ ์ธ๋ฑ์Šค์— ์‚ฌ์šฉ๋œ ๋ชจ๋“  ํ•„๋“œ๋ฅผ ํ™œ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

์ถœ์ฒ˜ : Easy ABAP 2.0