简介:之前在“数据与云”微信官方账号发表了一篇文章《如何用SQL(分析功能的使用)计算婴儿哺乳的时间间隔》。本文是续集,如何提高程序的可用性。
因为工作忙,经常不能及时帮老婆孩子做好记录,让不了解数据库的老婆孩子用手机熟练操作。我继续做了一些修正和包装:
1.下载一个终端终端软件termius到老婆手机上,只需打开app就可以连接到环境;
2.进一步和老婆孩子沟通需求,根据她可以接受的使用习惯修改包装程序。原则是尽量简化操作。
我们先来看看改进后的最终使用效果:
-1.打开手机上的termius软件,点击进入终端,输入h即可看到所有命令的说明:
[Oracle @ jystdrac 1 ~]$ h * *婴儿喂养时间命令:*用法:v -查看今天的结果. & lt' mmdd'>。-查看一天的结果。i -使用当前时间插入一行。& ltmmdd hh24:mi ' >-使用输入时间插入一行。id>。-按id.u & lt删除错误行。标签>。& ltid>。-按标识更新错误行-帮助
-2.输入v查看今天的喂食时间和间隔:
[oracle@jystdrac1 ~]$ vView今日结果:
ID FEED _ TIME L LAG(min)LAG(h)---53 12-15 01:00N 140 2.3354 12-15 04:08N 188 3.1355 12-15 07:35N 207 3.4556 12-15 10:40N 185 3.0869 12-15 13:16N 156 2.670 12-15 14:32
选择了8行。
-3.输入I,在当前系统时间直接插入一条数据,并显示插入结果:
[oracle@jystdrac1~]$ iInsert a row using current time:1 row created.Commit complete.View Today's Result: ID FEED_TIME L LAG(min) LAG(h)---------- ----------- - ---------- ---------- 53 12-15 01:00 N 140 2.33 54 12-15 04:08 N 188 3.13 55 12-15 07:35 N 207 3.45 56 12-15 10:40 N 185 3.08 69 12-15 13:16 N 156 2.6 70 12-15 14:32 N 76 1.27 82 12-15 17:14 N 163 2.71 83 12-15 19:15 N 121 2.01 94 12-15 23:02 N 227 3.789 rows selected.-4.输入d
[oracle@jystdrac1 ~]$ d 94Delete a mistake row by id:Enter value for id: old 1: deletefromt_baby whereid= &idnew 1: deletefromt_baby whereid= &idnew 1: deletefromt_baby whereid= 941rowdeleted.Commit complete.View Today 's Result: ID FEED_TIME L LAG(min) LAG(h)---------- ----------- - ---------- ---------- 53 12-15 01:00 N 140 2.33 54 12-15 04:08 N 188 3.13 55 12-15 07:35 N 207 3.45 56 12-15 10:40 N 185 3.08 69 12-15 13:16 N 156 2.6 70 12-15 14:32 N 76 1.27 82 12-15 17:14 N 163 2.71 83 12-15 19:15 N 121 2.018 rows selected.-5.输入u
[oracle@jystdrac1 ~]$ u l 55Update a mistake row by id:Enter value for label: Enter value for id: old 1: updatet_baby setlabel = upper( '&label') whereid= &idnew 1: updatet_baby setlabel = upper( 'l') whereid= 551rowupdated.Commit complete.View Today 's Result: ID FEED_TIME L LAG(min) LAG(h)---------- ----------- - ---------- ---------- 53 12-15 01:00 N 140 2.33 54 12-15 04:08 N 188 3.13 56 12-15 10:40 N 392 6.53 69 12-15 13:16 N 156 2.6 70 12-15 14:32 N 76 1.27 82 12-15 17:14 N 163 2.71 83 12-15 19:15 N 121 2.017 rows selected.-6.输入u
[oracle@jystdrac1 ~]$ u n 55Update a mistake row by id:Enter value for label: Enter value for id: old 1: update t_baby set label = upper('&label') where id = &idnew 1: update t_baby set label = upper('n') where id = 551 row updated.Commit complete.View Today's Result: ID FEED_TIME L LAG(min) LAG(h)---------- ----------- - ---------- ---------- 53 12-15 01:00 N 140 2.33 54 12-15 04:08 N 188 3.13 55 12-15 07:35 N 207 3.45 56 12-15 10:40 N 185 3.08 69 12-15 13:16 N 156 2.6 70 12-15 14:32 N 76 1.27 82 12-15 17:14 N 163 2.71 83 12-15 19:15 N 121 2.018 rows selected.-7.输入ii
[oracle@jystdrac1 ~]$ ii '1215 23:00'Insert a row using input time(mmdd mi:ss) eg: 1215 10:00Enter value for feed_time: old 1: insert into t_baby(id,feed_time) values(s1.nextval,to_date('&feed_time','mmdd hh24:mi'))new 1: insert into t_baby(id,feed_time) values(s1.nextval,to_date('1215 23:00','mmdd hh24:mi'))1 row created.Commit complete.View Today's Result: ID FEED_TIME L LAG(min) LAG(h)---------- ----------- - ---------- ---------- 53 12-15 01:00 N 140 2.33 54 12-15 04:08 N 188 3.13 55 12-15 07:35 N 207 3.45 56 12-15 10:40 N 185 3.08 69 12-15 13:16 N 156 2.6 70 12-15 14:32 N 76 1.27 82 12-15 17:14 N 163 2.71 83 12-15 19:15 N 121 2.01 95 12-15 23:00 N 225 3.749 rows selected.-8.删除id=95的测试记录
[Oracle @ jystdrac 1 ~]$ d 95按id删除错误行:输入id的值:旧1:从t_baby中删除,其中id = & ampidnew 1:从t_baby中删除,其中id = 95
删除了1行。
提交完成。
查看今天的结果:
ID FEED _ TIME L LAG(min)LAG(h)---53 12-15 01:00N 140 2.3354 12-15 04:08N 188 3.1355 12-15 07:35N 207 3.4556 12-15 10:40N 185 3.0869 12-15 13:16N 156 2.670 12-15 14:32
选择了8行。
-9.使用vv 'mmdd '显示指定日期的喂食间隔:
[Oracle @ jystdrac 1 ~]$ vv 1214查看今天的结果:输入feed_time的值:输入feed_time的值:旧2: from(选择t.*,lag(feed_time) over(按id排序)l_time from t_baby t其中标签& lt>。l '),其中feed_time >为。= to _ date(' & amp;feed_time ',' mmdd ')和feed_time <。截止日期(& ampfeed_time ',' mmdd') + 1new 2: from (select t.*,lag(feed _ time)over(order by id)l _ time from t _ baby t其中label & lt>。l '),其中feed_time >为。= to_date('1214 ',' mmdd ')和feed _ time & ltto_date('1214 ',' mmdd') + 1
ID FEED _ TIME L LAG(min)LAG(h)---41 12-14 01:55N 265 4.4242 12-14 04:58N 183 3.0543 12-14 08:25N 207 3.4544 12-14 11:23N 178 2.9745 12-14 12:23N 60 146 12-14 15:00N 150
选择了9行。
经过一番论证,我老婆的反馈非常满意。其实她用V和I最多,很方便。偶尔使用其他命令。其实只要记住H可以得到帮助。以下将记录校正和包装过程:
1.环境变量配置别名2.系统shell脚本3.底层SQL文本1.环境变量配置别名
为了简化操作,我为环境变量设置了一些别名。
[oracle@jystdrac1 ~]$ cat ~/.bash_profile # 这里省略原有环境变量内容,下面为在源文件基础上追加的内容:# Alias for baby's feed_time:alias h=/home/oracle/baby_readme.shalias v=/home/oracle/baby_view.shalias i=/home/oracle/baby_insert.shalias d=/home/oracle/baby_delete.shalias u=/home/oracle/baby_update.shalias ii=/home/oracle/baby_insert_diy.shalias vv=/home/oracle/baby_view_diy.sh2.系统外壳脚本
##baby_readme.shvi baby_readme.sh#!/bin/bash# :baby_readme.sh# version:1.01#-------------------------------------------------------------echo "**Command for Baby's feed_time:**"echo "Usage:"echo " v - View Today's Result."echo " vv <'mmdd'> - View one day's Result."echo " i - Insert a row using current time."echo " ii <'mmdd hh24:mi'> - Insert a row using input time."echo " d <id> - Delete a mistake row by id."echo " u <label> <id> - Update a mistake row by id."echo " h - Help"#-------------------------------------------------------------##baby_view.shvi baby_view.sh#!/bin/bash# :baby_view.sh# version:1.01#-------------------------------------------------------------sqlplus -S test/test <<EOFPROMPT View Today's Result:@v3EOF#-------------------------------------------------------------##baby_insert.shvi baby_insert.sh#!/bin/bash# :baby_insert.sh# version:1.01#-------------------------------------------------------------sqlplus -S test/test <<EOFPROMPT Insert a row using current time:@i1PROMPT View Today's Result:@v3EOF#-------------------------------------------------------------##baby_delete.shvi baby_delete.sh#!/bin/bash# :baby_delete.sh# version:1.01#-------------------------------------------------------------sqlplus -S test/test <<EOFPROMPT Delete a mistake row by id:@d1$1commit;PROMPT View Today's Result:@v3EOF#-------------------------------------------------------------##baby_insert_diy.shvi baby_insert_diy.sh#!/bin/bash# :baby_insert_diy.sh# version:1.01#-------------------------------------------------------------sqlplus -S test/test <<EOFPROMPT Insert a row using input time(mmdd mi:ss) eg: 1215 10:00@i2$1commit;PROMPT View Today's Result:@v3EOF#-------------------------------------------------------------##baby_update.shvi baby_update.sh#!/bin/bash# :baby_update.sh# version:1.01#-------------------------------------------------------------sqlplus -S test/test <<EOFPROMPT Update a mistake row by id:@u1$1$2commit;PROMPT View Today's Result:@v3EOF#-------------------------------------------------------------##baby_view_diy.shvi baby_view_diy.sh#!/bin/bash# :baby_view.sh# version:1.01#-------------------------------------------------------------sqlplus -S test/test <<EOFPROMPT View one day's Result:@v4$1$1EOF#-------------------------------------------------------------3.底层的SQL文本
-呼应“v -查看今天的结果。”[Oracle @ jyst drac 1 ~]$ cat v3 . SqL selected,to_char(feed_time,' mm-dd hh24:mi') "FEED_TIME ",标签,round((feed_time - l_time) * 24 * 60)" LAG(min)",round((FEED _ TIME-l _ TIME)* 24,2) "LAG(h)"FROM(SELECTt)。*,LAG(feed _ time)OVER(ORDER BY id)l _ time from _ baby tWHERElabel & lt;>。l '),其中feed_time >为。= trunc(sysdate)/
- echo " vv <。' mmdd'>。-查看一天的结果。”[Oracle @ jyst DRA 1 ~]$ cat v4 . SQL SELECTid,to_char(feed_time,' mm-dd hh24:mi') "FEED_TIME ",标签,round((feed_time - l_time) * 24 * 60)" LAG(min)",round((FEED _ TIME-l _ TIME)* 24,2) "LAG(h)"FROM(SELECTt)。*,LAG(feed _ time)OVER(ORDER BY id)l _ time from _ baby tWHERElabel & lt;>。l '),其中feed_time >为。= To _ DATE(' & amp;feed_time ',' mmdd ')和feed _ time & lt终止日期(& ampfeed_time ',' mmdd') + 1/
-回显“i -使用当前时间插入一行。”[Oracle @ jystdrac 1 ~]$ cat i1 . SQL insert into t _ baby(id,feed_time)值(s1.nextval,sysdate)/commit/
-回显“ii -使用输入时间插入一行。”[Oracle @ jystdrac 1 ~]$ cat I2 . SQL insert into t _ baby(id,feed_time)值(s1.nextval,to _ date(& amp;feed_time ',' mmdd hh24:mi ')/
-回显“d -按id删除错误行”[Oracle @ jyst drac 1 ~]$ cat D1 . SQL delete from t _ baby其中id = & ampid/
-回显“u -按标识更新错误行”[Oracle @ jyst drac 1 ~]$ cat u1 . SQL update t _ baby set label = upper(& amp;标签'),其中id = & ampid/
独立的SQL文本也方便了后续需求变化时的快速修改。
莫天伦原文链接:https://www.modb.pro/db/22267(复制到浏览器打开或点击左下角“阅读原文”)
你的爱会被看到
1.《新生儿喂奶时间间隔 SQL计算宝宝吃奶的时间间隔(二)》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《新生儿喂奶时间间隔 SQL计算宝宝吃奶的时间间隔(二)》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/junshi/1643600.html