数据库(oracle&mysql)
文章平均质量分 79
卖炫迈的小男孩
随缘记录心得,请多指教~
展开
-
mysql中varchar与bigint直接比较会导致精度丢失以至于匹配到多行数据
如果联表的两个字段类型不一样,数据库会对两个不同类型的字段进行隐式的类型转换,导致索引失效。varchar与bigint进行比较的时候,mysql先转换为双精度浮点数double再进行比较的,由于bigint的位数超过了16位所以会导致丢失一部分精度,所以会匹配上多行数据。而在mysql中double的精度的精度为16位有效数据,因此如果要比较varchar和bigint类型的话,如果允许的话就改为统一的类型进行比较。也可以将bigint转换为varchar进行比较,或者两者都使用更高精度的Decimal类原创 2024-05-09 00:12:29 · 780 阅读 · 0 评论 -
在mysql函数中启动事物和行锁/悲观锁实现并发条件下获得唯一流水号
我们对某一行先查然后更新,并且希望我在更新操作完成之后,其他程序才能查这一行的数据,这样就能保证我的流水号是唯一的了。在mysql中默认以自动提交模式运行,你也可以使用START TRANSACTION;我们在原来的函数里面开启事物,并且使用行锁(或者叫悲观锁、排它锁。我在这里直接叫行锁是因为我查询和更新的时候都是可以通过fcityno和fyearno可以定位到唯一一行的,这两个字段是联合主键能确定唯一一行,所以在InnoDB引擎下它就是一个行级锁),注意FOR UPDATE必须在事务的上下文中使用。如果没原创 2024-04-19 02:40:40 · 817 阅读 · 0 评论 -
关于mysql存储过程中N/A和null的使用注意事项
oracle和mysql的存储过程大同小异,但是一些细节还是需要留意的。最近发现mysql的N/A和null在存储过程中容易忽略的一点,这会导致我们的存储过程提前结束。这样会存在一个隐患就是,在存储过程中如果任一地方的sql如果没有查到数据(应该说。mysql的N/A和null区别网上也说得很详细了,我就不赘述了,只要知道mysql中。的时候,要注意可能出现N/A,也就是没有查到一条记录的情况,这个时候会触发。,也即sql的返回值是N/A),那么这个。上面的存储过程中还要提一点的就是,原创 2023-12-18 00:24:02 · 1738 阅读 · 1 评论 -
在mysql存储过程中间部分,使用游标遍历动态结果集(游标动态传参使用)
今天在编写mysql存储过程的时候,就遇到一个问题,可能是先入为主的思想,同事之前说过:mysql的存储过程很难用,游标都不能使用oracle那种动态传参实现动态遍历结果集内容。我也就一直以为mysql的邮编只能在begin的DECLARE最后的部分进行一次确切的sql声明,但是很多时候我并不能事先确定每一个字段的范围,这样游标就很鸡肋了。那我就来水一篇博客了~其实,mysql的游标也是可以传参数的,只不过定义和传参的时候和oracle的带参数的游标有一点不同,但是使用的时候就和普通的静态游标一模一样了。原创 2023-11-26 14:36:32 · 2021 阅读 · 3 评论 -
窗口函数、开窗函数ROW_NUMBER() OVER(PARTITION BY …… ORDER BY ……)
开窗函数语法:窗口函数 over(partition by 列名1 order by 列名2 ),窗口函数可以是ROW_NUMBER(),也可以是其他,会一个其他都是大同小异,本节就以它举例,它的作用就是可以给每一条记录生成一个唯一的行号。配合partition by 就可以在“列名1”此列,值相同的记录中给每一条记录从1依次递增生成唯一的逻辑行号,加上order by就可以实现自定义排序。开窗函数只是相对于聚合函数而言的,聚合函数是将group by后的分组聚合成单条数据,而开窗函数后的over(英文.原创 2022-07-13 01:44:51 · 5738 阅读 · 0 评论 -
数据库概念——行转列、列转行理解及实现(oracle&mySQL)
不管行转列还是列转行使用时同平时用的一样,一般要结合聚合函数使用(因为列名一定是唯一的,字段里的值并不一定是是唯一的,所以配合聚合函数使用)。(补充说明:行就是我们平时说的一条一条的记录,再具体点就是某一列的具体值;列就是字段,也就是列名)但是并不属于行转列和列转行的一种,不要混淆了,只是使用场景类似都是给你进行分组。补充:可以实现行转列是因为MySQL没有行转列的函数,便可用和配合实现行转列的功能而已。再通俗点就可以把数据表的行和再通俗点就可以把数据表的行和列看成坐标轴的横轴和纵轴,只不过横轴是固定的就原创 2022-06-25 01:57:08 · 2876 阅读 · 0 评论