OPEN SQL
- 1. 概要
- (1)R/3体系结构
- (2)SQL定义
- (3)OPEN SQL经常使用的命令
- 2. OPEN SQL
- (1)SELECT 语句
- (2)INTO语句
- 3. FROM语句
- (1)选择静态表,用AS指定别名
- (2)选择动态表,表名要是大写字母
- (3)JOIN语句,用于多表连接
- (4)UP...TO...语句,限制查询个数
- 4. WHERE语句
- (1)WHERE条件语句
- (2)Interval条件-范围
- (3)字符串比较-LIKE语句
- (4)LIST VALUE-IN语句
- (5)SELECTION TABLE
- (6)动态条件
- (7)FOR ALL ENTRIES语句
- 5. GROUPING-GROUP BY语句
- 6. SORT-ORDER BY语句
- (1)根据关键字排序
- (2)ASCENDING | DESCENDING指定升序/降序排序
- 7. SORT-ORDER BY语句
- (1)Scalar Subquery
- (2)Non-scalar Subquery
- 8. 数据修改-INSERT语句
- (1)一条数据
- (2)多条数据
- 9.数据修改-UPDATE语句
- (1)一条数据
- (2)多条数据
- 10.数据修改-DELETE语句
- (1)一条数据
- (2)多条数据
- 11.数据修改-MODIFY语句
- (1)一条数据
- (2)多条数据
1. 概要
(1)R/3体系结构

(2)SQL定义
定义:Structured Query Language,ABAP的OPEN SQL里只允许使用DML语言。


(3)OPEN SQL经常使用的命令

SY-SUBRC返回成功与否,SY-DBCNT返回数据的个数。
2. OPEN SQL

(1)SELECT 语句

当查询一条数据时:

当查询多条数据时:

INTO保存到字段或者结构体时,相当于在LOOP循环中执行SELECT语句:

AS指定别名:

动态SELECT语句:

(2)INTO语句
查询一条数据:
使用结构体,用CORRESPONDING FIELDS OF语句会自动找到相同字段名匹配赋值。

查询多条数据:
往内表插入数据时用APPENDING,不能使用INTO。

PACKAGE SIZE:指定每次追加到内表里的数据件数,需要使用ENDSELECT语句。
Single Field

3. FROM语句
用FROM语句指定要查询数据的相应数据库表(或视图)。


(1)选择静态表,用AS指定别名

(2)选择动态表,表名要是大写字母

(3)JOIN语句,用于多表连接

使用JOIN语句时若不指定JOIN类型,则默认是INNER JOIN。
分类:INNER JOIN
OUTER JOIN
LEFT JOIN
RIGHT JOIN
(4)UP…TO…语句,限制查询个数

4. WHERE语句
(1)WHERE条件语句


(2)Interval条件-范围
需要在条件中追加范围值时使用此语句。

(3)字符串比较-LIKE语句
比较字符串时使用LIKE语句。

(4)LIST VALUE-IN语句
使用IN语句可以取得符合多种情况的数据。

(5)SELECTION TABLE
使用IN语句可以查询存储在Selection Table,Range变量里的数据。

(6)动态条件
可以动态地写SELECT语句的WHERE条件。

(7)FOR ALL ENTRIES语句
用FOR ALL ENTRIES语句连接内表。



5. GROUPING-GROUP BY语句
主要用于使用Aggregate函数前分组用GROUP BY语句进行分组。


HAVING语句是用GROUP BY语句时的查询条件。

注:GROUP BY之后需要写入除了聚合函数之外的所有其他字段。最后结果的数量是分组的数量。
6. SORT-ORDER BY语句
(1)根据关键字排序

(2)ASCENDING | DESCENDING指定升序/降序排序

7. SORT-ORDER BY语句
(1)Scalar Subquery
用于在WHERE语句中追加特殊条件,只能指定一个字段。



(2)Non-scalar Subquery
当存在Subquery查询的数据时返回TRUE,不存在时返回FALSE,使用EXISTS语句实现。

8. 数据修改-INSERT语句
(1)一条数据
往数据库表中追加一行数据时使用的语句。

若想使用INSERT 语句,要事先以TABLES:形式定义结构体。

(2)多条数据
往数据库表中一次性插入内表的所有值,由于插入相同主键的数据时会发生语法错误,因此要使用ACCEPTING DUPLICATE KEYS语句。

9.数据修改-UPDATE语句
(1)一条数据
往数据库表中修改一行数据时使用的语句。

若想使用UPDATE 语句,要事先以TABLES:形式定义结构体。

(2)多条数据
往数据库表中修改多行数据时使用的语句。

可以用UPDATE SET 字段1 字段2的形式修改指定字段。

10.数据修改-DELETE语句
(1)一条数据
往数据库表中删除一行数据时使用的语句。

若想使用DELETE 语句,要事先以TABLES:形式定义结构体。

(2)多条数据
可以一次性删除内表中符合WHERE条件的所有值。

11.数据修改-MODIFY语句

(1)一条数据
往数据库表中插入/更新一条数据时使用的语句。

若想使用MODIFY 语句,要事先以TABLES:形式定义结构体。

(2)多条数据
可以一次性修改或追加内表的所有值。











