--国内从周一到周日 国外是周日到周六 select to_char(sysdate-1,'D') from dual;--取国内的星期几 去掉减一取国外的星期 --取本周时间内的数据 ,)+) and DTIME<=trunc(next_day(sysdate-,)+)+ ; ,)) and DTIME<=trunc(next_day(sysdate-,)+):--国外的 select * from table where DTIME >=TRUNC(SYSDATE, 'MM') an…
前言 QQ群讨论的时候有人遇到这样的问题:where子句中无法访问Oracle自定义的字段别名.这篇 博客就是就这一问题做一个探讨,并发散下思维,谈谈SQL语句的执行顺序问题. 问题呈现 直接给出SQL代码和执行error直观来看. select ename name from emp where name = 'SIMTH'; 哦,晃眼而过,可能并不会发现问题,不过一执行,便会报 如下错误:                   也就是where子句中name识别无效.造成这种原因是因为:whe…
sql语法的分析是从右到左 一.sql语句的执行步骤: 1)词法分析,词法分析阶段是编译过程的第一个阶段.这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号).词法分析程序实现这个任务.词法分析程序可以使用lex等工具自动生成. 2)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义. 3)语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权限. 4)视图转换,将涉及视图的查询语句转换为相应的…
var SetSearchDate = function (sign, sid, eid) {//sign 标识符区分本周本月本年,sid开始时间id,eid结束时间id var now = new Date(); var nowDayOfWeek = now.getDay(); //今天本周的第几天 var nowMonth = now.getMonth() + 1; //当前月 var nowYear = now.getFullYear(); //当前年 if (sign == 1)//本周…
Oracle SQL语句追踪 1   SQL语句追踪 追踪SQL语句的执行过程需要在Oracle服务器端进行,Oracle服务器端会检测并记录访问进程所执行的所有SQL语句.下面使用的命令都是在命令行模式下执行的,所以我们需要使用命令行以管理员身份登陆Oracle数据库.下面就是该工具使用的详细步骤. 首先要追中SQL语句,我们需要确定追踪客户端进程的会话ID,下面命令枚举了当前服务器所有访问进程会话ID和串口,然后选择需要检测的会话ID和串口. Select username, sid, se…
oracle初学者一般会遇到这个问题.   用navicat可视化创建了表,可是就是不能查到!   后来发现②语句可以查询到 ①select * from user; 但是,我们如果给user加上双引号就可以查到了! ②select * from "user"; 难道oracle跟mysql等不同,查询时候一定要加双引号?那这样不是很麻烦!于是经过查找资料得出如下结论: 1.oracle表和字段是有大小写的区别.oracle默认是大写,如果我们用双引号括起来的就区分大小写,如果没有,系…
转自:http://www.cnblogs.com/quanweiru/archive/2012/11/09/2762345.html Oracle中SQL语句执行过程中,Oracle内部解析原理如下: 1.当一用户第一次提交一个SQL表达式时,Oracle会将这SQL进行Hard parse,这过程有点像程序编译,检查语法.表名.字段名等相关信息(如下图),这过程会花比较长的时间,因为它要分析语句的语法与语义.然后获得最优化后的执行计划(sql plan),并在内存中分配一定的空间保存该语句与…
oracle: sql语句报ora-01461/ora-00911错误 ora-00911:sql语句中可能含有特殊字符,或者sql语句中不能用";"分号结尾. sql语句报ora-01461(仅可以为插入 LONG 列的 LONG 值赋值”解决办法 ):如果你的某个字段的字符太长,请用定义语句俩完成. 比如:有个字段:ticket_info,这个字段是nclob型,存入的字段太长,但是sql如果太长,执行不了,会报错(到plsql工具了执行没问题),这时需要将这个 字段的数据 用sq…
简单的oracle sql语句练习 求每个部门的平均薪水 select deptno,avg(sal) from emp group by deptno 每个部门同一个职位的最大工资 select deptno,job,max(sal) from emp group by deptno,job 按照部门编号进行分组,分组之后求每一个部门的平均薪水,要求显示平均薪水大于2000的部门的部门编号和平均薪水 select deptno,avg(sal) group by deptno having a…
[转自] http://blog.csdn.net/t0nsha/article/details/7828538 Oracle sql语句中不支持boolean类型(decode&case) 版本信息: SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterpri…
本文转自http://www.dataguru.cn/article-3302-1.html oracle数据库管理优化必备语句: 1. SELECT T.START_TIME,T.USED_UBLK,S.USERNAME,R.SEGMENET_NAME FROM V$TRANSACTION T,V$SESSION S,V$DBA_ROLLBACK_SEGS R WHERE T.SES_ADDR=S.SADDR AND T.XIDUSN=R.SEGMENT_ID运行的是无数,用户,保护的撤销段,…
Oracle SQL语句性能优化方法大全 下面列举一些工作中常常会碰到的Oracle的SQL语句优化方法: 1.SQL语句尽量用大写的: 因为oracle总是先解析SQL语句,把小写的字母转换成大写的再执行. 2.选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.如果有3个以上…
使用SQL语句清空数据库所有表的数据 近来发现数据库过大,空间不足,因此打算将数据库的数据进行全面的清理,但表非常多,一张一张的清空,实在麻烦,因此就想利用SQL语句一次清空所有数据.找到了三种方法进行清空.使用的数据库为MS SQL SERVER. 1.搜索出所有表名,构造为一条SQL语句 ) set @trun_name='' exec (@trun_name) 该方法适合表不是非常多的情况,否则表数量过多,超过字符串的长度,不能进行完全清理. 2.利用游标清理所有表 ) declare n…
执行了save()方法  sql语句也执行了,但是数据并未插入数据库中 解决方法: 是因为执行了save()方法,也执行了sql语句,但是因为使用的是 @Transactional 注解,不是手动去提交事务,所以这一条语句已经插入到数据库了,但是当前不可见. 所以最后可以采用 this.userRepository.saveAndFlush() 方法,让它及时的flush到数据库中.…
用oracle sql对数字进行操作: 取上取整.向下取整.保留N位小数.四舍五入.数字格式化 取整(向下取整): select floor(5.534) from dual;select trunc(5.534) from dual;上面两种用法都可以对数字5.534向下取整,结果为5. 如果要向上取整 ,得到结果为6,则应该用ceilselect ceil(5.534) from dual; 四舍五入: SELECT round(5.534) FROM dual;SELECT round(5…
Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象 一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……); INSERT INTO 表名(字段名1, 字段名2, ……) SELECT (字段名1, 字段名2, ……) FROM 另外的表名; 字符串类型的字段值必须用单引号括起来, 例如: ’GOOD DAY’ 如果字段值里包含单引号’ 需要…
在网上找了一大圈,没找着合适的工具来跟踪oracle一段时间的sql. 我们的场景是打算自动化跑遍所有场景(rft)+fiddler跟踪请求+后端跟踪sql,根据结果去分析慢的请求和sql,本来awr报告也能实现,但是每次都用awr比较麻烦,想的是能够简单点,直接定位到执行慢的sql或者耗cpu的sql. 这个工具抓取的sql不是实时的,是某段时间的sql,原理也很简单,比awr的sql要简单的多,试了一把,跟awr给出的数据是一致的. 最终效果:准备操作时开启跟踪,结束操作后关闭跟踪,然后工具…
ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CHECK (检查)--检查在约束中指定的条件是否得到了满足. UNIQUE (唯一)--保证在指定的列中没有重复值.在该表中每一个值或者每一组值都将是唯一的. PRIMARY KEY (主键)--用来唯一的标识出表的每一行,并且防止出现NULL值,一个表只能有一个主键约束. POREIGN KEY (外部键)--通过使用公共列在…
Oracle数据库语句大全 ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CHECK (检查)--检查在约束中指定的条件是否得到了满足. UNIQUE (唯一)--保证在指定的列中没有重复值.在该表中每一个值或者每一组值都将是唯一的. PRIMARY KEY (主键)--用来唯一的标识出表的每一行,并且防止出现NULL值,一个表只能有一个主键约束. POREIGN KEY (…
1.用EXISTS替换DISTINCT 当SQL包含一对多表查询时,避免在SELECT子句中使用DISTINCT,一般用EXIST替换,EXISTS(低效): SELECT DISTINCT USER_ID,BILL_ID FROM USER_TAB1 D,USER_TAB2 E  W WHERE D.USER_ID= E.USER_ID; (高效): SELECT USER_ID,BILL_ID FROM USER_TAB1 D WHERE EXISTS(SELECT 1  FROM USER…
(1)选择最有效率的表名顺序(只在基于规则的优化器中有效):Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. (2)WHERE子句中的连接顺序:Oracle采用自下而上的顺序解析WHERE子句,根…
  带中文的Sql语句在.Net调用时, 中文变问号(可使用 SQL Tracker工具跟踪)   问题:       服务器的字符集与客户端的字符集不一致. 解决方法: 1.  查看服务端的字符集: 使用PL/Sql 执行 SELECT * FROM V$NLS_PARAMETERS . 这里的字符集为ZHS16GBK. 2. 设置客户端的字符集 运行REGEDIT,第一步选HKEY_LOCAL_MACHINE,第二步选择SOFTWARE, 第三步选择 ORACLE, 第四步选择 NLS_LA…
一.ORACLE的启动和关闭1.在单机环境下要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下su - oracle a.启动ORACLE系统oracle>svrmgrlSVRMGR>connect internalSVRMGR>startupSVRMGR>quit b.关闭ORACLE系统oracle>svrmgrlSVRMGR>connect internalSVRMGR>shutdownSVRMGR>quit 启动oracle9i数据库…
l在 SQL 语句中使用IF-THEN-ELSE 逻辑 l l使用两种方法: •CASE 表达式:SQL99的语法,类似Basic,比较繁琐 •DECODE 函数:Oracle自己的语法,类似Java,比较简介 SQL> select ename,job, sal, case job when 'PRESIDENT' then 1.1*sal when 'MANAGER' then 1.2*sal when 'CLERK' then 1.3*sal else 1.4*sal end 涨后薪水 f…
Oracle支持的SQL指令可分为数据操作语言语句.数据定义语言语句.事务控制语句.会话控制语句等几种类型:1.数据操作语言语句数据操作语言语句(Data manipulation language,DML)用于进行数据的检索和更新操作.数据检索是数据库应用中使用频率最高的操作类型,因此数据检索的效率对数据库的整体性能影响显著.数据更新包括数据的插入.修改和删除等操作,数据更新操作具有一定的风险性,在其执行过程中DBMS必须保证数据的一致性,以确保数据有效.SELECT.INSERT.DELET…
在诊断 sql的性能问题时,我们有时候须要获取其绑定变量的实际值,然后将此实际值带入到sql语句其中,用原来的sql构成select语句(带where条件),实际的运行一下,看一下选择性怎样. 本文就是说获取其绑定变量值的方法.本文的编写得到枯荣长老的帮助,在此表示感谢. 本文适用于与oracle 10G或者更高版本号的db. alter session set nls_date_format = 'yyyy-mm-dd,hh24:mi:ss'; set linesize 400 col sql…
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num=0 3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放…
1.SQL语句尽量用大写的: 因为oracle总是先解析SQL语句,把小写的字母转换成大写的再执行. 2.WHERE子句中的连接顺序: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他 WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾. 3.SELECT子句中避免使用 * : ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个工作是通过查询数据字 典完成的, 这意味着将耗费更多的时间. 4.减少访问数据…
1.Where子句中的连接顺序: ORACLE采用自下而上的顺序解析WHERE子句. 根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾. 举例: (低效) select ... from table1 t1 where t1.sal > 300 and t1.jobtype = '0001' and 20 < (select count(*) from table1 t2 where t2.pno = t1.tno; (高…
from: http://blog.csdn.net/lailai186/article/details/12612263 sql语法的分析是从右到左 一.sql语句的执行步骤:1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义.2)语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权限.3)视图转换,将涉及视图的查询语句转换为相应的对基表查询语句.4)表达式转换, 将复杂的 SQL 表达式转换为较简单的等效连接表达式.5)选择优化器,不同的优化器一般产生不同的“执…