简单说下问题,有一个JDBC的查询SQL,分页查询语句中有一个排序order by create_time,理论上来说JDBC查询已经是比较底层的技术了,没有像Hibernate.MyBatis那样又对JDBC进行了封装,效率肯定是最好的,可谁想,3w多条数据,竟然慢的要死,经常抛出超时异常 遇到问题之后,首先在网上搜罗资料 关于Oracle排序的:http://blog.sina.com.cn/s/blog_8604ca230100vro9.html 也找到一个排序分页很慢的帖子:http:/…
/*Oracle数据库查询日期在两者之间*/ SELECT DISTINCT ATA FROM LM_FAULT WHERE ( OCCUR_DATE BETWEEN to_date( '2017-05-01', 'yyyy-MM-DD' ) AND to_date( '2017-05-15', 'yyyy-MM-DD' ) ) ORDER BY ATA DESC ; 修改如下: 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金额给作者(微信号:382477247)哦…
七.多表查询 ​ 对于查询在之前已经学过了简单查询.限定查询.查询排序,这些都属于 SQL 的标准语句,而上一章的单行函数,主要功能是为了弥补查询的不足. ​ 而从多表查询开始就正式进入到了复杂查询部分. 7.1.基本语法 多表查询就是在一条查询语句中,从多张表里一起取出所需要的数据.如果要想进行多表查询,直接在 FROM 子句之后跟上多个表即可,语法如下: SELECT [DISTINCT] *|列名称 [AS][列别名],列名称 [AS][列别名],... FROM 表名称1[表别名1],表…
SELECT uname FROM TUser WHERE uname=‘admin’ SELECT 字段名列表 FROM 表名 WHERE 条件; 在Oracle数据库中,对象是属于模式的,每个账户对应一个模式,模式的名称就是用户名称.在表名前面要添加模式的名字,在表的模式名和表名之间用“.”分隔. 我们以不同的账户登录数据库时,就进入了不同的模式,比如登录到STUDENT 账户,就进入了STUDENT模式. 而在STUDENT模式要查询属于SCOTT模式的表,就需要写成: SELECT *…
筛选数据,直接加where条件,并且and,或者or 使用rownum获取前N条数据 select * from 表名 where rownum <= 数字; 如:获取前5条数据 select * from emp where rownum <=5; 错误示例☞select * from emp where rownum=2; (查询后给一个指定的序号) 如:select rownum,e.* from emp e where sal>5000; 排序 order by 列默认升序asc…
1.缺省处理 Oracle在Order by 时缺省认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前 2.使用nvl函数 nvl函数可以将输入参数为空时转换为一特定值,如 nvl(employee_name,’张三’)表示当employee_name为空时则返回’张三’,如果不为空则返回employee_name 通过这个函数可以定制null的排序位置. 3.使用decode函数 decode函数比nvl函数更强大,同样它也可以将输入参数为空时转换为一特定值,如 de…
1. 与针对oracle数据库一样, 在sqlserver中创建对oracle数据库的dblink 安全性上面也进行定义(貌似不需要跟访问字符串只需要填一个即可) 发现有的版本改注册表不管用 还得修改上面的设置: 直接查询会报错, 需要更改注册表 增加选项 . 在打开的注册表编辑器的左侧按如下路径依次展开: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\Providers 在Pr…
/*Oracle数据库查询日期在两者之间*/ SELECT PKID, OCCUR_DATE, ATA FROM LM_FAULT WHERE ( ( OCCUR_DATE >= to_date( '2017-05-01', 'yyyy-MM-DD' ) ) AND ( OCCUR_DATE <= to_date( '2017-05-15', 'yyyy-MM-DD' ) ) AND ( ATA LIKE '%25%') ); 效果如下: 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可…
接着上一篇的分享,今天主要给大家分享的是关于数据中的单表查询,单表查询很基础,也很重要,但是任何一个初学者必须要掌握的姿势,单表查询就是对单个表进行操作,查询我们想要的数据.单表查询里面的内容也是比较多的,比如单表查询结合比较运算符.逻辑运算符.以及in not in .between...and.模糊查找.排序查找.去重查找.空值的处理.any以及all的使用.接下来就看一下关于单表查询的使用吧! 我们这里使用oracle自带的一个用户scrott用户,这个用户在数据库处于锁定状态,我们需要把…
1.在查询过程中使用算术表达式对数据进行运算 student表结构如下: 最后一项salary表示每个人的月薪,我现在想查询每个人的年薪: 2.使用nvl函数处理null值,向表中插入一条数据,该数据的salary项为null: 不使用nvl函数: 使用nvl函数: 3.将查询结果的字符串连接起来: 这里我们使用oracle安装好之后scott用户自带的emp表: 4.查找1982年1月23日后入职的员工,以下几种方式都可以,注意日期的不同写法: 5.查询工资大于等于2000并且小于等于3000…
最近在做项目中遇到多表关联查询排序的效率问题(5张以上40W+数据的表),查询一次大概要20多秒,经过一番苦思冥想,处理方案如下: 1.软件设计初期,需要一对一关联的表应该设计在一张大表里,这样虽然字段多些,但是对于查询的速度提升是非常明显的,特别是在排序的情况下. 2.我们在关联的时候可能需要排序的表只是其中的一张或者两张,我们可以先针对这两张需要排序的表先查询排序,然后再用这两个表查询的结果关联其他表.代码如下: SELECT * FROM ( SELECT * FROM M_RK_JBXX…
create or replace function bb return nvarchar2as-----------自定义游标类型type class_student is record( sname varchar2(200),    Oracle varchar2(200),    Java varchar2(200),    Android varchar2(200));type score_cursor is ref cursor return class_student;------…
本文收集了经常使用的数据库查询.须要数据库管理员权限: 1. 查询暂时表空间使用情况 SELECT TABLESPACE_NAME, TABLESPACE_SIZE / 1024 / 1024 TABLESPACE_SIZE_MB, ALLOCATED_SPACE / 1024 / 1024 ALLOCATED_SPACE_MB, FREE_SPACE / 1024 / 1024 FREE_SPACE_MB, TO_CHAR((1 - FREE_SPACE / TABLESPACE_SIZE)…
使用系统sys或者dba权限的账户创建视图如下: 1. 主要从数据库的表dba_data_files,dba_segments两张表中获取.2. 默认数据库保存的是byte单位,转换关系如下: 1024bytes = 1kb 1024KB = 1M 1024M = 1G CREATE OR REPLACE VIEW V_GET_DISKSPACE AS SELECT A.TABLESPACE_NAME, A.USE "USED (MB)", (B.TOTAL-A.USE) "…
1,锁表语句简单查询方法   select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time 2,对于上面查询的结果来解锁,如下所示 alter system kill session '382,1125'   3,锁表详细信息查询   select dba_objects.object…
查询所有列数据 select * from 表名; 查询指定列数据 效率高于查询所有列数据 select 列名,列名,列名 from 表名; --先执行from后面的代码,找到表,在执行select后面的代码,找到指定的列 distinct查询且不包含重复记录 可用于聚合函数 select distinct 列1 from 表名; 如:查询公司设置了哪些岗位 select job from emp; select distinct 列1,列2 from 表名; --把列1和列2都相同的去掉重复…
上一篇给大家介绍了数据的单表查询,相信大家对于单表的查询应该都有了一些了解.单表查询在数据库中的使用会有一些,但并不是很多,但是作为初学者,我们需要学习单表查询的思路.今天呢,我们为大家介绍一下数据库中的多表查询,左查询和右查询.因为多表查询在实际项目中的应用还是比较广泛的.我们一定要掌握,掌握了多表查询对于后面的子查询.分组查询的学习就非常的简单了! 第一步:首先开启数据库监听服务: 1.Win + R   ---> cmd --->输入lsnrctl start --->显示如下图,…
dba_free_space 显示的是有free 空间的tablespace ,如果一个tablespace 的free 空间不连续,那每段free空间都会在dba_free_space中存在一条记录.如果一个tablespace 有好几条记录,说明表空间存在碎片,当采用字典管理的表空间碎片超过500就需要对表空间进行碎片整理. select a.tablespace_name ,count(1) 碎片量 from dba_free_space a, dba_tablespaces b wher…
select * from dual order by age desc nulls last select * from test order by age asc nulls first sqlserver 认为 null 最小. 升序排列:null 值默认排在最前. 要想排后面,则:order by case when col is null then 1 else 0 end ,col 降序排列:null 值默认排在最后. 要想排在前面,则:order by case when col…
PL SQL Developer,查询结果中的中文变成了一堆问号,SQL语句中的中文被提示invalid character,不能识别. 解决方法: 执行,select userenv('language') from dual; 得到AMERICAN_AMERICA.ZHS16GBK 把这个值加到用户变量里去: 此电脑-->属性-->高级系统设置-->环境变量-->***的用户变量-->新建NLS_LANG,值为AMERICAN_AMERICA.ZHS16GBK-->…
多表查询解题思路: 1.分析题目要查询的结果涉及到那几张表 2.将每张表建立关联条件,否则会产生笛卡尔积 3.分清楚查询的条件,然后使用and将条件链接 4.涉及到分组查询的需要使用聚合函数 5.分组之后的过滤使用having --练习题: --查询706班每位同学的没门课程的分数 1.首先题目涉及到班级表.学生表.课程表.分数表我们需要先将四张表进行关联,sql如下: select * from t_class; select * from t_Student; select * from t…
SELECT * FROM `assets_message` LEFT JOIN purchase_message ON assets_message.purchase_id = purchase_message.purchase_id ' ORDER BY purchase_message.purchase_id,assets_id SELECT * FROM `assets_message` LEFT JOIN purchase_message ON assets_message.purch…
今天测试服务器遇到问题 ORA-04030:out of process memory when trying to allocate string bytes 一看就猜到是内存不足了,把Oracle给累坏了 Oracle版本:Oracle 10.2.0 操作系统:Windows Server 2003 于是,直接查了下怎么修改Oracle内存大小的命令: alter system set sga_max_size=2048M scope=spfile; 然后果断重启Oracle,于是杯具就产生…
 工作中遇到的问题: 为调用方提供一个分页接口时,调用方一直反应有部分数据取不到,且取到的数据有重复的内容,于是我按以下步骤排查了下错误. 1.检查分页页码生成规则是否正确. 2.检查SQL语句是否正确.(后来确认是SQL中order by作祟,犯了想当然的错误,认为SQL是最不可能出问题的地方,因为分页SQL格式与老代码分页SQL格式一样,所以没有怀疑.) 3.检查调用方入参是否正确. 4.检查调用方循环遍历边界. 5.在上述步骤验证没问题后,怀疑ibatis,调试到ibatis中,花费大量时…
使用PLSQL Developer和DbVisualizer查询oracle数据库时,出现查询数据中文乱码情况. 查看了一下数据库编码格式select * from v$nls_parameters; 查看编码值为WE8ISO8859P1.而电脑环境变量NLS_LANG的值为AMERICAN_AMERICA.ZHS16GBK.更改为AMERICAN_AMERICA.WE8ISO8859P1之后重启工具就好了.如果没有此环境变量,可以新建一个,将编码值更改为一致. 我的机器到此就好使了,据说有的需…
这个是可以的.sql:create table tablename1 as select t2. * from tablename2 t2 where t2.filename =‘张三’. 解释:就是从tablename2 读取出来的结果集作为tablename1 的数据.之后可以通过 “ select * from tablename1” 进行结果查看. Oracle中把一个查询结果插入到一张表中 二.Oracle数据库中支持把查询结果导入到另外一张表中. 例如:有两个表A和B 1)如果两个表…
在Oracle数据库中进行排序.分组汇总.索引等到作时,会产生很多的临时数据.如有一张员工信息表,数据库中是安装记录建立的时间来保存的.如果用户查询时,使用Order BY排序语句指定按员工编号来排序,那么排序后产生的所有记录就是临时数据.对于这些临时数据,Oracle数据库是如何处理的呢? 通常情况下,Oracle数据库会先将这些临时数据存放到内存的PGA(程序全局区)内.在这个程序全局区中有一个叫做排序区的地方,专门用来存放这些因为排序操作而产生的临时数据.但是这个分区的容量是有限的.当这个…
1. 先查询表空间在物理磁盘上存放的位置,注意使用sysdba的账号登陆. SELECT tablespace_name, file_id, file_name, ), ) total_space FROM dba_data_files ORDER BY tablespace_name; 2. 需要扩容的表空间是DW_STG_TBS,目前的文件分配序号是DW_STG_TBS20.dbf, 所以在接下来的要增加的文件的名称从21开始,我们一次行增加20个文件,脚本如下. 其中设置的每个文件初始分配…
今天我们介绍Oracle数据库中剩余的查询方法,今天的查询方法会比昨天的更为复杂一些(PS:我也是个初学者,请见谅..). 一.分组函数 分组函数是为了区分同一个表中的不同数据而建立,其关键字为GROUP BY,其中可以包含任意数目的列. 举例: SELECT DEPTNO.MAX(SAL)FROM EMP GROUP BY DEPTNO; 特别注意一旦用GROUP 分组后,前后的数值要保持一致,也就是说GROUP BY 是以DEPTNO为依据进行分组的话,SELECT 后面也必须有DEPTNO…
Oracle数据库自我总结 1.Oracle连接远程服务器,需要安装客户端的同时需要覆盖D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora文件. 如果连接不上,可以重启OracleServiceORCL服务.如下图: oracle数据库的服务需要开启. .create or replace view 视图名称.简单视图可以实现DML操作 . oracle 中没有自增长列,MySQL中有. .nvl 相当于mssql里面的isnull.…