ABAP에서 사용하는 데이터베이스 - Open SQL

kailyn·2024년 8월 5일

SAP

목록 보기
7/12

Open SQL

ABAB 프로그램 내에서 데이터베이스와 상호작용하기 위해 사용하는 SQL 명령어. 데이터 조회, 삽입, 수정, 삭제 등에 사용

주요 Open SQL 명령어

  1. SELECT 문
    데이터를 조회하는데 사용

    SELECT <필드 목록> INTO <내부 테이블 또는 워크 영역>
    FROM <테이블>
    WHERE <조건>.

    예제

    SELECT * INTO TABLE lt_result
    FROM sflight
    WHERE carrid = 'LH'.
  2. INSERT 문
    데이터를 삽입하는데 사용

    INSERT INTO <테이블> VALUES < 목록>.

    예제

    INSERT INTO sflight VALUES ('LH', '400', '20230729', 'FRA', 'JFK', '747', 200, 150, 50).
  3. UPDATE 문
    데이터를 수정하는데 사용

    UPDATE <테이블> SET <필드1 = 값1, 필드2 = 값2, ...>
    WHERE <조건>.

    예제

    UPDATE sflight SET seatsmax = 300
    WHERE carrid = 'LH' AND connid = '400'.
  4. DELETE 문
    데이터를 삭제하는데 사용

    DELETE FROM <테이블>
    WHERE <조건>.

    예제

    DELETE FROM sflight
    WHERE carrid = 'LH' AND connid = '400'.
  5. MODIFY 문
    존재하면 업데이트하고, 존재하지 않으면 삽입

    MODIFY <테이블> FROM <워크 영역 또는 내부 테이블>.

    예제

    MODIFY sflight FROM ls_flight.
  6. FETCH 문
    커서를 사용하여 데이터를 검색

    FETCH NEXT CURSOR <커서 이름> INTO <워크 영역>.
  7. OPEN CURSOR 문
    커서를 열어 데이터를 검색할 준비

    OPEN CURSOR <커서 이름> FOR SELECT <필드 목록> FROM <테이블> WHERE <조건>.
  8. CLOSE CURSOR 문
    열려 있는 커서를 닫기

    CLOSE CURSOR <커서 이름>.
  9. JOIN 문
    여러 테이블을 결합하여 데이터를 조회
    INNER JOIN:

    SELECT sflight~carrid, sflight~connid, spfli~cityfrom, spfli~cityto
    INTO TABLE lt_result
    FROM sflight
    INNER JOIN spfli ON sflight~carrid = spfli~carrid
    AND sflight~connid = spfli~connid
    WHERE sflight~carrid = 'LH'.

    LEFT OUTER JOIN:

    SELECT sflight~carrid, sflight~connid, spfli~cityfrom, spfli~cityto
    INTO TABLE lt_result
    FROM sflight
    LEFT OUTER JOIN spfli ON sflight~carrid = spfli~carrid
    AND sflight~connid = spfli~connid.
  1. AGGREGATE FUNCTIONS
    데이터 집계에 사용. SUM, COUNT, AVG, MIN, MAX 등의 함수가 있음
    SELECT carrid, COUNT(*)
    INTO TABLE lt_result
    FROM sflight
    GROUP BY carrid.        
  1. GROUP BY
    데이터를 그룹화하는데 사용
  SELECT carrid, COUNT(*)
  INTO TABLE lt_result
  FROM sflight
  GROUP BY carrid.
  1. ORDER BY
    결과를 정렬하는데 사용
  SELECT * INTO TABLE lt_result
  FROM sflight
  ORDER BY carrid, connid.
  1. HAVING
    그룹화된 데이터에 조건을 적용, 집계 함수의 결과에 조건을 적용
  SELECT carrid, COUNT(*)
  INTO TABLE lt_result
  FROM sflight
  GROUP BY carrid
  HAVING COUNT(*) > 10.
  1. UNION
    두 개 이상의 SELECT 문의 결과를 결합
  SELECT * FROM <테이블1>
  UNION
  SELECT * FROM <테이블2>.
  1. SUBQUERY
    쿼리 내에 또 다른 쿼리를 포함할 수 있음
  SELECT carrid, connid
  INTO TABLE lt_result
  FROM sflight
  WHERE seatsmax > (SELECT AVG(seatsmax) FROM sflight).

기본 조건 연산자

  1. 등호(=)
    두 값이 동일한지 비교
	SELECT * FROM sflight WHERE carrid = 'LH'.
  1. 부등호(<>, !=)
    두 값이 다른지 비교
	SELECT * FROM sflight WHERE carrid <> 'LH'.
  1. 보다 큼(>)
    첫 번째 값이 두 번째 값보다 큰지 비교
	SELECT * FROM sflight WHERE seatsmax > 200.
  1. 보다 작음(<)
    첫 번째 값이 두 번째 값보다 작은지 비교
    SELECT * FROM sflight WHERE seatsmax < 200.
  1. 크커나 같음(>=)
    첫 번째 값이 두 번째 값보다 크거나 같은지 비교
  SELECT * FROM sflight WHERE seatsmax >= 200.
  1. 작거나 같음(<=)
    첫 번째 값이 두 번째 값보다 작거나 같은지 비교
  SELECT * FROM sflight WHERE seatsmax <= 200.

논리 연산자

  1. AND
    모든 조건이 참일 때 결과를 반환
  SELECT * FROM sflight WHERE carrid = 'LH' AND seatsmax > 200.
  1. OR
    하나 이상의 조건이 참일 때 결과를 반환
  SELECT * FROM sflight WHERE carrid = 'LH' OR carrid = 'AA'.
  1. NOT
    조건이 참이 아닐 때 결과를 반환
  SELECT * FROM sflight WHERE NOT carrid = 'LH'.

패턴 매칭 연산자

  1. LIKE
    패턴과 일치하는지 확인한다. %는 임의의 문자열, _는 임의의 한 문자를 나타냄
  SELECT * FROM sflight WHERE carrid LIKE 'L%'.
  1. IN
    지정한 값 목록 중 하나와 일치하는지 확인
  SELECT * FROM sflight WHERE carrid IN ('LH', 'AA', 'UA').

범위 연산자

  1. BETWEEN
    지정된 범위 내에 값이 있는지 확인
  SELECT * FROM sflight WHERE seatsmax BETWEEN 100 AND 300.

NULL 값 처리

  1. IS NULL
    값이 NULL인지 확인
  SELECT * FROM sflight WHERE seatsmax IS NULL.
  1. IS NOT NULL
    값이 NULL이 아닌지 확인
  SELECT * FROM sflight WHERE seatsmax IS NOT NULL.

추가 조건 및 연산자

  1. EXISTS
    서브쿼리의 결과가 존재하는지 확인
  SELECT * FROM sflight WHERE EXISTS (SELECT * FROM spfli WHERE sflight~carrid = spfli~carrid).
  1. ALL
    모든 서브쿼리 결과와 비교
  SELECT * FROM sflight WHERE seatsmax > ALL (SELECT seatsmax FROM spfli WHERE carrid = 'LH').
  1. ANY/SOME
    서브쿼리 결과 중 하나와 비교
  SELECT * FROM sflight WHERE seatsmax > ANY (SELECT seatsmax FROM spfli WHERE carrid = 'LH').
profile
나는 할 수 있다...!

0개의 댓글