在MyBatis的Mapper中,想执行多条SQL语句,这些语句已经在SQL的客户端中执行过没有任何问题的,但是写在Mapper中执行后,却总是报错,报错可能是(这是在Oracle数据库的报错,MySQL可能也是类似的): 1)invalid character<EOL><EOL> 2); bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束 MySQL…
在MyBatis的Mapper中,想执行多条SQL语句,这些语句已经在SQL的客户端中执行过没有任何问题的,但是写在Mapper中执行后,却总是报错,报错可能是(这是在Oracle数据库的报错,MySQL可能也是类似的): 1)invalid character<EOL><EOL> 2); bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束 MySQL…
使用达梦数据库新建了一个用户,给他分配了另一个模式,虽然授予了 的权限,但是还是无法创建表,应该是要授予 权限(其他还需要授予例如CTRETAE ANY VIEW等等其他权限),按确定保存的时候报错:授权者没有此授权权限。 原因是默认达梦数据库默认把ANY的授权给禁用了,就算是使用SYSDBA也不行。 修改dm.ini 路径是 /opt/dmdbms/data/DAMENG/dm.ini 增加一行(可以先查找,如果有就只要把值改成1就行): ENABLE_DDL_ANY_PRIV = 1 使用SQL命令修改(推荐)…
下载Docker镜像,下载地址:https://eco.dameng.com/download/ 或者直接知道下载地址后: wget https://download.dameng.com/eco/dm8/dm8_20220822_rev166351_x86_rh6_64_ctm.tar 例如下载到的tar文件存放在/opt/dm8_20220822_rev166351_x86_rh6_64_ctm.tar 导入安装包: #导入安装包 docker load --input /opt/dm8_20220822_re…
如题,需要用SQL随机查询出若干行数据。 以查询t_table表10条随机记录为例, -- Oracle Select随机10个 SELECT * FROM ( SELECT * FROM t_table ORDER BY DBMS_RANDOM.RANDOM ) WHERE rownum < 10; -- MySQL select * from t_table order by rand() limit 10;
需要在某个表筛选出:按照某个字段分组、分组后的每一个分组的第一行数据 例如一张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…
最近需要在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…
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…
我们知道一半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…
无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的count 目前多数人的写法 多次Review代码时,发现如现现象:业务代码中,需要根据一个或多个条件,查询是否存在记录,不关心有多少条记录。普遍的SQL及代码写法如下: ##### SQL写法: SELECT count(*) FROM table WHERE a = 1 AND b = 2 ##### Java写法: int nums = xxDao.countXxxxByXxx(params); if ( nums > 0 ) { /…
BATJTMD等大厂的面试难度越来越高,但无论从大厂还是到小公司,一直未变的一个重点就是对SQL优化经验的考察。一提到数据库,先“说一说你对SQL优化的见解吧?”。SQL优化已经成为衡量程序猿优秀与否的硬性指标,甚至在各大厂招聘岗位职能上都有明码标注,如果是你,在这个问题上能吊打面试官还是会被吊打呢? 有朋友疑问到,SQL优化真的有这么重要么?如下图所示,SQL优化在提升系统性能中是:(成本最低 && 优化效果最明显) 的途径。如果你的团队在SQL优化这方面搞得很优秀,对你们整个大型系统可用性方面无…