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
    评论
3
原创
0
点赞
3
收藏
3
粉丝
关注
私信
写文章

热门文章

  • SPL学习笔记(一) 2136
  • SPL学习笔记(二) 520
  • 大话数据结构笔记(幕布版 )栈章节 179

分类专栏

  • SPL 1篇
  • SQL 1篇

最新文章

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

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家长春玻璃钢雕塑定制公司广东玻璃钢鹿雕塑赤峰玻璃钢雕塑价格南通商场活动美陈安庆户外玻璃钢雕塑淮安玻璃钢雕塑供应商南平玻璃钢玩偶雕塑达州成都商场美陈渠道杭州夏季商场美陈长沙人物玻璃钢雕塑价格景观玻璃钢雕塑性价比哪个好曲阳口碑好玻璃钢雕塑欢迎来电定制玻璃钢雕塑多少钱四川玻璃钢人物雕塑厂家工业玻璃钢雕塑服务介绍主题玻璃钢雕塑销售公园玻璃钢雕塑定做藤县玻璃钢雕塑江苏商场美陈价格湛江玻璃钢雕塑包括哪些定州玻璃钢花盆花器群狼玻璃钢雕塑安庆卡通玻璃钢雕塑人物仿铜玻璃钢雕塑多少钱玻璃钢丹顶鹤雕塑玻璃钢公园雕塑造价咸宁玻璃钢花盆花器苏州玻璃钢雕塑施工兰州户外玻璃钢雕塑价格博物馆玻璃钢雕塑制作香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化