ABAP之SQL操作(select、update、delete)

一、SELECT 语句

SELECT <lines>[DISTINCT]<columns>[AS<alias>]
          INTO|APPEND [CORRESPONDING FIELDS OF]<wa> TABLE<itab>[PACKAGE SIZE<n>]..
          FROM <dbtab>[AS <alias>]<options>  UP TO <n> ROWS...
            [INNER]JOIN <dbtab> [AS <alias>] ON <cond><options>...
          WHERE <s> <opertor> <f> ...
          GROUP BY <f1> <f2>..
          HIVING <condition>.
          ORDER BY PRIMARY KEY.

lines:single

读取一条数据:.

SELECT SINGLE <cols> ... WHERE

注意:限制好where条件,否则返回任意一条数据,与预期结果不同.

DISTINCT :删除重复值。

SELECT [DISTINCT]<cols>...WHERE   

当INTO 为字段或者结构体时,结尾必须加上ENDSELECT;如果是内表则不需要。

AS<alias>:别名

SELECT  <cols> [AS <cols>]..

INTO语句:

1. [CORRESPONDING FIELDS OF]<wa>:自动给相同字段名匹配赋值。wa为结构体,变量,查询一条数据时,常用语loop循环中。

SELECT  ...INTO [CORRESPONDING FIELDS OF]<wa> .

2.内表

查询多条数据是使用内表,须使用APPENDING,不能使用INTO,INTO是删除内表数据后插入时使用的。

 SELECT ...INTO|APPEND [CORRESPONDING FIELDS OF]<wa> TABLE<itab>[PACKAGE SIZE<n>]..

PACKAGE SIZE:表示每次追加到内表的条数,此时须使用ENDSELECT.

  SELECT INTO CORRESPONDING FIELDS OF TABLE itab 
    PACKAGE SIZE 5
    FROM SPFLI.
  ENDSELECT.

FROM语句:

1.选择静态表:

 SELECT ...FROM <dbtab>[AS <alias>]<options>

2.JOIN语句

SELECT ...FROM <tab>[INNER] JOIN <dbtab> [AS <alias>] ON <cond><options>...

3.限制查询个数

SELECT ...FROM <tab> UP TO <n> ROWS...

WHERE语句:

1.where条件语句

SELECT ...WHERE <s> <opertor> <f> ...

2.常用语句

  SELECT ...WHERE <s> [NOT]BETWEEN <f1> AND <F2>.
  SELECT ...WHERE COL2 LIKE _ABC%.
  SELECT ...WHERE <s> [NOT]IN (<f1>,..,<fn>)...
  SELECT ...WHERE <s> [NOT]IN <seltab>... 查询存在selection table,Range变量里的数据。

3.FOR ALL ENTRIES 语句.

SELECT ... FOR ALL ENTRIES IN <itab> WHERE <cond>    

GROUP :   

SELECT <f1> <f2> <agg>...
    GROUP BY <f1> <f2> ...
    HIVING <condition>.

ORDER BY:

  -根据标的key值进行排序。
  -只适合于SELECT * 语句。
  -在JOIN语句和视图中无法使用。

SELECT ...
  ORDER BY <f1> [ASCENDING|DESCENDING] 
           <f2> [ASCENDING|DESCENDING] 

二、INSERT 

一条数据    

INSERT INTO <target> VALUES <wa>.
INSERT <target> FROM <wa>.

多条数据.

INSERT <target> FROM TABLE <itab> [ACCEPTING DUPLICATE KEYS]

插入数据时,避免有相同主键引起dump error错误,使用ACCEPTING DUPLICATE。此时sy-subrc返回4.

三、UPDATE

一条数据    

UPDATE <target> FROM <wa>.  "表结构相同

多条数据.

UPDATE <target> FROM TABLE <itab>. 
UPDATE <target> SET <set1> <set2> WHERE <cond>.

四、DELETE

一条数据    

DELETE <target> FROM <wa>.  "表结构相同

多条数据.

DELETE  FROM <target> WHERE <cond>. 

五、MODIFY.

一条数据    

MODIFY <target> FROM <wa>.  "表结构相同

多条数据.

MODIFY   <target> FROM TABLE <itab>. 

 

ABAP之SQL操作(select、update、delete)

上一篇:Oracle 报 ORA-00054资源正忙的解决办法


下一篇:ORACLE,mysql中替换like的函数