无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的count 目前多数人的写法 多次Review代码时,发现如现现象:业务代码中,需要根据一个或多个条件,查询是否存在记录,不关心有多少条记录。普遍的SQL及代码写法如下: ##### SQL写法: SELECT count(*) FROM table WHERE a = 1 AND b = 2 ##### Java写法: int nums = xxDao.countXxxxByXxx(params); if ( nums > 0 ) { /…

2022-10-17 0条评论 52点热度 0人点赞 admin 阅读全文

BATJTMD等大厂的面试难度越来越高,但无论从大厂还是到小公司,一直未变的一个重点就是对SQL优化经验的考察。一提到数据库,先“说一说你对SQL优化的见解吧?”。SQL优化已经成为衡量程序猿优秀与否的硬性指标,甚至在各大厂招聘岗位职能上都有明码标注,如果是你,在这个问题上能吊打面试官还是会被吊打呢? 有朋友疑问到,SQL优化真的有这么重要么?如下图所示,SQL优化在提升系统性能中是:(成本最低 && 优化效果最明显) 的途径。如果你的团队在SQL优化这方面搞得很优秀,对你们整个大型系统可用性方面无…

2022-08-28 0条评论 84点热度 0人点赞 admin 阅读全文

MySQL中搜索我们一般是使用like关键词来搜索,不过我们还可能遇更加复杂的搜索条件,例如需要正则表达式(写过程序的一般都知道)去寻找的情况, 匹配字符串 匹配字符串是正则表达式最基础的应用。我们先给出一个例子:我们从一个用户表中查询出名字中包含有100数字的用户 SELECT * FROM my_user WHERE `name` REGEXP '100';   我们得到了用户ID为1的用户:小红100 该语句中不同于之前的语句,我们使用REGEXP关键字代表后面为正则表达式 这条语句看起来和LIKE…

2022-08-26 0条评论 87点热度 0人点赞 admin 阅读全文

MySQL在插入完一条数据库后,要知道插入的行的ID 使用来实现,代码如下: INSERT INTO t_table (col1, col2,...) VALUES ('val1', 'val2'...); SELECT LAST_INSERT_ID(); 以上会查询出最后一个insert出来的数据的ID,而且不用担心多用户访问问题,它是根据你的connection(session)来控制的,只会得到你这个连接状态下的最后一个insertId,如果其他人(或者客户端程序)也连着数据库操作,是相互不受影响的。

2022-08-18 0条评论 191点热度 0人点赞 admin 阅读全文

MySQL中使用函数,给时间日期增加时间间隔,相应的,就是减少时间间隔。 date_add示例如下: select now(); -- 当前时间 select date_add(now(), interval 1 day); -- 加1天 select date_add(now(), interval 1 hour); -- 加1小时 select date_add(now(), interval 1 minute); -- 加1分钟 select date_add(now(), interval 1 second…

2022-08-17 0条评论 81点热度 0人点赞 admin 阅读全文

有时候需要在MySQL服务器层面去查找sql的执行记录,例如有多个应用的时候,希望看到MySQL的SQL执行情况。 执行SQL命令: SHOW VARIABLES LIKE 'general%'; mysql> SHOW VARIABLES LIKE 'general%'; +------------------+---------------------------------+ | Variable_name | Value | +------------------+------------------…

2022-08-13 0条评论 143点热度 0人点赞 admin 阅读全文

MySQL中select查询出来结果希望按照某个字段的内容且指定的顺序,之前有类似的需求,按照指定内容排序,详见:https://blog.terrynow.com/2021/02/23/sql-order-by-specfic-value/ 另一种情况,比如要查一组数据in某一个数组中,但是按照指定数组的顺序排序,例如: select * from table where id in (1,5,4,3) 我们希望出来的结果,也是按照id给定的顺序:1,5,4,3来排序 MySQL可可以使用order by fie…

2022-08-10 0条评论 83点热度 0人点赞 admin 阅读全文

出于安全考虑,Oracle下的新建的用户是有有效期限制的,过了有效期,账号就会被lock锁住,如果真有一些情况(例如测试环境)是不需要设定有效期呢? Oracle给用户是分Profile的,所以密码策略也是根据profile来启用的。 先来查一下某个用户的Profile: -- 查看某个用户所在的Profile select username, profile, account_status from dba_users where username = 'SOME_USER'; SOME_USER DEFAULT…

2022-07-29 0条评论 106点热度 0人点赞 admin 阅读全文

开发中需要导出数据库结构说明文档交付给客户或者拿出来讨论等,如果手工去写的话,还是比较费劲的,不过可以使用screw来自动生成,如下图所示,是利用screw自动生成的数据库说明文档。 一、数据库支持 MySQL MariaDB TIDB Oracle SqlServer PostgreSQL Cache DB 二、配置 1、pom文件 引入screw核心包,HikariCP数据库连接池,HikariCP号称性能最出色的数据库连接池。 <!-- screw核心 --> <dependency>…

2022-07-22 0条评论 154点热度 0人点赞 admin 阅读全文

使用MongoDB统计某个字段(Field)出现相同个数的情况,例如:统计某个泄露数据库前20的相同密码次数的情况。 使用MondoDB的aggregate或者mapreduce来实现,举例: db.some_collection.aggregate( [ { $group: { _id: "$password", count: { $sum: 1 } } }, { $sort: { count: -1 } }, { $limit: 20 } ] ) 或者: db.runCommand({ 'mapreduce':…

2022-07-15 0条评论 92点热度 0人点赞 admin 阅读全文