`
touchmm
  • 浏览: 1044094 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

oracle查询

 
阅读更多

<!-- [if gte mso 9]><xml><w:WordDocument><w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel><w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery><w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery><w:DocumentKind>DocumentNotSpecified</w:DocumentKind><w:DrawingGridVerticalSpacing>7.8</w:DrawingGridVerticalSpacing><w:View>Normal</w:View><w:Compatibility></w:Compatibility><w:Zoom>0</w:Zoom></w:WordDocument></xml><![endif]-->

--=================

--author:yeeXun

--date:2010-11-25 16:46:00

--address:17-304

--=================

oracle简单查询

查看表结构

SQL>desctable_name;

查询所有列

SQL>select*fromtable_name;

少用此查询,因为查询速度很慢

settimingon 命令:将查询耗时现实在查询结果后面

settimingoff命令:关闭现实查询耗时关闭

·疯狂复制数据法:

insertintotableA(column1,column2,...)select*fromtableB;

取消重复行

SQL>select distinct column1,column2,...fromtable_name;

大小写区分

数据区分大小写,而SQL 语句不区分大小写,即表的表名字段名都不区分大小写

字段别名

Oracle select 字段名 " 别名 "fromtable_name;

使用算术表达式

+:当“ + ”左右的字段有一个为 NULL 值,那么整个字段的结果将为 NULL

- * /

处理nul

使用nvl 函数处理

nvl column,0 ):如果 column 为空,则用 0 代替;如果不为空,则为其原值

like操作符

%:表示任意 0 到多个字符

_:表示任意单个字符

常用单引号:''

where 条件中使用 in

selectcolumn1,column2,...fromtable_namewherecolumnMin(data1,data2,...)

使用isnull 的操作符

判断字段是否为空

使用逻辑操作符

andor:在 where 子句中

使用orderby 操作符

排序:默认为升序(asc )排列,可以在字段后面加上 desc (降序)

多个字段排序,直接将要排序的字段加载orderby 后面,用逗号( , )分隔开

使用列的别名排序

selectcolumn1'aa',column2 as 'bb'fromtable_name;

可以使用as 关键字,以可以使用

--------------------------------------------------------------------

oracle复杂查询

1.单表查询

数组分组——max,min,avg,sum,count

若查询列中出现分组函数,那么必须全部都是分组函数

groupby having 子句

groupby:用于对查询的结果分组统计

分组字段一定要出现在查询字段里面

having:用于限制分组现实结果,这个子句可以使用分组函数( sqlserver 中叫聚合函数),而 where 子句里面不能用

对分组数据的小结

1. 分组函数只能出现在选择列表、having orderby 子句中

2. 如果在select 语句中同时含有 groupby having orderby (这也是他们在查询语句中的出现顺序),那么他们的排序是 groupby having orderby

3. 在选择列中如果有列、表达式、和分组函数,那么这些列和表达式必须有一个出现在groupby 子句中,否则出错

多表查询

不同的表

自连接

相同的表

数据库在执行sql 语句时,是从右到左

selectdeptnofromempwhereename='SMITH'andjob='MANAGE';

这条语句是先执行where 部分,再执行前面的 select 部分

先写子查询,在写主查询

单行子查询:指只返回一行数据的子查询

select*fromempwheredeptno=(selectdeptnofromempwhereename='SMITH');

多行子查询:指返回多行数据的子查询

select*fromempwherejobin(selectjobfromempwheredeptno=10);

in运算符

在多行子查询中使用any 运算符

多列子查询

select*fromempwhere (deptno,job) =(s electdeptno,jobfromempwhereename='SMITH');

在from子句中使用子查询

?如何 查找 高于自己部门平均工资的员工信息

s elect a.ename,a.sal,a.deptno,b.avgsal

fromempa,

(selectdeptno,avg(sal)avgsalfromempgroupbydeptno) b

wherea.deptno=b.deptnoanda.sal>b.avgsal;

❤当在 from子查询中使用子查询时,该子查询会被作为一个视图来对待,因此叫做内嵌视图;当在 from 子句中使用子查询时,必须给该子查询指定别名,建议不要用 as

❤给表取别名,不要加as ,在给列取别名时,加 as

衡量程序员水平:

1. 本身对网络处理怎么样

2. 对数据库方面的知识

3. 程序的优化,代码效率高

分页查询

Oracle的分页共有三种

rownum分页

1.

selecta.*,rownumr n from(select*fromemp) a;

这个rn是oracle给每一条数据分配的行号,变化的

2.显示ruwnum[oracle分配]

Ruwnum只能用一次,也就是不能使用and连接,betweenand

3.

4. 几个变化

A. 如果要指定查询列,只需要修改最里层的子查询即可

select*from

(

selecta.*,rownumrufrom

(select ename,sal fromemp)a

whererownum<=10

)

whereru>=6;

B.如何排序,只需要修改最里层的子查询即可

select*from

(

selecta.*,rownumrufrom

(selectename,salfromemp orderbysal )a

whererownum<=10

)

whereru>=6;

Oracle分页

老师给的例子,上网找了一下,居然有!

1.根据 ROWID 来分

select*fromt_xiaoxi

whererowidin

(

selectridfrom

(selectrownumrn,ridfrom

(selectrowidrid,cidfromt_xiaoxiorderbyciddesc)

whererownum<10000

)

wherern>9980

)

orderbyciddesc;

执行时间0.03

2.按分析函数来分

select*from

(

selectt.*,row_number()over(orderbyciddesc)rkfromt_xiaoxit

)

whererk<10000andrk>9980;

执行时间1.01

3. ROWNUM 来分

select*from

(

selectt.*,rownumrnfrom(select*fromt_xiaoxiorderbyciddesc

)t

whererownum<10000)

Wherern>9980; 执行时间0.1

其中t_xiaoxi 为表名称, cid 为表的关键字段,取按 CID 降序排序后的第 9981-9999 条记录, t_xiaoxi 表有 70000 多条记录

个人感觉1 的效率最好, 3 次之, 2 最差

用查询结果创建新表

这个命令是一种快捷的建表方法

createtablemyemp(id,ename,sal)

asselectempno,ename,salfromemp;

合并查询

有时候在实际应用中,为了合并多个 select语句的结果,可以使用集合操作符号, union unionall intersect minus

集合操作的速度很高,比and all 这些语句快

1. Union

该操作符用于取得两个结果集的并集,当使用该操作符时,会自动去掉结果集中重复行

2. unionall

相似于union 操作符,但是不取消重复行,而且不会排序

3. Minus

取差集,

分享到:
评论

相关推荐

    Oracle查询优化改写技巧与案例2.zip

    《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...

    Oracle查询优化改写技巧与案例

    《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...

    提高Oracle查询效率

    本文将重点讨论如何提高Oracle查询效率,主要基于提供的压缩包文件"ORACLE_SQL性能优化.ppt"中的内容,结合源码理解和工具应用。 1. **SQL优化基础** - **索引优化**:索引可以显著提升数据检索速度。正确选择索引...

    oracle查询用户信息

    oracle查询用户信息1.查看所有用户2.查看用户或角色系统权限3.查看角色4.查看用户对象权限5.查看所有角色

    oracle查询优化pdf

    Oracle查询优化是数据库管理中的关键环节,它涉及到提高数据检索速度、降低系统资源消耗和提升整体应用性能。这本书“Oracle查询优化PDF”很可能是对Oracle数据库查询优化技术的深入探讨,涵盖了一系列相关主题,...

    【oracle】oracle查询优化改写

    在"Oracle_chaxunyouhuagaixiejiqiaoyuanli_20180929.pdf"这份文档中,可能会详细讲解以上提到的概念,并提供实际案例和技巧,帮助你深入理解和应用Oracle查询优化改写。通过学习这些内容,你将能够更好地诊断和解决...

    oracle 查询部分ppt

    《玩转Oracle查询部分》这份PPT是针对Oracle数据库系统中的查询操作进行深入探讨的资料。Oracle数据库系统作为全球广泛使用的数据库管理系统之一,其查询语言SQL(Structured Query Language)是数据库管理员、开发...

    Oracle查询优化改写 技巧与案例.pdf

    Oracle查询优化改写 技巧与案例.pdf

    oracle查询优化改写技巧与案例

    《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...

    oracle查询死锁语句

    oracle查询死锁语句,并能根据根据ID值杀死锁表的进程!

    Oracle查询优化改写 技巧与案例 .pdf

    Oracle查询优化是数据库管理中的关键环节,尤其是在大型企业级应用中,高效的查询性能直接影响到系统的整体性能和用户体验。Oracle数据库提供了多种工具和技术来帮助我们优化SQL查询,提高数据检索速度,减少资源...

    一个基于C#的Oracle 查询工具例子程序

    下面将详细介绍基于C#的Oracle查询工具例子程序以及相关的知识点。 首先,要连接到Oracle数据库,我们需要使用Oracle提供的ODP.NET(Oracle Data Provider for .NET)驱动。这个驱动程序允许C#应用程序与Oracle...

    Oracle查询取汉字拼音首字母

    Oracle查询取汉字拼音首字母Function

    Oracle查询优化改写 技巧与案例_高清带书签版本

    《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...

    oracle 查询列最大值

    oracle 查询列最大值,例如有n例值,但是要找出这些列中的最大值。

    Oracle查询处理in条件超过1000条

    Oracle查询处理in条件超过1000条的2种后台处理方式:A,后台拼接查询条件;B,每1000条查询一次,最后返回查询结果;

    Oracle查询优化技巧

    Oracle查询的优化技巧,对大数据量查询的时候可以节省不少时间。

Global site tag (gtag.js) - Google Analytics