
数据库
记录各个数据库系统使用过程中遇到的问题
blue-blue-blue
这个作者很懒,什么都没留下…
展开
-
shardingsphere引发 java.lang.String cannot be cast to java.lang.Integer异常
查询sql在数据库连接工具中可以正常运行,在加入了shardingsphere的jar包的项目中抛类型转换异常的解决原创 2021-12-20 15:27:03 · 3400 阅读 · 0 评论 -
JPA查询报 String index out of range 0
在mysql查询工具中,sql可以正常跑,但在如下JPA代码中报String index out of range 0异常的排查处理原创 2021-12-17 10:20:24 · 1423 阅读 · 0 评论 -
sql语句中count(*)与count(1)以及count(字段名)的异同点
相同点: 在select count(*/1/字段名) from tableName中都是用来统计表的数据量的,也就是这张表中有多少条数据。不同点: count(*) 与 count(1)统计出的结果一样,但是count(*)的效率没有count(1)高; count(字段名)在统计的时候,如果字段值为null的话,则不会计原创 2015-06-24 16:32:40 · 1247 阅读 · 0 评论 -
sql语句中where 1=1和where 1= 0 的使用和区别
“where 1 = 1”的用法主要是为了保证在多条件查询的情况下,sql语句能够正确的运行。“where 1 = 0”,永远是false,用于获取表的结构,不获取表中的数据。原创 2015-04-14 17:13:42 · 1101 阅读 · 0 评论 -
SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少。但我们在开发、测试过程中,经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO 和 I转载 2015-06-12 16:15:32 · 340 阅读 · 0 评论 -
truncate和delete之间的区别
TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。 DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。转载 2015-06-11 18:34:30 · 399 阅读 · 0 评论 -
查看、修改oracle字符集,查看oracle版本
1、查看数据库字符集数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表示数据库的字符集。 客户端字符集环境select * from nls_instance_parameters,其来源于v$parameter, 表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表 会话转载 2015-07-03 16:05:34 · 354 阅读 · 0 评论 -
oracle中如何获取序列的当前值
select 序列名.currval from dual; //获取序列的当前值,这个值是可变的。需要注意的是: 数据库连接成功后,初次执行这句话,会报异常,不能用。如果不是你的语句单词拼写错误,就是因为没有先执行下边这句sql(select 序列名.nextval from dual;)。也就是先去获取序列的当前值加上增量后的值。(不知道这是啥情况,没有去原创 2015-06-26 14:33:35 · 20081 阅读 · 0 评论 -
java,Oracle 12和24小时制格式化
Java中小时制:12小时制示例:SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");24小时制示例:SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");注意:yyyy-MM-dd中的MM必须大写Oracle中小时制:12小时制示例:select to...原创 2018-05-21 11:20:54 · 4941 阅读 · 0 评论 -
Oracle增加一个排名列(序号列)
Oracle查询时增加一个排名列,对用户活跃率进行排名:select row_number() over(order by act_rate desc) rank,act_rate from act_rate_table;注:rank:排名列别称act_rate:用户活跃率...原创 2018-05-24 10:14:46 · 11071 阅读 · 1 评论 -
在程序中用stmt.executeQuery("select count(1) from tableName")获取到的表的数据量(条数)与实际值不一样(比实际值多几倍)
目的:把库A中的表数据迁移到库B中 操作过程:通过程序去取库A中的值保存在一个list中,然后遍历插入到库B的表中 出现的问题:库B中的表数据量比库A中的表数据量多几倍。 具体描述为:在程序中用stmt.executeQuery("select count(1) from tableName")获取到的库A中的表的数据条数与实际值不一样(比实际值多几倍) 可能原因:原创 2015-07-06 17:03:29 · 2450 阅读 · 0 评论 -
oracle ORA-12899错误的解决方法
出现ORA-12899,是字符集引起的: 中文在UTF-8中占3个字节,ZHS16GBK中占2个字节,源dmp文件字符集是ZHS16GBK库里倒出来的数据,现在要导入到目标字符集为UTF-8的库里,所以会出现ORA-12899。 所以只要修改一下ORACLE 的字符集就可以很好的解决这个问题。 修改办法:数据库字符集在创建后原则上不能更改。不过有2种方法可行原创 2015-07-03 10:56:26 · 5923 阅读 · 0 评论 -
oracle中查找某个时间段内的数据
例子:1)select * from tableName t where start_times > to_date('2015/6/26 10:00:00','yyyy/mm/dd hh24:mi:ss');2)select * from tableName t where start_times 3)select * from tableName t where start_tim原创 2015-06-26 14:04:16 · 10483 阅读 · 0 评论 -
oracle,通过plsql创建用户表空间和所属用户示例
1)创建表空间: 先以oracle数据库管理员的身份登录plsql,在plsql中新建sql命令框,在其中输入如下语句,执行完毕即可建立一个表空间。创建用户表空间建立表空间(一般建N个存数据的表空间和一个索引空间):CREATE TABLESPACE DMREP_DAT01(表空间名)LOGGINGDATAFILE 'K:\oracle\oradata\oracle11原创 2015-07-24 15:13:52 · 1968 阅读 · 0 评论 -
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源
问题:ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源解决办法:select session_id from v$locked_object; //查出正在运行的session_ID 如果说查出来的session_id为1887,则执行下边的语句,找出serial#列的值SELECT sid, serial#, username, osuser FR原创 2015-07-06 13:51:06 · 411 阅读 · 0 评论 -
Oracle分组统计,rollup函数使用示例
要查询的表结构以及测试数据如下:rollup_test_tableyyyyMMcum_user(累计用户)new_user(新用户)2018/1862018/286分组统计并计算新用户占比的查询sql:select nvl(yyyyMM,'总计') yyyyMM, sum(cum_user) cumUser, sum(new_user) newUser, sum(new_...原创 2018-05-25 15:45:26 · 2235 阅读 · 0 评论 -
oracle 使表主键失效,外键失效
使主键失效:alter table tableName disable primary key;使主键恢复:alter table tableName enable primary key;删除主键:alter table tableName drop primary key; 使外键失效:alter table tableName disable constraint 外键名称;原创 2015-07-16 10:41:18 · 7944 阅读 · 0 评论 -
oracle用户连接不上,总被锁
背景:在tomcat的server.xml中配置oracle的连接信息,利用java程序去读取这个配置信息,建立数据连接。错误描述:其他用户都可以正常连接到oracle,只有一个用户连接不到,还会被锁。错误原因:用户名密码区分大小写。建用户的时候是小写,我在配置文件里却是大写。所以,连接的时候一直连不上。解决办法:1)设置oracle数据库用户登录的时候不区分大小写(推荐方法):原创 2015-07-14 17:07:47 · 735 阅读 · 0 评论 -
oracle 获取数据库中所有的表的注释,获取表的所有的列的注释
oracle 获取数据库中所有的表的注释:select * from all_tab_comments t where t.owner = '登录名(区分大小写)';如果想查找指定的表的注释的话,可以在查询条件中这样写:where t.owner = '登录名(区分大小写)' and table_name='表名(区分大小写)'; oracle 获取数据库中所有的表的所有列的注原创 2015-07-07 15:46:41 · 692 阅读 · 0 评论 -
sql语句左外连接与右外连接的写法
sql语句左外连接与右外连接的写法原创 2015-02-28 14:17:24 · 11641 阅读 · 0 评论 -
ORA-12899:列"DP"."META_KPI"."KPI_UNIT"的值太大(实际值:24,最大值20)
错误:ORA-12899:列"DP"."META_KPI"."KPI_UNIT"的值太大(实际值:24,最大值20)目的:想要把(oracle)库A的一张表的数据移植到(oracle)库B的表中。出现该错误原因:库A的编码为gbk,库B的编码为utf-8,两种编码格式下,汉子占的字节数不一样,gbk为2个字节,utf-8为3个字节。做过的尝试:通过java转码解决(结果:没解决):原创 2015-07-06 10:06:48 · 7818 阅读 · 0 评论 -
oracle 插入带有单引号的字段值
oracle 插入带有单引号的字段值:String value = “获取到的带'单引号'的字段值”;value.replaceAll("'","''");如果还不行,可能是从库中获取的值带有空格之类的,类似于在debug的时候把光标移到变量上,可以看到value = '1'/n 之类的这时需要在replaceAll后边加上trim()方法。value原创 2015-07-08 15:42:05 · 5397 阅读 · 0 评论 -
oracle 违反主键id错误,查看表中是否有重复的ID列的值,并删除重复数据
查询是否有重复数据:select DEV_BRU_A(表的主键列) from u_hx_adm_sub_bureau(表名) group by DEV_BRU_A having count(DEV_BRU_A) > 1;注:其中的‘DEV_BRU_A’是表的主键列,‘u_hx_adm_sub_bureau’为表名。 删除重复数据:delete from u_hx_adm_sub原创 2015-07-21 15:38:54 · 2329 阅读 · 0 评论 -
如何查看oracle表空间已使用大小
1. 查看所有表空间大小SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_data_files 2 group by tablespace_name;2. 已经使用的表空间大小SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_free_space转载 2015-04-27 15:32:45 · 456 阅读 · 0 评论 -
oracle中获取系统时间
1)如何在oracle中获取系统时间;2)日期字母的含义;3)一些示例原创 2015-02-28 14:12:18 · 880 阅读 · 0 评论 -
oracle执行select语句需要commit吗
问题:oracle执行select语句需要commit吗? 只要不是对数据库数据的更新修改操作,一般情况下不要commit。但是在dblink的情况下,如果没有commit,有可能会造成ora-1000错误,open cursor too many. --答案整理自网络原创 2015-07-07 11:51:03 · 5336 阅读 · 0 评论 -
PL/SQL查询表内容,中文乱码,解决办法
1)在plsql中新建一个sql窗口,在这个窗口中执行:select * from nls_database_parameters where parameter = 'NLS_CHARACTERSET'; //注意:单引号里边的字串一定要是大写的,否则查询不到数据通过这条sql语句可以查询到数据库的字符集,如下图所示:得到我这边的数据库字符集是GBK。 2)选中我的电原创 2015-07-17 14:24:07 · 4970 阅读 · 0 评论 -
oracle使用order by排序null值如何处理
适用情况: oracle 对查询结果进行排序时,被排序的栏位存在null值,且要指定NULL值排在最前面或者最后面 关键字:Nulls First;Nulls Last 默认情况:null 默认为最大值(即:asc 升序大>,null值排在最后;desc 降序小>,null值排在最前面) 指定: 1.Oracle Order by支持的语法 2.指定Nulls转载 2015-06-26 14:06:51 · 452 阅读 · 0 评论 -
jpa+springboot,数据查询异常check the manual that corresponds to your MySQL server version for the right ..
背景:jpa+springboot,数据查询异常问题:Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1查询代码:原创 2021-01-13 16:41:25 · 414 阅读 · 0 评论 -
Mysql解决SELECT list is not in GROUP BY clause and contains nonaggregated column 问题
解决办法:三步走,实测有效!!!1:--查看数据库sql查询模式select @@GLOBAL.sql_mode;2:-- 去除only_full_group_by 模式设置,保留第一步查询出来的其他配置项set GLOBAL sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVIS...原创 2020-01-10 11:12:57 · 1646 阅读 · 0 评论 -
springboot+jpa+mysql 生成的时间与实际时间不一致,相差14小时
问题:springboot+jpa+mysql 新增数据入库后显示的时间与实际时间不一致,相差14小时原因:mysql-connector-java的8.0后的版本会影响读取到的时区值解决:在数据库连接url后添加参数 &serverTimezone=Asia/Shanghai 即可参考原文地址:https://www.jianshu.com/p/0a3e6c91b675亲...原创 2019-11-12 15:04:53 · 1528 阅读 · 2 评论