--查询所有

 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查询优化--单表查询的更多相关文章

  1. oracle数据库单表查询

    今天给大家分享的是关于数据库的单表查询,像单表查询/多表查询/分组查询/子查询,这些方法的使用在实际项目过程中会经常用到,作为一名合格的测试人员如果不会数据库那肯定是不行的,行走江湖可能随时会面临被侮 ...

  2. Oracle查询优化-多表查询

    --合并结果集 --1.union all UNION ALL--单纯合并 ; --2.union UNION --将重复结果集合并 ; --------------使用命令窗口执行,查看union与 ...

  3. Oracle之单表查询及常用函数

    1.语法: select 字段列表 from 表名 [where 查询条件] [group by 分组] [having 分组条件] [order by 排序] select * 代表查询所有的字段 ...

  4. Oracle数据库之单表查询

    接着上一篇的分享,今天主要给大家分享的是关于数据中的单表查询,单表查询很基础,也很重要,但是任何一个初学者必须要掌握的姿势,单表查询就是对单个表进行操作,查询我们想要的数据.单表查询里面的内容也是比较 ...

  5. Oracle - 单表查询相关

    -- 单表查询 -- 查询表的所有数据, *代表所有 -- select * from [表名]; -- 查询表中指定字段的值 -- select [字段1], [字段2] ... from [表名] ...

  6. python mysql 单表查询 多表查询

    一.外键 变种: 三种关系: 多对一 站在左表的角度: (1)一个员工 能不能在 多个部门? 不成立 (2)多个员工 能不能在 一个部门? 成立 只要有一个条件成立:多 对 一或者是1对多 如果两个条 ...

  7. 数据库——SQL数据单表查询

    数据查询   语句格式 SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>] … FROM <表或视图名>[,<表或视图名&g ...

  8. MySQL简单查询详解-单表查询

    MySQL简单查询详解-单表查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查询的执行路径 一条SQL查询语句的执行过程大致如下图所示: 1>.客户端和服务端通过my ...

  9. Oracle笔记 多表查询

    Oracle笔记  多表查询   本次预计讲解的知识点 1. 多表查询的操作.限制.笛卡尔积的问题: 2. 统计函数及分组统计的操作: 3. 子查询的操作,并且结合限定查询.数据排序.多表查询.统计查 ...

随机推荐

  1. 使用Frame控件设计Silverlight的导航

    这里所说的导航其实就是在Silverlight的页面之间前进后退以及跳转.通过Frame控件配合后台NavigationService类可以很容易的做到页面之间的导航. 这就是工具箱中的Frame控件 ...

  2. BBED标记坏块以及修复坏块

    创建測试表: ZBDBA@orcl11g>select * from zbdba; NAME -------------------------------------------------- ...

  3. linux下使用find命令根据系统时间查找文件用法

    这篇文章主要为大家介绍了find 命令有几个用于根据您系统的时间戳搜索文件的选项. 这些时间戳包括 mtime 文件内容上次修改时间 atime 文件被读取或访问的时间ctime 文件状态变化时间 m ...

  4. C++面向对象程序设计的一些知识点(4)

    摘要:累继承可以实现源代码重用,模板技术也可以达到同样的目的.模板可以分为函数模板和类模板,其共同点是允许参数类进行类型化,编译器根据程序员传递的具体类型,又把函数模板实例化为具体函数,把类模板实例化 ...

  5. 配置信息写入到.ini文件中的方法

    在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下: 一.将信息写入.INI文件中 1.所用的WINAP ...

  6. css3和jquery实现的可折叠导航菜单(适合手机网页)

    之前为大家介绍了好几款css3导航,今天为大家在介绍的是一款适合放在手机网页的导航菜单.点击列表图标以下拉式的形式显示菜单,单击关闭,动画关闭.效果相当不错.效果图如下: 在线预览   源码下载 这个 ...

  7. 一款手机端的jQuery图片滑块插件

    今天我们要介绍一款比较特别的jQuery图片滑块插件,它不仅在PC浏览器上可以使用,而且更适合在手机端的网页中使用.这款jQuery插件不仅可以定义图片切换的方向,而且可以即时切换图片切换的动画方式, ...

  8. thrift学习之二----学习资料积累

    自己没有仔细安装,从网上搜的安装技术文章,在此做个备份,以防后面用到: http://blog.csdn.net/hshxf/article/details/5567019 http://blog.c ...

  9. CenOS6.5下源码安装vim-7.4

    1.[下载] vim-7.4下载地址: ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2 2.[解压] tar jxvf vim-7.4.tar.bz2 之 ...

  10. C语言 · 判定字符位置

    算法训练 6-3判定字符位置   时间限制:1.0s   内存限制:512.0MB      返回给定字符串s中元音字母的首次出现位置.英语元音字母只有‘a’.‘e’.‘i’.‘o’.‘u’五个. 若 ...