oracle查询相关注意点
单表查询:
.or 和 and 混合使用
需求:查询业主名称包含'刘'或门牌号包含'5'的,并且地址编号为3的记录
SELECT * FROM T_OWNERS WHERE ("NAME" LIKE '%刘%' or HOUSENUMBER LIKE '%5%') AND ADDRESSID = 3
and 的权限优先于 or 所以需要在or的两边添加()
2. 范围查询
除了传统的 where usenum >=100 and usenum <=200,还可以用between and 查询
SELECT * from T_ACCOUNT WHERE USENUM BETWEEN 100 and 200 --只适合>= 或<=
3.去空查询
SELECT * FROM T_PRICETABLE WHERE MAXNUM IS NULL;
SELECT * FROM T_PRICETABLE WHERE MAXNUM IS NOT null;
4.去掉重复记录
SELECT ADDRESSID FROM T_OWNERS GROUP BY ADDRESSID;
SELECT DISTINCT ADDRESSID FROM T_OWNERS; --执行效率高
5.基于伪列的查询
rowid : 表中每一行在数据文件中都有一个物理地址,rowid返回就是该行的物理地址
SELECT ROWID , t.* FROM T_AREA t;
rownum : 通过rownum伪列可以限制查询结果集中返回的行数,可用于分页
SELECT ROWNUM , t.* FROM T_OWNERS t;
6.聚合函数
sum(),avg(),max(),min(),count() 括号内传递条件,如:
SELECT "COUNT"(*) FROM T_OWNERS t WHERE OWNERTYPEID = 1;
分组聚合group by 如果后面加 having条件,即在分组后过滤数据
SELECT AREAID , "SUM"(MONEY) FROM T_ACCOUNT GROUP BY AREAID HAVING "SUM"(MONEY) > 169000
多表查询:
连接规定 能用内连接 就不用外链接 能用左外 就 不用右外
1.内连接
需求:查询显示业主编号,业主名称,业主类型名称
SELECT
t1."ID",
T1."NAME",
T2."NAME"
FROM
T_OWNERS t1,
T_OWNERTYPE t2
WHERE
T1.OWNERTYPEID = T2."ID"
需求:查询显示业主编号,业主名称,地址,业主类型名称
SELECT
T1."ID",
T1."NAME",
t2."NAME",
T3."NAME"
FROM
T_OWNERS t1,
T_OWNERTYPE t2,
T_ADDRESS t3
WHERE
T1.OWNERTYPEID = T2."ID"
AND t1.ADDRESSID = T3."ID";
注意:多表的内连接,可以先写from xxx ,xxx ,xxx 以及where xx=yy,aa=bb,xx=zz,最后再写select * 需要显示的内容
2.左外连接
需求:查询业主的账务记录,显示业主的编号,名称,年,月,金额,没有账务信息也要列出
SELECT --这是SQL1999标准的语法
A1."ID",
A1."NAME",
B1."YEAR",
B1."MONTH",
B1.MONEY
FROM
T_OWNERS a1
LEFT JOIN T_ACCOUNT b1 ON A1."ID" = b1.OWNERUUID
SELECT --这是ORACLE提供的语法
A1."ID",
A1."NAME",
B1."YEAR",
B1."MONTH",
B1.MONEY
FROM
T_OWNERS a1,
T_ACCOUNT b1
WHERE
A1."ID" = B1.OWNERUUID (+);
注意:left join 左边的是主表,右边的是辅表,on后面是条件;ORACLE提供的,谁是辅表就在谁身上
加 (+) .
3.子查询
单行子查询:
需求:查询2012年01月用水量大于台账记录平均值的数据.分析:先查平均值,再传入
SELECT
*
FROM
T_ACCOUNT
WHERE
"YEAR" = ''
AND "MONTH" = ''
AND USENUM > (
SELECT --查平均值
"AVG" (USENUM)
FROM
T_ACCOUNT
WHERE
"YEAR" = ''
AND "MONTH" = ''
)
多行子查询:
需求:查询地址编号为1,3,4的业主记录.分析:如果用or来编写太繁琐,所以用in
SELECT * FROM T_OWNERS WHERE ADDRESSID IN (1,3,4);
需求:查询地址含有"花园"的业主信息.分析:先模糊查询,再传入
SELECT
*
FROM
T_OWNERS
WHERE
ADDRESSID IN (
SELECT
"ID" --外查询需要addressID,所以内查询要查id
FROM
T_ADDRESS
WHERE
"NAME" LIKE '%花园%'
);
注意:not in 不包含 is not null 代表不为空;子查询 查询的结果作为条件传入另一个SQL语句
分页查询:
简单分页查询:
需求:分页查询台账表,每页10条记录.分析:rownum不能使用>符号,只能<或<=或=1,怎么办?
SELECT ROWNUM,A1.* FROM T_ACCOUNT a1 WHERE ROWNUM <=10;
使用子查询:
SELECT
*
FROM
(
SELECT
ROWNUM r,
A1.*
FROM
T_ACCOUNT a1
WHERE
ROWNUM <= 20 --如果要嵌套排序查,代码该如何写 ?
)
WHERE
r > 10;
基于排序的分页:
SELECT
*
FROM
(
SELECT
A .*, ROWNUM RN
FROM
(
SELECT
*
FROM
T_ACCOUNT
WHERE
YEAR = ''
ORDER BY
USENUM DESC
) A --A表代表排序,也是三层中的数据层,第一步
) B --B表代表基于伪列查询,也是三层中的伪列层,第二步
WHERE --最后就是分页查询了,也是三层中的分页层,第三步
B.RN BETWEEN (3 - 1) * 5 + 1 --ORACLE中索引是从1开始的
AND 3 * 5; --条件要知道怎么计算
未完待续...
oracle查询相关注意点的更多相关文章
- oracle查询相关语句
1,查询表空间使用情况select a.a1 表空间名称,c.c2 类型,c.c3 区管理,b.b2/1024/1024 表空间大小M,(b.b2-a.a2)/1024/1024 已使用M,subst ...
- Oracle权限相关查询
Oracle权限相关查询着实视图有点多,记录下常用的语句,方便查询:1.查看所有用户: select * from dba_users; select * from all_users; sel ...
- 45 个非常有用的 Oracle 查询语句
这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有 Oracle 开发者都必备的技能,所以快 ...
- Oracle 性能相关常用脚本(SQL)
在缺乏的可视化工具来监控数据库性能的情形下,常用的脚本就派上用场了,下面提供几个关于Oracle性能相关的脚本供大家参考.以下脚本均在Oracle 10g测试通过,Oracle 11g可能要做相应调整 ...
- 40多个非常有用的Oracle 查询语句
给大家介绍是40多个非常有用的Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有Oracle 开发者都必备的技能,所以快快收藏吧! 日期 ...
- 从Select语句看Oracle查询原理(了解Oracle的查询机制)
第一步:客户端把语句发给服务器端执行 当我们在客户端执行select语句时,客户端会把这条SQL语句发送给服务器端,让服务器端的进程来处理这语句.也就是说,Oracle客户端是不会做任何的操作,他的主 ...
- 45个非常有用的 Oracle 查询语句小结
45个非常有用的 Oracle 查询语句小结 这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有 ...
- 45 个非常有用的 Oracle 查询语句(转)
这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有 Oracle 开发者都必备的技能,所以快快收 ...
- Oracle查询用户权限
Oracle查询用户权限 -- 确定角色的权限select * from role_tab_privs ; 包含了授予角色的对象权限select * from role_ro ...
随机推荐
- flask接收前台的ajax的post数据
html <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8& ...
- mysql索引是什么?索引结构和使用详解
索引是什么 mysql索引: 是一种帮助mysql高效的获取数据的数据结构,这些数据结构以某种方式引用数据,这种结构就是索引.可简单理解为排好序的快速查找数据结构.如果要查“mysql”这个单词,我们 ...
- 原生js、jQuery实现选项卡功能
在大家在网上平常浏览网页的时候,想必各位都会看到选项卡功能,在这里给大家详解一下用原生js.jQuery如何来写一些基本的选项卡 话不多说,先给各位看一下功能图: 好了,下边 ...
- 001服务注册与发现Eureka
1.POM配置 和普通Spring Boot工程相比,仅仅添加了Eureka Server依赖和Spring Cloud依赖管理 <dependencies> <!--添加Eurek ...
- Scrum团队开发
Scrum学习心得 什么是scrum Scrum是迭代式增量软件开发过程,通常用于敏捷软件开发.Scrum包括了一系列实践和预定义角色的过程骨架.Scrum中的主要角色包括同项目经理类似的Scrum主 ...
- 千里之堤毁于蚁穴(慎用HD Wallets)
转自:http://blog.sina.com.cn/s/blog_12ce70a430102vbu9.html 千里之堤毁于蚁穴(慎用HD Wallets) -- 随机系列谈之四 现在我们都该明白, ...
- zookeeper 的监控工具
zookeeper 的监控工具 公司很多产品会使用zookeeper,比如Meta消息中间件,在测试的过程中,我们经常需要查询zookeeper里面的信息来精确定位问题.目前项目中有开 ...
- dbms_stats应用相关
Q: DBMS_STATS.GATHER_SCHEMA_STATS ('schema_name'); 使用这个收集统计信息,estimate_percent使用默认值 ...
- 200. Number of Islands + 695. Max Area of Island
Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surro ...
- POJ-1061 青蛙的约会---扩展欧几里得算法
题目链接: https://cn.vjudge.net/problem/POJ-1061 题目大意: 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线 ...