
数据库
文章平均质量分 60
用于记录数据库常见问题,sql技巧等
心寒丶
java后台,oracle数据库,前端全栈开发,三个臭皮匠,顶个诸葛亮,有问题咱一起解决!只要你问,只要我会(不会可以一起研究),倾囊相授
展开
-
记一次oracle数据库迁移至mysql数据库(表同步)
记一次oracle数据库迁移至mysql数据库(表同步)原创 2023-08-21 23:15:00 · 6148 阅读 · 5 评论 -
零基础学SQL(十一、视图)
创建视图,刷新视图原创 2023-03-01 09:42:29 · 295 阅读 · 0 评论 -
零基础学SQL(十、子查询与多表关联)
子查询与多表关联原创 2023-02-09 14:15:29 · 749 阅读 · 0 评论 -
零基础学SQL(九、分组 GROUP BY)
sql分组 GROUP BY原创 2023-01-18 16:23:45 · 939 阅读 · 0 评论 -
零基础学SQL(七、数据的检索与排序)
数据的检索与排序原创 2022-11-16 13:45:22 · 390 阅读 · 0 评论 -
零基础学SQL(六、数据的增删改查简单语句)
数据的增删改查简单语句原创 2022-11-15 00:43:07 · 1752 阅读 · 2 评论 -
零基础学SQL(五、表创建及更新删除)
表创建及更新删除原创 2022-10-24 08:14:32 · 384 阅读 · 0 评论 -
零基础学SQL(四、可视化工具连接数据库、数据库创建及删除)
可视化工具连接数据库、数据库创建及删除原创 2022-10-11 21:22:40 · 2723 阅读 · 2 评论 -
零基础学SQL(一、数据库与SQL简介)
零基础学SQL(一、数据库与SQL简介)原创 2022-09-28 21:07:23 · 832 阅读 · 0 评论 -
七夕当然要学会SQL优化好早点下班去找对象
SQL优化技巧原创 2022-08-04 09:48:54 · 365 阅读 · 18 评论 -
join on后面 加条件 与 where后面加条件的区别
join on后面 加条件 与 where后面加条件的区别原创 2022-07-18 18:45:00 · 6336 阅读 · 12 评论 -
oracle时间操作进阶篇整理
oracle时间操作进阶篇整理原创 2022-04-18 17:15:00 · 1469 阅读 · 0 评论 -
oracle获取表索引列、约束列及非索引外键
列举索引列select table_name, index_name, column_name, column_position from sys.all_ind_columns where table_name = 'TEST' and table_owner = 'USER'查询结果如下: 列举约束 select a.table_name, a.constraint_name, b.column_name, a.constraint_type fro.原创 2022-03-31 20:00:00 · 306 阅读 · 0 评论 -
ORACLE根据关键字截取符合需要数据
比如A表有以下数据我们需要截取到agentcode,sql如下:select substr2(a.testjson, instr(a.testjson, 'agentcode') + 12, 11) from a;instr(a.testjson, 'agentcode') 返回的是agentcode第一个字符出现的位置,也就是从a开始算,+12代表截取到我们所需要的数据前边的引号,即以下截图部分。最终查询效果如下...原创 2022-01-19 09:14:10 · 1108 阅读 · 0 评论 -
oracle字符串查询不加单引号报错 ORA-01722:无效数字
今天在查找一个生产问题时,发现一个sql,查询字符串的字段,没有拼接单引号,有时会返回成功,有时会返回失败,理论上来说VARCHAR2类型字段查询时应该加单引号,但是也会返回成功就有点不寻常了,因此仔细查看了下数据,发觉问题所在,因此记录一下,希望大家在以后不再采坑。就随便拿一个现有的表看一下,表结构如下:里边有数据如下:查询数据不加单引号,直接报错ORA-01722:无效数字我们改下sql,这次不加单引号,查询成功由以上两次查询大致可以看出:当在查询的结果中都可以...原创 2021-12-03 10:19:02 · 11971 阅读 · 1 评论 -
ORACLE创建触发器
EDITIONABLE|NONEDITIONABLE,指明触发器是否允 许被编辑。默认为EDITI-ONABLE。BEFORE|AFTER,触发器在触发事件执行之前还是之后 执行。DELETE|INSERT|UPDATE,触发器响应的DML事件。REFERENCING,为OLD、NEW、PARENT伪记录指定 别名,FOR EACH ROW,指定为行级简单DML触发器,即触发 语句每影响一行数据,触发器执行一次。默认为语句级简单 DML触发器,即不管触发语句影响多少行数据,触发器只执 行一次。ENAB...原创 2021-10-20 16:57:16 · 4521 阅读 · 0 评论 -
Oracle常见内置SQL函数
常用数字函数常用字符函数常用日期函数常用转换函数常用空值函数其他函数原创 2021-10-13 14:12:07 · 162 阅读 · 0 评论 -
Oracle数据库中的DML锁
在Oracle中最主要的锁是DML锁,保证事务并发操作时的 数据完整性。DML锁主要包括TM锁(表级锁)和TX锁(行级 锁)。当Oracle执行DML语句时,系统自动在所要操作的表上申 请TM模式的锁。当获得TM锁后,系统再自动申请TX模式的 锁,并将实际锁定的数据行的锁标志位进行置位。这样在事务 加锁前检查TX锁相容性时就不用再逐行检查锁标志,而只需检查TM锁模式的相容性即可,大大提高了系统的效率。TM锁是在表上添加的锁。当一个事务执行INSERT、 UPDATE、MERGE、DELET...原创 2021-10-12 14:33:55 · 1064 阅读 · 0 评论 -
SELECT语句执行顺序
其中: DISTINCT|UNIQUE|ALL:指定查询结果集中的重复记录 处理方式,默认值为ALL。select_list:指定从数据库中返回的目标列或表达式。query_table_expression:指定数据来源的表、视图或实体化视图等。·join_clause:进行连接查询。 where_clause:限制从数据源中返回的记录需要满足的条件。hierarchical_query_clause:层次查询。group_by_clause:分组查询。order_by_clause:查询结果排...原创 2021-10-11 16:10:39 · 2805 阅读 · 0 评论 -
Oracle事务控制语句
在Oracle 中,事务是原子的,要么全部提交包含在事务中的所有语句(永久的),要么所有语句回滚。这种保护也扩展到单条语句。一条语句要么完全成功执行,要么完全回滚。注意,这里所说的是语句问滚。一条语句的失败不能使它前面执行的语句自动回滚。它们的工作是保存的,要么提交,要么回滚。下面是可以使用的各种事务控制语句。它们是:COMMIT:用最简单形式,可以只写COMMIT。也可以详细地写成COMMIT WORK,两者是等效的。COMMIT结束事务,使改变成为永久的。在分布式事务中,对COM...原创 2021-09-22 09:40:23 · 754 阅读 · 0 评论 -
记一次oracle大量数据模糊查询效率问题
今天在维护程序的时候发现有一个模糊查询效率特别低,三百万数据大约得四五十秒,原sql大致如下:select * from datalog a where a.requestdata like '%121100101%';后来看了下逻辑,大致意思就是必须使用模糊查询来匹配,遂改用以下sql来执行:select * from datalog t where instr(t.requestdata,'121100101')> 0;改之前得四五十秒,改完之后七八秒即可查询出结果。原创 2021-09-15 16:08:44 · 9861 阅读 · 0 评论 -
orcale用户使用其他用户的序列号
授权语句:将seq_test 序列号查询权限赋给AAA用户GRANT SELECT ON seq_test TO AAA;取消授权语句:将seq_test 序列号查询权限从AAA用户回收REVOKE SELECT ON seq_test FROM AAA;原创 2021-09-02 09:36:53 · 1003 阅读 · 0 评论 -
各种数据库SQL返回随机若干行
DB2:把内置函数 RAND 和 ORDER BY、FETCH 结合使用select * from table order by rand() fetch first 5 rows onlyMySQL:把内置函数 RAND 和 LIMIT、ORDER BY 结合使用select *from table order by rand() limit 5PostgreSQL:把内置函数 RANDOM 和 LIMIT、ORDER BY 结合使用select * from...原创 2021-08-24 16:45:18 · 374 阅读 · 0 评论 -
oracle删除亿级数据
近期遇到一个日志表记录了几年数据,数据量较大(几亿数据),导致查询等操作较慢,为了效率,决定删除部分历史数据,想了三种方法如下:通用步骤(每种方法之前先运行以下备份脚本):1、备份 2021年之前数据create table table_log_b2020as select * from table_log a where a.logtime<date'2021-1-1';2、备份2021年数据create table table_log_2021as select * f...原创 2021-08-20 10:49:52 · 13021 阅读 · 3 评论 -
Cannot open connection No resources currently available in pool salesDataSource to allocate to appli
生产环境问题如下:org.springframework.orm.hibernate3.HibernateJdbcException: JDBC exception on Hibernate data access; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection at org.springframework.orm.hibernate3.SessionFactor...原创 2021-07-05 11:09:56 · 10956 阅读 · 0 评论 -
JAVA中如何使用oracle中Clob类型字段
最近在项目中做接口对接需要把报文保存到数据库,本来声明列为VARCHAR2类型保存,但是后来在测试的时候发现报文长度过长,orcal中VARCHAR2最大只能保存4000个字符,因此导致错误,后来转为用cloub来保存报文,但是cloub比String操作起来较为麻烦,因此整理了一下各种实用情况的案例:1、建个测试表用来保存,查询数据如下:-- Create tablecreate table PRPSSTEST( id INTEGER not null, re原创 2021-01-13 15:49:58 · 4698 阅读 · 0 评论 -
orcal根据分号把一行拆分为多行显示
近期开发一块需求遇到之前用分号拼接保留在一个字段的值需要拆分出来分表保存,所以想了下实现方法数据如下:实现效果如下:单条处理sql:select a.id, a.carcoopercode, substr2(regexp_substr(a.pushmessageinfo, '[^;]+', 1, rownum), 0,instr(regexp_substr(a.pushmessageinfo, '[^;]+', 1, row原创 2020-07-27 11:23:05 · 9992 阅读 · 0 评论 -
oracle恢复某段时间之前的数据
1、通过以下sql就可以查询出多少分钟之前的数据select * from testas of timestamp sysdate - 10 / 1440 --test为需要恢复数据的表名 ,10表示十分钟,30则表示30分钟之前的,1440表示一天有1440分钟。2、如果精确到某段时间点,则可以用以下sql查询 SELECT * FROM testAS OF TIMESTAMP to_date('2020-05-14 11:09:21','YYYY-MM-DD HH24:M...原创 2020-05-14 11:17:14 · 12454 阅读 · 0 评论 -
同一张表查询一个字段为空则取另一个字段
如有以下数据如果CANDATE不为空则取CANDATE否则取ENDDATE;第一种:decode取法 select a.code, decode(a.candate, null, a.enddate, a.candate) from ee a;效果如下:第二种:case when取法select a.code, case when a.candat...原创 2020-04-03 09:35:33 · 24208 阅读 · 0 评论 -
excel拼接sql
比如 有以下表数据 目前需要根据提供的表格,需要根据姓名科目修改EXTRA=表格中的加分,总分sum需要等于sun+加分比如第一条:update dd a set a.extra= 5 ,a.sum=a.sum+5 where a.name='语文';当我们需要准备很多这样的sql的时候很麻烦,这个时候我们就可以才用用excel来拼接sql,=CONCATENATE...原创 2019-12-04 17:31:43 · 10092 阅读 · 0 评论 -
刷新物化视图
进入command 窗口下exec dbms_mview.refresh('TestView', 'C'); --c全部刷新,f增量刷新原创 2019-12-04 14:58:46 · 9400 阅读 · 0 评论 -
orcal删除相同数据
比如有以下数据:需要根据codename删除相同数据, delete from BB twhere t.rowid not in (select max(rowid) from BB t1 group by t1.code,t1.name);执行完再查询就只剩唯一一条了...原创 2019-11-08 17:23:17 · 9478 阅读 · 0 评论 -
表中已存在数据,增加主键,序列号
有些时候我们设计表可能没想到使用主键,或者不用主键可以完全满足,但是后来由于需求等改变,需要对已经有数据的表再加入主键,由于暂且没有想到更简单的办法,所以给大家分享一下我的办法。比如有以下表aa,给aa表加入一个字段id作为主键;(1)首先创建序列号,作为自增主键create sequence SEQ_AAminvalue 1maxvalue 99999999999999999...原创 2019-10-21 10:19:53 · 11456 阅读 · 0 评论 -
left join ,right join,inner join和full join详解
sql中常用的关联表查询有 left join(左连接)、right join(右连接)、inner join(内连接)、full join(全连接)等方式,其区别不大例如现在有两张表 aa,数据如下left join:以左表为主表右表为附表进行查询 ,会显示a表所有数据,b表中与a关联数据,没有则以空数据呈现right join:以右表为主表左表为附表进行查询 ,会...原创 2019-10-14 15:26:25 · 10187 阅读 · 0 评论 -
MINUS,INTERSECT和UNION和UNION ALL 详解
MINUS,INTERSECT关键字可以通过in not inesit等实现,那么为什么还需要用到MINUS,INTERSECT呢?有人做过实验:made_order共23万笔记录,charge_detail共17万笔记录:SELECT order_id FROM made_order MINUS SELECT order_id FROM charge_detai...原创 2019-10-14 15:04:03 · 11209 阅读 · 0 评论 -
复制表数据常用方法
1.备份表:create table aa_new as select * from aa ;2. 只复制表结构:实际上与1类似,只不过没有数据create table aa_new as select * from aa where 1=0;3. 只复制表数据:select into from 和 insert into select都是用来复制表,两者的主要区...原创 2019-10-12 17:28:22 · 10519 阅读 · 0 评论 -
sql 行转列,列转行整合
一:行转列原始数据及结构如下:(1)使用分组结合casewhen首先根据姓名分组,再依次获取各科成绩select t.name ,sum( case t.subject when '语文' then t.score else 0 end) 语文, sum ( case t.subject when '数学' then t.score else ...原创 2019-09-20 14:50:10 · 9505 阅读 · 0 评论 -
Hibernate三种数据持久状态:临时态、游离态、持久化状态
Hibernate中的三种状态 瞬时状态:刚创建的对象还没有被Session持久化、缓存中不存在这个对象的数据并且数据库中没有这个对象对应的数据为瞬时状态这个时候是没有OID(对象标识符)。一般通过new关键字创建,它没有持久化,没有处于Session中,处于此状态的对象叫临时状态。 持久状态:对象经过Session持久化操作,缓存中存在这个对象的数据为持久状态并且数据库中存在这个...原创 2019-09-17 11:16:26 · 11481 阅读 · 0 评论