需要在某个表筛选出:按照某个字段分组、分组后的每一个分组的第一行数据 例如一张student学生表,按照学生所在的班级,筛选出每个班的一个学生 select * -- column names as required! from ( select id, name, class_no , row_number() over ( partition by class_no order by DBMS_RANDOM.RANDOM ) rn_ from t_student ) where rn_ = 1 -- 这里ord…

2023-03-25 0条评论 17点热度 0人点赞 admin 阅读全文

最近需要在SpringBoot下换国产达梦数据库,有个需求是一个用户下是有多个模式,需要在JDBC url下指定模式去连接。 通过研究,是这样的,记录如下以备忘: datasource: driver-class-name: dm.jdbc.driver.DmDriver url: jdbc:dm://192.168.1.2:5236/?schema=SYSDBA&serverTimezone=UTC&useSSL=false&useUnicode=true&characterEnc…

2023-01-07 0条评论 136点热度 0人点赞 admin 阅读全文

Java中很多地方的index都是0开始的,不过有个特殊,就是在操作JDBC的时候,比如设置patameter的时候,是以1开始的,今天在Hibernate中使用: String sql = "insert into t_table_name(id, name) values(?,?)"; SQLQuery query = sessionFactory.getCurrentSession().createSQLQuery(sql); query.setParameter(1, 1); query.setParame…

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

我们知道一半SQL一次插入多条数据,可以使用: insert into table_name(id, name) values(1, 'Terry'), (2, 'Tom'); 比如MySQL就是支持的,但是这样的SQL到了Oracle里就报错。 如果一次执行一条SQL,多条数据使用多条SQL,肯定是可以的,不过这样的效率是比较低的: insert into table_name(id, name) values(1, 'Terry'); insert into table_name(id, name) value…

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

无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的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条评论 184点热度 0人点赞 admin 阅读全文

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

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

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

2022-08-26 0条评论 215点热度 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条评论 350点热度 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条评论 179点热度 0人点赞 admin 阅读全文

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

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