Oracle下需要使用SQL,将一张条的某些字段的数据更新到另一张表(例如根据id一致来筛选) 例如: 有两张表,table1和table2,根据table1和table2的ID相同的记录,把table2的name和desc字段的数据更新到table1,SQL如下: MERGE INTO table1 t1 USING ( -- For more complicated queries you can use WITH clause here SELECT * FROM table2 ) t2 ON(t1.id =…

2023-05-27 0条评论 252点热度 0人点赞 admin 阅读全文

需要在某个表筛选出:按照某个字段分组、分组后的每一个分组的第一行数据 例如一张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条评论 362点热度 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条评论 468点热度 0人点赞 admin 阅读全文

密码快过期,程序连上去报错,如下: 2022-08-31 20:35:20 [WARN]JDBCExceptionReporter - SQL Warning: 28002, SQLState: 99999 2022-08-31 20:35:20 [WARN]JDBCExceptionReporter - ORA-28002: the password will expire within 7 days 2023-05-11 19:32:13 [ERROR]SqlExceptionHelper - ORA-2800…

2022-09-01 0条评论 584点热度 0人点赞 admin 阅读全文

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

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

Oracle的SQL语句中,需要连接多个字段(或者其他文本等变量)组成一个新的字符串。 如果是连接2个字段,那么可以使用concat: SELECT concat('A','B') from dual; select concat(col1, col2) from t_table; concat如果是要连接多个字段或者文本,就不行,Oracle下可以使用连接符: SELECT ('A'||'B'||'C') as new_col from dual; select col1||col2||col3 from t_t…

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

今天新建了一个SpringBoot项目,要连接Oracle数据库,就找之前的旧项目里的jdbc配置方法复制过来,结果启动的时候报警告,如下: Registered driver with driverClassName=oracle.jdbc.driver.OracleDriver was not found, trying direct instantiation. 虽然说也能正常运行,但是对于强迫症的我来说,还是希望能找到问题并解决掉,万一以后遇到奇奇怪怪的错误,就比较麻烦了。 经过一番查找,是因为applic…

2022-01-31 0条评论 725点热度 0人点赞 admin 阅读全文

以前在没有docker的时候安装Oracle需要配置一大堆复杂的参数、安装很多依赖包,导致几乎每次安装都会遇到各种奇奇怪怪的问题,现在有了docker这个神器,安装oracle只要轻松点一下,几乎没有要配置的地方,每次都能成功,非常的方便。 当然这个安装的oracle我们一般只是用来做测试的,如果生产环境,还是建议使用裸金属机器安装。 先决条件,安装docker-ce请参考:https://blog.terrynow.com/2021/12/15/centos-install-latest-docker-ce-si…

2021-12-26 0条评论 713点热度 0人点赞 admin 阅读全文

Oracle的服务器端备份示例,如下: Oracle的客户端备份详见:https://blog.terrynow.com/2021/10/26/oracle-client-dump-exp-imp-examples/ #impdp expdp是在服务器上使用的,如果用客户端去备份服务器的东西,只能用imp和exp grant create any directory to USER1; #/home/oracle/dump要注意owner等等权限 create or replace directory my_dum…

2021-11-21 0条评论 558点热度 0人点赞 admin 阅读全文

如题,Oracle中要用SQL得到日期中的年份、月份、日,如下: -- 得到年份 select to_number(to_char(sysdate,'yyyy')) from dual; -- 得到年月日的数字,例如当前2021年11月20日,就是20211120 select to_number(to_char(sysdate,'yyyyMMdd')) from dual; -- 或者使用Oracle提供的 Extract 函数 select sysdate from dual; --获得当前系统时间 selec…

2021-11-20 0条评论 658点热度 0人点赞 admin 阅读全文
12