SPL学习笔记(一)

图片

1.⛲数据库的连接与断开

**「🎫有两种方式」**1.数据源管理器中直接连接后直接引用 2.查询时指定(函数引用,下面介绍)

  1. 「数据源管理器中直接连接过程如下」

图片

  • 「点击新建」

图片

  • 「填写连接MySQL的基本信息(口令为密码)」

图片

  • 「点击连接,成功!」

图片

2.🌁Spl中用SQL实现CRUD

🍬SQL脚本

1.查询语句

图片

图片

「这里用到了两种连接方法」

  1. 在网格中调用函数连接 。(注意:这里"test001"是数据源也就是一个数据库 && A1未close之前有效)
=connect("test001")
=A1.query("select * from test001")
>A1.close()

  1. 在数据源管理器中直接连接,直接query查询。(数据源管理器中连接未断开时有效)
=test001.query("select * from test001")

  • 「在SQL语句中,也可以使用网格中的其它数据作为参数:」
[100,200,300]
=test001.query("select * from test001 where id in(?) order by id ",A10)

图片

图片

  • 「可以添加@1选项只返回第1条记录。此时,通常将返回一个序列作为结果。如下:(以序列作为结果,把第1条记录中各列的值,作为这个序列的成员)」

图片

[100,200,300]
=test001.query@1("select * from test001 where id in(?) order by id ",A10)

2.无返回值的 SQL(insert、update、delete等SQL语句)
  1. 「Insert」

图片

图片

>test001.execute("insert into test001 values (1001,'xiaoyi',18) ")
=test001.query("select * from test001 where name='xiaioyi'")

「也可以赋值(格式都一样这里不多写了,看下面例子)」

  1. 「Update于不需要对单元格赋值,在表达式开头使用">“代替”="」

🎃注意这里有个坑,注意双引号的个数,很容易看错,字符串要用双引号" "括起来

图片

图片

>test001.execute("update test001  set  name='2'  where  id =2")

也可以通过赋值来更新

图片

图片

3
4
>test001.execute("update test001  set  name=?  where  id =?",A6,A7)
=test001.query("select * from test001 where id =?",A7)

  1. 「Delete」

图片

>test001.execute("delete  from test001  where name = 'xiaoyi' ")


3.注意再执行上述的过程中一旦一个操作语句发生错误将无法执行接下来的语句。(这是其内部自动提交造成的)不符原子性。我们就可以通过设置不自动提交来避免上述情况的产生。

「这里我举官方的」****「例子」 「。」

图片

图片

图片

这里我们看到iif A5.error()==0为false 则出现了错误,为什么出现错误呢?通过=create(Fd1,Fd2,Fd3).record([A1:C4])我们可以看到出现了three(「非int型的值」)所以出现了**「赋值错误」**,因此走向了else->>A5.rollback(),我们可以看到后续的query也为空。

图片

而后又执行了>A5.execute("drop table TEST")删除了表,则表的添加和赋值失败。

👀注意:

  • connect函数使用了@e选项,因此在循环执行B7中的代码更新数据时,出现错误并不会中止执行。

  • execute函数使用了@k选项,执行结果不会自动提交。

4.用序表或序列更新数据

「从上面的例子我们可以看到,可以」 「用for循环函数将序表中的数据更新到序表。」 在集算器中,可以直接将序列或序表中数据,「用update函数更新到序表」

「这里通过官方的」例子「来学习下 (注意:数据源名称要一致)」

图片

我们可以可看到A7之前创建表的时候是没有指定主键的,当主键未指定时,会自动到数据库中寻找主键。在A7在update函数 >A5.update(A6,TEST,ID:Fd1,FULLNAME:Fd2, STATE:Fd3;ID) 语句中指定了主键–>ID。

**「update」函数「更新数据」**到序表后A8的query函数查询如下:

图片

如果数据库中已经存在了**「主键相同的数据」,结果会如何呢?我们看看下面的官方的例子(「注意:数据源名称要一致」**)

图片

于A6和B6中先**「插入两条数据」**,C6查询结果如下:

图片

而后A8中执行update函数,在A9中查到TEST表中数据如下:

图片

「可以得到主键相同的数据被更新而不同的仍然存在!」

使用update函数时,还可以用一些选项来进行不同的操作:

  • 「@u」表示「只更新数据」,而**「不插入新记录」**;

  • 「@i」表示「只插入数据」,而不**「更新已有的数值」**;

  • 「@a」表示「在更新前清空目标表中的所有记录」

  • 「@1」表示「第一个字段为自增字段」「更新时不对它赋值」

如将上例中A8中的语句修改为=A5.update@u(A7,TEST,ID:Fd1,FULLNAME:Fd2,STATE:Fd3;ID),A9中查到的结果如下:

图片

可以得到 「@u」表示「只更新数据」「而不插入新记录。」

若将上例中A8中的语句修改为=A5.update@a(A7,TEST,ID:Fd1,FULLNAME:Fd2,STATE:Fd3;ID),A9中查到的结果如下:

图片

可以得到 「@a」表示在「更新前清空」目标表中的「所有记录」

3.🌃在单元格中直接使用 SQL

除了使用**「db.query(sql)」** 函数和**「db.execute(sql)」** 函数,在集算器中还可以用 「$(db)sql」;来直接执行SQL。

👀注意:

  • 如果(db)省略,则取之前**「最后一次使用的数据库连接」**。

  • 其中的sql语句可以带参数,写在**「分号后面」即可(「db.query(sql)」** 函数和**「db.execute(sql)」** 函数在“,后)。

  • 用这种方法时,使用sql语句时不在前方加等号,也不必将语句用引号标记,但是不再支持使用@1选项。

  • 此时,不需再用execute或者query函数来区分是否返回结果集。其中select语句会返回结果集,其它语句会各自返回不同的值。如:

图片

下面来个官方例子看下区别

图片

其中A1中新建一个序表,A2中插入1条记录。A4中修改记录中的数据,A6中删除序表。在A3与A5中查询到的数据库更新情况如下:

图片

可以得出结论:「A1」「A6(创表删表语句)」 中的结果表示SQL语句**「未返回结果集(false)」** ;「A2」「A4(插入、更新语句)」 中的结果表示**「更新了1条记录」**。

4.🏝️对 SQL 的查询结果进行过滤

在集算器中,可以利用SQL的查询结果,进行**「过滤」「排序」「组合」等等操作,以提高查询效率,或者解决一些比较复杂的「条件查询」**的问题。

「举个例子」

图片

图片

=test001.query("select * from test001 where id<10 order by id desc" )

接下来对其进行数据过滤->“name属性以s开头”

🍭**「SQL过滤(注意MySQL对大小写不敏感)」**

图片

图片

=test001.query("select * from test001 where id<10 and name  like 's%' order by id desc" )

🍭**「SPL过滤(s需为大写S)」**

图片

图片

=test001.query("select * from test001 where id<10  order by id desc" )
=A1.select(left(name,1)=="S")


//这里也可以使用cont来计算个数
=A1.count(left(name,1)=="S")
//对应MySQL
=test001.query("select count(*) from test001 where id<10 and name  like 's%' order by id desc" )

//其他过滤
A2[Sakurai Itsuki]
=A1.count(A2.contain(name))
=A1.count(A2.pos(name)>0)

⛲**「对名字首字母进行过滤分组」**

图片

图片

=test001.query("select * from test001 where id<10  order by id desc" )
=A1.group(left(name,1))

接下来对他们进行再过滤

=A2.select(~.age>200)

图片

可以看到age为的169的Sakurai Itsuki个体被过滤了,接下来再过滤一波。

⚒️注意:”:“相当于SQL的as,后面会讲到。

=A3.new(left(name,1):fistword, ~.age:ages, ~.id:ID)

图片

5.🐯常见的 SQL 语句与集算器语法的对照

图片

其实就是用SQL和SPL语句查询相同的结果

  1. select * from :这个比较简单,就是普通的查询

图片

  1. select … from :A1 和A3结果一样

图片

  1. as:相当于 ”:“ 如下

图片

  1. where:条件查询 (注意:SQL查询同样的结果,语法复杂得多,且这里由于计算年龄时不精确,因此结果也存在一点的误差。)

图片

  1. count、sum、avg、max和min 同样的例子将select 改为count(*)

🛶注意:这里count 要求计算准确的结果,获得的查询结果和A3中的一致,但无法利用已有的结果,而语句也复杂得多。sum、avg、max和min等SQL函数的使用方法和count基本类似。

图片

  1. distinct:

🎳这里巧妙运用主键来去重

图片

  1. order by :查询年龄小于35岁的员工,并按照年龄降序排序,同龄员工按全名升序排序(年龄降序-> .sortd(-AGE,FULLNAME) 同龄->全名new(FULLNAME,AGE) ),A3与A4中的查询结果相同,如下:

图片

图片

  1. and、or、not和<>:and <->&&

图片

  1. like:name中以a结尾的员工。

图片

  1. group:根据员工所在部门分组,在集算器中,可以用**「group」**函数对记录分组,如下:

(注意:group后第一个符号是 「”;“」 第二个为 「”:“」 , ”~“ 表示引用group的结果)

图片

图片

亦知码
关注 关注
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
splunk spl语法笔记
QYHuiiQ
08-31 5807
#重命名a为b | rename a as b #日期格式化并计算 | eval t1=strptime(time1,"%Y-%m-%dT%H:%M:%S.%3N%z"),t2=strptime(time2,"%Y-%m-%dT%H:%M:%S.%3N%z") | eval duration=t2-t1 #变量值为0时显示的是变量名,需要如下判断(表示如果b+c等于0,那么结果就是0,否则就等于b+c的值) | eval myvalue=if((b+c)=0,0,b+c) #保留两位小.
cad学习笔记.docx
05-15
"cad学习笔记" 在学习CAD的过程中,记录了重要的笔记,以便日后能够快速回忆和应用。以下是 CAD 中的一些重要知识点: 一、界面设置 * 选择图形,可以通过从左上角往下拉或从右下角往上拉来选中部分或全部对象。 ...
spl基本命令
11-01
spl基本命令spl基本命令spl基本命令spl基本命令spl基本命令spl基本命令spl基本命令
SPL标准库学习笔记
liuzp111的专栏
05-22 4055
SPL简介 SPL的常用数据结构 数据结构之双向链表 双向链表简介 数据结构之SplDoublyLinkedList类 数据结构之堆栈 堆栈简介 代码示例 数据结构之队列 代码示例 SPL的常用迭代器 迭代器概述 ArrayIterator AppendIterator MultipleIterator FilesystemIterator SPL基础接口 接口简介 Countable接口 Oute
SPL学习笔记1-基本语法+数据类型
最新发布
qq_39418238的博客
07-14 257
SPL编程中,基本语法跟其他编程语言的基本语法大体一致,主要包括条件判断、循环结构、变量、赋值、函数这些语法。其次我们还需要掌握这门编程语言的数据类型。以上就是赋值+条件判断的来控制代码的运行顺序。浮点数:有小数点数;整数:没有小数点的数。其中整数可以转换成浮点数,例如float(A4),但整数不一定能够转为浮点数。SPL的数据类型分为了浮点数、整数、长整数、字符串、日期时间等。上面就是通过循环语法控制某一段代码的执行,来达到实现的效果。在学习编程,我们首先要学习编程的基本语法+数据类型。
php SPL学习
weixin_33813128的博客
08-29 97
数据结构 SplDoublyLinkedList - 该SplDoublyLinkedList类提供了一个双向链表的主要功能 SplStack - 该SplStack类提供了一种使用双向链表实现栈的主要功能 SplQueue - 该SplQueue类提供了一种使用双向链表实现队列的主要功能 SplHeap - 该SplHeap类提供了堆的主要功能 SplMaxHeap - 该Spl...
SPL学习笔记(二)
qq_62017172的博客
10-09 493
🍬上节我们讲了如何连接及它们是如何结合一起实现基本的的,最后讲了常见的语句与语法的对照。、、、、、、、、、、等。官方给的例子是以文件数据源()举例,这里我以**「MySQL」**作为数据源来演示,思维导图如下。❝🎁数据库脚本公众号回复SPL学习笔记(二)❞。
Yii框架学习笔记.pdf
06-18
本篇学习笔记将详细介绍Yii框架的基本概念,包括请求处理流程、组件、事件与行为、错误和日志处理、国际化以及视图和控制台应用等方面。 ### 请求的处理流程 1. **项目入口脚本**:在Yii框架中,项目的入口脚本...
PHP设计模式大全 学习笔记
10-04
PHP提供`__autoload()`(已弃用)和`spl_autoload_register()`函数实现自动加载,符合PSR-0规范的命名规则,能更方便地管理类文件。 9. **魔术方法(Magic Methods)**: 魔术方法是PHP中以两个下划线`__`开头的...
学习笔记之 单片机编程之C语言.doc
07-03
学习笔记之单片机编程之C语言】 在学习单片机编程,特别是使用C语言进行AVR单片机编程时,理解硬件特性和编程注意事项是至关重要的。AVR单片机是由Atmel(现被Microchip收购)开发的一系列高性能、低功耗的微控制...
spl常用语句.pdf
10-10
spl常用语句.pdf
SPL学习笔记(1)---概念
Going Perfect
01-30 768
一:什么是SPLSPL是Standard PHP Library的缩写,他是用于解决常见问题的接口与类的集合。常见问题是什么问题呢?1:数据建模、数据结构。解决数据如何存储的问题。2:元素遍历。数据如何查看的问题。3:常用方法的统一调用。通用方法(数组、集合的大小)。自定义遍历。4:类定义自动装载。SPL框架包括数据结构、迭代器、基础接口、基础函数、异常、其他等。二:SPL中的常用数据结构1:什么是
php spl,PHP标准库SPL学习之数据结构、常用迭代器、基础接口
weixin_30135925的博客
03-10 200
一、SPL简介什么是SPLPHP的标准库SPL:Standard PHP LibrarySPL: 用于解决常见普遍问题的一组接口与类的集合Common Problem:数学建模/数据结构解决数据怎么存储的问题元素遍历数据怎么查看问题常用方法的统一调用通用方法(数组、集合的大小)自定义遍历类定义的自动装载让PHP程序适应大型项目的管理要求,把功能的实现分散到不同的文件中SPL的基本框架二、SPL的常...
写着简单跑得又快的数据库语言 SPL
02-13 1315
数据库语言的目标要说清这个目标,先要理解数据库是做什么的。数据库这个软件,名字中有个“库”字,会让人觉得它主要是为了存储的。其实不然,数据库实现的重要功能有两条:计算、事务!也就是我们常说...
简单的spl语句
weixin_34233421的博客
11-16 2204
2019独角兽企业重金招聘Python工程师标准>>> ...
spl(备选,参考即可)
weixin_30784945的博客
03-29 559
转载于:http://bbs.chinaunix.net/thread-4248378-1-1.html 【1】SPL简介SPL(Secondary programloader)是uboot第一阶段执行的代码。主要负责搬移uboot第二阶段的代码到系统内存(System Ram,也叫片外内存)中运行。SPL是由固化在芯片内部的ROM引导的。我们知道很多芯片厂商固化的ROM支持从nandf...
GBase 8s SPL语法
qq_39280087的博客
04-20 2632
概述 SPL例程由开始语句语句块,结束语句组成。 SPL例程根据是否需要返回值,分为存储过程和函数。 语句块由SQLSPL语句组成。 存储过程 语法 create procedure proc_name(param1 data_type1, param2 data_type2, …) spl_code; end procedure; 函数 语法 create function func_name(param1 data_type1, param2 data_type2, …) returning dat
基础篇:数据库 SQL 入门教程_sql学习
2401_84140112的博客
05-01 84
某些数据库会列出介于 “Adams” 和 “Carter” 之间的人,但不包括 “Adams” 和 “Carter”;而另一些数据库会列出介于 “Adams” 和 “Carter” 之间的人,包括 “Adams” ,但不包括 “Carter”。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。如图,“Id_O” 列是 Orders 表中的的主键,同时,“Orders” 表中的 “Id_P” 列用于引用 “Persons” 表中的人,而无需使用他们的确切姓名。
CAD学习笔记:界面设置与基础操作指南
本篇CAD学习笔记主要记录了初学者在学习AutoCAD过程中的一些关键操作技巧和设置,以帮助记忆和日后回顾。以下是部分内容的详细解析: 1. **界面设置**:学会灵活调整鼠标操作,从左上角或右下角选取图形范围,以...
写文章

热门文章

  • SPL学习笔记(一) 2062
  • SPL学习笔记(二) 493
  • 大话数据结构笔记(幕布版 )栈章节 172

分类专栏

  • SPL 1篇
  • SQL 1篇

最新文章

  • SPL学习笔记(二)
  • 大话数据结构笔记(幕布版 )栈章节
2022年2篇
2021年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

天下网标王南昌西湖网站优化排名濮阳企业网站优化推广可靠吗黄南网站排名优化更合网站优化公司网站优化建议工具盐城规模大的珠宝行业网站优化个人网站如何做优化泰州市优化网站哪家好网站快照优化公司哪家靠谱网站怎么优化排名才能靠前肇庆网站优化厂家热门网站优化系统加盟成都网站seo推广优化价格宿迁网站优化公司昆明网站seo优化哪家好一点桂城网站优化方法沈阳有经验的网站推广优化机械行业网站优化有效果阜宁网站优化公司响应式网站对优化有帮助吗网站排名优化收费情况专业网站SEO优化服务电话巩义网站seo优化地址天津商城网站优化seo优化数据查询网站桐梓县网站优化服务马鞍山市网站关键词优化哪家有名南雄网站优化排名新乡网站seo优化工具网站应用常用优化香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化