open sql

增删改查

单笔增: insert into DB value gs_tab

多笔新增: insert DB from table gt_tab

增加后可以用if sy-subrc = o.来判断是否插入成功

                    messag '成功' type ‘S’

                  endif

写完增加数据库语句后有两个机制可以写一下 commit work 表示确定  rollback work 表示回滚

往数据库表中插入数据的时候,通过SE38用open sql插入时  插入同一种数据  会报错  要确保原来的数据库中没有目前增加的同一记录

修改记录:modify  update

modify DB from table gt_tab通过内表批量修改记录

modify DB fron gs_tab 通过工作区单笔更新记录

modify有个特点是如果修改的记录在原来数据库表中不存在那么它就会插入该记录

update DB set math = 80 where name = ‘XM3’。

update使用必须要使用where语句,不适用会更新所有数据

删除记录:

delete DB 清空整个数据库

delete DB from gs_tab 单笔清空

delete DB from table gt_tab 多笔清空

if sy-subrc = 0.

 commit work (确认一下对数据库的操作)

else.

rollback work.(取消对数据库的操作)

查询:

select 字段 from DB into table 内表(多笔记录)

select 字段 from DB into 工作区(单笔记录)

select * from DB into table gt_tab where name = 'XXX'

单笔查询记录:

select.......end select  这是一种循环到工作区域的语法

select name math from DB into correspoding fields of table gt_tab. (会根据字段自动匹对到内表中)

DB中的字段名和内表中的字段不一样时要用AS取别名的方式取数据

select * from DB into table gt_tab up to 30 rows.取出前30笔记录

select * from DB into table gt_tab package size 3 .  在DB中分3次取数据并且取完,但是这个循环取值要在后面加上end select这两种大部分在项目中用不到

 

排序分组一般不推荐用,因为都是在DB中操作的,推荐把数据取出来在内表中再操作

写where条件的时候可以写多个,如果是且的关系用and连接,如果是或的关系用or连接,在筛选的时候是根据先从后往前筛选的,那么以后我们写的时候要把大方向写在后面。

逻辑删只是打个标记,不是真正的删除,是可以用于追溯数据

单数框用"="  范围的话用 in 注意in后面接的是一个范围

select name from DB append table gt_tab 这种方式是给内表后面再加新区的记录。

关联表:

inner join  内连接  取出相同的数据    left join  左连接   

还有就是 for  all entries in 内表

select * from DB  into  table gt_tab2 gt_tab   for  all entries in gt_tab where  name = gt_tab-name 意思就是用gt_tab中某个字段作为条件去取数据,在这条命令中我们称gt_tab为驱动内表,一般我们使用前先要对该表判断是否为空,如果为空的话那么该语句会对数据库表进行全表扫描.

where 最好按主键去取数据  如果索引里有多个字段的话  那么where也要按照索引字段的顺序去取数据

使用for all entries in 时 对于最后得到的记录系统会自动删除重复行,因此如果你要得到保留重复行记录时,记得在select语句中添加足够的键值项目(有必要时增加全部的键值项目不会被删除)

转载于:https://www.cnblogs.com/caizjian/archive/2013/06/02/3113408.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值