第6单元:数据建模与数据检索练习(10题)
第6单元:数据建模与数据检索练习(10题)
#practice #abap #abap-sql
相关概念
📌关键模式(点击展开)
| 关键词 | 答案 |
|---|---|
| SELECT SINGLE | 可能无数据 — 需检查 sy-subrc |
| 数组读取 | INTO TABLE — 一次数据库访问 |
| SELECT 循环 | INTO wa … ENDSELECT — 多次访问 |
| sy-subrc = 4 | 未找到数据 |
| AUTHORITY-CHECK sy-subrc | 0 = 有权限 |
问题 1 - 数据建模 [recall]
什么是实体关系模型(ERM),它的用途是什么?
📌显示答案
ERM 对现实世界中的业务实体(例如客户、订单)及其关系进行建模。它是在 ABAP 字典中实现表定义的蓝图。
问题 2 - 透明表 [recall]
在 ABAP 字典中激活透明表定义时会发生什么?
📌显示答案
会在底层数据库中自动创建对应的数据库表。
问题 3 - 主索引与次索引 [recall]
主索引和次索引有什么区别?
📌显示答案
主索引:在主键字段上自动创建。次索引:在 WHERE 子句中频繁使用的非键字段上手动创建。
问题 4 - SELECT SINGLE [recall]
SELECT SINGLE 返回什么?需要检查结果吗?
📌显示答案
SELECT SINGLE 返回第一条匹配记录(也可能没有记录)。你必须检查
sy-subrc — 0 表示找到,4 表示未找到匹配。问题 5 - 数组读取的优势 [recall]
SELECT … INTO TABLE 相比 SELECT 循环有什么优势?
📌显示答案
数组读取执行单次数据库访问。SELECT 循环执行多次(每行一次)。数组读取效率显著更高。
问题 6 - 读取方式对比 [analysis]
比较三种读取数据库数据的方式:SELECT SINGLE、SELECT 循环和数组读取。
📌显示答案
| 方式 | 适用场景 | 数据库访问次数 |
|---|---|---|
| SELECT SINGLE | 已知单条记录 | 1 |
| SELECT 循环 | 读取时逐行处理 | 每行 1 次 |
| 数组读取 | 先读取全部,后处理 | 1 |
问题 7 - INNER JOIN [application]
你需要从 SFLIGHT 和 SCARR 中获取带有航空公司名称的航班数据。请编写一个使用 JOIN 的概念性 SELECT 语句。
📌显示答案
使用 INNER JOIN 连接 carrid:
1 | SELECT s~carrid s~connid c~carrname |
问题 8 - 权限检查 [recall]
编写 AUTHORITY-CHECK 来验证用户可以显示(活动 ‘03’)某个航空公司的数据。
📌显示答案
1 | AUTHORITY-CHECK OBJECT 'S_CARRID' |
问题 9 - 权限检查位置 [analysis]
开发者在 SELECT 之后添加了 AUTHORITY-CHECK。这样做正确吗?
📌显示答案
不正确。 应该放在数据访问之前。否则无权限的用户仍然会检索到数据。
问题 10 - Open SQL 的优势 [recall]
Open SQL 相对于 Native SQL 的主要优势是什么?
📌显示答案
数据库无关性。 可在所有支持的数据库系统上运行,并具有自动缓冲功能。
📌模式总结(点击展开)
| 关键词 | 答案 |
|---|---|
| ERM 用途 | 表定义的蓝图 |
| 透明表激活 | 创建数据库表 |
| SELECT SINGLE | 第一条匹配,需检查 sy-subrc |
| 数组读取 | INTO TABLE,一次数据库访问 |
| AUTHORITY-CHECK | 在受保护操作之前执行 |
| Open SQL 优势 | 数据库无关 |