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. 子查询的操作,并且结合限定查询.数据排序.多表查询.统计查 ...
随机推荐
- Clojure 的 Enlive 库尝试
Enlive 是一个 Clojure 下的 html 模板引擎.其特别之处在于,它既没有发明任何 html 内嵌的模板 DSL 语法:也不会混杂代码和表现. 一切的一切,都是按下列模型定义的次序执行的 ...
- hdu4901The Romantic Hero
#include<iostream> #include<map> #include<string> #include<cstring> #include ...
- Linode中的Network Helper
Linode主机vps有一个很好的网络配置工具:Network Helper,他可以在系统启动的时候,根据你的操作系统,以及检测到的网络配置等信息,自动配置好网络,非常有用. 官方文档: Networ ...
- ssh-copy-id 安全地复制公钥到远程服务器上
[root@NB .ssh]# ssh-copy-id -i id_rsa.pub " -p22 root@150.57.38.226" root@150.57.38.226's ...
- C# RSA数据加密
第一步产生密钥类 CreateKey using System; using System.Collections.Generic; using System.Linq; using System.T ...
- 基于jquery的邮箱输入联想插件开发
js代码: /*create by code_bunny 20140701 973295131@qq.com https://github.com/OOP-Code-Bunny */ (functio ...
- js在一个可编辑的div光标处插入图片或者文本(兼容ie,火狐等浏览器)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- LeetCode: Text Justification 解题报告
Text Justification Given an array of words and a length L, format the text such that each line has e ...
- C#中WebBrowser控件的使用
今天在YouTube上看了一个关于WebBrowser控件用法的小视频,做一下总结. 首先创建一个WinForm程序,拖入一个textbox控件和一个button按钮,然后拖入一个panel控件,如图 ...
- RTX——第17章 定时器组
以下内容转载自安富莱电子: http://forum.armfly.com/forum.php 本章节为大家讲解 RTX 支持的定时器组,或者叫软件定时器,或者叫用户定时器均可.软件定时器的功能比较简 ...