05-OPEN SQL

SQL( Structured Query Language )

结构化查询语言

用于定义、创建、读取数据库表数据

Native SQL(本地SQL)

每种关系型数据库都有其对应的SQL,是数据库相关的

不同的SAP系统可能使用各种不 同的数据库,使用本地SQL的 ABAP 程序无法适应所有的 SAP 系统

可直接对数据库表进行修改删除等,有一定安全风险

能实现一些OpenSQL无法实现的功能

Open SQL(开放SQL)

SAP 为ABAP定义的数据库无关的 SQL标准

在ABAP程序运行时由系统动态的转化成当前数据库使用的本地SQL

在编写程序时不需要考虑 SAP 系统使用的数据库差异

Open SQL

对数据库主要操作语法包括:
SELECT\UPDATE\INSERT\DELETE\MODIFY

执行状态通过系统变量SY-SUBRC表现
等于0,表示执行成功
不为0,表示执行失败

在这里插入图片描述

1.读取数据

①SELECT语法结构:

SELECT < result > FROM < dbtab >
INTO < target >
WHERE < condition >
[GROUP BY < fields >] [ORDER BY < fields >]

其中各关键字的属性描述如下:
SELECT < result >:具体的查询字段。
SELECT SINGLE:定义单行查询。
FROM < dbtab >:所查询的透明表。
INTO < target >:查询结果赋值对象,赋值到具体表或结构体。
INTO (< f1 >…< fn >):将查询结果赋值到具体字段。
INTO CORRESPONDING FILES OF < itab >:将查询结果按字段匹配赋值给具体的内表或者结构体。
WHERE < condition >:查询条件。
GROUP BY < fileds >:分组查询条件。
ORDER BY < fields >:排序条件。

WHERE中多个字段为查询条件时:

表名和字段用“~”符号连接

在这里插入图片描述

②读取单条数据

在这里插入图片描述

③读取多条数据

使用循环读多条记录:

使用SELECT…ENDSELECT语法能循环读取及操作查询

通过系统参数SY-DBCNT可以获取当前读取数据的行数

一般配合SELECT SINGLE来读取

在这里插入图片描述

Open SQL SELECT常用标准函数:

COUNT():统计查询总数

SUM():统计表中某个数值字段的总和

AVG():统计表中某个数值字段的平均值

MAX():统计表中某个字段的最大值

MIN() :统计表中某个字段的最小值。

④多个表数据连接查询,需要注意以下三点:

1.连接哪些表

2.连接条件

3.连接哪些列

在这里插入图片描述

⑤多个表数据连接查询,可以用两种方法实现表连接:

  1. ABAP 字典中创建数据库视图,查询时用这个视图作为数据源

    2.使用JOIN语句,跟平常数据库中用到的连接查询基本上相同

①INNER JOIN:查询结果包含两个连接表中彼此相对应的数据记录

②LEFT OUTER JOIN:查询结果集中包含左表中的所有数据记录,右表中仅查询出包含相对应的匹配条件的数据

③FULL OUTER JOIN:包含左右表所有的记录

3.在一个表连接中可以连接三个甚至更多的表

4.关键字ON:连接条件

在这里插入图片描述

⑥表字段名转换

在查询过程中我们通常会遇到这样的情况,将透明表查询值直接传递给内表:

两表中字段结构一样,但字段名称却不同

通常的情况下将字段名称设为一致的

除此之那还可以用AS关键字,就像SQL中的用法一样

在这里插入图片描述

⑦限制Open SQL获取数据条数:

使用 UP TO n ROWS语法来限制读取数据的条数,语法如下:
SELECT * INTO … UP TO N ROWS.

⑧使用PACKAGE SIZE N连续读取数据:

使用 UP TO n ROWS可读取前n条,但不能继续读取数据

使用使用PACKAGE SIZE N可连续读取数据,每次读取指定条数

必须应用于SELECT……ENDSELECT语句中

2.更新数据

UPDATE实现对数据的更新操作,语法如下:

UPDATE < dbtab > SET f1…fn (WHERE < condition >).

UPDATE < dbtab > FROM TABLE < itab > (WHERE < condition >).

UPDATE < dbtab > FROM < wa >.

3.新增数据

INSERT语句用于对数据的新增操作,语法如下:

INSERT < dbtab > FROM TABLE < itab >.

INSERT < dbtab > FROM < wa >.

4.删除数据

DELETE语句用于删除表中的数据,语法如下:

DELETE FROM < dbtab > WHERE < condition >.
DELETE FROM < dbtab >.
DELETE < dbtab > FROM TABLE < itab >.

5.修改数据

MODIFY操作是用于修改数据库中的数据

MODIFY < dbtab > FROM < wa >.
MODIFY < dbtab > FROM TABLE < itab >.

如表中不存在符合条件的数据时会添加新数据

MODIFY拥有 INSERT 和 UPDATE的操作动作

通过MODIFY修改的数据效率比较低下

FOR ALL ENTRIES IN

以内表某字段为条件,在数据库表取数

SELECT < FIELD1 > < FIELD2 >…INTO TABLE < ITAB >

FROM < TABLE > FOR ALL ENTRIES IN < ITAB1 >

WHERE < FIELD 1>=< ITAB1 >-< FIELD1 >

AND < FIELD2 >=< ITAB1 >-< FIELD2 >

6.动态SQL

①使用动态表名:

在Open SQL中可使用动态的表名

如该表名无效,则程序会出现错误而终止

SELECT …< result > FROM (tabname) into…< target > Where < condition >

②使用动态条件

在Open SQL中可使用动态的条件

SELECT …< result > FROM < tabname > into…< target > Where (where)

①使用动态表名:

在Open SQL中可使用动态的表名

如该表名无效,则程序会出现错误而终止

SELECT …< result > FROM (tabname) into…< target > Where < condition >

②使用动态条件

在Open SQL中可使用动态的条件

SELECT …< result > FROM < tabname > into…< target > Where (where)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值