Oracle查询优化--单表查询
--查询所有
select * from emp;
select * from emp where comm is null;
--错误表达
--select * from emp where comm = null;
--其他有关null的返回结果
select replace('abcde','a',null) as str from dual;
select greatest(1,null) from dual;
/*结论:遇到null最好先测试一下,不能臆想猜测*/
--coalesce函数
SELECT coalesce(comm,0) FROM emp;
--上述例子中coalesce与nvl函数起同样作用,但coalesce函数更好用,支持更多参数,能很方便地返回第一个不为空的值
CREATE OR REPLACE VIEW v AS
SELECT NULL AS c1,NULL AS c2,'' AS c3,NULL AS c4,'' AS c5,NULL AS c6 FROM dual UNION ALL
SELECT NULL AS c1,NULL AS c2,NULL AS c3,'' AS c4,NULL AS c5,'' AS c6 FROM dual;
SELECT * FROM v;
SELECT COALESCE(c1,c2,c3,c4,c5,c6) AS c FROM v;
--key:别名
--desc:可以为结果集的列指定别名,用AS或空格紧跟。
SELECT 姓名 FROM (SELECT ename 姓名,comm AS 提成 FROM emp) WHERE 提成 IS NULL;
--summary:使用别名当筛选条件需要在外面嵌套一层
--key:拼接
--desc:concat和||都可以拼接字段
SELECT ename || '的工作是' ||job AS msg FROM emp WHERE deptno=20;
SELECT concat('姓名:',ename) AS msg FROM emp WHERE deptno=20;
--summary:concat可以拼接两个字段,使用||可以拼接多重字段
--key:生成sql
--desc:用sql生成sql
DROP TABLE test_concat PURGE;
CREATE TABLE test_concat AS
SELECT table_name,
'N_' || table_name AS new_tbl_name,
column_name,
'new_' || column_name AS new_col_name
FROM all_tab_cols
WHERE owner = 'SCOTT';
DECLARE v_sql CLOB;
BEGIN
FOR cur IN (SELECT 'CREATE OR REPLACE VIEW ' || new_tbl_name || ' as ' || chr(10) ||
'select ' || chr(10) ||
wmsys.wm_concat(column_name || ' as ' || new_col_name || chr(10)) ||
'from scott.' || table_name AS create_view
FROM test_concat
GROUP BY table_name,new_tbl_name)
LOOP
v_sql := cur.create_view;
EXECUTE IMMEDIATE v_sql;
END LOOP;
END;
--key:条件逻辑
--desc:case when
SELECT (CASE
WHEN sal<1000 THEN '0000-1000'
WHEN sal<=2000 THEN '1000-2000'
ELSE '好高' END) AS 提成
FROM emp;
--key:rownum
--desc:限制返回行数
SELECT * FROM emp WHERE ROWNUM<=3 ORDER BY sal DESC;
--upgrade
SELECT * FROM (SELECT ROWNUM rn ,emp.* FROM emp WHERE ROWNUM<=3) WHERE rn=2;
--summary:并不能通过order by和rownum的配合得到排名
--key:随机
--desc:随机抽查3行数据
SELECT empno,ename FROM (SELECT dbms_random.value(),empno,ename FROM emp ORDER BY dbms_random.value()) WHERE ROWNUM <= 3;
/*summary:必须嵌套使用,否则直接使用并不能得到随机效果:
SELECT dbms_random.value(),empno,ename FROM emp where rownum <=3 ORDER BY dbms_random.value()
因为查询语句中执行的顺序是:!.select 2.rownum 3.order by
所以,在order by执行之前,前三行已经定了,随后对已选定的三行进行随机显示而已*/
--key:模糊查询
--desc:模糊查询及转义字符的使用
--prep:
CREATE OR REPLACE VIEW v AS SELECT 'ABCEDF' AS vname FROM dual
UNION ALL
SELECT '_BCEFG' AS vname FROM dual
UNION ALL
SELECT '_BCEDF' AS vname FROM dual
UNION ALL
SELECT '_\BCEDF' AS vname FROM dual
UNION ALL
SELECT 'XYCEG' AS vname FROM dual
SELECT * FROM v;
--查询包含CED的行
SELECT * FROM v WHERE vname LIKE '%CED%';
--查询包含_BCE的行
SELECT * FROM v WHERE vname LIKE '%_BCE%';--ABCEDF和_\BCEDF并不是想要的结果,因为_被当做通配符了
SELECT * FROM v WHERE vname LIKE '%\_BCE%' ESCAPE '\';--escape是用来定义转义字符的,只有定义了才有效果,也可以定义成其他,如*、/等
Oracle查询优化--单表查询的更多相关文章
- oracle数据库单表查询
今天给大家分享的是关于数据库的单表查询,像单表查询/多表查询/分组查询/子查询,这些方法的使用在实际项目过程中会经常用到,作为一名合格的测试人员如果不会数据库那肯定是不行的,行走江湖可能随时会面临被侮 ...
- Oracle查询优化-多表查询
--合并结果集 --1.union all UNION ALL--单纯合并 ; --2.union UNION --将重复结果集合并 ; --------------使用命令窗口执行,查看union与 ...
- Oracle之单表查询及常用函数
1.语法: select 字段列表 from 表名 [where 查询条件] [group by 分组] [having 分组条件] [order by 排序] select * 代表查询所有的字段 ...
- Oracle数据库之单表查询
接着上一篇的分享,今天主要给大家分享的是关于数据中的单表查询,单表查询很基础,也很重要,但是任何一个初学者必须要掌握的姿势,单表查询就是对单个表进行操作,查询我们想要的数据.单表查询里面的内容也是比较 ...
- Oracle - 单表查询相关
-- 单表查询 -- 查询表的所有数据, *代表所有 -- select * from [表名]; -- 查询表中指定字段的值 -- select [字段1], [字段2] ... from [表名] ...
- python mysql 单表查询 多表查询
一.外键 变种: 三种关系: 多对一 站在左表的角度: (1)一个员工 能不能在 多个部门? 不成立 (2)多个员工 能不能在 一个部门? 成立 只要有一个条件成立:多 对 一或者是1对多 如果两个条 ...
- 数据库——SQL数据单表查询
数据查询 语句格式 SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>] … FROM <表或视图名>[,<表或视图名&g ...
- MySQL简单查询详解-单表查询
MySQL简单查询详解-单表查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查询的执行路径 一条SQL查询语句的执行过程大致如下图所示: 1>.客户端和服务端通过my ...
- Oracle笔记 多表查询
Oracle笔记 多表查询 本次预计讲解的知识点 1. 多表查询的操作.限制.笛卡尔积的问题: 2. 统计函数及分组统计的操作: 3. 子查询的操作,并且结合限定查询.数据排序.多表查询.统计查 ...
随机推荐
- 巧用tail查看软件的安装进程
我在使用perlbrew安装perl的时候,学到的一招,呵呵. 有时候,安装软件的时候,特别是手动安装的时候,没有什么提示信息,只能干等着,其实,可以使用tail命令来跟踪安装日志的尾部,来观察安装的 ...
- php四种排序算法实现代码
分享php排序的四种算法与代码. 冒泡:function bubble_sort($arr){ $num = count($arr); for($i=0;$i<$num;$i++){ for($ ...
- 判断js对象是否拥有某一个属性的js代码
js对象是否拥有某一个属性的判断方法有很多. 本文分享一个简单的方法,如下: <script> /** * 判断js对象是否具有某属性 * by www.jbxue.com */ var ...
- RhinoMock异常ExpectationViolationException以及解决
ExpectationViolationException 异常的原因是没有按照mock的顺序调用方法. mock b mock a //expectation call a call b call ...
- 【Android】4.4 示例--列出手机上的所有联系人
分类:C#.Android.VS2015:创建日期:2016-02-06 项目名:DesignerWalkthrough 模板:Blank App(Android) 功能:列出手机上的所有联系人. 说 ...
- CCCallFunc和CCSequence
class CC_DLL CCCallFunc : public CCActionInstant //<NSCopying> void Issue1305_2::onEnter() { A ...
- LeetCode: Multiply Strings 解题报告
Multiply StringsGiven two numbers represented as strings, return multiplication of the numbers as a ...
- SharePoint自动化系列——通过Coded UI录制脚本自动化创建SharePoint Designer Reusable Workflow
Coded UI非常好,我开始还在想,怎么样能让一个通过SharePoint Designer创建的Workflow publish三百五十次?想不到一个好的方法,也不知道SharePoint Des ...
- python学习笔记(18)--eclipse更换主题
说明: 1. 在eclipse marketplace 搜索color ide pack安装 2. 参考文章和评论http://blog.csdn.net/wusuopubupt/article/de ...
- Curator入门教程1
简介 Curator是Netflix开源的一套ZooKeeper客户端框架. Netflix在使用ZooKeeper的过程中发现ZooKeeper自带的客户端太底层, 应用方在使用的时候需要自己处理 ...