使用Oracle特有的查询语法, 可以达到事半功倍的效果
1. 树查询
create table tree (
id number(10) not null primary key,
name varchar2(100) not null,
super number(10) not null // 0 is root
);
-- 从子到父
select * from tree start with id = ? connect by id = prior super
-- 从父到子
select * from tree start with id = ? connect by prior id = suepr
-- 整棵树
select * from tree start with super = 0 connect by prior id = suepr
2. 分页查询
select * from (
select my_table.*, rownum my_rownum from (
select name, birthday from employee order by birthday
) my_table where rownum < 120
) where my_rownum >= 100;
3. 累加查询, 以scott.emp为例
select empno, ename, sal, sum(sal) over(order by empno) result from emp;
EMPNO ENAME SAL RESULT
---------- ---------- ---------- ----------
7369 SMITH 800 800
7499 ALLEN 1600 2400
7521 WARD 1250 3650
7566 JONES 2975 6625
7654 MARTIN 1250 7875
7698 BLAKE 2850 10725
7782 CLARK 2450 13175
7788 SCOTT 3000 16175
7839 KING 5000 21175
7844 TURNER 1500 22675
7876 ADAMS 1100 23775
7900 JAMES 950 24725
7902 FORD 3000 27725
7934 MILLER 1300 29025
4. 高级group by
select decode(grouping(deptno),1,'all deptno',deptno) deptno,
decode(grouping(job),1,'all job',job) job,
sum(sal) sal
from emp
group by ROLLUP(deptno,job);
DEPTNO JOB SAL
---------------------------------------- --------- ----------
10 CLERK 1300
10 MANAGER 2450
10 PRESIDENT 5000
10 all job 8750
20 CLERK 1900
20 ANALYST 6000
20 MANAGER 2975
20 all job 10875
30 CLERK 950
30 MANAGER 2850
30 SALESMAN 5600
30 all job 9400
all deptno all job 29025
5. use hint
当多表连接很慢时,用ORDERED提示试试,也许会快很多
SELECT /**//*+ ORDERED */*
FROM a, b, c, d
WHERE
分享到:
相关推荐
他认为对于SQL的学习是永无止境的,相信每一个查询Oracle数据库的人都需要精通SQL语言,才能写出高效的查询。他参与本书的编写就是为了帮助别人实现这一目标。 目录 封面 -11 封底 -10 扉页 -9 版权 -8 版权声明 -7...
高级安装选项2-18 安装选项:无提示模式2-19 小结2-20 练习概览:安装Oracle 软件2-21 目录 iii 3 创建Oracle 数据库 课程目标3-2 计划数据库3-3 数据库:示例3-4 Database Configuration Assistant (DBCA) 3-5 使用...
高级安装选项 2-18 安装选项:无提示模式 2-19 小结 2-20 练习概览:安装 Oracle 软件 2-21 3 创建 Oracle 数据库 课程目标 3-2 为数据库制定计划 3-3 数据库:示例 3-4 Database Configuration Assistant ...
B 树索引 7-28 位图索引 7-30 索引选项 7-32 创建索引 7-34 什么是视图 7-35 创建视图 7-36 序列 7-37 创建序列 7-38 使用序列 7-40 临时表 7-41 临时表:注意事项 7-43 数据字典:概览 7-44 数据字典...
3.7.8 Oracle高级安全选项 67 3.7.9 分派进程 67 3.8 使用配置文件 69 3.9 多层环境中的网络 70 3.10 安装Oracle 11g客户端软件 71 3.11 本章测验 75 第4章 SQL:结构化查询语言 77 4.1 SQL语句的组成 78 ...
§13.2.3 使用B树索引- 166 §13.2.4 使用反向键索引- 166 §13.2.5 使用索引组织表 166 §13.3 使用范围索引 166 §13.4 使用簇 - 167 §13.5 使用Hash 簇 - 168 §13.5.1 何时创建Hash 簇 168 §13.5.2 创建Hash ...
高级sql关于层次查询更新 对于层次查询需要掌握: 1.解释层次查询的基本概念,识别需求中需要用到层次查询的能力。 2.建立和格式化一个树形报表(tree report)。 3.修剪树形结构的节点(node)和枝(branches)。
《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...
《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...
第八章 一些高级的用法 188 §8.1 关于DECODE 188 §8.1.1 DECODE 中的if-then-else逻辑 188 §8.1.2 DECODE 的简单例子 188 §8.1.3 DECODE实现表的转置 189 §8.2 关于访问远程数据库 192 §8.2.1 数据库链接 192 ...
1.3 如何表示树形结构 1.4 小结 第2章 Oracle体系架构 2.1 Oracle的网络配置 2.2 Oracle 10g架构 2.3 数据库 2.4 空间管理 2.5 实例 2.6 未尽话题 第3章 备份恢复 3.1 归档模式和非...
3.7.8 Oracle高级安全选项 3.7.9 分派进程 3.8 使用配置文件 3.9 多层环境中的网络 3.10 安装Oracle 11g客户端软件 3.11 本章测验 第4章 SQL:结构化查询语言 4.1 SOL语句的组成 4.1.1 DDL 4.1.2 DML 4.2 基本的...
实验29:树结构的查询start with子句 66 实验30:高级dml操作 68 第二部分pl/sql基础 69 匿名块的编写 69 实验31:书写一个最简单的块,运行并查看结果 69 实验32:在块中操作变量 70 实验33:在块中操作表的数据 71...
在注册表编辑器中左边树中依次展开“HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE”; 在ORACLE项上点击鼠标右键->导出,出现导入文件对话框,在文件名处填写“ORACLE”,单击保存,出成注册表文件(要记着保存的位置哟!);...
第六讲 高级查询 50 一.简单连接 50 1.简单连接 50 2.表别名 P136 50 3.各个表之间的连接 50 二. 使用Join连接 50 1.内连接 50 (1)等值连接(有相同的,逐个匹配) 50 (2)不等连接 51 (3)自然连接 51 2.外...
5SQL Server 分区函数146SQL Server 分区方案147SQL 预览147维护147维护...高级功能169查询结果172查询参数172调试Oracle 查询(只限于完整版本)173模型(只限于Navicat Premium 和企业版)174边栏面板174模型树窗格...
scheme2ddl是用于将... 命令java -jar scheme2ddl.jar -url scott/tiger@localhost:1521:ORCL -o C:/temp/oracle-ddl2svn/将产生目录树 views/ view1.sql view2.sql tables/ table1.sql functions /f1.sql 更多命令