sql
文章平均质量分 50
海棠xun
这个作者很懒,什么都没留下…
展开
-
锁定数据行 for update和for update nowait
2.如果另一个事务执行select…for update ,在执行时就会等待,直至锁被释放,即直至for update的那个事务提交后才会正常执行该事务下的for uodate语句,或者update、delete语句也是一样的逻辑;for update wait n (n是时间,单位:秒),即会等待n秒,n秒之后数据还是锁住的话就会报上面提到的错误。for update 和for update nowait主要区别在于是否等待。首先,for update 和for update nowait 是对操作的。原创 2023-05-11 16:18:14 · 1510 阅读 · 0 评论 -
excel转成想要的sql脚本
把主键字段相关的sql片段单独摘出来,防止excel语法提示公式语句过长。=" t.id=’"&B2&"’)"“&B2&” 表示本行第二列单元格的值。(需要注意的是,如果sql中需要用到单引号,逗号之类的,要记得加。"&B2&"只是单纯的字符串替换拼接,相当于mybatis里的${id})...原创 2020-12-24 13:56:45 · 734 阅读 · 0 评论 -
SQL踩坑集合,持续更新……
1.oracle中null数据的计算select count(*) from pier.testxhh t where t.name != 'a';//结果 0select count(*) from pier.testxhh t where t.name = 'a';// 结果 1select count(*) from pier.testxhh t where t.age > -1;//结果2select count(*) from pier.testxhh t where t.age原创 2020-12-11 10:27:33 · 117 阅读 · 0 评论 -
mybatis 比较字符串相等
if 和 when的是一样的,比较字符串相等时都可以参考以下操作。1.test用单引号 字符串用双引号<when test='name == "1"'> …………………………</when>2.用toString()<when test="name== '1'.toString()"> ……………………</`when>`当常量的length=1时,因为mybatis会把’1’解析为字符,java是强类型语言,所以不能这样写。如果常量的l原创 2020-07-21 19:32:31 · 4114 阅读 · 0 评论 -
where后面的 (+) 是什么作用
首先,这个语法只能在Oracle数据库中使用。相当于左连接或者右连接select A.* ,B.* from A,B where A.id = b.id(+);select A.*,B.* from A left join B on A.id = B.id;上面两个语句是等效的。带(+)的表在没有数据时也展示出来null。...原创 2020-07-02 16:17:25 · 2439 阅读 · 0 评论 -
join on多个条件的理解
a表b表查询1:这是一个简单的左连接,左表的数据都会查询在结果中。查询2:左连接,on后面跟了2个条件,其中第二个条件对左表进行刷选,可以看到在结果中并没有起作用。因为on的条件筛选是对2张表生成的全连接(笛卡尔积)临时表进行的筛选,这时a.id=4的数据实际上是被去除掉了,因为没有a.id=4且a.id=b.id的数据。但是由于是left join,所以在结果中没有的左表数据a.id=4又被加了上去。由此可见left join 的时候,on后面对左表的数据加筛选条件是没有用的。查询3原创 2020-06-12 16:03:28 · 47497 阅读 · 4 评论 -
MySQL的语句执行顺序(转载)
MySQL的语句执行顺序MySQL的语句一共分为11步,如下图所标注的那样,最先执行的总是FROM操作,最后执行的是LIMIT操作。其中每一个操作都会产生一张虚拟的表,这个虚拟的表作为一个处理的输入,只是这些虚拟的表对用户来说是透明的,但是只有最后一个虚拟的表才会被作为结果返回。如果没有在语句中指定某一个子句,那么将会跳过相应的步骤。下面我们来具体分析一下查询处理的每一个阶段FORM: 对FROM的左边的表和右边的表计算笛卡尔积。产生虚表VT1ON: 对虚表VT1进行ON筛选,只有那些符合的行才转载 2020-06-12 14:49:15 · 426 阅读 · 0 评论 -
多表联查的连表顺序
老规矩先上例子a,b,c三个表a表b表c表1.查询结果2.查询结果结论:结果1,可以看到先执行了inner join b,导致临时表中a表的相关数据已经没有id=4的数据了,即使再left join c表结果依然没有。结果2,可以看到先执行了left join b,生成的临时表中a表的相关数据还有id=4,因此在inner join c表时结果中仍然保留a.id=4。所以在连表的过程中,先a和b进行连接,生成一张中间表d,然后再和c进行条件连接生成最后的表的数据。总结:查询原创 2020-05-28 17:45:22 · 4719 阅读 · 3 评论 -
group by理解的进阶过程
先上例子表数据如图1.group by后只跟一个字段2.跟2个字段3.调换位置理解先说说之前的困惑。“表示根据后面的字段来分组,如果只有1个字段,那只是根据这个字段的值来进行一次分组就可以了;若后面有多个字段,那表示根据多字段的值来进行层次分组,知分组层次从左到右,即先按第1个字段分组,然后在第1个字段值相同的记录中,再根据第2个字段的值进行分组;接道着第2个字段值相同的记录中,再根据第3个字段的值进行分组…依次类推。”如上是之前刚接触group by的时候一直看到的解释。当时不理解原创 2020-05-27 14:39:25 · 950 阅读 · 0 评论 -
mysql事务特征之一致性的理解
一致性是指,事务必须是使数据库从一个一致性状态变到另一个一致性状态。(从一个正常状态转换为另一个正常状态)。一致性体现在两个层面:1.数据库机制层面数据库层面的一致性是,在一个事务执行之前和之后,数据会符合你设置的约束(唯一约束,外键约束,Check约束等)和触发器设置。比如:A有90,向B转了100,这时A的账户余额就是负数,而金额的字段设置了unsigned(即非负数),这时数据库就会报...原创 2020-03-12 09:58:58 · 2016 阅读 · 0 评论 -
连表查询可以跟多个条件
连表查询时后面条件可以跟多个条件select * from tabA a,tabB bwhere a.userID=b.userID and a.userName=b.userNameselect * from tabA aleft join tabB bon a.userID=b.userID and a.userName=b.userNamewhere ……连表查询时on后...转载 2019-12-27 11:43:14 · 11660 阅读 · 0 评论 -
sql中那些偶尔用到却很实用的函数,持续更新……
1.IF()IF(condition, value_if_true, value_if_false)IF函数根据条件的结果为true或false,返回第一个值,或第二个值例:SELECT IF(500<1000, 5, 10);SELECT IF(STRCMP(“hello”,“bye”) = 0, “YES”, “NO”);...原创 2019-10-24 15:10:40 · 595 阅读 · 0 评论 -
mysql返回Boolean类型的几种情况
第一种情况,直接返回select id='22aa' from mytest where age=202 ////返回1 可封装为trueselect count(*)=1 from mytest where age=202 ////返回1 可封装为trueselect count(*)=0 from mytest where age=202 ////返回0 可封装为falsese...原创 2019-10-23 17:19:09 · 15813 阅读 · 0 评论 -
mysql 子查询的排序问题
一 概念嵌套查询:有(内层)子查询的查询,也就是说,包括外层主查询和内层子查询的查询。(内层)子查询:子查询还可以包括子查询。子查询分为嵌套子查询和相关子查询。嵌套子查询:执行不依赖与外部的查询。一般可以分为:返回单值的子查询 和 返回一个列表的子查询。例如:select s.*,(select countryName from country where id=1 ) countryNa...原创 2019-09-26 16:39:44 · 4993 阅读 · 3 评论 -
mysql的data_add的使用
aaa原创 2019-09-12 09:36:55 · 1055 阅读 · 0 评论 -
sql中显示行号
一 、自定义变量select @ro:=@ro+1 as rankNum, c.* from competition_video c, (select (@ro:=0)) b order by videoID desc limit 5;相当于用 @变量名:=值 的方法定义了一个变量 每一行都执行了 @ro:=@ro+1 相当于count++二、使用ROW_NUMBER() 函数(用时较短)...原创 2019-09-05 16:19:21 · 1732 阅读 · 0 评论