<!-- [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查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...
《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...
本文将重点讨论如何提高Oracle查询效率,主要基于提供的压缩包文件"ORACLE_SQL性能优化.ppt"中的内容,结合源码理解和工具应用。 1. **SQL优化基础** - **索引优化**:索引可以显著提升数据检索速度。正确选择索引...
oracle查询用户信息1.查看所有用户2.查看用户或角色系统权限3.查看角色4.查看用户对象权限5.查看所有角色
Oracle查询优化是数据库管理中的关键环节,它涉及到提高数据检索速度、降低系统资源消耗和提升整体应用性能。这本书“Oracle查询优化PDF”很可能是对Oracle数据库查询优化技术的深入探讨,涵盖了一系列相关主题,...
在"Oracle_chaxunyouhuagaixiejiqiaoyuanli_20180929.pdf"这份文档中,可能会详细讲解以上提到的概念,并提供实际案例和技巧,帮助你深入理解和应用Oracle查询优化改写。通过学习这些内容,你将能够更好地诊断和解决...
《玩转Oracle查询部分》这份PPT是针对Oracle数据库系统中的查询操作进行深入探讨的资料。Oracle数据库系统作为全球广泛使用的数据库管理系统之一,其查询语言SQL(Structured Query Language)是数据库管理员、开发...
Oracle查询优化改写 技巧与案例.pdf
《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...
oracle查询死锁语句,并能根据根据ID值杀死锁表的进程!
Oracle查询优化是数据库管理中的关键环节,尤其是在大型企业级应用中,高效的查询性能直接影响到系统的整体性能和用户体验。Oracle数据库提供了多种工具和技术来帮助我们优化SQL查询,提高数据检索速度,减少资源...
下面将详细介绍基于C#的Oracle查询工具例子程序以及相关的知识点。 首先,要连接到Oracle数据库,我们需要使用Oracle提供的ODP.NET(Oracle Data Provider for .NET)驱动。这个驱动程序允许C#应用程序与Oracle...
Oracle查询取汉字拼音首字母Function
《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...
oracle 查询列最大值,例如有n例值,但是要找出这些列中的最大值。
Oracle查询处理in条件超过1000条的2种后台处理方式:A,后台拼接查询条件;B,每1000条查询一次,最后返回查询结果;
Oracle查询的优化技巧,对大数据量查询的时候可以节省不少时间。